From 175a30325bf50b052d7d06abd3859020520db221 Mon Sep 17 00:00:00 2001 From: leeyj Date: Thu, 16 Apr 2026 01:12:43 +0900 Subject: [PATCH] Initial Global Release v1.0 (Localization & Security Hardening) --- .env.example | 13 + .gitignore | 10 + README.md | 108 +++++++ app/__init__.py | 108 +++++++ app/ai.py | 95 +++++++ app/auth.py | 20 ++ app/constants.py | 8 + app/database.py | 83 ++++++ app/routes/__init__.py | 16 ++ app/routes/ai.py | 46 +++ app/routes/auth.py | 22 ++ app/routes/file.py | 162 +++++++++++ app/routes/main.py | 27 ++ app/routes/memo.py | 356 ++++++++++++++++++++++++ app/routes/settings.py | 58 ++++ app/security.py | 58 ++++ app/utils/__init__.py | 33 +++ app/utils/i18n.py | 41 +++ brain.py | 17 ++ config.example.json | 9 + docs/README.md | 30 ++ docs/api_reference.md | 44 +++ docs/architecture.md | 38 +++ docs/features.md | 48 ++++ docs/img/main.png | Bin 0 -> 341947 bytes docs/logic_flow.md | 55 ++++ docs/shortcuts.md | 32 +++ docs/source_mapping.md | 42 +++ docs/user_manual.md | 113 ++++++++ docs/v2_mobile_roadmap.md | 49 ++++ requirements.txt | 6 + static/app.js | 194 +++++++++++++ static/css/components/editor.css | 98 +++++++ static/css/components/heatmap.css | 108 +++++++ static/css/components/memo.css | 104 +++++++ static/css/components/modals.css | 94 +++++++ static/css/components/slash-command.css | 81 ++++++ static/css/components/visualization.css | 184 ++++++++++++ static/css/layout.css | 107 +++++++ static/css/login.css | 171 ++++++++++++ static/css/mobile.css | 49 ++++ static/css/sidebar.css | 177 ++++++++++++ static/css/variables.css | 29 ++ static/favicon.png | Bin 0 -> 216455 bytes static/js/AppService.js | 112 ++++++++ static/js/api.js | 78 ++++++ static/js/components/AttachmentBox.js | 39 +++ static/js/components/CalendarManager.js | 159 +++++++++++ static/js/components/ComposerManager.js | 225 +++++++++++++++ static/js/components/DrawerManager.js | 152 ++++++++++ static/js/components/HeatmapManager.js | 148 ++++++++++ static/js/components/MemoCard.js | 93 +++++++ static/js/components/ModalManager.js | 212 ++++++++++++++ static/js/components/SidebarUI.js | 47 ++++ static/js/components/SlashCommand.js | 352 +++++++++++++++++++++++ static/js/components/ThemeManager.js | 165 +++++++++++ static/js/components/Visualizer.js | 286 +++++++++++++++++++ static/js/editor.js | 190 +++++++++++++ static/js/ui.js | 222 +++++++++++++++ static/js/utils.js | 43 +++ static/js/utils/Constants.js | 10 + static/js/utils/I18nManager.js | 65 +++++ static/locales/en.json | 133 +++++++++ static/locales/ko.json | 132 +++++++++ static/style.css | 25 ++ templates/index.html | 219 +++++++++++++++ templates/login.html | 98 +++++++ 67 files changed, 6348 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/ai.py create mode 100644 app/auth.py create mode 100644 app/constants.py create mode 100644 app/database.py create mode 100644 app/routes/__init__.py create mode 100644 app/routes/ai.py create mode 100644 app/routes/auth.py create mode 100644 app/routes/file.py create mode 100644 app/routes/main.py create mode 100644 app/routes/memo.py create mode 100644 app/routes/settings.py create mode 100644 app/security.py create mode 100644 app/utils/__init__.py create mode 100644 app/utils/i18n.py create mode 100644 brain.py create mode 100644 config.example.json create mode 100644 docs/README.md create mode 100644 docs/api_reference.md create mode 100644 docs/architecture.md create mode 100644 docs/features.md create mode 100644 docs/img/main.png create mode 100644 docs/logic_flow.md create mode 100644 docs/shortcuts.md create mode 100644 docs/source_mapping.md create mode 100644 docs/user_manual.md create mode 100644 docs/v2_mobile_roadmap.md create mode 100644 requirements.txt create mode 100644 static/app.js create mode 100644 static/css/components/editor.css create mode 100644 static/css/components/heatmap.css create mode 100644 static/css/components/memo.css create mode 100644 static/css/components/modals.css create mode 100644 static/css/components/slash-command.css create mode 100644 static/css/components/visualization.css create mode 100644 static/css/layout.css create mode 100644 static/css/login.css create mode 100644 static/css/mobile.css create mode 100644 static/css/sidebar.css create mode 100644 static/css/variables.css create mode 100644 static/favicon.png create mode 100644 static/js/AppService.js create mode 100644 static/js/api.js create mode 100644 static/js/components/AttachmentBox.js create mode 100644 static/js/components/CalendarManager.js create mode 100644 static/js/components/ComposerManager.js create mode 100644 static/js/components/DrawerManager.js create mode 100644 static/js/components/HeatmapManager.js create mode 100644 static/js/components/MemoCard.js create mode 100644 static/js/components/ModalManager.js create mode 100644 static/js/components/SidebarUI.js create mode 100644 static/js/components/SlashCommand.js create mode 100644 static/js/components/ThemeManager.js create mode 100644 static/js/components/Visualizer.js create mode 100644 static/js/editor.js create mode 100644 static/js/ui.js create mode 100644 static/js/utils.js create mode 100644 static/js/utils/Constants.js create mode 100644 static/js/utils/I18nManager.js create mode 100644 static/locales/en.json create mode 100644 static/locales/ko.json create mode 100644 static/style.css create mode 100644 templates/index.html create mode 100644 templates/login.html diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a4f4571 --- /dev/null +++ b/.env.example @@ -0,0 +1,13 @@ +# 뇌사료(Brain Dogfood) Environment Variables Template + +# Flask Security +SECRET_KEY=your_super_secret_key_here +SESSION_LIFETIME_DAYS=30 + +# Authentication +ADMIN_USERNAME=admin +ADMIN_PASSWORD=admin + +# AI Features (Optional) +GEMINI_API_KEY=your_google_gemini_api_key_here +GEMINI_MODEL=gemini-1.5-flash diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eddbc12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Brain Dogfood Public Repo Gitignore +.env +config.json +memos.db +__pycache__/ +*.pyc +logs/ +data/ +.vscode/ +.idea/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..9037663 --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +[한국어](#한국어) | [English](#english) + +
+ +
+ Brain Dogfood Dashboard +

🧠 뇌사료 (Brain Dogfood)

+

지식을 기록하는 습관을 넘어, 지능형 유기체로 성장하는 나만의 지식 창고

+

Minimalist, AI-powered, Privacy-first Knowledge Server

+
+ +--- + +> [!IMPORTANT] +> **보안 주의사항 (Security Notice)** +> - 기본 관리자 계정은 아이디: `admin` / 비밀번호: `.env` 파일에서 본인이 설정한 값입니다. +> - 최초 로그인 후, 혹은 서버 실행 전 **`.env` 파일에서 `ADMIN_USERNAME`과 `ADMIN_PASSWORD`를 반드시 본인만의 정보로 수정**하세요. 수정하지 않을 경우 보안에 매우 취약해질 수 있습니다. + +> [!NOTE] +> **AI 기능은 선택 사항입니다 (AI is Optional)** +> - **Gemini API 키가 없어도** 뇌사료의 핵심 기능(기본 메모, 히트맵, 지식 그래프 Nebula, 개별 암호화 등)은 **모두 정상 작동**합니다. +> - AI 기능(`GEMINI_API_KEY`)은 자동 요약과 인공지능 태깅 기능을 사용할 때만 필요합니다. + +--- + +

📄 프로젝트 소개

+ +**뇌사료(Brain Dogfood)**는 "내가 만든 지식은 내가 먼저 소비한다"는 철학에서 시작된 개인용 메모 서버입니다. 단순한 텍스트 기록을 넘어, AI가 당신의 지식을 분석하고 유기적인 그래프(Nebula)로 연결하여 새로운 통찰을 제공합니다. + +### ✨ 독보적인 강점 + +* **Intelligent Nebula**: 단순히 태그로 묶는 것이 아닙니다. D3.js 기반의 그래프 시각화를 통해 지식 간의 관계를 시각적으로 탐험하세요. +* **AI Insight Hub (Optional)**: Gemini 2.0 Flash가 모든 메모를 실시간으로 요약하고 최적의 태그를 제안합니다. 당신은 기록에만 집중하세요. +* **Privacy-First Security**: 메모별로 개별 암호화를 지원합니다. 서버 관리자조차도 당신의 비밀번호 없이는 지식을 엿볼 수 없습니다. +* **High-End UX**: 글래스모피즘 기반의 모던한 UI와 하이엔드 셰이더 효과, 그리고 빠른 생산성을 위한 풍부한 단축키 시스템을 제공합니다. + +--- + +## 🆚 memos vs 뇌사료 (Comparison) + +| 기능 | **memos (Open Source)** | **🧠 뇌사료 (Brain Dogfood)** | +| :--- | :--- | :--- | +| **기본 철학** | 타임라인 기반 마이크로 블로깅 | 유기적인 지식 연결 및 AI 통찰 | +| **시각화** | 단순 달력/히트맵 | **D3.js Knowledge Nebula (그래프)** | +| **AI 통합** | 외부 플러그인 의존 | **Gemini 2.0 Native 통합 (자동 요약/태그 / 선택 사항)** | +| **보안** | DB 전체 보안 | **메모별 개별 암호화 (Grain-level Security)** | +| **사용성** | 모바일 앱 위주 | **데스크탑 생산성 최적화 (Slash Commands & Shortcuts)** | +| **디자인** | 미니멀, 정적인 UI | **Modern Glassmorphism & 다이내믹 애니메이션** | + +--- + +## ⌨️ 생산성 단축키 + +| 동작 | 단축키 | 설명 | +| :--- | :--- | :--- | +| **저장/수정** | `Ctrl + Enter` | 작성한 메모를 즉시 서버에 반영 | +| **새 메모** | `Ctrl + Shift + N` | 언제 어디서든 즉시 작성창 호출 | +| **슬래시 명령** | `/` | `/task`, `/ai`, `/h2` 등으로 빠른 서식 지정 | +| **지식 탐색기** | `Ctrl + Shift + E` | 저장된 지식의 구조를 한눈에 파악 | +| **즉시 수정** | `Alt + Click` | 메인 그리드에서 즉시 편집 모드 진입 | + +--- + +## 🛠️ 시작하기 + +```bash +# 1. 저장소 복제 및 종속성 설치 +pip install -r requirements.txt + +# 2. .env.example을 .env로 복사 후 설정 수정 (필수) +cp .env.example .env + +# 3. 서버 실행 +python brain.py +``` + +*`.env` 파일에서 관리자 아이디와 비밀번호를 꼭 수정하고, 필요한 경우에만 `GEMINI_API_KEY`를 등록하세요.* + +--- + +

🌐 English Description

+ +### What is Brain Dogfood? +**Brain Dogfood** is a minimalist yet powerful personal knowledge server built for those who value privacy and deep insights. It’s not just a memo app; it’s an **intelligent knowledge ecosystem** that grows with you. + +> [!IMPORTANT] +> **Security Notice**: +> Default credentials are set in the `.env` file. **You MUST change `ADMIN_USERNAME` and `ADMIN_PASSWORD`** in your `.env` file before running the server in a public environment. + +> [!NOTE] +> **AI is Optional**: +> All core features (Memos, Heatmap, Knowledge Nebula, Encryption) work perfectly **without an AI API key**. The `GEMINI_API_KEY` is only required for automated summarization and AI tagging. + +### Key Features +- **AI-Driven Insights**: Powered by Gemini 2.0 Flash for instant summarization and smart tagging (Optional). +- **Knowledge Nebula**: Explore your thoughts through a dynamic D3.js-based interactive knowledge graph. +- **Advanced Security**: Grain-level encryption for individual memos – your data is for your eyes only. +- **Premium Aesthetics**: Sleek glassmorphism UI with smooth micro-animations and production-ready UX. + +### Quick Start +1. Install dependencies: `pip install -r requirements.txt` +2. Create your `.env` from `.env.example` and update your master credentials. +3. Launch the server: `python brain.py` (Default port: 5050 on Windows, 5093 on Linux). + +--- +
+

Developed with ❤️ for knowledge lovers.

+
diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..f7ffbf9 --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,108 @@ +import os +import json +from flask import Flask, request, abort # type: ignore +from dotenv import load_dotenv +load_dotenv() + +def create_app(): + # Set folders to parent directory since app logic is now in a subfolder + template_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'templates')) + static_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'static')) + + app = Flask(__name__, template_folder=template_dir, static_folder=static_dir) + app.secret_key = os.getenv('SECRET_KEY', 'dev_key') + + # --- 🛡️ 보안 실드 & 로깅 설정 --- + import logging + from logging.handlers import RotatingFileHandler + + log_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'logs')) + os.makedirs(log_dir, exist_ok=True) + + file_handler = RotatingFileHandler( + os.path.join(log_dir, 'app.log'), + maxBytes=10*1024*1024, # 10MB + backupCount=5, + encoding='utf-8' + ) + file_handler.setFormatter(logging.Formatter( + '[%(asctime)s] %(levelname)s in %(module)s: %(message)s' + )) + app.logger.addHandler(file_handler) + app.logger.setLevel(logging.INFO) + app.logger.info('🚀 뇌사료 서버 기동 - 로깅 시스템 가동') + + @app.errorhandler(403) + def forbidden(e): + return "Forbidden: Suspicious activity detected. Your IP has been logged.", 403 + + @app.before_request + def unified_logger(): + # 클라이언트 IP (Cloudflare 등을 거칠 경우 X-Forwarded-For 확인) + ip = request.headers.get('X-Forwarded-For', request.remote_addr) + path = request.path + method = request.method + params = request.query_string.decode('utf-8') + + # 1. 보안 실드: 메인/로그인 페이지에 파라미터가 붙은 경우 즉시 차단 + if path.rstrip('/') in ['', '/login'] and params: + log_msg = f"[SHIELD] Blocked: [{ip}] {method} {path}?{params}" + app.logger.warning(log_msg) + abort(403) + + # 2. 트래픽 로깅 (정적 파일 제외) + if not path.startswith('/static/'): + log_msg = f"ACCESS: [{ip}] {method} {path}" + if params: + log_msg += f"?{params}" + app.logger.info(log_msg) + + upload_folder = os.path.abspath(os.path.join(static_dir, 'uploads')) + os.makedirs(upload_folder, exist_ok=True) + app.config['UPLOAD_FOLDER'] = upload_folder + + # Load config.json + config_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'config.json')) + if os.path.exists(config_path): + with open(config_path, 'r', encoding='utf-8') as f: + cfg = json.load(f) + app.config['UPLOAD_SECURITY'] = cfg.get('upload_security', {}) + else: + app.config['UPLOAD_SECURITY'] = {'allowed_extensions': [], 'blocked_extensions': []} + + # Initialize DB schema + from .database import init_db + init_db() + + # Session and Security configurations + app.config.update( + SESSION_COOKIE_HTTPONLY=True, + SESSION_COOKIE_SAMESITE='Lax', + SESSION_COOKIE_SECURE=False, # Set to True in production with HTTPS + PERMANENT_SESSION_LIFETIME=3600 # 60 minutes (1 hour) session + ) + + @app.after_request + def add_security_headers(response): + """보안 강화를 위한 HTTP 헤더 추가""" + response.headers['X-Content-Type-Options'] = 'nosniff' + response.headers['X-Frame-Options'] = 'SAMEORIGIN' + response.headers['X-XSS-Protection'] = '1; mode=block' + # Content Security Policy (Toast UI 및 외부 CDN 허용) + # 운영 환경에 맞춰 점진적으로 강화 가능 + csp = ( + "default-src 'self'; " + "script-src 'self' 'unsafe-inline' https://uicdn.toast.com https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://static.cloudflareinsights.com https://d3js.org; " + "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://uicdn.toast.com; " + "font-src 'self' https://fonts.gstatic.com; " + "img-src 'self' data: blob:; " + "connect-src 'self' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://cloudflareinsights.com https://d3js.org;" + ) + response.headers['Content-Security-Policy'] = csp + return response + + # Register modular blueprints + from .routes import register_blueprints + register_blueprints(app) + + return app diff --git a/app/ai.py b/app/ai.py new file mode 100644 index 0000000..fe89f6b --- /dev/null +++ b/app/ai.py @@ -0,0 +1,95 @@ +import os +import json +import logging +from google import genai +from .utils.i18n import _t + +# 로거 설정 +logger = logging.getLogger('ai') + +def analyze_memo(title, content, lang='en'): + """ + 최신 google-genai SDK를 사용하여 메모 본문을 요약하고 태그를 추출합니다. + """ + api_key = os.getenv('GEMINI_API_KEY') + primary_model = os.getenv('GEMINI_MODEL', 'gemini-2.0-flash') + + # 예비용 모델 리스트 + fallbacks = [primary_model, 'gemini-1.5-flash-latest', 'gemini-1.5-flash'] + models_to_try = list(dict.fromkeys(fallbacks)) + + if not api_key: + error_msg = "Gemini API key is required." if lang == 'en' else "AI 분석을 위해 Gemini API 키가 필요합니다." + return error_msg, [] + + client = genai.Client(api_key=api_key) + + if lang == 'ko': + prompt = f""" + 당신은 메모 분석 전문가입니다. 아래 메모의 제목과 내용을 읽고 다음 작업을 수행하세요: + 1. 내용을 1~2문장으로 아주 간결하게 요약할 것. + 2. 내용과 관련된 핵심 키워드를 태그 형태로 3~5개 추출할 것. + + [제목] {title} + [내용] {content} + + 출력 형식(JSON): + {{ + "summary": "요약 내용", + "tags": ["태그1", "태그2", "태그3"] + }} + """ + else: + prompt = f""" + You are a memo analysis expert. Read the title and content below and perform the following: + 1. Summarize the content very concisely in 1-2 sentences. + 2. Extract 3-5 key keywords as tags. + + [Title] {title} + [Content] {content} + + Output Format (JSON): + {{ + "summary": "Summary text", + "tags": ["Tag1", "Tag2", "Tag3"] + }} + """ + + last_error = None + for model_name in models_to_try: + try: + logger.info(f"[AI] Attempting analysis with model: {model_name} (lang={lang})") + response = client.models.generate_content( + model=model_name, + contents=prompt + ) + + res_text = response.text.strip() + if '```json' in res_text: + res_text = res_text.split('```json')[1].split('```')[0].strip() + elif '```' in res_text: + res_text = res_text.split('```')[1].strip() + + data = json.loads(res_text) + logger.info(f"[AI] Analysis successful using {model_name}") + return data.get('summary', ''), data.get('tags', []) + + except Exception as e: + last_error = e + logger.warning(f"[AI] Model {model_name} failed: {str(e)}") + if "404" in str(e): + continue + else: + break + + # 모든 시도가 실패한 경우 + error_header = "AI Analysis Error: " if lang == 'en' else "AI 분석 중 오류 발생: " + error_msg = f"{error_header}{str(last_error)}" + + if "404" in str(last_error): + if lang == 'en': + error_msg += "\n(Note: The selected model might be expired. Check GEMINI_MODEL in .env)" + else: + error_msg += "\n(알림: 선택한 AI 모델이 만료되었을 수 있습니다. .env의 GEMINI_MODEL 설정을 확인해주세요.)" + + return error_msg, [] diff --git a/app/auth.py b/app/auth.py new file mode 100644 index 0000000..b5ce1ec --- /dev/null +++ b/app/auth.py @@ -0,0 +1,20 @@ +import os +import functools +from flask import session, redirect, url_for, request, current_app # type: ignore + +def check_auth(username, password): + """ + 환경 변수에 설정된 관리자 계정 정보와 일치하는지 확인합니다. + """ + admin_user = os.getenv('ADMIN_USERNAME', 'admin') + admin_password = os.getenv('ADMIN_PASSWORD', 'admin') + return username == admin_user and password == admin_password + +def login_required(view): + @functools.wraps(view) + def wrapped_view(**kwargs): + # app/routes/auth.py의 세션 키와 일치시킴 (logged_in) + if session.get('logged_in') is None: + return redirect(url_for('main.login_page')) + return view(**kwargs) + return wrapped_view diff --git a/app/constants.py b/app/constants.py new file mode 100644 index 0000000..ea46c6b --- /dev/null +++ b/app/constants.py @@ -0,0 +1,8 @@ +# System-wide Core Constants (Globalization-ready) + +# System Reserved Groups +GROUP_DEFAULT = "default" # 기본 +GROUP_FILES = "files" # 파일모음 +GROUP_DONE = "done" # 완료모음 + +SYSTEM_GROUPS = [GROUP_DEFAULT, GROUP_FILES, GROUP_DONE] diff --git a/app/database.py b/app/database.py new file mode 100644 index 0000000..be6f4b4 --- /dev/null +++ b/app/database.py @@ -0,0 +1,83 @@ +import os +import sqlite3 + +# Data directory relative to this file +DB_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'data')) +os.makedirs(DB_DIR, exist_ok=True) +DB_PATH = os.path.join(DB_DIR, 'memos.db') + +def init_db(): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + + # 1. Memos Table + c.execute(''' + CREATE TABLE IF NOT EXISTS memos ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title TEXT, + content TEXT, + summary TEXT, + color TEXT DEFAULT '#2c3e50', + is_pinned BOOLEAN DEFAULT 0, + status TEXT DEFAULT 'active', -- 'active', 'done', 'archived' + group_name TEXT DEFAULT 'default', + is_encrypted BOOLEAN DEFAULT 0, + created_at TIMESTAMP, + updated_at TIMESTAMP + ) + ''') + + try: + c.execute("ALTER TABLE memos ADD COLUMN status TEXT DEFAULT 'active'") + except sqlite3.OperationalError: + pass + + try: + c.execute("ALTER TABLE memos ADD COLUMN is_encrypted BOOLEAN DEFAULT 0") + except sqlite3.OperationalError: + pass + + + # 2. Separate Tags Table (Normalized) + c.execute(''' + CREATE TABLE IF NOT EXISTS tags ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + memo_id INTEGER, + name TEXT, + source TEXT, -- 'user' or 'ai' + FOREIGN KEY (memo_id) REFERENCES memos (id) ON DELETE CASCADE + ) + ''') + + # 3. Attachments Table (Enhanced Asset Tracking) + c.execute(''' + CREATE TABLE IF NOT EXISTS attachments ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + memo_id INTEGER, + filename TEXT, + original_name TEXT, + file_type TEXT, + size INTEGER, + created_at TIMESTAMP, + FOREIGN KEY (memo_id) REFERENCES memos (id) ON DELETE SET NULL + ) + ''') + + # 4. Memo Links Table (Backlinks) + c.execute(''' + CREATE TABLE IF NOT EXISTS memo_links ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + source_id INTEGER, + target_id INTEGER, + FOREIGN KEY (source_id) REFERENCES memos (id) ON DELETE CASCADE, + FOREIGN KEY (target_id) REFERENCES memos (id) ON DELETE CASCADE + ) + ''') + + conn.commit() + conn.close() + +def get_db(): + conn = sqlite3.connect(DB_PATH) + conn.row_factory = sqlite3.Row + return conn diff --git a/app/routes/__init__.py b/app/routes/__init__.py new file mode 100644 index 0000000..18fad23 --- /dev/null +++ b/app/routes/__init__.py @@ -0,0 +1,16 @@ +from flask import Blueprint # type: ignore + +def register_blueprints(app): + from .main import main_bp + from .auth import auth_bp + from .memo import memo_bp + from .file import file_bp + from .ai import ai_bp + from .settings import settings_bp + + app.register_blueprint(main_bp) + app.register_blueprint(auth_bp) + app.register_blueprint(memo_bp) + app.register_blueprint(file_bp) + app.register_blueprint(ai_bp) + app.register_blueprint(settings_bp) diff --git a/app/routes/ai.py b/app/routes/ai.py new file mode 100644 index 0000000..4e62340 --- /dev/null +++ b/app/routes/ai.py @@ -0,0 +1,46 @@ +import datetime +from flask import Blueprint, jsonify, current_app # type: ignore +from ..database import get_db +from ..auth import login_required +from ..ai import analyze_memo +from ..utils.i18n import _t + +ai_bp = Blueprint('ai', __name__) + +@ai_bp.route('/api/memos//analyze', methods=['POST']) +@login_required +def analyze_memo_route(memo_id): + conn = get_db() + c = conn.cursor() + c.execute('SELECT title, content, is_encrypted FROM memos WHERE id = ?', (memo_id,)) + memo = c.fetchone() + + if not memo: + return jsonify({'error': _t('label_no_results')}), 404 + + if memo['is_encrypted']: + return jsonify({'error': _t('msg_encrypted_locked')}), 403 + + current_app.logger.info(f"AI Analysis Started: ID {memo_id}, Title: '{memo['title']}'") + + lang = current_app.config.get('lang', 'en') + summary, ai_tags = analyze_memo(memo['title'], memo['content'], lang=lang) + + try: + c.execute('UPDATE memos SET summary = ?, updated_at = ? WHERE id = ?', + (summary, datetime.datetime.now().isoformat(), memo_id)) + + c.execute("DELETE FROM tags WHERE memo_id = ? AND source = 'ai'", (memo_id,)) + for tag in ai_tags: + if tag.strip(): + c.execute('INSERT INTO tags (memo_id, name, source) VALUES (?, ?, ?)', + (memo_id, tag.strip(), 'ai')) + + conn.commit() + current_app.logger.info(f"AI Analysis SUCCESS: ID {memo_id}, Tags extracted: {len(ai_tags)}") + return jsonify({'summary': summary, 'tags': ai_tags}) + except Exception as e: + conn.rollback() + return jsonify({'error': str(e)}), 500 + finally: + conn.close() diff --git a/app/routes/auth.py b/app/routes/auth.py new file mode 100644 index 0000000..7fd1a4d --- /dev/null +++ b/app/routes/auth.py @@ -0,0 +1,22 @@ +from flask import Blueprint, request, jsonify, session, redirect, url_for # type: ignore +from ..auth import check_auth +from ..utils.i18n import _t + +auth_bp = Blueprint('auth', __name__) + +@auth_bp.route('/login', methods=['POST']) +def login(): + data = request.json + username = data.get('username') + password = data.get('password') + + if check_auth(username, password): + session.permanent = True # Enable permanent session to use LIFETIME config + session['logged_in'] = True + return jsonify({'message': 'Logged in successfully'}) + return jsonify({'error': _t('msg_auth_failed')}), 401 + +@auth_bp.route('/logout') +def logout(): + session.pop('logged_in', None) + return redirect(url_for('main.login_page')) diff --git a/app/routes/file.py b/app/routes/file.py new file mode 100644 index 0000000..863f6d2 --- /dev/null +++ b/app/routes/file.py @@ -0,0 +1,162 @@ +import os +import uuid +import datetime +import mimetypes +from flask import Blueprint, request, jsonify, current_app, Response, send_from_directory, session # type: ignore +from werkzeug.utils import secure_filename # type: ignore +from urllib.parse import quote # type: ignore +from ..database import get_db +from ..auth import login_required +from ..security import encrypt_file, decrypt_file + +file_bp = Blueprint('file', __name__) + +@file_bp.route('/api/upload', methods=['POST']) +@login_required +def upload_file(): + if 'image' not in request.files and 'file' not in request.files: + return jsonify({'error': 'No file provided'}), 400 + + file = request.files.get('image') or request.files.get('file') + if not file or file.filename == '': + return jsonify({'error': 'No selected file'}), 400 + + ext = os.path.splitext(file.filename)[1].lower().replace('.', '') + sec_conf = current_app.config.get('UPLOAD_SECURITY', {}) + blocked = sec_conf.get('blocked_extensions', []) + allowed = sec_conf.get('allowed_extensions', []) + + if ext in blocked: + return jsonify({'error': f'Extension .{ext} is blocked for security reasons.'}), 403 + if allowed and ext not in allowed: + return jsonify({'error': f'Extension .{ext} is not in the allowed list.'}), 403 + + unique_filename = f"{uuid.uuid4()}.{ext}" + filename = secure_filename(unique_filename) + filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename) + + # Encrypt and save + file_bytes = file.read() + encrypted_bytes = encrypt_file(file_bytes) + with open(filepath, 'wb') as f: + f.write(encrypted_bytes) + + # Record attachment in DB + conn = get_db() + c = conn.cursor() + c.execute(''' + INSERT INTO attachments (filename, original_name, file_type, size, created_at) + VALUES (?, ?, ?, ?, ?) + ''', (filename, file.filename, ext, os.path.getsize(filepath), datetime.datetime.now().isoformat())) + conn.commit() + conn.close() + + return jsonify({ + 'url': f"/api/download/{filename}", + 'name': file.filename, + 'ext': ext + }) + +@file_bp.route('/api/download/') +def download_file_route(filename): + filename = secure_filename(filename) + filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename) + + if not os.path.exists(filepath): + return jsonify({'error': 'File not found'}), 404 + + # Check security status of parent memo + conn = get_db() + c = conn.cursor() + c.execute(''' + SELECT a.original_name, m.is_encrypted + FROM attachments a + LEFT JOIN memos m ON a.memo_id = m.id + WHERE a.filename = ? + ''', (filename,)) + row = c.fetchone() + conn.close() + + # 로그인된 상태라면 암호화된 메모의 파일이라도 본인 확인이 된 것으로 간주하고 허용 + is_logged_in = session.get('logged_in') is True + + # 만약 메모가 암호화되어 있고, 로그인도 되어 있지 않다면 차단 + if row and row['is_encrypted'] and not is_logged_in: + current_app.logger.warning(f"Access Denied: Unauthenticated access to encrypted file {filename}") + return jsonify({'error': 'Access denied. Please login to view this attachment.'}), 403 + + with open(filepath, 'rb') as f: + data = f.read() + + decrypted = decrypt_file(data) + + orig_name = row['original_name'] if row else filename + # 원본 파일명 기반으로 정확한 마임타입 추측 + mime_type, _ = mimetypes.guess_type(orig_name) + if not mime_type: mime_type = 'application/octet-stream' + + # 이미지인 경우 'inline'으로 설정하여 브라우저 본문 내 렌더링 허용, 그 외는 'attachment' + is_image = mime_type.startswith('image/') + disposition = 'inline' if is_image else 'attachment' + + headers = { + 'Content-Disposition': f"{disposition}; filename*=UTF-8''{quote(orig_name)}" + } + + content_data = decrypted if decrypted is not None else data + return Response(content_data, mimetype=mime_type, headers=headers) + +@file_bp.route('/api/assets', methods=['GET']) +@login_required +def get_assets(): + conn = get_db() + c = conn.cursor() + # Filter out files belonging to encrypted memos + c.execute(''' + SELECT a.*, m.title as memo_title + FROM attachments a + LEFT JOIN memos m ON a.memo_id = m.id + WHERE m.is_encrypted = 0 OR m.is_encrypted IS NULL + ORDER BY a.created_at DESC + ''') + assets = [dict(r) for r in c.fetchall()] + conn.close() + return jsonify(assets) +@file_bp.route('/api/attachments/', methods=['DELETE']) +@login_required +def delete_attachment_route(filename): + filename = secure_filename(filename) + filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename) + + conn = get_db() + c = conn.cursor() + # 파일 정보 확인 + c.execute('SELECT id, memo_id FROM attachments WHERE filename = ?', (filename,)) + row = c.fetchone() + + if not row: + conn.close() + return jsonify({'error': 'File not found in database'}), 404 + + # 보안: 메모에 이미 연결된 파일은 삭제하지 않음 (취소 시에는 아직 연결되지 않은 파일만 삭제) + # 만약 연결된 파일을 삭제하고 싶다면 별도의 로직 필요 + if row['memo_id'] is not None: + conn.close() + return jsonify({'error': 'Cannot delete file already linked to a memo'}), 403 + + try: + # 1. DB 삭제 + c.execute('DELETE FROM attachments WHERE filename = ?', (filename,)) + conn.commit() + + # 2. 물리 파일 삭제 + if os.path.exists(filepath): + os.remove(filepath) + + current_app.logger.info(f"Attachment Deleted: {filename}") + return jsonify({'message': 'File deleted successfully'}) + except Exception as e: + conn.rollback() + return jsonify({'error': str(e)}), 500 + finally: + conn.close() diff --git a/app/routes/main.py b/app/routes/main.py new file mode 100644 index 0000000..04d4cb2 --- /dev/null +++ b/app/routes/main.py @@ -0,0 +1,27 @@ +from flask import Blueprint, render_template, redirect, url_for, session, current_app # type: ignore +from ..auth import login_required +import os +import json + +main_bp = Blueprint('main', __name__) + +@main_bp.route('/') +@login_required +def index(): + return render_template('index.html') + +@main_bp.route('/login', methods=['GET']) +def login_page(): + if 'logged_in' in session: + return redirect(url_for('main.index')) + + # i18n 지원을 위해 기본 언어 전달 + config_path = os.path.join(os.getcwd(), 'config.json') + lang = 'ko' + if os.path.exists(config_path): + try: + with open(config_path, 'r', encoding='utf-8') as f: + lang = json.load(f).get('lang', 'ko') + except: pass + + return render_template('login.html', lang=lang) diff --git a/app/routes/memo.py b/app/routes/memo.py new file mode 100644 index 0000000..a4f3b73 --- /dev/null +++ b/app/routes/memo.py @@ -0,0 +1,356 @@ +import datetime +from flask import Blueprint, request, jsonify, current_app # type: ignore +from ..database import get_db +from ..auth import login_required +from ..constants import GROUP_DONE, GROUP_DEFAULT +from ..utils.i18n import _t +from ..utils import extract_links +from ..security import encrypt_content, decrypt_content + +memo_bp = Blueprint('memo', __name__) + +@memo_bp.route('/api/memos', methods=['GET']) +@login_required +def get_memos(): + limit = request.args.get('limit', 20, type=int) + offset = request.args.get('offset', 0, type=int) + group = request.args.get('group', 'all') + query = request.args.get('query', '') + date = request.args.get('date', '') + + conn = get_db() + c = conn.cursor() + + where_clauses = [] + params = [] + + # 1. 그룹/태그 필터링 + if group == GROUP_DONE: + where_clauses.append("status = 'done'") + elif group.startswith('tag:'): + tag_name = group.split(':')[-1] + where_clauses.append("status != 'done'") + where_clauses.append("id IN (SELECT memo_id FROM tags WHERE name = ?)") + params.append(tag_name) + elif group != 'all': + where_clauses.append("status != 'done'") + where_clauses.append("group_name = ?") + params.append(group) + else: + where_clauses.append("status != 'done'") + + # 2. 검색어 필터링 + if query: + where_clauses.append("(title LIKE ? OR content LIKE ?)") + params.append(f"%{query}%") + params.append(f"%{query}%") + + # 3. 날짜 필터링 (캘린더 선택) + if date: + where_clauses.append("created_at LIKE ?") + params.append(f"{date}%") + + # 4. 초기 로드 시 최근 5일 강조 (필터가 없는 경우에만 적용) + if offset == 0 and group == 'all' and not query and not date: + start_date = (datetime.datetime.now() - datetime.timedelta(days=5)).isoformat() + where_clauses.append("(updated_at >= ? OR is_pinned = 1)") + params.append(start_date) + + where_sql = " AND ".join(where_clauses) if where_clauses else "1=1" + + query_sql = f"SELECT * FROM memos WHERE {where_sql} ORDER BY is_pinned DESC, updated_at DESC LIMIT ? OFFSET ?" + c.execute(query_sql, params + [limit, offset]) + memo_rows = c.fetchall() + + if not memo_rows: + conn.close() + return jsonify([]) + + memos = [dict(r) for r in memo_rows] + memo_ids = [m['id'] for m in memos] + placeholders = ','.join(['?'] * len(memo_ids)) + + # --- 🚀 Bulk Fetch: N+1 문제 해결 --- + + # 태그 한꺼번에 가져오기 + c.execute(f'SELECT memo_id, name, source FROM tags WHERE memo_id IN ({placeholders})', memo_ids) + tags_rows = c.fetchall() + tags_map = {} + for t in tags_rows: + tags_map.setdefault(t['memo_id'], []).append(dict(t)) + + # 첨부파일 한꺼번에 가져오기 + c.execute(f'SELECT id, memo_id, filename, original_name, file_type, size FROM attachments WHERE memo_id IN ({placeholders})', memo_ids) + attachments_rows = c.fetchall() + attachments_map = {} + for a in attachments_rows: + attachments_map.setdefault(a['memo_id'], []).append(dict(a)) + + # 백링크 한꺼번에 가져오기 + c.execute(f''' + SELECT ml.target_id, m.id as source_id, m.title + FROM memo_links ml + JOIN memos m ON ml.source_id = m.id + WHERE ml.target_id IN ({placeholders}) + ''', memo_ids) + backlinks_rows = c.fetchall() + backlinks_map = {} + for l in backlinks_rows: + backlinks_map.setdefault(l['target_id'], []).append(dict(l)) + + # 전방 링크(Forward Links) 한꺼번에 가져오기 + c.execute(f''' + SELECT ml.source_id, m.id as target_id, m.title + FROM memo_links ml + JOIN memos m ON ml.target_id = m.id + WHERE ml.source_id IN ({placeholders}) + ''', memo_ids) + links_rows = c.fetchall() + links_map = {} + for l in links_rows: + links_map.setdefault(l['source_id'], []).append(dict(l)) + + # 데이터 가공 및 병합 + for m in memos: + m['tags'] = tags_map.get(m['id'], []) + m['attachments'] = attachments_map.get(m['id'], []) + m['backlinks'] = backlinks_map.get(m['id'], []) + m['links'] = links_map.get(m['id'], []) + + conn.close() + return jsonify(memos) + +@memo_bp.route('/api/stats/heatmap', methods=['GET']) +@login_required +def get_heatmap_stats(): + days = request.args.get('days', 365, type=int) + conn = get_db() + c = conn.cursor() + # 파라미터로 받은 일수만큼 데이터 조회 + start_date = (datetime.datetime.now() - datetime.timedelta(days=days)).isoformat() + + c.execute(''' + SELECT strftime('%Y-%m-%d', created_at) as date, COUNT(*) as count + FROM memos + WHERE created_at >= ? + GROUP BY date + ''', (start_date,)) + + stats = c.fetchall() + conn.close() + return jsonify([dict(s) for s in stats]) + +@memo_bp.route('/api/memos', methods=['POST']) +@login_required +def create_memo(): + data = request.json + title = data.get('title', '').strip() + content = data.get('content', '').strip() + color = data.get('color', '#2c3e50') + is_pinned = 1 if data.get('is_pinned') else 0 + status = data.get('status', 'active').strip() + group_name = data.get('group_name', GROUP_DEFAULT).strip() + user_tags = data.get('tags', []) + is_encrypted = 1 if data.get('is_encrypted') else 0 + password = data.get('password', '').strip() + + if is_encrypted and password: + content = encrypt_content(content, password) + elif is_encrypted and not password: + return jsonify({'error': 'Password required for encryption'}), 400 + + now = datetime.datetime.now().isoformat() + if not title and not content: + return jsonify({'error': 'Title or content required'}), 400 + + conn = get_db() + c = conn.cursor() + try: + c.execute(''' + INSERT INTO memos (title, content, color, is_pinned, status, group_name, is_encrypted, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + ''', (title, content, color, is_pinned, status, group_name, is_encrypted, now, now)) + memo_id = c.lastrowid + + for tag in user_tags: + if tag.strip(): + c.execute('INSERT INTO tags (memo_id, name, source) VALUES (?, ?, ?)', (memo_id, tag.strip(), 'user')) + + links = extract_links(content) + for target_id in links: + c.execute('INSERT INTO memo_links (source_id, target_id) VALUES (?, ?)', (memo_id, target_id)) + + attachment_filenames = data.get('attachment_filenames', []) + for fname in set(attachment_filenames): + c.execute('UPDATE attachments SET memo_id = ? WHERE filename = ?', (memo_id, fname)) + + conn.commit() + current_app.logger.info(f"Memo Created: ID {memo_id}, Title: '{title}', Encrypted: {is_encrypted}") + return jsonify({'id': memo_id, 'message': 'Memo created'}), 201 + except Exception as e: + conn.rollback() + return jsonify({'error': str(e)}), 500 + finally: + conn.close() + +@memo_bp.route('/api/memos/', methods=['PUT']) +@login_required +def update_memo(memo_id): + data = request.json + title = data.get('title') + content = data.get('content') + color = data.get('color') + is_pinned = data.get('is_pinned') + status = data.get('status') + group_name = data.get('group_name') + user_tags = data.get('tags') + is_encrypted = data.get('is_encrypted') + password = data.get('password', '').strip() + + now = datetime.datetime.now().isoformat() + conn = get_db() + c = conn.cursor() + + # 보안: 암호화된 메모 수정 시 비밀번호 검증 + c.execute('SELECT content, is_encrypted FROM memos WHERE id = ?', (memo_id,)) + memo = c.fetchone() + if memo and memo['is_encrypted']: + # 암호화된 메모지만 '암호화 해제(is_encrypted=0)' 요청이 온 경우는 + # 비밀번호 없이도 수정을 시도할 수 있어야 할까? (아니오, 인증이 필요함) + if not password: + conn.close() + return jsonify({'error': _t('msg_encrypted_locked')}), 403 + + # 비밀번호가 맞는지 검증 (복호화 시도) + if decrypt_content(memo['content'], password) is None: + conn.close() + return jsonify({'error': _t('msg_auth_failed')}), 403 + + try: + updates = ['updated_at = ?'] + params = [now] + + # 암호화 처리 로직: 암호화가 활성화된 경우(또는 새로 설정하는 경우) 본문 암호화 + final_content = content.strip() if content is not None else None + if (is_encrypted or (is_encrypted is None and memo['is_encrypted'])) and password: + if final_content is not None: + final_content = encrypt_content(final_content, password) + + if title is not None: + updates.append('title = ?'); params.append(title.strip()) + if final_content is not None: + updates.append('content = ?'); params.append(final_content) + if color is not None: + updates.append('color = ?'); params.append(color) + if is_pinned is not None: + updates.append('is_pinned = ?'); params.append(1 if is_pinned else 0) + if status is not None: + updates.append('status = ?'); params.append(status.strip()) + if group_name is not None: + updates.append('group_name = ?'); params.append(group_name.strip() or GROUP_DEFAULT) + if is_encrypted is not None: + updates.append('is_encrypted = ?'); params.append(1 if is_encrypted else 0) + + params.append(memo_id) + c.execute(f"UPDATE memos SET {', '.join(updates)} WHERE id = ?", params) + + if user_tags is not None: + c.execute("DELETE FROM tags WHERE memo_id = ? AND source = 'user'", (memo_id,)) + for tag in user_tags: + if tag.strip(): + c.execute('INSERT INTO tags (memo_id, name, source) VALUES (?, ?, ?)', (memo_id, tag.strip(), 'user')) + + if content is not None: + c.execute("DELETE FROM memo_links WHERE source_id = ?", (memo_id,)) + links = extract_links(content) + for target_id in links: + c.execute('INSERT INTO memo_links (source_id, target_id) VALUES (?, ?)', (memo_id, target_id)) + + # [Bug Fix] 첨부파일 링크는 본문 수정 여부와 상관없이 항상 갱신 + attachment_filenames = data.get('attachment_filenames') + if attachment_filenames is not None: + c.execute('UPDATE attachments SET memo_id = NULL WHERE memo_id = ?', (memo_id,)) + for fname in set(attachment_filenames): + c.execute('UPDATE attachments SET memo_id = ? WHERE filename = ?', (memo_id, fname)) + + if is_encrypted is not None: + if is_encrypted and password and content: + enc_content = encrypt_content(content, password) + c.execute("UPDATE memos SET is_encrypted = 1, content = ? WHERE id = ?", (enc_content, memo_id)) + elif is_encrypted == 0: + c.execute("UPDATE memos SET is_encrypted = 0 WHERE id = ?", (memo_id,)) + + conn.commit() + current_app.logger.info(f"Memo Updated: ID {memo_id}, Fields: {list(data.keys())}") + return jsonify({'message': 'Updated'}) + except Exception as e: + conn.rollback() + return jsonify({'error': str(e)}), 500 + finally: + conn.close() + +@memo_bp.route('/api/memos/', methods=['DELETE']) +@login_required +def delete_memo(memo_id): + import os + from flask import current_app + + conn = get_db() + c = conn.cursor() + + # 1. 암호화 여부 확인 및 파일 목록 가져오기 + c.execute('SELECT is_encrypted FROM memos WHERE id = ?', (memo_id,)) + memo = c.fetchone() + if not memo: + conn.close() + return jsonify({'error': 'Memo not found'}), 404 + + if memo['is_encrypted']: + conn.close() + return jsonify({'error': _t('msg_encrypted_locked')}), 403 + + # 2. 물리적 파일 삭제 준비 + c.execute('SELECT filename FROM attachments WHERE memo_id = ?', (memo_id,)) + files = c.fetchall() + upload_folder = current_app.config['UPLOAD_FOLDER'] + + try: + # 3. 물리 파일 삭제 루프 + for f in files: + filepath = os.path.join(upload_folder, f['filename']) + if os.path.exists(filepath): + os.remove(filepath) + current_app.logger.info(f"Physical file deleted on memo removal: {f['filename']}") + + # 4. 메모 삭제 (외래 키 제약 조건에 의해 tags 등은 자동 삭제되거나 처리됨) + # Note: attachments 테이블의 memo_id는 SET NULL 설정이므로 수동으로 레코드도 삭제해줍니다. + c.execute('DELETE FROM attachments WHERE memo_id = ?', (memo_id,)) + c.execute('DELETE FROM memos WHERE id = ?', (memo_id,)) + + conn.commit() + current_app.logger.info(f"Memo and its {len(files)} files deleted: ID {memo_id}") + return jsonify({'message': 'Deleted memo and all associated files'}) + except Exception as e: + conn.rollback() + return jsonify({'error': str(e)}), 500 + finally: + conn.close() + +@memo_bp.route('/api/memos//decrypt', methods=['POST']) +@login_required +def decrypt_memo_route(memo_id): + data = request.json + password = data.get('password') + if not password: return jsonify({'error': 'Password required'}), 400 + conn = get_db(); c = conn.cursor() + c.execute('SELECT content, is_encrypted FROM memos WHERE id = ?', (memo_id,)) + memo = c.fetchone(); conn.close() + if not memo: return jsonify({'error': 'Memo not found'}), 404 + if not memo['is_encrypted']: return jsonify({'content': memo['content']}) + decrypted = decrypt_content(memo['content'], password) + if decrypted is None: + current_app.logger.warning(f"Decryption FAILED: ID {memo_id}") + return jsonify({'error': 'Invalid password'}), 403 + + current_app.logger.info(f"Decryption SUCCESS: ID {memo_id}") + return jsonify({'content': decrypted}) diff --git a/app/routes/settings.py b/app/routes/settings.py new file mode 100644 index 0000000..ebf0774 --- /dev/null +++ b/app/routes/settings.py @@ -0,0 +1,58 @@ +import os +import json +from flask import Blueprint, request, jsonify, current_app # type: ignore +from ..auth import login_required + +settings_bp = Blueprint('settings', __name__) + +CONFIG_PATH = os.path.join(os.getcwd(), 'config.json') + +# 기본 테마 및 시스템 설정 +DEFAULT_SETTINGS = { + "bg_color": "#0f172a", + "sidebar_color": "rgba(30, 41, 59, 0.7)", + "card_color": "rgba(30, 41, 59, 0.85)", + "encrypted_border": "#00f3ff", + "ai_accent": "#8b5cf6", + "enable_ai": True, + "lang": "ko" +} + +@settings_bp.route('/api/settings', methods=['GET']) +@login_required +def get_settings(): + if not os.path.exists(CONFIG_PATH): + return jsonify(DEFAULT_SETTINGS) + + try: + with open(CONFIG_PATH, 'r', encoding='utf-8') as f: + data = json.load(f) + # 기본값과 병합하여 신규 필드 등 누락 방지 + full_data = {**DEFAULT_SETTINGS, **data} + return jsonify(full_data) + except Exception as e: + return jsonify(DEFAULT_SETTINGS) + +@settings_bp.route('/api/settings', methods=['POST']) +@login_required +def save_settings(): + data = request.json + if not data: + return jsonify({'error': 'No data provided'}), 400 + + try: + # 기존 데이터 로드 후 병합 + current_data = {} + if os.path.exists(CONFIG_PATH): + with open(CONFIG_PATH, 'r', encoding='utf-8') as f: + current_data = json.load(f) + + updated_data = {**current_data, **data} + + with open(CONFIG_PATH, 'w', encoding='utf-8') as f: + json.dump(updated_data, f, indent=4, ensure_ascii=False) + + current_app.logger.info(f"System Settings Updated: {list(data.keys())}") + return jsonify({'message': 'Settings saved successfully'}) + except Exception as e: + return jsonify({'error': str(e)}), 500 diff --git a/app/security.py b/app/security.py new file mode 100644 index 0000000..52aea14 --- /dev/null +++ b/app/security.py @@ -0,0 +1,58 @@ +import os +import base64 +from cryptography.fernet import Fernet # type: ignore +from cryptography.hazmat.primitives import hashes # type: ignore +from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC # type: ignore + +def derive_key(password: str): + """ + .env에 설정된 ENCRYPTION_SEED를 솔트로 사용하여 사용자 비밀번호로부터 암호화 키를 파생합니다. + """ + seed = os.getenv('ENCRYPTION_SEED', 'default_secret_seed_123').encode() + kdf = PBKDF2HMAC( + algorithm=hashes.SHA256(), + length=32, + salt=seed, + iterations=100000, + ) + key = base64.urlsafe_b64encode(kdf.derive(password.encode())) + return key + +def encrypt_content(content: str, password: str): + """지정된 비밀번호로 내용을 암호화합니다.""" + key = derive_key(password) + f = Fernet(key) + encrypted_data = f.encrypt(content.encode()).decode() + return encrypted_data + +def decrypt_content(encrypted_data: str, password: str): + """지정된 비밀번호로 암호화된 내용을 복호화합니다.""" + try: + key = derive_key(password) + f = Fernet(key) + decrypted_data = f.decrypt(encrypted_data.encode()).decode() + return decrypted_data + except Exception: + # 비밀번호가 틀리거나 데이터가 손상된 경우 + return None + +def get_master_key(): + """파일 암호화에 사용될 시스템 마스터 키를 생성합니다.""" + seed = os.getenv('ENCRYPTION_SEED', 'master_default_seed_777') + return derive_key(seed) + +def encrypt_file(data: bytes): + """데이터를 시스템 마스터 키로 암호화합니다.""" + key = get_master_key() + f = Fernet(key) + return f.encrypt(data) + +def decrypt_file(data: bytes): + """데이터를 시스템 마스터 키로 복호화합니다.""" + try: + key = get_master_key() + f = Fernet(key) + return f.decrypt(data) + except Exception: + # 복호화 실패 (암호화되지 않은 파일이거나 키가 다름) + return None diff --git a/app/utils/__init__.py b/app/utils/__init__.py new file mode 100644 index 0000000..cc92bc3 --- /dev/null +++ b/app/utils/__init__.py @@ -0,0 +1,33 @@ +import re +from ..constants import GROUP_DEFAULT + +def parse_metadata(text): + """ + 텍스트에서 ##그룹명 과 #태그 추출 유틸리티. + """ + group_name = GROUP_DEFAULT + tags = [] + + if not text: + return group_name, tags + + group_match = re.search(r'##(\S+)', text) + if group_match: + group_name = group_match.group(1) + + tag_matches = re.finditer(r'(? **"지식은 기록될 때 힘을 얻고, 연결될 때 생명을 얻는다."** + +본 프로젝트는 개인용 지식창고 및 메모 서버로, **보안**, **지능형 연결(Nebula)**, 그리고 **기록의 습관(Heatmap)**을 핵심 가치로 삼습니다. + +## 🚀 프로젝트 개요 +- **이름**: 뇌사료 (Brain Dogfood) +- **핵심 가치**: + - **지식 네뷸라 (Knowledge Nebula)**: D3.js 기반의 유기적인 지식 그래프 시각화. + - **지식 성장 히트맵 (Growth Heatmap)**: 꾸준한 기록을 시각화하는 활동 대시보드. + - **이중 보안**: 메모별 개별 암호화 및 미디어 보안 실드. + - **AI 구조화**: Gemini 2.0 Flash 기반 자동 요약 및 지능형 태깅. + +## ✨ What's New in v5.0 +- **Heatmap**: 최근 1년/6개월/3개월/1개월 활동량 지표 추가. +- **Performance**: 대량 데이터 로딩 최적화(Bulk Fetch) 및 무한 스크롤 도입. +- **Editor**: 중요 지식 강조를 위한 글자 색상(Color Syntax) 기능 통합. + +## 📂 문서 인덱스 +1. [**사용자 매뉴얼 (User Manual)**](user_manual.md): **[최초 사용자 필독]** 사용법 및 연결 문법 +2. [**시스템 아키텍처 (Architecture)**](architecture.md): 폴더 구조 및 모듈형 설계 +3. [**데이터베이스 및 API 명세 (API Reference)**](api_reference.md): DB 스키마 및 확장된 API 명세 +4. [**핵심 기능 가이드 (Features)**](features.md): 히트맵 알고리즘 및 AI 인사이트 메커니즘 +5. [**로직 흐름도 (Logic Flow)**](logic_flow.md): 앱 라이프사이클 및 보안 상태 전이 규칙 +6. [**소스 매핑 가이드 (Source Mapping)**](source_mapping.md): 호출 관계 및 Ops 도구 매핑 +7. [**단축키 가이드 (Shortcuts Guide)**](shortcuts.md): **[업무 효율 극대화]** 탐색 및 편집 단축키 총정리 + +--- +*Last Updated: 2026-04-15* diff --git a/docs/api_reference.md b/docs/api_reference.md new file mode 100644 index 0000000..4dc5366 --- /dev/null +++ b/docs/api_reference.md @@ -0,0 +1,44 @@ +# 📡 데이터베이스 및 API 명세서 (v13.5) + +본 문서는 `뇌사료` 프로젝트의 데이터 저장 구조(Schema)와 모든 외부 통신 인터페이스(API)를 상세히 기술합니다. + +## 🗄️ 1. 데이터베이스 스키마 (DB Schema) + +### 1.1 `memos` 테이블 +메모의 핵심 데이터를 저장합니다. +| 컬럼명 | 타입 | 기본값 | 설명 | +| :--- | :--- | :--- | :--- | +| `id` | INTEGER | PRIMARY KEY | 자동 증가 고유 아이디 | +| `title` | TEXT | - | 메모 제목 | +| `content` | TEXT | - | 메모 본문 (암호화 시 바이너리 텍스트) | +| `is_encrypted` | BOOLEAN | 0 | 암호화 여부 | + +### 1.2 `memo_links` 테이블 (v7.0 추가) +메모 간의 `[[#ID]]` 링크 및 시각화 인력을 관리합니다. +| 컬럼명 | 타입 | 설명 | +| :--- | :--- | :--- | +| `source_id` | INTEGER | 링크를 건 메모 ID | +| `target_id` | INTEGER | 링크 대상 메모 ID | + +--- + +## 🌐 2. API 엔드포인트 전수 명세 + +### 2.1 Memos & Analysis +| Method | URL | Description | +| :--- | :--- | :--- | +| `GET` | `/api/memos` | 전체 메모 목록, 태그, 첨부파일, **백링크** 정보 통합 조회 | +| `POST` | `/api/memos//decrypt` | 비밀번호 검증 및 본문 일시 복호화 | +| `GET` | `/api/stats/heatmap` | 최근 N일간의 일자별 메모 작성 수(통계) 조회 (`days` 파라미터 지원) | + +### 2.2 Assets (제한적 접근) +| Method | URL | Security Policy | Description | +| :--- | :--- | :--- | :--- | +| `GET` | `/api/download/` | **세션 필수(로그인 상호작용)** | 이미지/파일 다운로드. 이미지인 경우 `inline` 처리 및 암호화 메모 관련 파일은 로그인 미달 시 403 차단. | +| `POST` | `/api/upload` | `login_required` | 파일 업로드 및 서버 측 마스터 키 암호화 저장. | + +### 2.3 Settings & Ops (v11.0 추가) +| Method | URL | Description | +| :--- | :--- | :--- | +| `GET` | `/api/settings` | 서버 사이드 테마 및 전역 설정 조회 | +| `POST` | `/api/settings` | UI 테마 설정을 서버에 영구 기록 | diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..c6e1b06 --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,38 @@ +# 🏢 시스템 아키텍처 및 폴더 구조 (v5.0+) + +본 문서는 `뇌사료` 프로젝트의 물리적 파일 구조와 논리적 설계 아키텍처를 상세히 기술합니다. + +## 📁 1. 폴더 구조 (Folder Structure) + +| 경로 | 역할 | 상세 설명 | +| :--- | :--- | :--- | +| `/app` | **Backend Core** | Flask 애플리케이션의 핵심 로직 및 라우트 | +| `/app/routes` | **Modular Routes** | 기능별로 분리된 API 엔드포인트 패키지 | +| `/data` | **Database Box** | SQLite3 DB 파일 (`memos.db`) 저장 위치 | +| `/docs` | **Documentation** | 시스템 기술 문서 및 가이드 | +| `/logs` | **Log Box** | 시스템 작동 및 접근 로그 (`app.log`) | +| `/static` | **Static Assets** | CSS, 이미지, 파비코 및 프론트엔드 JS | +| `/static/js/components` | **UI Components** | D3.js 시각화 모듈 및 UI 핵심 로직 | +| `/templates` | **HTML Templates** | Jinja2 기반 레이아웃 및 페이지 | +| `deploy.py` | **Ops Tool** | 수술적 정밀 배포 도구 (Surgical Deployment) | +| `backup.py` | **Disaster Recovery** | 핵심 데이터(DB, .env, 첨부파일) 증분 백업 도구 | + +--- + +## 🏗️ 2. 설계 아키텍처 (Design Architecture) + +### 2.1 Backend: Blueprint-based Modular Flask +- **패키지 구조**: `app/__init__.py`에서 중앙 집중식으로 앱을 생성하고, `routes/` 아래의 각 기능을 Blueprint로 등록합니다. +- **보안 실드 (Security Shield)**: `before_request` 단계에서 비정상적인 트래픽 및 파라미터를 필터링하는 로깅 시스템이 선제적으로 작동합니다. +- **성능 최적화 (Bulk Fetch)**: 다량의 메모리 조회 시 발생하는 N+1 문제를 방지하기 위해 태그, 첨부파일, 백링크 정보를 한꺼번에 Fetch하는 벌크 조회 로직이 적용되었습니다. + +### 2.2 Frontend: Modular Component Architecture +- **지식 네뷸라 (Knowledge Nebula)**: D3.js의 물리 시뮬레이션 엔진을 도입하여 유기적인 성단 구조를 시각화합니다. +- **컴포넌트 중심 설계**: `HeatmapManager.js` (활동 시각화), `CalendarManager.js` (달력), `Visualizer.js` (그래프), `DrawerManager.js` (탐색기) 등으로 독립된 모듈 구조를 채택하여 유지보수성을 극대화했습니다. +- **레이아웃 혁명**: **무한 스크롤(Infinite Scroll)** 페이징 기법을 도입하여 수천 개의 지식 파편도 성능 저하 없이 탐색할 수 있습니다. +- **State Management**: `AppService.js`를 중앙 상태 관리 엔진으로 활용하여 데이터 요청과 UI 업데이트의 정합성을 유지합니다. + +### 2.3 Ops & Reliability +- **Merged Configuration**: 개발/운영 환경의 환경변수를 한곳에서 관리하며, 배포 시 `.env` 파일을 통해 보안 설정이 주입됩니다. +- **Surgical Cleanup**: 배포 시 운영 데이터(DB, Uploads)는 보존하고 코드 영역만 정밀하게 교체하는 수술적 배포 방식을 채택했습니다. +- **Disaster Recovery**: `backup.py`를 통해 서버 침해나 시스템 붕괴 시에도 3대 핵심 자산(.env, DB, Uploads)만으로 즉시 복구가 가능한 구조를 갖췄습니다. diff --git a/docs/features.md b/docs/features.md new file mode 100644 index 0000000..0b853d6 --- /dev/null +++ b/docs/features.md @@ -0,0 +1,48 @@ +# 💎 핵심 기능 가이드 (v13.3) + +본 문서는 `뇌사료` 프로젝트를 상징하는 핵심 기능들인 **지식 시각화**, **암호화**, **AI 분석**에 대한 상세 명세를 담고 있습니다. + +## 🌌 1. 지식 네뷸라 (Knowledge Nebula) +D3.js v7 물리 시뮬레이션 엔진을 통해 파편화된 메모들을 유기적인 우주 성단 구조로 시각화합니다. + +### 1.1 시각화 아키텍처 +- **엔진**: D3.js Force Simulation +- **성단(Constellation) 로직**: + - **그룹 인력**: 같은 그룹에 속한 메모들은 서로를 끌어당겨 하나의 별무리를 형성합니다. + - **의미론적 연결**: 공통 태그를 공유하는 노드들 사이에 보이지 않는 인력을 설정하여 맥락이 유사한 지식들이 근접하게 배치됩니다. +- **인터랙션**: 노드 클릭 시 상세 정보 모달이 출력되며, 마우스 호버 시 연결된 지식망이 강조(Highlight)됩니다. + +## 🔒 2. 이중 보안 암호화 시스템 (Dual-Layer Security) + +### 2.1 메모 및 파일 보안 +- **개별 암호화**: 메모마다 고유한 비밀번호를 사용하여 `Fernet (AES-128 CBC/HMAC)` 방식으로 본문을 암호화합니다. +- **미디어 실드 (v10.1)**: 모든 첨부파일은 서버 마스터 키로 암호화되어 저장됩니다. 암호화된 메모의 이미지는 **로그인된 세션**에서만 정밀하게 렌더링을 허용하여 데이터 유출을 원천 차단합니다. + +## 🧠 3. Gemini AI 기반 지식 구조화 (AI Insight) + +### 3.1 자동 추출 및 요약 +- **학습된 페르소나**: 최신 Gemini 2.0 Flash 모델이 메모의 맥락을 분석하여 핵심 요약과 태그를 생성합니다. (.env에서 모델 식별자를 언제든 변경할 수 있습니다.) +- **지능형 연동**: AI가 생성한 태그는 지식 네뷸라 엔진의 인력 설정에 반영되어, 사용자가 명시적으로 연결하지 않아도 관련 지식끼리 우주 상에서 가까이 부유하게 됩니다. + +## 🔗 4. 내부 링크 및 백링크 시스템 + +### 4.1 연결 문법 (`[[#ID]]`) +- **자동 링크**: 본문에 `[[#12]]`와 같이 입력하면 뷰어에서 클릭 가능한 링크로 변환되며, 지식 맵 상에서 두 노드 사이에 **강력한 실선**이 형성됩니다. +- **역방향 추적 (Backlinks)**: 특정 메모 카드 하단에 해당 메모를 인용 중인 다른 메모의 목록이 노출되어, 지식의 흐름을 양방향으로 추적할 수 있습니다. +27: +32: ## 🌡️ 5. 지식 성장 히트맵 (Intellectual Growth Heatmap) - v14.0 +33: +34: ### 5.1 활동 시각화 +35: - **기록 습관 형성**: 최근 365일간의 활동량을 GitHub 스타일의 그리드로 시각화하여 지식 축적의 꾸준함을 독려합니다. +36: - **동적 범위 필터링**: 사용자의 필요에 따라 **1개월 / 3개월 / 6개월 / 1년** 단위를 자유롭게 선택하여 볼 수 있습니다. +37: - **상태 보존**: 선택한 보기 설정은 `localStorage`에 저장되어 재접속 시에도 유지됩니다. +38: +39: ### 5.2 지능형 히트맵 알고리즘 +40: - **단계별 농도**: 해당 일의 메모 작성 수에 따라 5단계(`lvl-0`~`lvl-4`)의 색상 농도가 적용됩니다. +41: - **프리미엄 그라데이션**: 뇌사료 특유의 Cyan(시안)에서 Purple(보라)로 이어지는 네온 그라데이션 테마를 따릅니다. +42: +43: ## 🎨 6. 확장된 에디터 스타일링 (Enhanced Editor) +44: +45: ### 6.1 컬러 텍스트 (Color Syntax) +46: - **시각적 강조**: Toast UI Editor의 컬러 신택스 플러그인을 통합하여, 본문 중 중요한 지식 키워드를 다양한 색상으로 강조할 수 있습니다. +47: - **지각적 설계**: 다크 모드 환경에서도 가독성이 뛰어난 색상 팔레트를 우선적으로 제공합니다. diff --git a/docs/img/main.png b/docs/img/main.png new file mode 100644 index 0000000000000000000000000000000000000000..b080cba3d2b795ea7ec9b76d923e0995dc88b242 GIT binary patch literal 341947 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�MDc&IQjcqKR*>@A)@n!Fr~lMmczH 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

ZAPf|JfN3i%E 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

|d+ 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ⓈGzqcW!+nxsEE&36%AXy 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 [!TIP] +> - **`Alt + `** 단축키는 게임 'Quake'의 콘솔창 호출 방식에서 유래한 것으로, 영감이 떠오른 순간 가장 빠르게 기록을 시작할 수 있는 방법입니다. diff --git a/docs/source_mapping.md b/docs/source_mapping.md new file mode 100644 index 0000000..d033bfc --- /dev/null +++ b/docs/source_mapping.md @@ -0,0 +1,42 @@ +# 🔗 소스 매핑 및 호출 관계 (v13.4) + +본 문서는 프론트엔드 컴포넌트와 백엔드 API, 그리고 내부 함수 간의 호출 관계와 인터페이스를 기술합니다. + +## 📱 1. 프론트엔드 모듈간 관계 + +| 모듈 (Component) | 기능 설명 | 주요 호출 (Callee) | +| :--- | :--- | :--- | +| `app.js` | **Orchestrator** | `Visualizer`, `DrawerManager`, `ModalManager`, `API` | +| `Visualizer.js` | **Nebula Engine** | `D3.js`, `ModalManager.open()`, `AppService` | +| `DrawerManager.js` | **Explorer** | `AppService.filterMemos()`, `ModalManager` | +| `ModalManager.js` | **Viewer** | `utils.parseInternalLinks()`, `utils.fixImagePaths()` | +| `ComposerManager.js` | **Editor** | `API.saveMemo()`, `AttachmentBox` | + +--- + +## ⚙️ 2. 백엔드 핵심 함수 매핑 + +### 2.1 보안 및 유틸리티 +| 함수명 | 모듈 | 역할 | 호출자 | +| :--- | :--- | :--- | :--- | +| `decrypt_file` | `app/security.py` | 첨부파일 물리 복호화 | `file.py:download_file` | +| `extract_links` | `app/utils.py` | `[[#ID]]` 패턴 추출 | `memo.py:create/update` | + +### 2.2 운영 도구 (Ops) +| 파일명 | 역할 | 주요 로직 | +| :--- | :--- | :--- | +| `deploy.py` | **정밀 배포** | SSH/SFTP 기반 Surgical Cleanup & Upload | +| `backup.py` | **백업** | 핵심 자산(.env, DB, Uploads) Tarball 생성 | + +--- + +## 🌐 3. 클라이언트-서버 통신 파라미터 (API Flow) + +### 3.1 `GET /api/download/` (보안 하향 링크) +- **Caller**: `ModalManager.js` (Inline Images) or `AttachmentBox.js` +- **Security**: `session['logged_in']` 확인 -> `is_encrypted` 상태에 따른 접근 제어. +- **Header**: 이미지인 경우 `Content-Disposition: inline`. + +### 3.2 `PUT /api/memos/` (수정 및 보안 전이) +- **Status Change**: 암호화 해제 저장 시 `is_encrypted: 0`으로 DB 상태 업데이트. +- **Process**: `memo.py:update_memo`에서 `password` 유무에 따른 Re-encryption 수행. diff --git a/docs/user_manual.md b/docs/user_manual.md new file mode 100644 index 0000000..66e551c --- /dev/null +++ b/docs/user_manual.md @@ -0,0 +1,113 @@ +# 📔 뇌사료 (Brain Dogfood) 사용자 매뉴얼 (v5.0+) + +'뇌사료' 프로젝트에 오신 것을 환영합니다! 본 매뉴얼은 파편화된 영감을 체계적인 지식 성단(Nebula)으로 구축하는 데 필요한 모든 가이드를 제공합니다. + +--- + +## 🌌 1. 지식 네뷸라 (시각화 탐색) + +메인 전면에 펼쳐진 **지식 네뷸라**는 단순한 목록이 아닌 지식의 유기적인 지도를 보여줍니다. + +- **노드(Node)**: 각각의 메모를 상징합니다. + - **크기**: 내용이 많거나 연결이 많을수록 노드가 거대해집니다. + - **색상**: 각 메모에 설정된 고유한 그룹 색상을 따릅니다. + - **🔒 아이콘**: 암호화된 메모임을 나타내며, 제목만 미리보기로 제공됩니다. +- **링크(Link)**: + - **실선**: `[[#ID]]` 문법으로 명시적으로 연결된 관계입니다. + - **인력(Gravity)**: 같은 그룹이나 공통 태그를 가진 메모들은 서로를 끌어당겨 가까이 배치됩니다. + +--- + +## 🌡️ 3. 지식 성장 히트맵 (Heatmap) 사용법 + +사이드바에 위치한 히트맵은 사용자의 기록 강도를 시각적으로 보여줍니다. + +- **기간 전환**: 히트맵 상단 제목 옆의 드롭다운을 통해 **1개월 / 3개월 / 6개월 / 1년** 단위를 선택할 수 있습니다. +- **상태 유지**: 한 번 선택한 기간은 브라우저에 저장되어 다음 접속 시에도 그대로 유지됩니다. +- **활동량 확인**: 각 칸에 마우스를 올리면 해당 날짜에 작성된 메모의 개수를 확인할 수 있습니다. 색상이 진해질수록(Cyan -> Purple) 더 많은 지식을 축적했음을 의미합니다. + +--- + +## ✍️ 4. 메모 작성 및 스타일링 + +### 4.1 지식 연결 문법 (`[[#ID]]`) +메모 간의 명시적인 지식을 연결하려면 본문에 샵(#) 기호와 메모 번호를 사용하세요. +> 예: "이 개념은 `[[#12]]`에서 다룬 내용과 상충됩니다." +- **효과**: 뷰어에서 클릭 시 해당 메모로 바로 이동하며, 지식 네뷸라 상에 강력한 연결선이 형성됩니다. + +### 4.2 컬러 텍스트 (Color Syntax) +에디터 상단 툴바의 **색상 선택 아이콘**을 사용하여 텍스트에 색상을 입힐 수 있습니다. 중요 키워드를 강조하여 지식의 가독성을 높이세요. + +### 4.3 개별 메모 암호화 +중요한 개인 정보나 아이디어는 암호화하여 보호할 수 있습니다. +- **사용법**: 편집기 하단의 **[암호화 사용]** 체크 -> 비밀번호 설정. +- **특약**: 암호화된 메모는 서버 측에서도 해독이 불가능하며, 비밀번호 분실 시 복구가 절대 불가능하므로 주의하세요. +- **복호화**: 작성된 암호화 메모 옆의 **🔓 해독** 버튼을 눌러 비밀번호 입력 시 일시적으로 내용을 확인할 수 있습니다. + +--- + +--- + +## 🧠 5. AI 인텔리전스 (AI Insights) + +### 5.1 AI 활성화 및 API 키 설정 (초보자 가이드) +'뇌사료'의 지능형 기능을 사용하려면 Google의 Gemini API 키가 필요합니다. 다음 단계에 따라 **1분 만에 무료로** 설정을 마칠 수 있습니다. + +1. **키 발급**: [Google AI Studio (https://aistudio.google.com/app/apikey)](https://aistudio.google.com/app/apikey)에 접속합니다. +2. **프로젝트 생성**: "Create API key in new project" 버튼을 누릅니다. +3. **키 복사**: 생성된 `AIza...`로 시작하는 긴 문자열을 복사합니다. +4. **서버 적용**: 본 프로젝트 폴더의 `.env` 파일을 열고 `GEMINI_API_KEY=` 뒤에 복사한 키를 붙여넣고 저장합니다. +5. **활성화**: 앱 우상단 **[⚙️ 설정]** -> **AI 기능 활성화** 체크박스를 켜고 저장합니다. + +> [!TIP] +> - API 키 발급은 완전히 무료이며, 개인적인 용도로는 충분한 할당량이 제공됩니다. +> - 키가 없더라도 메모 작성 및 시각화 등 기본적인 기능은 "NO AI" 모드로 완벽하게 작동합니다. + +### 5.2 주요 기능 +- **자동 요약**: 방대한 내용을 AI가 1~2문장의 핵심 문장으로 압축해줍니다. +- **스마트 태그**: 본문을 분석하여 자동으로 추천 태그를 생성합니다. +- **추론형 배치**: AI가 생성한 태그를 기반으로 지식 네뷸라 상에서 비슷한 맥락의 메모들이 자동으로 성단을 형성합니다. + +--- + +--- + +## ⌨️ 6. 단축키 및 작업 효율 (Shortcuts) + +'뇌사료'는 마우스 없이도 거의 모든 작업을 수행할 수 있도록 강력한 **Ctrl 기반** 단축키를 지원합니다. + +### 6.1 전역 내비게이션 +- **`Alt + `** (Backtick): ⚡ **Quake 스타일 새 메모** (영감을 즉시 기록) +- **`Ctrl + Shift + N`**: 새 메모 작성기 열기 📝 +- **`Ctrl + Shift + G`**: 지식 네뷸라(시각화) 열기 🕸️ +- **`Ctrl + Shift + E`**: 지식 탐색기(사이드바) 열기 🔍 +- **`Ctrl + Shift + C`**: 사이드바 캘린더 토글 📅 +- **`Ctrl + Shift + Q`** 또는 **`ESC`**: 모든 모달 및 드로어 닫기 + +### 6.2 에디터 작업 +- **`Ctrl + Enter`** 또는 **`Ctrl + S`**: **현재 메모 저장 및 게시** 💾 +- **`/` (Slash)**: 슬래시 명령 오픈 (AI 요약, 서식 등) 🪄 +- **`Shift + ESC`**: 작성 취소 및 닫기 + +### 6.3 마우스 팁 +- **`Alt + 클릭`**: 메인 그리드에서 메모를 즉시 수정 ✏️ + +--- + +## 🚀 7. 운영 및 관리 (Ops & Backup) + +### 7.1 정밀 배포 (`deploy.py`) +개발 환경에서 작업한 코드를 서버로 안전하게 배포합니다. +```bash +python deploy.py +``` + +### 7.2 재난 복구 백업 (`backup.py`) +서버의 모든 핵심 데이터를 압축하여 안전하게 보관합니다. +```bash +python backup.py +``` + +--- + +**지식의 우주를 마음껏 탐험하세요!** 🛸🌌 diff --git a/docs/v2_mobile_roadmap.md b/docs/v2_mobile_roadmap.md new file mode 100644 index 0000000..7ae256a --- /dev/null +++ b/docs/v2_mobile_roadmap.md @@ -0,0 +1,49 @@ +# 📱 v2.0 모바일 최적화 로드맵 (Roadmap) + +본 문서는 `뇌사료` 프로젝트 v2.0에서 다룰 모바일 해상도 지원 및 UX 최적화 범위에 대한 정밀 분석 내역을 담고 있습니다. + +## 1. 레이아웃 및 응답성 (Responsive Layout) + +### 1.1 오프캔버스 사이드바 (Off-canvas Sidebar) +- **현황**: 사이드바가 가로 공간을 상시 점유하여 모바일에서 가독성 저해. +- **v2.0 목표**: 768px 이하에서 사이드바를 기본적으로 숨기고, 상단 햄버거 메뉴 버튼 클릭 시 왼쪽에서 슬라이드되는 드로어(Drawer) 방식으로 전환. +- **기술적 구현**: `transform: translateX(-100%)` 및 `z-index`를 활용한 오버레이 처리. + +### 1.2 가변형 메모 그리드 (Fluid Masonry Grid) +- **현황**: 열 개수가 고정되거나 모바일에서 너무 좁게 보임. +- **v2.0 목표**: 모바일 해상도에서 메모 카드를 1열(100%)로 강제하여 텍스트 가독성 극대화. 패딩 값을 `3rem`에서 `1rem`으로 축소. + +--- + +## 2. 입력 및 작성 경험 (Composer UX) + +### 2.1 인터페이스 수직 스태킹 (Vertical Stacking) +- **현황**: 제목, 그룹, 태그 입력창이 가로로 배치되어 모바일에서 잘림. +- **v2.0 목표**: `flex-direction: column`을 적용하여 제목 -> 메타 정보(그룹/태그) -> 에디터 순서로 자연스럽게 흐르도록 재배치. + +### 2.2 모바일 에디터 최적화 +- **v2.0 목표**: Toast UI 에디터의 불필요한 툴바를 숨기고, 모바일 자판이 올라와도 입력 영역이 충분히 확보되도록 높이 자동 조절 기능 추가. + +--- + +## 3. 터치 및 제스처 (Touch & Gestures) + +### 3.1 터치 타겟(Touch Target) 확장 +- **목표**: 모든 버튼 및 상호작용 요소의 크기를 최소 44x44px 이상으로 확보하여 오클릭 방지. +- **세부 사항**: 삭제, 수정, 암호화 토글 버튼의 여백 조정. + +### 3.2 제스처 지원 +- **목표**: 화면 왼쪽 가장자리를 스와이프하여 사이드바를 여는 제스처 로직 검토. + +--- + +## 4. 기술적 체크리스트 (Technical Checklist) + +- [ ] `@media (max-width: 768px)` 기준점 확립. +- [ ] 터치 이벤트(`touchstart`, `touchend`) 처리 최적화. +- [ ] `safe-area-inset-bottom` 등 최신 모바일 기기의 노치 및 하단 바 대응. +- [ ] 모바일 데이터 환경을 고려한 이미지 지연 로딩(Lazy Loading) 적용. +- [ ] 모달 창의 `width: 100%; height: 100%;` 전체 화면 모드 지원. + +--- +*Generated for Brain Dogfood v2.0 Development* diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..523c7e0 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +Flask==3.0.2 +google-genai +python-dotenv==1.0.1 +cryptography==42.0.5 +paramiko==3.4.0 +scp==0.14.5 diff --git a/static/app.js b/static/app.js new file mode 100644 index 0000000..e590d9e --- /dev/null +++ b/static/app.js @@ -0,0 +1,194 @@ +/** + * 뇌사료 메인 엔트리 포인트 (v5.0 리팩토링 완료) + */ +import { API } from './js/api.js'; +import { UI } from './js/ui.js'; +import { AppService } from './js/AppService.js'; +import { EditorManager } from './js/editor.js'; +import { ComposerManager } from './js/components/ComposerManager.js'; +import { CalendarManager } from './js/components/CalendarManager.js'; +import { Visualizer } from './js/components/Visualizer.js'; +import { HeatmapManager } from './js/components/HeatmapManager.js'; +import { DrawerManager } from './js/components/DrawerManager.js'; +import { ModalManager } from './js/components/ModalManager.js'; +import { I18nManager } from './js/utils/I18nManager.js'; +import { Constants } from './js/utils/Constants.js'; + +document.addEventListener('DOMContentLoaded', async () => { + // --- 🔹 Initialization --- + await UI.initSettings(); // ⭐ i18n 및 테마 로딩 완료까지 최우선 대기 + EditorManager.init('#editor'); + + // 작성기 초기화 (저장 성공 시 데이터 새로고침 콜백 등록) + ComposerManager.init(() => AppService.refreshData(updateSidebarCallback)); + + HeatmapManager.init('heatmapContainer'); // 히트맵 초기화 + DrawerManager.init(); + Visualizer.init('graphContainer'); + UI.initSidebarToggle(); + + // --- 🔹 Callbacks --- + const updateSidebarCallback = (memos, activeGroup) => { + UI.updateSidebar(memos, activeGroup, (newFilter) => { + if (newFilter === Constants.GROUPS.FILES) { + ModalManager.openAssetLibrary((id, ms) => UI.openMemoModal(id, ms)); + } else { + AppService.setFilter({ group: newFilter }, updateSidebarCallback); + } + }); + }; + + // 달력 초기화 + CalendarManager.init('calendarContainer', (date) => { + AppService.setFilter({ date }, updateSidebarCallback); + }); + + // 무한 스크롤 초기화 + UI.initInfiniteScroll(() => { + AppService.loadMore(updateSidebarCallback); + }); + + // 드래그 앤 드롭 파일 탐지 + EditorManager.bindDropEvent('.composer-wrapper', (shouldOpen) => { + if (shouldOpen && ComposerManager.DOM.composer.style.display === 'none') { + ComposerManager.openEmpty(); + } + }); + + // --- 🔹 Global Event Handlers for Memo Cards --- + window.memoEventHandlers = { + onEdit: (id) => { + const memo = AppService.state.memosCache.find(m => m.id == id); + ComposerManager.openForEdit(memo); + }, + onDelete: async (id) => { + if (confirm(I18nManager.t('msg_delete_confirm'))) { + await API.deleteMemo(id); + AppService.refreshData(updateSidebarCallback); + } + }, + onAI: async (id) => { + UI.showLoading(true); + try { + await API.triggerAI(id); + await AppService.refreshData(updateSidebarCallback); + } catch (err) { alert(err.message); } + finally { UI.showLoading(false); } + }, + onTogglePin: async (id) => { + const memo = AppService.state.memosCache.find(m => m.id == id); + await API.saveMemo({ is_pinned: !memo.is_pinned }, id); + AppService.refreshData(updateSidebarCallback); + }, + onToggleStatus: async (id) => { + const memo = AppService.state.memosCache.find(m => m.id == id); + const newStatus = memo.status === 'done' ? 'active' : 'done'; + await API.saveMemo({ status: newStatus }, id); + AppService.refreshData(updateSidebarCallback); + }, + onOpenModal: (id) => UI.openMemoModal(id, AppService.state.memosCache), + onUnlock: async (id) => { + const password = prompt(I18nManager.t('prompt_password')); + if (!password) return; + try { + const data = await API.decryptMemo(id, password); + const memo = AppService.state.memosCache.find(m => m.id == id); + if (memo) { + memo.content = data.content; + memo.is_encrypted = false; + memo.was_encrypted = true; + memo.tempPassword = password; + // 검색 필터 적용 (현재 데이터 기준) + UI.renderMemos(AppService.state.memosCache, {}, window.memoEventHandlers, false); + } + } catch (err) { alert(err.message); } + } + }; + + // --- 🔹 Search & Graph --- + const searchInput = document.getElementById('searchInput'); + let searchTimer; + searchInput.oninput = () => { + clearTimeout(searchTimer); + searchTimer = setTimeout(() => { + AppService.setFilter({ query: searchInput.value }, updateSidebarCallback); + }, 300); + }; + + document.getElementById('openGraphBtn').onclick = () => { + document.getElementById('graphModal').classList.add('active'); + setTimeout(() => { + Visualizer.render(AppService.state.memosCache, (id) => { + document.getElementById('graphModal').classList.remove('active'); + UI.openMemoModal(id, AppService.state.memosCache); + }); + }, 150); + }; + + document.getElementById('closeGraphBtn').onclick = () => { + document.getElementById('graphModal').classList.remove('active'); + }; + + document.getElementById('openExplorerBtn').onclick = () => { + DrawerManager.open(AppService.state.memosCache, AppService.state.currentFilterGroup, (filter) => { + AppService.setFilter({ group: filter }, updateSidebarCallback); + }); + }; + + // --- 🔹 Global Shortcuts (Comprehensive Shift to Ctrl-based System) --- + document.addEventListener('keydown', (e) => { + const isCtrl = e.ctrlKey || e.metaKey; + const isAlt = e.altKey; + const key = e.key.toLowerCase(); + + // 1. ESC: 모든 창 닫기 + if (e.key === 'Escape') { + document.querySelectorAll('.modal.active, .drawer.active').forEach(el => el.classList.remove('active')); + if (ComposerManager.DOM.composer.style.display === 'block') ComposerManager.close(); + return; + } + + // 2. Ctrl + Enter / Ctrl + S: 저장 (작성기 열려있을 때) + if (isCtrl && (key === 'enter' || key === 's')) { + if (ComposerManager.DOM.composer.style.display === 'block') { + e.preventDefault(); + ComposerManager.handleSave(updateSidebarCallback); + } + return; + } + + // 3. Ctrl + Shift + Key 조합들 (네비게이션) + if (isCtrl && e.shiftKey) { + e.preventDefault(); + switch (key) { + case 'n': // 새 메모 + ComposerManager.openEmpty(); + break; + case 'g': // 지식 네뷸라 + document.getElementById('openGraphBtn').click(); + break; + case 'e': // 지식 탐색기 + document.getElementById('openExplorerBtn').click(); + break; + case 'c': // 캘린더 토글 + CalendarManager.isCollapsed = !CalendarManager.isCollapsed; + localStorage.setItem('calendar_collapsed', CalendarManager.isCollapsed); + CalendarManager.updateCollapseUI(); + break; + case 'q': // 닫기 + document.querySelectorAll('.modal.active, .drawer.active').forEach(el => el.classList.remove('active')); + ComposerManager.close(); + break; + } + } + + // 4. Quake-style Shortcut: Alt + ` (새 메모) + if (isAlt && key === '`') { + e.preventDefault(); + ComposerManager.openEmpty(); + } + }); + + // --- 🔹 App Start --- + AppService.refreshData(updateSidebarCallback); +}); diff --git a/static/css/components/editor.css b/static/css/components/editor.css new file mode 100644 index 0000000..c30b274 --- /dev/null +++ b/static/css/components/editor.css @@ -0,0 +1,98 @@ +/* Composer & Editor */ +.composer-wrapper { width: 100%; margin-bottom: 3rem; } + +#composer input[type="text"] { + width: 100%; + background: transparent; + border: none; + outline: none; + color: white; + font-family: var(--font); + font-size: 1.1rem; + font-weight: 800; + height: 35px; +} + +.meta-field { + background: rgba(0,0,0,0.3) !important; + border: 1px solid rgba(255,255,255,0.1) !important; + border-radius: 8px; + padding: 5px 10px !important; + font-size: 0.8rem !important; + color: var(--muted) !important; +} + +.editor-resize-wrapper { + resize: vertical; + overflow: hidden; + min-height: 200px; + height: 350px; + border-radius: 8px; + margin-bottom: 10px; +} + +.toastui-editor-defaultUI { + height: 100% !important; + border: 1px solid rgba(255,255,255,0.1) !important; + border-radius: 8px; +} + +#editorAttachments { + width: 100%; + margin-bottom: 5px; +} + +/* --- 키보드 단축키 힌트 바 --- */ +.shortcut-hint-bar { + margin-top: 10px; + border-radius: 8px; + overflow: hidden; +} + +.shortcut-toggle-btn { + background: rgba(56, 189, 248, 0.08); + border: 1px solid rgba(56, 189, 248, 0.15); + color: var(--muted); + font-size: 0.75rem; + padding: 5px 12px; + border-radius: 8px; + cursor: pointer; + transition: all 0.2s ease; + font-family: var(--font); +} +.shortcut-toggle-btn:hover { + background: rgba(56, 189, 248, 0.15); + color: var(--accent); +} + +.shortcut-details { + display: flex; + flex-wrap: wrap; + gap: 8px; + padding: 10px 4px; + animation: fadeSlideIn 0.2s ease; +} + +.shortcut-details .sk { + font-size: 0.72rem; + color: var(--muted); + white-space: nowrap; +} + +.shortcut-details kbd { + display: inline-block; + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 4px; + padding: 1px 5px; + font-size: 0.68rem; + font-family: 'Inter', monospace; + color: var(--accent); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + margin: 0 1px; +} + +@keyframes fadeSlideIn { + from { opacity: 0; transform: translateY(-4px); } + to { opacity: 1; transform: translateY(0); } +} diff --git a/static/css/components/heatmap.css b/static/css/components/heatmap.css new file mode 100644 index 0000000..4d332c0 --- /dev/null +++ b/static/css/components/heatmap.css @@ -0,0 +1,108 @@ +/* 🌡️ Heatmap Component */ + +.heatmap-wrapper { + padding: 12px; + margin-top: 10px; +} + +.heatmap-header { + margin-bottom: 8px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.heatmap-title { + font-size: 0.75rem; + font-weight: 600; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.heatmap-select { + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.1); + color: var(--muted); + font-size: 0.65rem; + padding: 2px 4px; + border-radius: 4px; + cursor: pointer; + outline: none; + transition: all 0.2s; +} + +.heatmap-select:hover { + background: rgba(255, 255, 255, 0.1); + border-color: var(--accent); + color: var(--text); +} + +.heatmap-select option { + background: var(--bg); + color: var(--text); +} + +.heatmap-grid { + display: grid; + grid-template-rows: repeat(7, 10px); + grid-auto-flow: column; + grid-auto-columns: 10px; + gap: 3px; + overflow-x: auto; + padding-bottom: 5px; +} + +/* Hide scrollbar for cleaner look */ +.heatmap-grid::-webkit-scrollbar { + height: 3px; +} +.heatmap-grid::-webkit-scrollbar-thumb { + background: rgba(255, 255, 255, 0.1); + border-radius: 3px; +} + +.heatmap-cell { + width: 10px; + height: 10px; + border-radius: 2px; + background: rgba(255, 255, 255, 0.05); + transition: transform 0.2s, filter 0.2s; +} + +.heatmap-cell:hover { + transform: scale(1.3); + z-index: 10; + filter: brightness(1.2); + cursor: pointer; +} + +.heatmap-cell.out { + opacity: 0; + pointer-events: none; +} + +/* Level Colors (Cyan to Purple Gradient) */ +.heatmap-cell.lvl-0 { background: rgba(255, 255, 255, 0.05); } +.heatmap-cell.lvl-1 { background: rgba(56, 189, 248, 0.3); } +.heatmap-cell.lvl-2 { background: rgba(56, 189, 248, 0.6); } +.heatmap-cell.lvl-3 { background: rgba(56, 189, 248, 0.9); } +.heatmap-cell.lvl-4 { + background: var(--ai-accent); + box-shadow: 0 0 5px var(--ai-accent); +} + +.heatmap-legend { + display: flex; + align-items: center; + gap: 4px; + margin-top: 8px; + font-size: 0.65rem; + color: var(--muted); + justify-content: flex-end; +} + +.heatmap-legend .heatmap-cell { + width: 8px; + height: 8px; +} diff --git a/static/css/components/memo.css b/static/css/components/memo.css new file mode 100644 index 0000000..6f04c41 --- /dev/null +++ b/static/css/components/memo.css @@ -0,0 +1,104 @@ +/* Masonry Grid Layout */ +.masonry-grid { width: 100%; columns: auto 300px; column-gap: 1.5rem; } + +/* Memo Card Styling */ +.memo-card { + break-inside: avoid; margin-bottom: 1.5rem; background: rgba(30, 41, 59, 0.6); + border-radius: 12px; padding: 1.2rem 1.2rem 45px 1.2rem; border: 1px solid rgba(255,255,255,0.05); + position: relative; transition: transform 0.2s, background 0.2s; + max-height: 320px; overflow: hidden; +} + +.memo-card:hover { transform: translateY(-4px); background: rgba(30, 41, 59, 1); } + +.memo-card.compact { max-height: 80px; background: rgba(30, 41, 59, 0.3); border: 1px dashed rgba(255,255,255,0.1); } +.memo-card.compact .memo-content, +.memo-card.compact .memo-ai-summary, +.memo-card.compact .memo-backlinks { display: none; } +.memo-card.compact .memo-title { font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 0px; margin-right: 50px; } +.memo-card.compact::after { display: none; } + +.memo-card.encrypted { + border: 1px solid var(--encrypted-border) !important; + box-shadow: 0 0 15px rgba(0, 243, 255, 0.15), inset 0 0 5px rgba(0, 243, 255, 0.05); +} + +/* Fade-out for long content */ +.memo-card::after { + content: ''; + position: absolute; + bottom: 0; left: 0; width: 100%; height: 60px; + background: linear-gradient(transparent, rgba(15, 23, 42, 0.8)); + pointer-events: none; + border-radius: 0 0 12px 12px; +} + +/* Memo Content Elements */ +.memo-title { font-weight: 600; font-size: 1.0rem; margin-bottom: 0.5rem; } +.memo-content { font-size: 0.9rem; color: #cbd5e1; line-height: 1.6; } +.memo-content img { max-width: 100%; border-radius: 8px; margin-top: 5px; } + +.memo-summary, .memo-ai-summary { + font-size: 0.8rem; + font-style: italic; + color: var(--ai-accent); + border-left: 2px solid var(--ai-accent); + padding-left: 10px; + margin-bottom: 15px; + line-height: 1.5; + opacity: 0.9; +} + +.memo-summary strong { + color: var(--ai-accent); + font-weight: 800; + text-transform: uppercase; + margin-right: 5px; +} + +/* Meta & Badges */ +.memo-meta { margin-bottom: 12px; display: flex; flex-wrap: wrap; gap: 5px; } +.tag-badge { padding: 2px 8px; border-radius: 12px; font-size: 0.75rem; font-weight: bold; } +.tag-user { background: rgba(56, 189, 248, 0.2); color: var(--accent); } +.tag-ai { background: rgba(139, 92, 246, 0.2); color: #c084fc; border: 1px solid rgba(139, 92, 246, 0.3); } +.group-badge { background: rgba(255,255,255,0.05); color: #cbd5e1; padding: 2px 8px; border-radius: 12px; font-size: 0.75rem; font-weight: bold; } + +/* Links & Actions */ +.memo-backlinks { margin-top: 12px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.05); font-size: 0.8rem; color: var(--muted); } +.link-item { color: var(--accent); cursor: pointer; text-decoration: none; font-weight: 600; } +.link-item:hover { text-decoration: underline; } + +.memo-actions { position: absolute; bottom: 10px; right: 10px; opacity: 0; transition: opacity 0.2s; display: flex; gap: 5px; } +.memo-card:hover .memo-actions { opacity: 1; } + +/* Attachments */ +.memo-attachments { + margin-top: 15px; + padding-top: 10px; + border-top: 1px solid rgba(255,255,255,0.05); + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.file-chip { + display: inline-flex; + align-items: center; + gap: 6px; + background: rgba(255,255,255,0.05); + border: 1px solid rgba(255,255,255,0.1); + border-radius: 6px; + padding: 6px 12px; + font-size: 0.8rem; + color: #cbd5e1; + cursor: pointer; + transition: all 0.2s; + text-decoration: none; +} + +.file-chip:hover { + background: rgba(255,255,255,0.1); + border-color: var(--accent); + color: white; + transform: translateY(-1px); +} diff --git a/static/css/components/modals.css b/static/css/components/modals.css new file mode 100644 index 0000000..d85a439 --- /dev/null +++ b/static/css/components/modals.css @@ -0,0 +1,94 @@ +/* Modals & Special Overlay Components */ + +/* Asset Manager / Library */ +.asset-card { + transition: transform 0.2s, background 0.2s; + border: 1px solid transparent; +} + +.asset-card:hover { + transform: scale(1.02); + background: rgba(255,255,255,0.1) !important; + border-color: var(--accent); +} + +/* Settings Modal Specifics */ +.settings-grid { + display: grid; + grid-template-columns: 1fr auto; + gap: 15px; + align-items: center; + padding: 10px 0; +} + +.settings-grid label { font-size: 0.95rem; font-weight: 600; color: #cbd5e1; } + +.settings-grid input[type="color"] { + width: 50px; height: 32px; padding: 0; + border: 2px solid rgba(255,255,255,0.1); border-radius: 6px; + background: transparent; cursor: pointer; outline: none; +} + +.settings-actions { + display: flex; justify-content: flex-end; gap: 10px; + margin-top: 25px; padding-top: 15px; + border-top: 1px solid rgba(255,255,255,0.05); +} + +/* Universal Modal Close Button */ +.close-modal-btn { + position: absolute; + top: 15px; + right: 15px; + background: none; + border: none; + color: var(--muted); + font-size: 1.8rem; + line-height: 1; + cursor: pointer; + transition: all 0.2s; + z-index: 10; + padding: 5px; +} + +.close-modal-btn:hover { + color: var(--accent); + transform: scale(1.1); +} + +/* Explorer Chip Counts */ +.chip-count { + display: inline-flex; + align-items: center; + justify-content: center; + background: rgba(255, 255, 255, 0.1); + color: var(--muted); + font-size: 0.7rem; + font-weight: 800; + padding: 2px 6px; + border-radius: 10px; + margin-left: 6px; + min-width: 18px; + transition: all 0.2s; +} + +.explorer-chip:hover .chip-count { + background: var(--accent); + color: #0f172a; +} + +/* AI Disabled State */ +body.ai-disabled .ai-btn, +body.ai-disabled .ai-summary-box, +body.ai-disabled .memo-summary, +body.ai-disabled .tag-ai, +body.ai-disabled .ai-insight-icon, +body.ai-disabled .ai-badge, +body.ai-disabled .ai-loading-overlay { + display: none !important; +} + +body.ai-disabled [data-source="ai"], +body.ai-disabled .drawer-section:has(h3:contains("태그별 탐색")) { + /* Note: :contains and :has are tricky, but we can target by class or JS filtering */ +} diff --git a/static/css/components/slash-command.css b/static/css/components/slash-command.css new file mode 100644 index 0000000..6fb5ec5 --- /dev/null +++ b/static/css/components/slash-command.css @@ -0,0 +1,81 @@ +/* 슬래시 명령(/) 팝업 스타일 */ + +.slash-popup { + position: fixed; + z-index: 10000; + min-width: 180px; + max-width: 240px; + max-height: 280px; + overflow-y: auto; + background: rgba(15, 23, 42, 0.95); + backdrop-filter: blur(12px); + border: 1px solid rgba(56, 189, 248, 0.2); + border-radius: 10px; + padding: 6px; + box-shadow: + 0 8px 32px rgba(0, 0, 0, 0.5), + 0 0 0 1px rgba(255, 255, 255, 0.05) inset; + animation: slashPopupIn 0.15s ease-out; +} + +/* 스크롤바 커스텀 */ +.slash-popup::-webkit-scrollbar { width: 4px; } +.slash-popup::-webkit-scrollbar-track { background: transparent; } +.slash-popup::-webkit-scrollbar-thumb { + background: rgba(56, 189, 248, 0.3); + border-radius: 2px; +} + +.slash-item { + display: flex; + align-items: center; + gap: 10px; + padding: 4px 10px; + border-radius: 7px; + cursor: pointer; + transition: background 0.12s ease, transform 0.1s ease; + user-select: none; +} + +.slash-item:hover, +.slash-item.selected { + background: rgba(56, 189, 248, 0.12); +} + +.slash-item.selected { + background: rgba(56, 189, 248, 0.18); + box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.25) inset; +} + +.slash-icon { + display: flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 6px; + font-size: 0.8rem; + color: var(--accent, #38bdf8); + flex-shrink: 0; + font-weight: 700; +} + +.slash-label { + font-size: 0.82rem; + color: rgba(255, 255, 255, 0.85); + font-weight: 500; + font-family: var(--font, 'Inter', sans-serif); +} + +@keyframes slashPopupIn { + from { + opacity: 0; + transform: translateY(-6px) scale(0.96); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} diff --git a/static/css/components/visualization.css b/static/css/components/visualization.css new file mode 100644 index 0000000..633826e --- /dev/null +++ b/static/css/components/visualization.css @@ -0,0 +1,184 @@ +/* --- Visualization & Navigation (v3.0+) --- */ + +/* Sidebar Sections for Viz */ +.sidebar-section { + margin-top: 10px; + padding: 0 5px; +} + +.calendar-content { + max-height: 1000px; + overflow: hidden; + transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease; + opacity: 1; +} + +.calendar-content.collapsed { + max-height: 0 !important; + opacity: 0; + pointer-events: none; +} + +/* Calendar Widget */ +.calendar-widget { + background: rgba(15, 23, 42, 0.4); + border-radius: 12px; + padding: 10px; + margin: 5px 0 15px 0; + border: 1px solid rgba(255, 255, 255, 0.05); + font-size: 0.8rem; +} + +.calendar-nav { + display: flex; + justify-content: space-between; align-items: center; + margin-bottom: 10px; padding: 0 5px; +} + +.calendar-nav span { font-weight: 600; color: var(--accent); } +.calendar-nav button { + background: none; border: none; color: var(--muted); cursor: pointer; + font-size: 1rem; padding: 2px 5px; border-radius: 4px; +} +.calendar-nav button:hover { color: white; background: rgba(255, 255, 255, 0.1); } + +.calendar-grid { + display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; +} + +.calendar-day-label { color: var(--muted); font-weight: 800; font-size: 0.7rem; margin-bottom: 5px; } + +.calendar-day { + position: relative; padding: 6px 0; border-radius: 6px; cursor: pointer; + transition: background 0.2s; color: var(--text-dim); +} +.calendar-day:hover { background: rgba(255, 255, 255, 0.1); color: white; } +.calendar-day.today { color: var(--accent) !important; font-weight: 800; background: rgba(56, 189, 248, 0.15); } +.calendar-day.selected { background: var(--accent) !important; color: white !important; box-shadow: 0 0 10px var(--accent); } +.calendar-day.other-month { opacity: 0.2; } + +/* Activity Dots */ +.activity-dot { + position: absolute; bottom: 3px; left: 50%; transform: translateX(-50%); + width: 4px; height: 4px; background: var(--ai-accent); border-radius: 50%; + box-shadow: 0 0 5px var(--ai-accent); +} + +/* Floating Knowledge Explorer (v3.9 Compact) */ +.drawer { + position: fixed; + top: 100px; + left: calc(var(--sidebar-width) + 30px); + width: 320px; /* 크기 축소 */ + max-height: 500px; /* 높이 제한 */ + z-index: 1100; + transform: scale(0.9) translateY(20px); + opacity: 0; + visibility: hidden; + transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease, visibility 0.3s; + display: flex; + flex-direction: column; + padding: 0; + box-shadow: 0 20px 50px rgba(0,0,0,0.6); + border-radius: 16px; /* 더 날렵하게 */ + background: rgba(15, 23, 42, 0.97) !important; + backdrop-filter: blur(40px); + border: 1px solid rgba(255, 255, 255, 0.15); + overflow: hidden; +} + +.drawer.active { + transform: scale(1) translateY(0); + opacity: 1; + visibility: visible; +} + +/* 드래그 중인 상태 */ +.drawer.dragging { + transition: none; /* 드래그 중에는 애니메이션 끔 */ + opacity: 0.8; + cursor: grabbing; +} + +.drawer-header { + padding: 12px 18px; /* 여백 축소 */ + border-bottom: 1px solid rgba(255,255,255,0.08); + display: flex; + justify-content: space-between; + align-items: center; + cursor: grab; + background: rgba(255,255,255,0.03); +} + +.drawer-header h3 { + font-size: 0.9rem; /* 0.95 -> 0.9 */ + font-weight: 800; + color: var(--accent); + margin: 0; +} + +.drawer-body { + flex: 1; + overflow-y: auto; + padding: 15px 18px; /* 여백 축소 */ + scrollbar-width: thin; + scrollbar-color: rgba(255,255,255,0.1) transparent; +} + +.drawer .close-btn { + background: rgba(255,255,255,0.05); + border: none; + color: var(--muted); + font-size: 1rem; + width: 26px; /* 크기 축소 */ + height: 26px; + border-radius: 50%; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s; +} + +.drawer .close-btn:hover { + background: rgba(255,255,255,0.1); + color: white; +} + +/* Colored Explorer Chips (Enhanced) */ +.explorer-section { + margin-bottom: 25px; /* 여백 축소 */ +} + +.explorer-section h3 { + font-size: 0.65rem; /* 폰트 축소 */ + text-transform: uppercase; + letter-spacing: 0.08rem; + color: var(--muted); + margin-bottom: 10px; + opacity: 0.6; +} + +.explorer-grid { + display: flex; + flex-wrap: wrap; + gap: 8px; /* 간격 축소 */ +} + +.explorer-chip { + padding: 5px 12px; /* 여백 축소 */ + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 10px; + cursor: pointer; + font-size: 0.75rem; /* 0.8 -> 0.75 */ + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + color: var(--text-dim); + user-select: none; +} +.explorer-chip:hover { background: rgba(255, 255, 255, 0.1); transform: translateY(-1px); } + +.explorer-chip.tag-user { border-color: rgba(56, 189, 248, 0.3); color: #bae6fd; } +.explorer-chip.tag-user:hover, .explorer-chip.tag-user.active { background: rgba(56, 189, 248, 0.15); border-color: var(--accent); color: white; } +.explorer-chip.tag-ai { border-color: rgba(168, 85, 247, 0.3); color: #e9d5ff; } +.explorer-chip.tag-ai:hover, .explorer-chip.tag-ai.active { background: rgba(168, 85, 247, 0.15); border-color: #a855f7; color: white; } diff --git a/static/css/layout.css b/static/css/layout.css new file mode 100644 index 0000000..cfb4c4a --- /dev/null +++ b/static/css/layout.css @@ -0,0 +1,107 @@ +/* Main Content Area */ +.content { + flex: 1; + overflow-y: auto; + padding: 2rem 3rem; + display: flex; + flex-direction: column; + align-items: center; +} + +/* Top Navigation Bar */ +.topbar { + width: 100%; + display: flex; + justify-content: space-between; + margin-bottom: 2.5rem; +} + +.search-bar { + background: rgba(255,255,255,0.05); + border: 1px solid rgba(255,255,255,0.1); + border-radius: 12px; + padding: 0.8rem 1.2rem; + display: flex; + align-items: center; + gap: 0.5rem; + width: 400px; +} + +.search-bar input { + background: transparent; + border: none; + outline: none; + color: white; + width: 100%; + font-family: var(--font); +} + +/* Glass Panels & Modals Base */ +.glass-panel { + background: var(--card); backdrop-filter: blur(16px); + border: 1px solid rgba(255,255,255,0.1); border-radius: 16px; + padding: 1.2rem; box-shadow: 0 10px 30px -10px rgba(0,0,0,0.5); +} + +.modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.6); + backdrop-filter: blur(5px); + z-index: 1000; + justify-content: center; + align-items: center; +} + +.modal.active { display: flex; } + +.modal-content { + width: 90%; + max-width: 800px; + max-height: 85vh; + overflow-y: auto; + background: var(--bg); +} + +/* UI Utility Components */ +.spinner { + width: 40px; + height: 40px; + border: 4px solid rgba(255,255,255,0.1); + border-top: 4px solid var(--accent); + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } + +.primary-btn { + background: var(--accent); + color: #0f172a; + font-weight: 700; + border: none; + padding: 0.5rem 1.2rem; + border-radius: 8px; + cursor: pointer; + transition: background 0.2s; +} + +.primary-btn:hover { background: var(--accent-hover); } + +.action-btn { + background: rgba(0,0,0,0.4); + border: none; + border-radius: 4px; + padding: 5px 10px; + cursor: pointer; + color: white; + transition: background 0.2s; + font-weight: bold; +} + +.action-btn:hover { background: rgba(184, 59, 94, 0.8); } +.ai-btn:hover { background: var(--ai-accent); color: white; } diff --git a/static/css/login.css b/static/css/login.css new file mode 100644 index 0000000..94ac50e --- /dev/null +++ b/static/css/login.css @@ -0,0 +1,171 @@ +/* 🧠 뇌사료 | Premium Login Styles (v4.1) */ + +:root { + --bg: #0b0f1a; + --card: rgba(22, 30, 46, 0.6); + --text: #f8fafc; + --muted: #94a3b8; + --accent: #38bdf8; + --accent-hover: #0ea5e9; + --ai-accent: #a855f7; + --font: 'Inter', sans-serif; +} + +* { box-sizing: border-box; margin: 0; padding: 0; font-family: var(--font); } + +body { + background-color: var(--bg); + background-image: + radial-gradient(circle at 20% 30%, rgba(56, 189, 248, 0.1), transparent 40%), + radial-gradient(circle at 80% 70%, rgba(168, 85, 247, 0.1), transparent 40%); + color: var(--text); + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; +} + +.login-container { + perspective: 1000px; + width: 100%; + max-width: 440px; + padding: 20px; +} + +.login-card { + background: var(--card); + backdrop-filter: blur(25px); + -webkit-backdrop-filter: blur(25px); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 32px; + padding: 60px 45px; + box-shadow: 0 50px 100px -20px rgba(0, 0, 0, 0.6); + text-align: center; + position: relative; + overflow: hidden; + animation: cardEntrance 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); +} + +@keyframes cardEntrance { + from { opacity: 0; transform: translateY(40px) scale(0.95); } + to { opacity: 1; transform: translateY(0) scale(1); } +} + +.login-card::before { + content: ''; + position: absolute; + top: 0; left: 0; width: 100%; height: 6px; + background: linear-gradient(90deg, var(--accent), var(--ai-accent)); +} + +.logo-area { + margin-bottom: 40px; +} + +.logo { + font-size: 3rem; + font-weight: 800; + margin-bottom: 12px; + background: linear-gradient(135deg, #38bdf8, #a855f7); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + display: inline-block; +} + +.tagline { + font-size: 0.95rem; + color: var(--muted); + font-weight: 400; +} + +/* Form Styling */ +.input-group { + margin-bottom: 24px; + text-align: left; + position: relative; +} + +.input-group label { + display: block; + margin-bottom: 8px; + font-size: 0.85rem; + color: var(--muted); + font-weight: 600; + margin-left: 4px; +} + +.input-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.input-wrapper input { + width: 100%; + background: rgba(0, 0, 0, 0.4); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 16px; + padding: 16px 20px; + color: white; + outline: none; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 1rem; +} + +.input-wrapper input:focus { + background: rgba(0, 0, 0, 0.6); + border-color: var(--accent); + box-shadow: 0 0 20px rgba(56, 189, 248, 0.1); +} + +/* Button & Actions */ +.login-btn { + width: 100%; + background: linear-gradient(135deg, var(--accent), #0ea5e9); + color: #0f172a; + border: none; + border-radius: 16px; + padding: 18px; + font-size: 1.1rem; + font-weight: 800; + cursor: pointer; + transition: all 0.3s ease; + margin-top: 15px; + box-shadow: 0 10px 25px -5px rgba(56, 189, 248, 0.4); +} + +.login-btn:hover { + transform: translateY(-3px); + background: linear-gradient(135deg, #7dd3fc, var(--accent-hover)); + box-shadow: 0 15px 30px -5px rgba(56, 189, 248, 0.6); +} + +.login-btn:active { + transform: translateY(-1px); +} + +.error-msg { + color: #f87171; + font-size: 0.85rem; + margin-top: 20px; + background: rgba(248, 113, 113, 0.1); + padding: 10px; + border-radius: 8px; + display: none; + animation: shake 0.4s; +} + +@keyframes shake { + 0%, 100% { transform: translateX(0); } + 25% { transform: translateX(-5px); } + 75% { transform: translateX(5px); } +} + +.login-card-footer { + margin-top: 40px; + padding-top: 20px; + border-top: 1px solid rgba(255, 255, 255, 0.05); + font-size: 0.8rem; + color: rgba(148, 163, 184, 0.5); +} diff --git a/static/css/mobile.css b/static/css/mobile.css new file mode 100644 index 0000000..de89a95 --- /dev/null +++ b/static/css/mobile.css @@ -0,0 +1,49 @@ +/* --- Mobile Optimization (v2.0+) --- */ +@media (max-width: 768px) { + body { overflow-x: hidden; } + + /* Sidebar as Drawer on Mobile */ + .sidebar { + position: fixed; left: 0; top: 0; height: 100vh; z-index: 1000; + transform: translateX(-100%); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); + width: 280px; box-shadow: 20px 0 50px rgba(0,0,0,0.5); + } + .sidebar.mobile-open { transform: translateX(0); } + .sidebar.collapsed { width: 280px; } + .sidebar.collapsed .text { display: inline !important; } + + /* Mobile Content Layout */ + .content { padding: 1rem; width: 100%; } + .topbar { margin-bottom: 1.5rem; flex-direction: row; align-items: center; justify-content: flex-start; gap: 0; } + .search-bar { flex: 1; order: 2; } + #mobileMenuBtn { display: block !important; order: 1; } + + .sidebar-toggle { font-size: 1.5rem; padding: 10px; } + + /* Composer Adjustments */ + .meta-inputs { flex-direction: column; align-items: stretch !important; gap: 8px !important; } + .meta-field { width: 100% !important; height: 44px !important; font-size: 1rem !important; } + #composer input[type="text"] { height: 44px; font-size: 1.1rem; } + .editor-resize-wrapper { height: 300px; } + + /* Card Layout for Mobile */ + .masonry-grid { columns: 1; column-gap: 0; } + .memo-card { max-height: none; padding-bottom: 50px; } + .memo-card::after { height: 40px; } + + .memo-actions { opacity: 1 !important; bottom: 8px; right: 8px; } + .action-btn { padding: 8px 12px; font-size: 1rem; min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; } + + .modal-content { width: 95%; max-height: 90vh; border-radius: 12px; } + .tag-badge, .group-badge { padding: 4px 10px; font-size: 0.85rem; } + + body { padding-bottom: env(safe-area-inset-bottom); } + + /* Knowledge Drawer Mobile Adjustments */ + .drawer { + left: 10px; right: 10px; width: auto; + transform: translateY(110%); + bottom: 10px; top: auto; height: 70vh; + } + .drawer.active { transform: translateY(0); } +} diff --git a/static/css/sidebar.css b/static/css/sidebar.css new file mode 100644 index 0000000..ae83031 --- /dev/null +++ b/static/css/sidebar.css @@ -0,0 +1,177 @@ +.sidebar { + width: var(--sidebar-width); + height: 100vh; + background: var(--sidebar); + backdrop-filter: blur(10px); + border-right: 1px solid rgba(255,255,255,0.05); + padding: 2rem 1.2rem; + display: flex; + flex-direction: column; + transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), padding 0.3s ease; + flex-shrink: 0; + overflow: hidden; /* 전체 스크롤을 막고 내부 스크롤 활성화 */ +} + +.sidebar-content { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + margin: 0 -0.5rem; /* 스크롤바 공간 확보를 위해 패딩 살짝 조정 */ + padding: 0 0.5rem; +} + +/* Custom Scrollbar for Sidebar */ +.sidebar-content::-webkit-scrollbar { + width: 4px; +} + +.sidebar-content::-webkit-scrollbar-track { + background: transparent; +} + +.sidebar-content::-webkit-scrollbar-thumb { + background: rgba(255, 255, 255, 0.1); + border-radius: 10px; +} + +.sidebar-content::-webkit-scrollbar-thumb:hover { + background: rgba(56, 189, 248, 0.3); +} + +.sidebar-header { margin-bottom: 2.5rem; white-space: nowrap; overflow: hidden; } + +.logo { + font-size: 1.3rem; + font-weight: 800; + background: linear-gradient(135deg, #38bdf8, #8b5cf6); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + transition: opacity 0.2s; +} + +.sidebar-toggle { + background: none; border: none; color: var(--muted); font-size: 1.2rem; cursor: pointer; + padding: 5px; border-radius: 4px; transition: background 0.2s, color 0.2s; +} + +.sidebar-toggle:hover { background: rgba(255,255,255,0.05); color: var(--text); } + +/* Navigation List */ +.nav { list-style: none; display: flex; flex-direction: column; gap: 0; } + +.nav li { + padding: 0.25rem 0.8rem; + border-radius: 4px; + font-weight: 600; + cursor: pointer; + transition: all 0.1s ease; + display: flex; + align-items: center; + gap: 0.6rem; + color: var(--muted); + font-size: 0.85rem; + margin: 0; + border-top: 1px solid transparent; +} + +.nav li:hover { background: rgba(255,255,255,0.05); color: var(--text); } +.nav li.active { background: rgba(56, 189, 248, 0.15); color: var(--accent); } + +/* Navigation Dividers */ +.nav li:not(.sub-item):not(:first-child) { + border-top: 1px solid rgba(255, 255, 255, 0.05); + margin-top: 0.2rem; + padding-top: 0.4rem; +} + +.section-title { + font-size: 0.7rem; + font-weight: 800; + color: rgba(255,255,255,0.25); + margin: 0.8rem 0 0.2rem 0.8rem; + text-transform: uppercase; + letter-spacing: 0.05rem; + list-style: none; + border-top: 1px solid rgba(255, 255, 255, 0.05); + padding-top: 0.5rem; +} + +.sub-item { padding-left: 2.2rem !important; border-top: none !important; margin-top: 0 !important; } + +/* Sidebar Footer */ +.sidebar-footer { + display: flex; + gap: 8px; + margin-top: auto; + padding-top: 20px; + border-top: 1px solid rgba(255,255,255,0.05); +} + +.sidebar-footer .action-btn { flex: 1; padding: 10px !important; } + +#settingsBtn { + flex: 0 0 45px !important; + display: flex; + justify-content: center; + align-items: center; + padding: 0 !important; + font-size: 1.1rem; +} + +/* Collapsed State (Desktop) */ +.sidebar.collapsed { width: var(--sidebar-collapsed-width); padding: 2rem 0.5rem; } +.sidebar.collapsed .text { display: none !important; } +.sidebar.collapsed .logo { width: auto; margin-right: 0; } +.sidebar.collapsed .nav li { padding: 0.8rem 0; justify-content: center; background: none !important; border: none !important; } +.sidebar.collapsed .nav li.active { color: var(--accent); } +.sidebar.collapsed .nav li .icon { font-size: 1.2rem; margin: 0; } +.sidebar.collapsed .section-title { padding: 0.5rem 0; text-align: center; border-top: 1px solid rgba(255,255,255,0.05); height: 1px; overflow: hidden; } +.sidebar.collapsed .sub-item { padding-left: 0 !important; } + +/* Hide redundant sections in collapsed state */ +.sidebar.collapsed .sidebar-section:has(#calendarHeader), +.sidebar.collapsed .sidebar-section:has(#heatmapContainer), +.sidebar.collapsed #calendarHeader, +.sidebar.collapsed #calendarContainer, +.sidebar.collapsed #heatmapContainer { + display: none !important; +} + +/* Remove boxes from buttons in collapsed state */ +.sidebar.collapsed .action-btn { + background: none !important; + border: none !important; + box-shadow: none !important; + justify-content: center !important; + padding: 10px 0 !important; +} + +.sidebar.collapsed .sidebar-footer { padding: 10px 0; justify-content: center; display: flex; flex-direction: column; align-items: center; border-top: 1px solid rgba(255,255,255,0.05);} +.sidebar.collapsed #logoutBtn { padding: 8px !important; justify-content: center; } +.sidebar.collapsed #settingsBtn { background: none !important; border: none !important; } + +/* Tooltips for Collapsed Sidebar */ +.sidebar.collapsed [data-tooltip] { position: relative; } +.sidebar.collapsed [data-tooltip]::after { + content: attr(data-tooltip); + position: absolute; + left: 80px; + top: 50%; + transform: translateY(-50%); + background: rgba(15, 23, 42, 0.9); + color: white; + padding: 6px 12px; + border-radius: 6px; + font-size: 0.8rem; + white-space: nowrap; + opacity: 0; + pointer-events: none; + transition: all 0.2s ease; + z-index: 1000; + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); +} +.sidebar.collapsed [data-tooltip]:hover::after { + opacity: 1; + left: 70px; +} diff --git a/static/css/variables.css b/static/css/variables.css new file mode 100644 index 0000000..4b73f86 --- /dev/null +++ b/static/css/variables.css @@ -0,0 +1,29 @@ +html { font-size: 15px; } + +:root { + --bg: #0f172a; + --sidebar: rgba(30, 41, 59, 0.7); + --card: rgba(30, 41, 59, 0.85); + --text: #f8fafc; + --muted: #94a3b8; + --accent: #38bdf8; + --accent-hover: #0ea5e9; + --ai-accent: #8b5cf6; + --encrypted-border: #00f3ff; + --sidebar-width: 260px; + --sidebar-collapsed-width: 70px; + --font: 'Inter', sans-serif; +} + +* { box-sizing: border-box; margin: 0; padding: 0; } + +body { + background-color: var(--bg); + background-image: radial-gradient(circle at 15% 50%, rgba(56, 189, 248, 0.05), transparent 25%), + radial-gradient(circle at 85% 30%, rgba(139, 92, 246, 0.05), transparent 25%); + color: var(--text); + font-family: var(--font); + display: flex; + height: 100vh; + overflow: hidden; +} diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..befe02169cb046c7cbe46106d4c9d42f4705b65c GIT binary patch literal 216455 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 w&`gV-uR0TY^Oph?syDUq@dpe2l+(I`PyA3hg62 zfv$$po*984*WmC_K?0A2H^M>2L(L}4^;n!L8CV5-h3Ubi-Z+Pm4iW}6Kc%cAQlT-t zzU+16{#x*LFA26}2^^Nx+#C^RrYE9DwymLzRXF`AacsK|`%N(6vm(2`q7-MxWzx1+ zX6+&hb7Q7{o$cHVeFP9M>i-nm_FXGrmkkkBCjx-#Wr2=&81rjy+y(!( zON~&Zar~J>b~Hxz%Ui3*jZV{e$_sQ7fAgN5+G$UWH(L?U8O@+!uyEM)hr?I?nt_a~ znRm)BTmnxQp>}r*9!OewJ1{08h?`>`Q$?$og8pyEkA~p zS%p49Km0K=2Q|T#%GcXU8IHOy(~48^ul*&^GH{4d-7Ys{s~i??@pyN@hyeE6KmuG1swbpTD+ZpXE~7bV%8F z?1e(wnJGe}2hM1EGv?*<$Vop%o%HAPLQJMkJ__*3dEW-WvL{v_xY!tNXSYPT0X2y% zB83xcU!oz$W%Cy}b(bE#>%(luZ4y-vBE)Np+C>H`7Vwe7q57oG-wO>{aYSF5?X-`W zf;tOV3&-H40!Iu*Tc3RcTuRgl5{JtAw{%r;&z7QHlRc8j>6Ou2jh+e(O#p2-3p0g@ z&CP8zScr9+0`_)ZHE|#NF0(tP8xYQ=0IdhaDC#00PKBnx_NWoaZ7qEoI)uY(!%>|! zMzrOG*yDc8WCTe^idxNl+XVnvJ_@@r=c{9`OMY39jW#Q2*Y2O;g#1y*n55&t+=NGj zl_)}rBn-S`Owop|t3u_ z2)-JJqtPPJ;C!g-%m1jJ{|FqbP2}Y=bVxA$c;iMugfSSIg;py?RO@b^WyymEm-cQW zPp<{aV${g;)}B=tMJ)n_ugA00tTI1SIdb!)ra=)WWcO`I+EI&KO)?q`p_;^<-S!(J zss=!R>l`)iD0ySeIcS?lXQ_Xz;CWE`^*8N_CQP$7(jNtNq8FqkwKpHaFNnxLD673J ziXSI!N$S~Y+}h!vItZe@YwnKSHQx`|pBtB3|1t+|?dM%Gt%m#c{LK*GBjd>Hnc0gozHNh`df9$Y36i%@}l|V?B+K17(@(H z_y6~Kw%}bf+Mehr$JRwBi8CS%73ihtR5dn(Nx_pa7U$7S#K1Oev+!}rUhSmYSecfL ze5UzDpOh8%L(J|D$h_~HizOsxX^bsGt(WudD0nMX_+}j~Rx}e-dABwl+BjZDU6L6v zBR_DGn<=7(JyXBg!kJ#@z^uY8ZlJkVY)z%RJ%B$r$2fDPEvU-;l>|$QG2>%Xzpp0- zv#Sw-y08VqI5SV_VIubl4Q#qW}Nz)29LPw-tDN~a~o)nnnCk2A|GJDvEK1^`a;hp?~l zMgMg+0S&JS5nc1ExPlGO!SzPk##yaJvzjug7TX)#ALQn-y1xPm0&s~A?&$S2Rggw0 z0nYX17me&@AHvBLnaCGcdON~f;&rrtu+4ACS=W2F!_FI#Q>lBHt6(X)@>kcb&LOI> zvyOo)M|NESq9Z>>ULyIg_|tkGTf77KbxqVt>9eI{f)nk?H44eeP({4_gB_|ww`;AH z#R3NFd61=0cd76aUBr&cVShsvA{Sg|LIa(+R27QBAx&dN(|HQEUU(i59UayDV#VZN zi(&zU{WF5I(WsC$|@_33-u3Ujz7-w`H-|C6I=Nu^l z#3Hh(1>ej&^4yk%aiLCmrV`;Ee=;4PmnjC>zEC}$1s7(59TPA(BctM8M@$ne`jxCn zq(}O5*k_cX-Li?$^i4*9G(s(MG2#YSY-(L&Wt^%1jHHz+L}?lS;KPz`{di%HBAxh^ zkRqS%WprLOvt&e+w_bJXOzBl@K`#@dPfuEQXZvKxjacQ!Sn-&vHthGlV=-tpDH#DR zXC)JCb+myUg2DIlpp?()#GQ>ZDu{NmXLxF`@j7Om{DxUdBTzwdb?H-|LE>5RXg$#hhtk;8V9IYP16<;g_x!`x#6gq$~sDn-FPoG;1)h|_5a?E^hm{9y_rF>!|g6CTw z@+iLmN5&XZjvvI72wMhH*&F8>Q)z*845kDmE5X+o3SdmMz8x}mR&?N6??bZqHx`H( z8K*zecLKLjjlTlf`i$Q*rS*#FEbQ-yOK~?#Q?d-}BrL<4F8UZEJo{pGB5YgVN@BNo z_UwYCBdI56%mw9{@mQX~{!cnK`bpp>jQmmkC~;jI7)gHA?6))V{pRTyFUh<#Ug(CW#d|s38fBPsCuu`$_!}X};Di|xK z`LlJ4tOtk>k<-Qw5+PvbMO9i0e{cmPlI7R&r zs)QRx?0E)-fVXHrr4&h>$u}#?ty94}^pF%Cd)zN~C(kJMCbi{pB2yy`iX3OJ4>hP? zih}>2BZm=ZE`Wc;R|JuLq|Y zRSb0%gez7q^+J=|Osy`+58MO9!UBDP2>Yo@GFIO(Y7>l@BxM_QA+v8cjD`HFf43>U zK@`yF!FhGYxR4nlkvDpKD^+`3kO{`xlz(kP06bs&3Xrj=3r_N-^JrB2BAC9Ux2$1% zv4*sH^No=@9J(q5Qtyal(R+@yV}vCwtv&@cM{j4p{4Q*IDa4?ISma_Lkc@+zep$hc zywnOucpdp_qG?5v?4R4rnb9ZEkMuo&8-9`bE>|I!&t>BXDK~UFE`a;M*1#Q2aP+K? zNa?<|`(&5&F8qc|kgjnFFX>7O<41B`{A}~oMuN2OZ8y%Mcx*bap{FkMb%*A5v47FH z^sVqGtK07ptiw!UAd{$RzE_p49@TF}j@CkWkTGJYOO!1GOz8V7?jTa2L=#(W6cjF>#cPXT7UZ-b1GIb;4 z?fywo%vT>eXZB1@5ObKO&+h|?Lt~CVK^S-)o(Q&v2*0~Es1xQ?l2TwU@W?c9289LD zcvU~2+h4;2skmWfsOC|(oOT0^6Z0w%HZ{`_t`3AB7)uGG1Qi>*K7IRQ_r@aph>kKz zA#@X2LG}_gOxpbz(p@$_;WXQAQ@{)#nCEY*>o;hXLO@`^-f z<~y;kVhx#XH;dG>@alug#a7P}bdnunE$>!=9@oQd*spqjJVtM$U0Gvo4F-(2kd zx=;LukUArJ*@k526cSA_vM5Z`y8P5Z{&#?TW7Vme3f*<^`>QL7Bg7#EM>3o>375eH z{_6x1jqiFTQY~a057)FCJ%x0S9+9y5YXMAyo(=sMW}0~@gQe)9#;bw`j;;;^WqJhD zlkK;Y+fQTJ=y&FutGlRE*uL=8;bcD;sRWcISZLM@W zEu!t^hSh>{i^N{oBb#c5N&k+!HfB^Xfv~VCr6AK1k2sr0OM<__x}!MP42NACjBG}c z5@=Hyr6OtjIQu&&Q}Kq640&Pxq`}5J=yn&BA*m}su~10W)!BzqD|`pIVd>=OH?;)_ zcrzXH82k#-r1<3@Fz4UQcva~5@3V6J4=f^?Lyw6iuqS>9J&`h{Ww!IX!1ZRg{F8i3 ze9nt?Mrx&O9mPic+LtXdr4|+UpdIm4TpiCNCbiIEle@5yJANK<B4f&V3BM^a4qn_O5SL928y@+M_s?JUr1@W=J zb`1C(_ww$c6+Q4a|GTz~x+S(`Lqdi%qH|RygJwkDd+`-xDYN>f%bhPtAm(?o%=k+R z-H*7xncsri7E|o2WAsG{O6r*|fi^H{<5E45?h;bue^#LpgqE_#t8g(%esqYBB@J_= z;!qrteC6jHZUi^7f)#mCqxeyWM#AzzUNh~r4pf&dW@-zT-rK@`nR55;FJYW9IE2nN zlvwZcBf_|;ByPH^VTFT_#g0HDJ-?l|B*veQB^vG?Ce_VEF%(8o2SU|P3K^dA{%3kW zU-UJ0)W&A8eD3`wfZ2jNive$flkZ;x2tEyEwA7##C9Xma37$6BGwW7WeOv?HT>g7^ zU09T9M2CN)e)yB+qd#k@qccBopOHYP=c2DFdTg@5TQ!n+{?lz zmqt8e(Nbf_Pgr3~rc%(MO)s)?Lg*7Y_VX#Nw3LS%hbI@iCauO-y>(}kNxT7Vgj@{01}Ox! z!|Q4~>pGT3d!OLm2cwxShG#GpMr6sO2p`zt6#7%(2jm74`TCi8_+ z8e;Wrg}N6IW9`zA=Rb#L)x&;e5=j6pO@^3ltX!`7Uzs%-zl=c{coSe8Y+NjOxsib> z4ud-(9#O*dMn>Pum&&#zpCJ{{;fsYk(9 zAj8bPm-SvQIhvRZm>1M};YX3&rwKe$rG|hHoyl`;!pU9|G2HKxHu1zGk?D^45VUV9 zGqvNuGhpoSk>3ne=xLHiQApAF26uoq5#2Y333Kpm$6H4N&tgUQnl(i-7dZ~Me;h@6 zg|Ai|o*~!1u*`Fp|5Ihm&k>r%reqqRUw~nMWNx%uNy9Fdy*guTZ_Tj{J;sRF1hNYz zyO4AQ!bxSio`{H%-Nfa1gL%dr`NUp!JN1svUW_5jhE1o=%bVR>I7gqY`$4&RW4e}R zY^Z9`An~aD$_k}rCCEGP5~LUc*S-6)l_Lkd7%_R35D^Ysda7WS`g*2E;B~0i6*e3o z&d2S-{{O)k|4^ofy=yPQiPw49#{Dcbiq&)r#PD)!o{aL{ zE}E#^T-OmUi~(TVs1BDV?*G!~DPxi14+5k2m`KZEcPUKFh)!YI?Lz0P{rV-Ob0+h& z4zCW&5DQge=9r!Y4Syki%AY6TxRHddNd06GsL!AL(PEWE^)7pkC#$K575RX{6mk|v zJX`I|j!qh--^{EgHr}BF*$Sxmoge|@ca<3-EM6;v)G_Mu&?<$_M_%Slx(SbjXK^yx zlmM!oPQ0fK-c=1|!`yizoR3@jLiJK$4t1 zhL}PI=Lo2%v%|SZiVS@8!9ZI`0y!ND-KCo(77M|H6?|(2Ec$>meH|r(kC28~qBEt- z=a>3Nh0Jz(GNcgfZc3@mk@ebVszsJ&?@pKULv##D6i z2laipS~E{VN6$+kkZy@UmbN>?qTd(5w%toN5YO zN2Htvub;I6TAjo-w@Y8{uV+~iepFw`y9Y`aU2NtadfKn12d>L_k+#!P`_A`yfT6C= z12RH5ZsZTE&BJbzF~P%JFWM{~t=cH^C%TlblzyGMO`;ZaMreNj#f*pW5F#bcy~tV;K+y zdh@IGVgptY|C=f!1y%plKE8_3$McA}5n!GusU2D~N5o;sq?8I#dn@?)V=LOEuaq!o zVQ4n&(t{9%Q+@jwO3xL@P`dOkBc@oidH@n0op%!kv+@7t9wK6*7~4^px(4GF%H18SxKH!#dfmaBNp9j^!Aq$7c#&k65H@q9ioW+OjD2XFg9X#HM%L_0KO{S}V@-D&pYN(8XDY$+6fwR`{l z-aa2|QHKpp1tX>saEL_EQSAV`HFZaK#-_LpNzF9Rbza2s~se%_mK9u_jK(c!kP=lg5r7ISr|K@ zSftsul;}93StP?Q4nfzG19)JtRjt7EV5pb`$)g|rZny=)*El0Qav9u-#{K}fLi7&JpgV)mj zELgX@9P<8wR`UG^S`rNfj}5wzbR7@uu_f za4e|a4B}(NB%LjU5z}gDL{xrhn6axTkVUjy5|#R#*&L`Umy+oAcn!xkzu2VuvD(;I z_XefFOpNt?lR!j2sfgL)#%4ChD7cq#7VWW?M@I5kj+5glJ7|ZSJI9!AjO?mO5o1{- z2@YvH>G_103>lXXHQ5s6CgMjjViI5s2)sUeKYr@^y*t+q_#BQ)jK+#ihKsLwsi6_V z(XH>4qItp36*0wuMG+p%OB2SvTte9EiAXt`O78LLHkHNlFCV?+kACXKO6^4U)Y`O-=pq?SE%rF<(hOkTsZqMM+ZH!buUE$@Mg+YbA zCML_LoXXMjlu8@ewJ+l)7yDV2^F;(iYmKsGHu#WllL@YQ++JD8&_4NVjJtd0zP5F9 zA3U388ga3OMuYgM;qQ4)7yVu|rj*T}1WcPE)$s^3h}4%xf$fbc$6PPBkw0m7I>nBI z$oRLe=6+@RM_GFY%@-5WJ1xKTW&ix^=^_eBGu?(2!_{1$RCC!zRxhv(LP$wqrHPo@ zX~f}zMS}dWArV%WoW(71Lp90u@6-?nkH&24iOBTya^`2=_!@jZCY$D1=Sqg4w9GQ4 zF4e~Yb5Q|$ZMwwGpTI=zHR4+Iq=IZ;o=d0vj z7e_V-T_!&ji3e_5Fy3p#A~w<1_H|PPW!MBnEvg$|7Z>`loAVZW1eS-n3xH=_h(*BQ z$H-_dD#n)4b^sfeX2g%-VL2RhS>dT$sTm%G2k6Opbo)~iCI>8zn{vHs3R6_rK2gn@ zG_nMP{qQ_4Bbh;O^Z6nXYFtP}MeAUTkPTu8Cf~JFAywI-4mOIYy>s3?L1n1nzrxrC z>vW~ahVZka_WS;^D23&?H4PJaK$Y8<9)?+zgFzvN&y|$v8mxpJ5aZ&6Vbcq*Q?eIB zZY3a)VQoZ^5v*mSH^N&Z-F7#iV~Sv*K$cv%Uc1hgfpuc!qkFn7ue;?m;65=9)i&tw zr=r{^rZaQ;`8h-3&-~^`buF}xF4XsC$&(Dgmf~C%OWV6Zt)e9Hz~WB z`3C{(aLc{kOF1)JF`eLPonW#RnD1}0^7tD94HpqBJ>Zc9jhTe~?)SC2Z6`SMv z5DLo?Pc{6}6@M~$CLzAjVaq|Qy7xb%401+?{)~Ad>tuCgW*gx|1Nd0<9zCV$cG3Um ztBCxcuY&Ntt+0yyoSN*lxWkhMf|Y9yTP&AyblywxLc@AWBWx!#LlN0cKmw*F^U;0c zi0M%~qF%zxCFlL7iqcQR-_AY z^d9v3DN=xdFH48s!&=E_AQ_Z|t-dn?Z9OU0Yp7~)7n#w4O4EDqLA=xfv+dTW07E)h z_T&n;3}Gc+4Xfu~F#Ef>X(-%Rrs^CXPxCTR_8fzIQP^C0YnE6Ya{ug+ZWM3KlSZ^v zKY44$@owbx=lihY6*?4L(S;gl0q1~JKBEAlHG=b;xQYp5O2OyLt8lW(=x~sG#O2BY z6}nuLYfvqxI&NX0W^l>eUY}W@Yv5ADes-f6QS|}34!ZQ zK;FxKdcWA_Bvb+75N$rd`@7Q-8j#6%@gnxlxtyHdA>v-FTxavl^xE{cf5}}<`o?DC z<|}~c{y|U1(d4IAKYOv9dvHinLtWTGqG4JC6vO!s%8HdedKwnwy9)kSTjmsT$dSuZ zq%geW3CjHbyN^;{&DR7ZQJsB!&%j3U{KX(u4>MV%e76W!P6DOX$nWO^O8H6l zwJ)wEzW1;LOC&78c^xh-mJtrLkcb5^>VYmhCMFKnh+tow!x@>dD+DT`74JiE^fDyl zawdc-4)I4~eq-L+1Oi)sF40+z1+8uJSEW(qYxw@0UW{r4vhzS8A>I4PEYFLV6{HG*SJ6m)NCPXVdG`|1tt<8myHjKQvJ~ z^(Sd_MYx4{!@3VlKE6Uwmlh8ZhA(CdAr&7|RhOkq*^XScPiG%E7sH{F@m+zpZQkG7 zP#3SV(^Q>Y#SK6;sZ^#t&lF`Wq2n`x4xR;d)q`{cO>;~W3Z1?xwVM|Ei(0QQW23M5 z&yxfnT7seFn!Z7*mXq7Vi&|=w#%C0{!3OgdlqL%;MUp^SOi0a~`QYM7FD`WTY4p|7 zOdc&T8_b7@F%SE_opvib%Bi6;;A!|lt{PwAAfZ-l65>>k8F$0M_RF|cv&X-Y+(KGh zr3ctR5-mYLlL-;*{o3;DsOws9_;p;jjNGy3-w-lLC#4P*G(q$2FU={?WV6U>kZXWv z`Xzn}Vy?FxC#y=%62qJ(p5gBG&Fu4b#^?MXaAK>V$M9*TRF4|JticN-#E0&uBvAK1 z(~AV=FmB2EuqE&DLm0bG<52o-);lgFgdAKww{f5>ZQKG$U?Jstq4C~PU!upTMY$Al#VN7E%38m6W|r%P@$c&CSfl;J}??Q6efZtu6G5Fz$=Vn*QR`hyQa_;W*BH z;*z4WLY2}U4hc&#|FJQ+$gRt8a@`D9%ucp?$fn`zeDJ3T4zyW9QKipBl6RqhqR@Ho zm6g10k&mNl+34p!-T=l~k{ zE#X76=2@sL%m;Qm+BPTFI{DI{h9V%9@87ji9*acq!|0$8VVkA{C=+9U$UGWo$lD#m z6sx(JDHG#MGPJEmx@T(v6VHsCbO!2b)A@eMO~9_EY5TgiIzJl{gZCQW6BQ62jC>=& z5#;HQ84H94dJ;6h+-;_MPT8BKDHIBpY~xKmLFTus$;Nw|BXgIPs%2qqLayDq zM-`Yr;QQ6}z)Rr~3yt+BcENV+m9XTrD-=BZq-`ddPNJ?xXy%MIY@6CAyp%OMTM*5Vt_GQJH?2xGo6Bs_G9%wK{Y$c-mjb=CZrQf*8#}Pk`^U_+Y1L)Kb8n9? zJx;{7-BLU>j4-jQ4_4fdulZ$RQv_k*vwK3DZNd7HAm*d@Tx^&kBih!*F>=+^Enkx0 z3dPd;fQ91?W1@3U%>BR61(orCSYVz?0Yw+HQI5(6Nx!o9`**n%!o(4pMNedBg4;?D z2N30kK&Ci}ZV_c_DxDs>P!Q*2K6Mj+^wmsedJZJ`ZPWQGoVz$pRL}5 zT8j1(F@)|EG?C5}ocW}Cr#9xa zXO=zf9vw{XBDIcWTKPP(>@+$d0GLAOw-Iz^6!2GsxL0ffld!o=qu^~$3c$FaI({kbut6B;IJh?!m0m(90=h@}5+ zHPdap34)vz>dl@xDs}!Ew?M>rPYFsUTw}6+lGFRrjA*n(>V~5-9M|qg`naaV5?_mJ z^@$v3`-8&m7CHSH?D&5!iJs?k`1BAUKu-pKQ(Cpq{lb`d8s!G{dx_Mn!n0701YJs> z4-JHBq&SB}x}yFcHlBqT82x~1i`wG?xhEa7kqqs$4j)^GdE1o-PsCAd#eUe}&{};K zp(g^|hvyed|D6M9lB%Q<69;Jg$?FYgH3`WjV0aMbL=l;YtI=Fod|<1ir@&1LQbSPc zVw^bzBz03`8PWg(b*X!S@Vq@3a76Za&(*LvS}r%1f_j||lSeB>Xb^D)>S&j&L_@r@ znpshQX1IknfNb5~q!=Kx?1P9fUW1oZONOsxr>AdtXheASs;SvS7xlh`mn#Dmmd2V?W>U=jp8_JVk7eNcem}+ zx7@q`dk!@JoHqJk|CK)5u@2I-TdGXIg*79D186#P8K=C3SCWUNinA_|Z za3gXDd=(ajXhh!{*~4_}|z3&5rP#Ux`0P2M@O+Ss{Vt1{|Q5Otv( z{HKy+evcKF=w?6#jp%_rCjlSQSa_lCYz?E$a6(cs9nac_{423W2vkg4O7sHTV_u2^ zPY@!LIlSaLY($Qs^UYsu9kWz-pEmNGUVE;bmZf%ns4$NDZF~y`H;Ba(UawxYg+jw5 z7PP{nHyhy_TpUAm_bwfLySn+rCTU!v^>^K(!}4tl_$B=Gr=M4*7Aj&y8!CK>l6)pW zgvz&sd+T64qXHL~SZG2tgV<&f{PIsk@UbtzepGYj?SKu7`D|ls?1-p=m%-D6(Q2w} z%h11<@9LJzP!E9TaVV74kwr=NpTEO@j2WF%&?bh>4eDwLTVa(~?~R{K(EENQ4`)b4 z17)7`+BMr|nZB#m^*s62{vkH_J#(HCW)12Xw6V3%cJfAjerf5{{ zD)9NY`l+G|d8Ax1^Wc9Yzi5ZI`y%JYBq0>*2@sNAWhTw2y}P=!?z1{W1!iRdxi!@S zaW^$`PHv;9ICF_`;Vq0UHl^ehR;kL5Rg5Grr3{2BCPy|N#e7@-j^m;vL*a{O_+vzw z>k54PcYQ7F;^cF9L6t*OeY5nQS!oo+Po)-3C&#qq;07blN3qGUKATqFy;o#5>G0DK zQvGJ`^t6?cs$#NJ%~%a{b|!3IOs?1bp?KVt$@*#;CgsE;Kn3bfuyN~xvkQb;zzLbQ z5K9fq0oo=|u;`tb(QgW&uT=w9yETHFWUOgpkzn5S8;4+0SMt2V7l+(ptIH5fUy{#~#|faz?`5)4=ot~BCE8v{k>Xm#r4I7C1ysKwy|jvd zACl>e?!%Zl7=WT};kZXExN1_ST|cN_XcT&Yz*7AZPW*r)-7c}CnRp>zs#2U++<7;n zQXJP$8riLnaS2~WG}Kg--gXo)9>w|qDE0SFh%j6 z{1Ul#&1k33qS=1g_U3J<_tfGu0dysq+3E!5T(r4#(dT~+pxx}pSR${mEJXDbpCtbwTRF-!9?iSbo5*?-Nk1H>aw->uVx&lsIl5y={D57HlLl`Rp;iVQ)()(X5;HsF?u)e0OF4h#NBlvHlDi z-+X+u0N>sLgl{ruEUFHcSfbm4RMBGnsbob{{vz;l&I$+->_4x-vrgX#f#N(v!P}3Y zAdjg!ib_+k!)j((dx+$7I24Km3jP1E(3_iFy0@3(+EpMp8z=mB+Vh(X4;YdlDFd-rhR% zcAG!LkO*5v*H&r>nxuU%m%aD40=+Q@jrcK;@S2c`d7M;V2LSayx^7p@TzOLpWOui- zB93ju-b=bsECK<4VZO6+^|?Agpmf9SE54%(Q*Mz#!r~mX)Uz}rz{Vt_aL&S&0hq|l zX#On&mudey3CdQkM}}PMN19?#j-rILY#B|(6#7j|e?aQLVcR+@iIM=Pfn3}@lp214 zx>(%DQIsn2KTNf;uP&LXuO2nW=6Kz@?0xOF1evH#1tp802A^A)_Ke46MBMMo_8^99 zKDyIi51yb4_L|9ULjouiFwvkM-Ac21;$}Hl3@5}z7@5wXFfKZ7I2rlg6L?+zhOPG0 zP&T9ME>FBwW=*{~PbB`Qy4ia}8UQAMep3Qnr-a(2&>Es5Yw- zF16qH__R#ra9_A(JsFb*YWcy5=e}!6;f!GfZH$p*$gKv@k7e8V|48}Gwc1lp?PZl) zPsz*7ha?Y-X=r1?RAe9d8H8Dw1^o8LuKBrU;gMkMT^`i&C8w*I==Y9(bN3duP;5|} zW{;M^>B{=$&RH9l#qc%RX@IdNoM9@$JtVrS|Fho#N6VX+LsQ+y0~TTZ?+24Xnp2yZ zM~k=^7m>+l|BYZP3GNE9CV%OYN-^t0P2 zz3(uy>`l}9h$2bh2vjMw!HHfc85}w>ELkd1E;i+~CX-G{<0Q$sjwjiUa08JW2}^kP z^QCK`7A%T^Mx2K?d*csygB&>3{4$e_lk_)DqD3vOFQ2)PE^qX_VYTZ%&SjbD6x$gmUVIJK9|1bnQ_ zwW6#D)|8ICmV1p0jKL)i_m|0!5S_0kbmH0SG8c6%GHH~w(Ydn{6g5xn2G}QWq}3&i zE;6Z^bSLOk<5CxBS5RK+T225i1;ip1kDXp2PBhC`HtT2eM~NMt!^Bn#M0PV9o)@$| zq1naq8`-4;?SHaIq1pdz=hRYC$$h050q34V7NMR5YFQ>cS?{7jl+SYMv=~pc?@t6X zF`Q~s(Xc@Wp_gY6T%O=hk8Bu;a0}(Ba7UfeHn}V8Ey|*xCnFoR?f4Ahq{V{D($Tc% zOQ0+edva?etf<_x)XT=jCBiRyw!}D(g=HK54dnn8<8;3zm+@!2d5{ea@Kvy=jp8=? zyNA=**=o%*uY$i5u1$fu)Ya?@jO*zNuIASRdwy)(>aZZ^$2hTw8>?>R32!ypq4a3x z&5xU1&W7ff@bxD(>hugFT|Gs?tkAjJyDX`MNA8?Y*M9o}=ND&z&Q_vYw#q=U((@{` zVW+na0VY6jcEk9n8kBXWIl{rbi^Tz3(Y>F;0@{Yt23QYtfiq4Ajvw!$^bqAAZ@m)$M{{lhN$TD1BkEH78dNLF8Ev zOWu5&eHL+n|6uz~+yAp9lKhBD+RMjfd1uL|U3}8vT=KVmf@^<1Q8&s*{geEiy{P!F zQz(WMi5_x+;{8C9KlwbdL@y&pqVVHJNxeX@@6ZHcjHB4(&1Hs~6evhg`EBSLnv_b! zQ?ket83~tn@*XORX}T>KrSHYmDs{pEwx3>hTvSu>GqS8MaSL>?2|&uKS_jJA{7|Ht z>e9P7o*QQRW^wJF5uaS3m+-5>8w3oKrtIQst?`HN;Y*%$*I)f}9s2C@AanoU#|=np zu{^iV)PH{ziRorVCW3qYv5}$Oq(>&>)2P^gQAKd(mOGnLZ1THEQbz6uy%keEz;HUY z^nWY>qEj00)O}h37Lw}?cCtd#Gs0VE2=a|6j!vgV!<;a) zsO`(e&^9oZnTXFm9(1)Bd{Uiqzj#!OJ+c&itA+8F^b6(}-H>mq3?Vm?c!i}GptQ5h_^arp{d z7cq`J4szk$_uhUKVfMO~_ip<)q=o+*(h{6z7Ee{NE6wPr->9!J^%27n5G?gzB5=uy zrQaP(Dj492=1*}{p}M0tde%!`i6=sIgx})WHIdug^xmSJD)poF!z1S7+9jf21+iTIiXb3($spxE17eKer=`yja0uESqdQ zSBsE>bpJ)u2Gee(E@Ut@Od5lf08%@e#07t>2Lb=H2mc_>&&$gjaRI5viwG`AlwO0V z*H~?dd#8fR@@j}5e$Y<4N^_mLvEV|WbMTD$!c6RLfsW5zmIr`Z7doNPPf%m-X4s$mbSy(7QLhLKOQOwnY*hWRi&r5XOE`l1jhBd^stphV$~? zbZ5VhT8$&O3$rVdE(pVbjnve|K?|*m*+Q&Fgeg<<=SA1QlgI~RHi=AsgZa+c$cPA> zx0Psdb{MM6Lkw?wPto(BTS;;-k840Qq6a3qi!FZwH&w?B-du5v_}{VO`6ylQ_Dyzj zv3wQ=;yo>*6^O#7uA-@v-A50-vPI+M{IRMh=hK<6Eol?WY(a z4jKweMt*n0KtU(RXj?REEAr3RBN`^5J|qvlCmWvL8}0Jo zB7uTh2H!&m!_Am?291m|sE&|#uHeKmq=#N8EXl!~Ff)uo^b?2Y*bYSkk^OHu2CbH4a!>YUNX%Z-# zNqlEL6)*Z7i<5xiSN%2uh4Z~5%TIIw4piv2|EPfzUbK!k z#dls6!A&BxdM2~d&AQn+eMZQS6e_@xzs4$H@ga-!O~L9ZTR_Unq}Dk4vKm1>jbt`m z6apq39)ba`!!wK$gOx<{5Z!Ol{$+(QX?JB8+81U-EEq>css_V|_Dd&IN!_HOb zhGW9%Cr7zyDDx~LX}|4AQPC8$CE^=`q;mL&Cp+s1;!5E3*SQMuo68@VerImq zASHq-b6KCb#Rp5rZ%reLtaZ>5X+}p!Zv_<@g+|G*DesM1t;N%dc4)plqW@(!=Y9Gn z>7RyhxxN__V7+827Va-dKjJ}%weJ8wfX_zkF3x=wy!B9AeY|- z0vZQ~7I|#*rjL_VhBhhU5*TpDYa^KWi>ii-zi9xP!)y-|7_}XP7$EsQ`IPKTgrZv#F`eKNGL%Ku za`bzH>Ete{YCw~!Gc4*uaF%`6bWPlAmh+B2vn zXb*j{ptmnPSd=ybl8qe1M1M;eSZ%ns)7B)0roe_lZ{+Y8+Bm~N0M*{94W@Ed9G{ks z;hYLcCCSy9f~t@MjPX_;>pB3S;egMG`&!2=Na?HwqcL}H^aC^YgVAE!lI}T7AfZz0 zCs{q`k`{08?zGd?61T4iT?Og0sDF@@adssjM>lqYC8;zc;pgum+Y@QWD%)QY$}EB$ z|H!`;M7H#3{fYFJaa&#zdPpB#4EcuQnkpM;9|ifP=AZUzW5zh=gNTTPk$%`45Xw>U zGh8a&Cr*!j&yxh1Mh%+<4uAi8GH9vIwH?E()bEFZ$#~-tA$;TiM2xccEAWylIenba zU2H{YcPcJW$GS?UZJ-7@hVzvUI6-3~)$qbO%(G8hgMjJxuJz}dccQ1gr(YRkiY-}( z8NYH>2ct=p4BADCU@s$6t5AdXdTrI7J<0J5X)88L7c2xJ2r&hFkcM0t^e7G1Jt&&-#4zHvMdi9!}sor^Ef6Bj4 z^D~b@uI$B_s&GI#=NxS`bU91i6FmGf(Mv1_As24Oy9D^blu!7?)#aU3JJ)ZP1PnaR zy#*MNwj^m3c=Q~l#tF@RvMKR?mK1U z-Sl$D1L?6z{>(%#KPUBQ!fV5Kr9&*Rsb;3CsgxwP7MAo(KAJ>8C1(^}RR|UpELhne zMiClOfe`_*LN;mozI_-I9}jf54_?x3Q%?VX8_67JtI@y*UhE*fzuTopb6|(rkY9{k%f8A<;#!}AI zQus2ZBV4C4xhZ-QE;}*k^h}b$2ewzGISV>@2J}NgmQ3o(J$>-cCEX(tj|M$6nasW+ z6u+%m&5x;yio49o?^!bTi#9Q2`X-O;nE~8I!~|B7^+@NuBO`uzOz|=n7#NH4JVR7r zU@sN}w5whlNxXwzy6mD63*u6Y*XBExU$uigFbQGrJ)lVYc`q%@j4J*b3*BLqal|@X zG3QA=0H4nv3yES;cXiYWJlP;c5XrXRr5SL*Ht9U8i$3u}@te>rLlz~jL`+Rd{jATP~veFLb#S6W#8y-g~dU_(DVu%}(J=Y|_gdye{9zlXE zgf(+PfRAIInAoV0^~WI(VEt6E?Ayw2MdCx9*Cd1Z)q2a79r)BOUMDd4ROujxaZNpY z6V~Y-qS^i9WdIxF>`SM7&!Fn$$DkfmdExiLXUyP32kGab>KRU+=uCUOp`I&13*2;Q z9|x*;F~9!JyI0}c>aptjF#oUNF`j0Gd>71c5hiP5xH198 zcm>V(sZ;7HK7A3YzWskJ7~lUMYcVP4^uWqhG$1s->gTB6&vje)>ua54c zU<^{rO@EyWLPt`%#X~nR?t5I@JS_APf6XTu2J5P@JHmlX4Cz62{7+SNxY8!lZK<^d zjiWDP69pm(6+L$OZCB9EP(jJA?7f*lLnp03-v)GgW$JaJTDA;dA2USNqVX^!i?Q#)Gxjug!be#;Vv)?>vFkn&!P4vQB>X%B z+(&#v?qo}NG($ZEo;zHYaAZ!p8o*sST`RJm&Rukw|LuU8o+A0BjbclxAi+&4@9|A( zl_dCzGB)Bq=z+tah+BY&$>Q8;6Mnw1Oz?XNyPuYr8la&L5Esy5wIk2Ga<;HofV^yT zgf?$BgKC7lnOnik14A%W#T^k)9evXaCK*YCgZamwJxc#C3y!oU_%HSTXLVzOfk(No zk-dM(kI7KIgc5nGwv02b-C@dAkT{`%K|M5fs8H0am zG>_8nFD60(i9cV)p$x9gst6!q79Q7+T**ypJZi^1V_6*^W3L$0ylLLq`~rsdWxzhR zVnU5hr*6!_nWkg>T)ImVH_5mm=Nx&S+c4z zJec^IcRMqOk3jj{Io86X{%q~=lZ-m$i5h+4^!veIVwM%r9KMHz@kT`H*aejDUNArB ze4A<}^K{7Oo?NI11$%Ug6kw37mxBH7o0ql3#bck{0AK@wX~4*hP|0z9z9&9%0$8|G zbP74!kCo^Kw*+c&sh9XimtnJ4|;66m;y%2GuayYY0O+{fj z){nOA_F=j{W21sMC%%skbzQ<4ZzWvhOrt&=5*u;Wo)%*jcb4FTr$;UteVu0iN5S(w zhAI&zR^wk@J?Yw5asEqkbyE9GJbsfo0ZAC?L5xe)q~iwRfmhlYG?~^+b+YfP3iU1P z=UY;H>ar80uMg~LQ1l_(r2TtO*kDO)i1$;^t&*ILkN;?k=>KAP!NSL$J-);}Z|5V| zHGzCTrkMh_`9F$gY5xp*D9ASdt_uI*GE%@whSYlz%?JyEgT~C?v)?$4Hg7wGIhc2+}p=mer zV$DrIVydbcDpeB^8ZR)D9xA>eauS7fIhI|;SjjGRUl#z zd`uwSO*=9bLeKEX(z(~`UF2Tg=7$XY9r%9t^aOlAxIXH6KY41R1oO@Hf?RR>R!67B zG43Q)MZa5r+TMdowuYHDoCNH_hle`7JOUj}MnvB4YZ632?IdYgw&zZ8<%}XItbfoU z#ITch7=r=ma!>T&pXA6?^qPeMp@9&TmBQ5zq{%t>l#dy(?fhZpl5TX^O%}O2Sgq_= zriw`-KFd%jJ71e@Zk*H;VAR5ZZp9XiA@lOK^RH`HS+sbcV((avd&r0Qr3l941L{fV z^8ICg6iP_SZZWx?eo2owy**fx(>A>JZW1oZer^TKJC+j{3ZHE86%7GPv9_hbSC6*5 z{Hghw-4V*zs1?t?pXlDrjN?Xk8DqB;nj@sb2LvAvZ*hDF3oo9g?zOFc+TpU;k1|kr zh^^3RtE~V}U;mP#ZyBg<*9Ax$)C%hfi}P<4e)}7?`@~GZmpLDxd#U;nno3t`B>xvj z*L$05NxMpf8%N+i-o^}n(L}g9TaCKS;^{T&Z9MQ6WICD8ID*9&W_hqH{MH^&(`@7F zk*1Skb^iaD`l`4n`)F&rk?u|@X_W3z1S#omq`SL2lvH8pZlq)AhLM&Wdg!5hhL3aJ zbMf6jch7JC_ugymwU#KmKCbAVURk|<+PcFcI+M;IZ!T_7GyV3g%LkA@J|E?y&-@i0 z)PKaw%)r)uFX~UTiDY${BHlss>d4;x>haz^s3%wyt_aChM50_2wg@aAHt~~se>`B0 zdiysUK~5jd;r+wIaSUk3CFFVG;@;)?YUcv{LPz@oK8Cmv<@Olh{xe#Tt{v1e>+0X0 zu*5p}oz_?qB2?SEzQb&s3~UD{OFcg>jl4XDJOM?5Vc-X-GiraSD$jqM3-06b%QjFL z4tkjh@qFF^zrgPo)J&r%_1}n#3A>$lxZ*`C*1a2y74~$wlT&$lxqPjFk&xTtose@i z_{9Yz3$zpSs>X_lnI{PGH76CSe+{en%Z}b@*-fF{93aV3`LcA{7X0jMbk@4_nxUIQ z7yRgM)fIM9&5=AKgVyfNDCGZGKZ2=;gVr%L)OsVs7t zEw)){q_mBL>Mze!0$rwsdIbBwa>P6Nm{JE*Ipp5VnG|bVplVuC*SlIj2mW-(%bd_0 zPwTxB43Jg)puuxiWs?80M?BW%CGzEJ z8e&oHMdvVTk6bZT%fRVR8nRtI)zPvr`9aAzM9IuXrbbIxg%tPgjc7p6EksYMsW9Ok zBKbm4Ox`IT_52Ui9u9qV!J$${L~n+ z+snQ9Sqe{G3R`>71j__dK(Ke`X0RT+oCU}@5fY!5gjtPxAG990DJsdd?BE2`rz_WF zU;MK)QDbQI7P7%u2c_}PR9@dpgrjlh6bt%WuSn94q}+{MfS)g7c5Wa1vVZlkBh2cT zLzdL_e${h3grJaoz2jH=S{;_a5;3zQ9Q?R-b^ps0c66`y(iGzN41m|Y-0i&F`APH? zyMM35bzeSfAat$! zydsblv;Rxvp}~AR=|X~~lBIy_DIuOA2S|i{)JR#`D;0iT<90W$p75XQand_qcbwN2 zMqsrzFTnQKZ=X7)s6%dJz;r;u1can6=Yynrd$N4CAs#Jwov8aI0Bz;^BEZiiSyN7k z_{2v66@|;(6DO`U0(^q@wS<=e&J~U5r2`IJI5I?^f4+%ezYH8FKBXlXC)g9OMP}ff z*{Z45rI6PnwJPRViUUAN2#R!2D;D9bc1p&i9sa&j#jSnGT#v9 zKF4Lyhur7M^cFb+P^ygf=)ErepE~|K{M)0NdR`gNV12aTv?*Z3tvAQGmPrp%)zb3k z$4?|kr+P{Pmnp&JnIyR-sMwVpj@%tcNJGVc?bP)#wm1=ECk}{FWwl=loO7`X#SBI!*0dcF0un5KC9(c?e%Uan>bha`QFx^d!E00#bs70 zRN7ofGuY4cguT#n7!LhuAVRVI6n;crBBbx)eVo0L1$y+?d^T=GHTbwYv|X%);fo0W z-A2~N*asS`H^5}c_9`>jIUKxv?A%9PB#Q0+ZX#E=&>_94NareHvh0v5n%)3UZ@2la zOQ+t;ZhGMs7%T#styWvTiitw|S+?EDmMIaDSPrwMWMZj5rwA!qbfFso1O?FmMUr>! zHezO72)q96rz}ia=!+9)rv?*;MnDoSm}migcl>eK45X+Qi08gW$smAteV^*DjsJv; zHK3xA{V{%m7#)#2b3zCDd`{bR82NaQAv<6NBA_*qW+ zJq!~Cfy&6*U#=zV1UdFiPxWE(uKKU=;lZ|B5JfJ9UHv!v2W$Vg;cLsHImqn|iPx3V zIs|=>t4Hk_{bo0{v|f`)=&Ap{&{vPg`kQLgy9T1=R~G!`44+otoWx2YF<50hk(A8# z;T-JxC1t~LiiEeI^pbh)meFw$ps+Qtw0TvFl~tl0{gQB<1JZh%xA>v3+?EI$f4>Aj zLR~P&)r4eXDaKb$FRH3@&9^6c*3l%H1(~4#CQHwBSAd=@<$gcBxN}8|{2bdhs6nL| zf`@9TEnm?uL0d1y_`JF?M%XR6_K54{9EH$&7z^V zE?dEf2=jfpT_0SGuC+www~|ty3-r787wLJOMIcL4zCWMVw~;Xbu0#x``$z94VQz)` z>U}(TX2Dc zB=wq8=9sdn5Q=Y-@L@|6tJc#KdG7XlCrJc;KnH!lny-@H)WI4~B`yw}UpZPtS(cr* z{yS<5W>|CxlPqdO)<4CUW3}-_LrN$gYlU|+2p35`BDi6lv}MR=3pOGQj23fdk}rj& zv>tw>9T^I;GrtJS*Nbn#BO+E3;9PM!NL~_+3aONRz_1toyZ<0Lo%vVbc)?4WT&Wwk zmyFAHzKm3MosA5tOG3G)84{)PkFU>f$g?Vra~&@oMzU2zwC~mpf79<@F&@kOhaiO( zDG^MS1{?d6d+g%O=n;JW=`RjLe~&@{r+Z>>Bnyhl0sEB5e$j22FspW$(Uf%0)LlE) zOKe1MG@dp^egJ`f{U4E|vOC{X31X>J#kQTXJGL>f986XDy>sirw-cs{DXqQ1d75@( zBZhJaHW%vU^8iJpvEpUFk20^Z4||^S;jd3b9sj^&eAxDU^%e==*%YONjLZJ%&m8%Q zn>%Y$R6V_sU75 z6I{|fK$?ri=j&;|!>I2lq%62a{DC&O1ufWkrOt@J>`(_wCO03 zKYb$!Uk$2tI=%f-D=GUA;%`0oK-=gaV;o`~Xe!sI6(A=A(f^_>k&m$BP}N;KO$1NA z77<;Tw8m4# zFQxGatdSr8CJa{0NGuG_fByM;j^eNUzfh73{Y{Vukz0oLi9NL|X>puZR(m@Q!_zjU znSnFUoRnQoaRDA`_)n7AEhWjCBf`yCF##%G4`M61zby1pTt>L8YvE9Ydj3H$Dz5UF z%}2^Yds{4Cz);K3Nz%FOSKLJ8qkbjg;usA#QJQ$ zXS1?Tlb?gKwQ{JJl5*Y{T&8848S2D6)kF-DKfaviaW}6#nv+SvZkINgKNSn?^pq z=Kd2}BytqEq^A8BBTVM=*5Lt96%`7%*7bO>jTaTt6NP>U za6;4E;_{5kZk4i?i+-*rpOpN&c0bZ^17=9BW%c9^m;igbbWz9>@Ha?}W~`bM=~K#0 z_C$roKKkX^A>DfayN5k3<5QeLxCkMrU_H%=p15>bw(xP$(rDzKlnlG0bwZkNN}|nK zB@>}2r3}8Gjj4^HYo5VnUV460gl_=M{P}i<-BqK7iaF4`4K987&fg6upRE}LQoX#baJtpgX1RbqZ z0p1FhV0?*Sw?XuMcMw=bKNf~hP>$o(uXp6rD2{Kzx;Cp;i<%v)Kr)9ts?y`q)!9Wv6j5>d^UR9v?@Cm?mha&1wMV7_b8cXSlX7_ zu-VY~ZRIYcHRjO6=7?l(O>oaxhwI|b`OEL-PR+8D{=A_~>QC)AH5C^>MI-wk$Wlpk zZFgYa4jG9Nruhx{OEo_b1a7#FA0e*R>TQ~9=!K>+^s^@34r+54Hr9-WlnYa0sAxC^ zV3{`{(%vn1)i_~aVr*gYboWt5Vpw^FXAHK^>5oU4A>`GzFr@N-9n1YA%wQ|wmG2QeFKZRvu4FB%`p4X zh%l^7>dnc!L|~cs51eUZcGNoap7$sB?|jorb;VIrZJe*4F}Z!d?+N>E3058WPf7{c zN>U~GphUBaes}_E;a5{4`fgGm@Ltgm3f*A^8uvi(YOb^)*9l z38I=G=mAxtE@b0B{<(atCph>ruOfOg5xCPa@6II|-ARl3$0${Qm!U3)VAAtj2N++Y zu1rbA6jN)%eSDk$Na`o>rzy;*kkKVx{tq6h%)+cK%C5Xr`lgSui&>)OD$TOd_f#lka=a>>g!NOy ztyPY03EMu;t-jR`(%+%z}D3PJO<4;wBG)Qaed zU_X->1?t*wC}x`dbN;P2Vys>(MdHrtxQuqntRMvei*uH4L+$J1fVIZRw;Jmf@(p#P zz%^`6p@4RMz`=%1PGmnLPxYK2R-CiP(JY&kpV`c7@pk`59(-U!e+dIL3TTs{W<<b*CzL1B^gLVMk4 z4+PP>95`;Za=IXapD68Q>ixEWb|<40f3;I?dS-mMDJmC!0z)@gkQCFr;(%I83soFf zaXG(6JJl3xMO-%ld{&tdFeDw!6IiT^VNk>LqLWtOqtSO}ydFeD8B$6vTqHU&y&+Mf zMt0uzqDx9?Eb;JUuiD@asdjM+$%mJ5q1XM1xx>_n3^geEA`|yu@b1^~!$`jNNnGVx z-$v-BN83oau0g*37we@Y!%ld@gf?4N(3zm|*&*6;|LMcZIH)e@EF`%ZB=+>OECCw# zYu>2qdLc=O5RERwvTc0sg+1aqcxlpK{7Vs8$aO2K^$4oew0l3zHy1oumSZ8Rg0;Ef zq%@x4NLuc}HWg24#DviH@WN5Q^*Sf}|KAhoPe0RF98(+k5mK{TZoYS*5MbCVT)iu|j_FwU z2QEvP(w>^8)x@H^VX_in6i-vh-t*BNKZl~C1(sL_KizC)BBnoF2y(P%jsQL} z(&*Qx zDV1jLe0%X87ii$GP&V`0VvwN=hDonO8)r%2 zDHg#}h!M@VknaYC<91D?fT`~44+-X|&96lHl3iW)>&8t#Cy)K(v7n-wfEY_q67SEi z=Ih*BNvUJT2bkOQIs0QfL02-AigXoQaT`T7EK~CSBr-K4Aa}+bJTx}jr>a82XMbN_ zz(oPYyLGFS3JFQxs8)3oC|bLD(5Le{Q1_8ajWb8(%U14LT!0e^KFy|gIp&mS*ew#7>P~azK>t@nZ(r|&s(une%gSm;K>jZFDelT& z%#V!1X+p1n@e{p7Rq2w*`hMpqx0J{GKcM06GbJw=;AXioDB&`CqY0qJYYqtPnd=D7 z?SP$5TD*=BCJT^hF0l@;i!)kaVN*ke*XUIMx1}`+0xDj*xKl_QOD-E>;~t2ulLPno zCyw<-xKFsL*Cqb@mt0=+Q%R9w68Ci^thIJ}}I zX7|3_PrWH;B%I})x)2|+22K75*C#v6$ zjNC}p1C;u{gs+yz@XMX&3|TIPmFBa_!&@z4>RqxL&01y4AM!4i(>!>1w6rJ1HMmi> zwQ7CLLXe0GR2k>gZVUxdHX5X`|LU(@Fs6tJRsEC3K$jK)~IGy@k z0)*ZqjV5a$u#?c6T7ton_ZiS4@4( zBpdHSOM9rd@{?HD=f_)vwS3WnU>*EbAH6r_Hwm>Vb=fiNuUQPc;yg+xNG*c?N`HYL z4aiRnbA>Ruz8Qro^gPv8>qb7WxTquaRN+)c^8X1rF>4WM6hZc#uH68n6QX&o`pZi> z45P~)?1+owIai8f4$=04?M8g#^WG{{hSSzt{izoI$Lhr){P@zQZ-Wh+vb-NP2OTEK zY2@mBZgJ#a9mK;!vF?Um;n^z>kmO?W+77^uo!;e6~Y)++Xv1DX@$Lv$-$tf?e(6c+f!#J7&QY-d#{(`g0l9;CMpZA z6W+FMnl;??*^sOc6L8|RE-G?d)&vHrK$dKqmp+_=ESZujXu^XXfcl1G0PRrq~se`^joY?MR|M1wt@ zV(^>Z(?vD?p0B7Iw+)e$tuVEf6QFVl$=MzMdcWk{nD@-|u9LOLPjcC?oF z*X1Jr*U*C4<)VcL3EP`jtsgioOH|?U?s>&Y48xx8$W)2+09K5Iet2Z@`@r*ND$MTO)XQy#l0@0g;-jG*tB**dAa)O-;wy0oFhadNI1Ak*>;Vvfx3@96$5RKm z;R{Q*NhV+?S~-w7dcy#|M0MUG$oPAlv2RNXDS{|6h`Mg}IhkMm!Ctj6q&IUZhU3bH637m|K* zZt&@6#fVd-9++%9a=Ob0y0UBSCxy91eYikGU&ytTYF9!b) zzL9$yzx?MAmvE|uU&S*?swwJ#^MC?O_R+wCdKefftNybpUiL4x+6o^z@$S3mP1C9E zix2!n_)Qy-3hskQ?9b-O2B}elR-aNUH@QDa=LRH2{!65;PAy8-IElQ|CHO%5BmT|1 znHp^m(!Dy0If`6!;H|dUh|xp?XZ58NL|9k}17ue$9~k~GsLM`b?!J8SB9;q_HzTjw zd&u)ualw8#az`+Y{a*ua>d#G<5KT)iP>63qV8dkmW?m<6pg z$j*XGoP!ReM(gH3Xmx+tmi1Jw^6%N~WSH}#Gioj?JZqXrff=%&nTWVd2W|s$@i5EU z>L7=I)n=cdnV#fWLPj8T3F}#5P>x;{RLD7?q${`%rL^~P*e^V(bwNq*q_VQsf13fWgJXN5?aTLws&Iy^p_{MB zc=00Uu&D5+^WMEG1)2NWA_HhS|6i=&=^Q&#UXS?kaQhDJ*y+O&(R-V{R#ZPB1TsE4 zv@2THiVap=R~kP)G;4KkAcDOkG1rd1`lD~&pQ()q?Y8Y5+wJsLm*wNAyWB@+IsCf3%vAG|TBQ&uA1ZzB?6wXsWx zi;$1|n;2(9Q>}+ND~jtbfyRpMLrC$Kre-1j`fkT*XU&q>A5uhpjwMEC3$53#*2I`5 zm8RgKyW$Ct?txKCV}*S=pY!y2s)OsGjaT1lJQu+ewE8J7B5JO09Ehr%r!+zwHQ#5p z1B9m2u6PKuFxI|jrtn<_>DwL-wWVYvtp9&&j(2(g^Agf*J*zm_C)jB*VXohEZZ)H& z(|+K=U!m^-E?}hyC7WAGq3DMGJxDySVe)*tzhQEzS^O;kf?qB=ysIrw5T7nk3P_`d zZ(#D#g!jl6v{m~{8GU%}zud6(jQ`CuQ`7U?K!;R38R%occWK6PETQA_JaJ`W$0jlC zWi39oGGwHBa+Uo8!B{I_HOi`m*WIt_ZUI|LR`F)NE_0-a%-V2jQ(i648s8WX3M`O) zU}rSR9^howu1lM(KKtghOw4sk684s92UMXr5u)&~>FE-@0Id?WsHU00y+Rb21vK*+X*-8j~I+S0W8bpvyd!i^8?{a4P!1K)=n>8}`Q35CHst^yPY zOb;eSA)lT=u_QH?$Jrx&k1kG8!+WYb#fWinclczS4J!qOdiO6aExusWnAzZ0Rearl z{SDWmSoN>4{H`|8TuD*itm6$iDIN6|zf%DHG0V9x29E+lllXKkL)O59=wJMxGYf0} zD~%aXUd3nH7W%((6nhHG3FXW2;$Xaofp>aO)ViksXm2(r)j`3OSs_`b#K^9?+dTkBur+D9IRVREo4jv^@q>LICXa3PkmXb~S z1uWGMj=>({UFX;d8#Wy27&yr%K?hv-*G=we1;f?Mzy(*A`oYbqjuDGb^B7FzGvyNZ* zQD$=7bSJFuk!ZUu0rY^fzHb#l#9TJU7Rnwobq~)-k9AM)RS+CQOm2%h5PgHprw|+l zgiQlo!mLBVb&@a0sP)~N&^{!hR)wuHXK=AF_|KtQ&VPCq>D+vcZ*lZYb|g71?3Rek zO@&8}kN2s>ksg&b9J`7V31hXX9NeS_G0s>7n_RyxE^qETr4u3%se7J1VLN{6jU+X1 z?lYPdM#{eh{0ivkIY=FQOpaI1W6)X;G(#iVUtiDelIQtpxa8v*Hc*H|FUT{D?)&-P zlztb;d~ttmx7YCn9A2H9(O#Hd5IS?cpO&#V396{NNeap{GBt@M-MBezf}f6$h94@O z80*^^w=#L^sj7FoluRFO(s0IPg9$NC$+96{&`?dA^|E7IhxXF)`j8-f)GgJ$ns@O! zZX!oPRY6@FS1M!kFnBez6Wr+|ZfLvSIZ$IgL+1FYz7kaFGJT(-3$YIP5_1^Ox`XWi zxTTf7^pmosgFpXveb2<-+jK>O^{1(+|Gq32&1|mJ=Ra938s8(@=Gf)&xK}=Z-Y~jI zSWKa~=2H?5qI3((op&(kUS-Qy%K6p=FFl<#(b&qguuFS0N%N@!(KyVa7(#$4(3JU0#QSD#`IcvAKye^p5mRq|`{G1(RAx;FY9zix?SWo)X-26|) z5ID{8@*m^hB9_mR-B1$1+e)g`r`VYW;!ybp=^M^Njb%oQsOMFvFDqwprKUbt5AkWY z4dD6lO+`$S3%6}yLq6bIDR0LQoWIT6I*PP=>Ph? zF4N#>|0ydDM!7S!(@c6mw+_&8Gp=(07IgCLtl{=DU|!RnXlE2@ec61?0$H=o@C3 zWWz@!fD_x}hm7u)gxrCb;XH3=^Jaspo5U(0q-m;=t$r^TA9@oAG;L|oI@^CXXe&^pSCpgs@ZvnzsEg9UJH<+)8OM^E&&%qsM`nY<+EY4< z2axn&&xM^()Lc_`0C?5el=4yxkLiR(`F{Pv+iD@BjQ);v6H8YkHAB0mYk_b8`L10+ zth9*U2+FSq;jw3d`FT? z2@`=){q72l_8)uIZO^OnP1mDD`wgsQ(b891@Ht%9(?;0QP=W$V)kl}6(LJpQ%Gu5i zEqefd52xglr+ateMSJV%PD6|IM?t1GLiLaTQ1v3s&*TGmD8lxAbBh9c2n;wkD zT8Lc4FgFJZnK<_@C`Kg_p8S*Dr26fpW3qR|Jjc-{rJJ*;8$N6s=~@G19P~@)a0akHK?@j)=>yT4KVMIfpW@} ze#b;R=0Xg1^FPCp*#v&V_gm|ix*_?)7*cyTHPic$vyxYK2cblMP{P9K>P z2f%5)0E1ELkh;j87aii{LzPs#unsol4xw2Iu(2tqCQvmmWAyqy@TX7rx2I+Jxr$$y zBVyY|!8(YGZ=(b>X!d6G zy3tm0{u2$3lAL??UIcMk54P%!)z7}@Q-#E}&o8`|eB0;BsYYF9mO`exOPAuLk|0Q2 zMp%cv@1|8yvQa@t(^93`)8uJO1cLL*^?#Nt8}xF-Ya#0CTSo%ycArVNlcSoMR>cMiwWlTkNE;$?O*hW-*LrW?DaM9ajx zcw{fz9b6MDLA8XCHVhxir@lPF7lTIK{TYYWDyN_us5R>q$e|k`Z$J@r@hv-nDNrs^Kam6;5B5csq(_!V-H{m zP0EO>8jIiAqCR{X?f0ERoWy1z0?#|WFXbhvKtmEVDbupnZ*u_Z|7;$@2EU#<&3l_q zkJ_OtHMStA4S!P^br-%wWo$-|SgOCSV=$HQ{xeQv%EXN=tCchSjXN(V z`@L~1aK)&ZJXgD8S@m!-zP@g1`Frc=4Lr#W5#OKSx7p`eAw$f$*tH?_J!Q2W{x zhxTd%@MX)6;la%f|I$tdq~mgiYyr@DhJ1g@B~(S29;L0$8uDCw;&b$bbwM$>WTJ2d z$OyXaeyYi&$<#?`BZpB3ngDGfSN2Yx<&Pj1ZIlcTmRX9jj%mm<+m6syF^7QW`;6DV zE>ZHo8PZh6+mR>_1WBz*`9iJ!M2*pAUn42xYlgjMN(3x-H@}aVwK}Bw9;OCFescSQ zYS;7gd?tbtjQ5c&8AOca?V7OB-QuH1%&drr(Uf2rj#1#O=pD3MBuS_leX!2-5@^~= zogmq1VzoQXPkq4Vn%|YGbN0if%77!C9P9Hw!9hs-hrm{BMlo!0fgcfBNMKY!Xng#UnqB`N8YR$aD*9B0aNZq9eCp`hbr6Suu zKeSxbE8F>OXF&BvjhE1rx=$j*@de++i{O%F%I}Gv-%I>OL72RnOM{WPo8a4R;3-c9 zhA7zgb9K47E-Ge>)O=j(;KG%TKlTcSM<3h-3*FujMKMP@pM~TC*@r&{1+Qgs@%C>I zlX(2o8thk1m!bQ;yiFTmXnf@s%r)EW4)7!{iZlyQ|NU@ZETLV?(9Mz@aS_huIw(Q` z-G?7>eJea0YP8k#KOjB0N`T6BlI@f(v#-#OLMe{Rb@LL1Vud9vX+N7XU`JQ~vLCYq z6?QG3o@nf+T+q|{$UZ8Ji=Wl*esGXne^*|4v-bB~&^W--lp372==-` zABs%`Jq$oHcS=8BNNi6-zk=TQ5pw7nz|D+c^zxot)4O&29MTad9nZNr4J26lIjz#f z^Fn5dS^_J|A|OEiZxWI{ThZMZXvN(ybSSBigHGqhU>*4A6m=U5Vm9PDXr^STD7M(S z-15+eIk~h-ddn-_K#n*kEPoG2OsE$``hMHC1r%s8o_i|)STL&V4*{3HEvJYCE`YuQ z7S4T?bDzc3Yq|bvM+f>J7UGT~`I|r`7c7mTlbZlcV|68A8yNUG$6EUbg z?qQsN?JeMwTvL~a{9`mnpDAMM|Dho$&k12xl z+}rUs=!*;!jSwHw(9h_yq=i%&`154ezt`sGL$aW!|ZN$lWc4yJl7#&Z6n8_geJjusF^c^HxS6KvaW3#6< z2Qfs!9Bq(r^tR}J?Wc7ZJGb?eXMDyP4gQIB$G1r|B|<1AlYD8z%a@s_8fq(mYgSnH zvDdV|VNpnFL!B2T2212wbsI&$nI_6lq6<3#3sz!g@kNDewNok{Ik}!ha#|zcRW(vh zzfw@7K?-bse`ZCu`<+WcU^Uj&N6uCxvy>KPP;TrTjB@f+YN(P zXlp=o#P};xoDcajaO6IE$VigRQB2@7M<4{u<6<*$U{}&xixPFKTHS6ZQ4wV*@%GT* z#6qD$6D0k+28Yxr@SxKX`C#9lb{tq&x9XPB^f~CtS(Mw|L4&<^?a2hTOhkMdD(AK ziW3zvYiRT%_tGS5=iT+)otN6Ad6<+a%dlB5XyPpLq{-j&RQf52f(EEf?3q5dFmSAT zyM7a73v0IMT1fZQ>=7>-*}ihXVXoVHXiYQ#G`lswsgkai|5m$U?g?0*Sbmi+tUOXD z)Yc+Ts#b43inU%j<`&e*)e3m*nHDBJC!e)1fZf0s33K)#N5rmG{&kP;?LeS9z@?xA za0T`UfwNMh_4o@X!)Iy6ziTTmwM^MJZY%*RZlP5lpDVkP{}m#}ryok}8I+CIu!}DH z$5agaZ#Go#Z~#B=2I1m-#1fW_xRKPvT`jN9pnd3E>c(K-EMPvTle)VQ$PjqFv}ON4 zl~LmW?h9M$FDCocO;z6Zq=Wh5h9&oB`X|l4aRRB`0pl*+2?ad_StNPhO}3}Q^HP3R zVilpY@X;|yI6lV*R93I-mP*4g#b2PFyy(Y7j5Q|0E3;l{cF{Ka$FaK>`qG_BxM|>Y zPK704n%OGWWQa)(nZlgaQeI5bc9GD2HgH&?v=~uSH=rjj3OY_YRj59!G9kyo{NaTR zPkDMe^gTV6h(PeUUlgyshet6IHT{ZXPtAVct^l^CE^5+Q;HQVeB2a}Fb+pA9Vo|(w z4@am9Xnonpb1*SmSCcjjGHKE6LfIGCn!L2r)-IHQZcayvPq4l*%H`~yg+d2PFGAJH#0g$-Gc;VWi8#njWacm0yX9JKmdDfTuOSY}F__%YBO|`y^;c@cQyhb26%WXa=HOdHPd91!j0QE`y zecUXJ{y0gcVdJJ8@*b}pufr`Cw$h^#q=Wi&-Dz;X>7!>#zo;}l%b@IQO(w}rDTPET zNN%B-OA}1Ra*fJzVNp5wV}D z1-%*-ON}hpy!wq<|7R2+aH9bd^Nyd2e_)juJR>D9;~pny2%OqPe)v*RM;{5Gr=|HZ zxpZBhg5bP!M}gUJ-!mTnoA;+tjKI8uc55x}VX*aqZ8{ojT$MXOAFJ22rK*T;U+8;F zuz+GE#*9{gL@sk)-GQ&Jt^5Fh7)?R%pi%xSi{ghC15(uN>L5*U#zbn*5xzULY&*a- zjipJ@?zwvXw6tnskiHcAH7Km@=TFiuSJ)BeR%P0mi99L=%Mx@5@bqvsMOgr5m5JIX zz((+bZ#@)OZ{EH4isR3Ze54p?HsGPzd+>4x7K;XLOMW%gC73V(YU^9VLBWu9f5X#X zRY9<7)8IG!z?Igvjhn~iX63mJoxB>`%&D^HWTmAqN{@#Ma_TOH|CZ(6Lvs9|Y=Xuji{ejSiJ+$n8Yw8KTuL_di;M;5{y6?0$xRuvSHvChiV zQfOeB*r^l7F9pGJu^`4V51WuKU~&-KFUn{Kl*>7aGmP{#FuGl&Z0L-H+-0L?J`vXG z-J@!cn3;9PuFnrbni4Mxxz;$2&zJDxhdmb&ypCz6Bnw%Y zs{RFx_$Ry zgJUG(Vbl18-q#t*cBvFh7O=VtI!&GV4^_@g!p-7Tq> zxROoUh#YLD!E{_dAMmTIL0!}w_YlTlxGJm~U=@d{KC%U2E7QZwtR@~0UgZF4-6EYh zajk_Ed!cFW!QF6Mk+dZ<{`|>h#3ObNpq&ObTe-1>WojSSQ2b~NFO;mab`{Ujr`uUZ zsSOTxc6%*6pa1T;n5ie9B?R0a9~WCd)6|gMwG$4Dz z2000W_mRAZ9F9GHnoBzLS34o8dKP;zK4TH=S%5y17-WDd?ze-gn!BVQ!3Bt^Aenay z3(V{X!%y~b-;ESPO_Q0!9}mr6$?J&4rk+;4j7WTiL6ka@>^(n_IG{`ZpzG_ln5bhN zOc~&k5a2eMaq#%*vzR^DO>Cy$k>K2kkLMMk{4cnj)mqVjX`$+B{REl4xMG7jRM&1m z0GVEQvP25PLT03vO)Mt=uJt{>i%?yFl?`N@;0nE5$dRNY!i{8-GnhwK`<>;x-S7g8 zYAx7Mnsx6bz7}0?S=VD}z^=#rv*D-j;9z={xnE;y1n|rKn2(A3-`1A~C-EOsFyR&A z!^4IVoKb$253)+8Je$+f!$qe#lcE;S;pK;GJ(c+7IMqP*adY!p2eGWU%X6BKMr;LZ zvle>A)LMCVa)M1fl^yQtJx|<_pm~j)ErP4CRr`=C-a~!P@)sP0sbhX1x?fX3nCj|X zbQj|?wPQ0LShx1=Q3N@5JGb6kN(ofrtjI-2O~Xo|vsva4{snVDvK_G9d8V;YleZCa z#>&hmkE3w?Xo(|v)zt}hF+gc7B%a}Hlpn0-I!0c`sc%(Ryq`Cje5)U_JZCV_XU_+NsJ>S2cKk6xAIS|alHo?QMzm9eoq#^KLw z8!Kf8en*Id2_M62IQy)`h5Mfctar=7N3Gv}#QV6@L}%bl>0_0~>CrHi#*>kqD&ZtP z8`Zoh`)Q0MtlQZ?rCARx^7C(4VaIp4m_t8$gg%N)bL#pIih03*Ae=!B2o`ZWDHTD= zj`ZnMww-Wa5$;#vv-{Jfw5~pInj=kI%S4mzDb-GX&z{QvkZJ#!!?~o= zs$e8)M@nm>h9V|=$`8tWm&OKTtQ1H9C-4v2X$x+m^Cu3J2IzH?UifX@Z)pllnCh1(;{v@;Y0yLkA_m6krA^76n{D1Y*%5S*?M`TS6ZP+m zr=7KG=bZD@A)#fF-F=rH|2p+e7iqkamP5`HV|`hRDR)l=M)?O6!9ZiT{b@aK?Z@zo z=bOF9dADOgh2L=iVqOJ5^jT8zBKyd9;m+Gqf24EcX{GIV(J6@Slw~Ns?DnEH^TnQK zKOkmPC&QCw0S-B~4REc27>rKeIvo?se7UcexQYG>fk8{3X`7;Nce3Sl$UOKc zf=vG(Q*YrF1-N~G)1A^vH_{-|UD74pIfQgc4c#E!F?4r#m(&0fk^|D+49&~E_q*2n z`xl<|)Y<3k{Ylwa6Ln{k_7_pZ(AZ@;l z7+zg#UYw5f)V%09RQDo%Dujvia3o|2?LiEzard*wrs(bN1YB}Av)eA;u2-^9xyOQ^ z{A+1{YQy}i_b#zW#|OEAre{L~!ta?EK3Asd64bV(uFFOZughghQZbG$aGmD{TQ0V* zoR;}W<$76( z<@Fm4&(~c)x0>x`f&YYD^8eq0TUu>z&iM*$$2WiB-|M|Q4B{{7va308Nq3fVdO53| z9W=uE3aE3MS?rUJQl1gkV%R2kDiu+HfSdLR4w0pkck%k+CN-=sUdTr;kSurbP#ah2ykA1 zYrB zgFVGDihXrI907_(bxhnRJs9c4n62IXo`*UZQ+i{iAPV7voMa1@Z+R+f$X)1lk;0N2 z%x`>%1_WFUSqZhl${9m&ly_v2If)HCLwK)o@6>0FY>y8?ikNF?h}qAbz;8xD%@Xov zTw}e{ABylO+k31mlNg%TU~jrK=i3O&HB>#&0#jhzT6$fb<~tysaO_L)=jaoOwjL_u zq|fG+aOA-^ME2}Yos$}vl;y{?%<-xaHW&v0;;?z~epzXJ^}aS)+I$*aXMd-BlJY}8 z)Geyj4T7laQPt_@$ZF$bhm`V2eu4bk(SIwqUhBp?m1IjTo+lWeu&#@^ly*G+F-};e z+DYgWR?-jl7STL58jYA7Za>lgK#u-zN6g`1(Dh9TjJI$x#m)>umtm)E2CmLqSM4dE zc{;fAR}I+T5`kGj#~R_M?$o7b!0ijcX;;f{zVS%$OyW-n3&+HzNVESg%P+ChJDg95 z&$Z(R&bahx-N3yCKfayjnz8H%)DR22`rb{~81%GK=e8|Q{RTuBG9biubUVHA#$T1i zzA;CI1)zVYc%$w_EXEO>d%W?6?02+8)z|nNUucRRAIrDZW?sE}w=NTmESG1-j_5e_ zSOJ=l{DZM5QP!+v?en?MeAWyxyY9)Wlc(9W(DO2cKy3uFhvfl|IqqoB1(6`GUH!+M zA7>_~cFPQE8({nbo0mp91SX$Eh2Ot{GgG&pQF`U^qEud{&Lh3VQtg=ORHgg0zpo|* z1QBi-pU+BWtU+<#u$Bq{`{RF9;&*Xpvl@+y^-XXz9*0PgQJ)e>7tA{YD|eAMXpPg z^w!OhKD6A21_Sj#$>j28`JL>s#s0(=EPzy908D}NgZ&7o#-{Mtxj?!qgc`BNwVlPCUFuB}5N#TH%r0 z9c{$<8W`dI13^Nuih}W~$N0(w56>le)#A2>5obi2h36L->C|=(rl-KVtmp0LemXpN z!|g}S9m3O(?=Jx{Umn3B^R=;WZb2)aH{I^?N^r_=Ivfjf^Q^+f#ptT*0R-li!*Blc z0s$5=&~%Cph)MTT+m-PP%Yg{KNe|#c1Xd~yG4*pB!lQSJOP8>PAKpQ;e@m|!{dCl{ zT|>I}%=6BC$+2_O3`M<< z(I4zmmG=D(v|#eP6WoJ{`My}GsC&O3KAVzm+xMyBBwC)>q85@E$yfbacVGQcS|@|G z@tBBq)?5X}3UvAV>OUu?4Mt-4B+Z-0hI;{kgOQ4LvVXW`o9hL;+ItGPWOZ-54l6Y8QM2EG}M9hJt4W&Bxl%!pf?S|G2*u!F-HYTOC=r&t?*~?X8`u^0elW zeYk2Z7&6R=xw-an@z>7vmzmbYaZZbfa;iB z2t7E6>29Ro z$N+fxgAlhLS(uUNhg#ZFosB&JD*FQSsEq)hpZ1zJg21*+t`hDn<1-%yzjf4S1Ata` zZ-EmzXp~1QHC6zVsQe4L(sLRBqzzr_Sbp&C0p7Q&I+QjwZ3}DotF5y7?vXN62C@7H zHfs6k`?C1n*W0pw`hYK)FLB8}b-2DmbERvnFvEWf4K2wfF6xvWATU$o!t#D1On9XO zwUPfM*A+gK?t(ST#J?>JkVis;P71%B&cq**dswg~Bjnu(;s`zofmR11Vj&vBP3yld zlE73ryeN!f^EXN%C5G~p4F|l*=U(81(XKm{)VHt!nPkE>_Mw)d-tEsJIk?H?g=*x) z+s|23`T3R=$-pY|PNdX9Jet5e7AKHc`> zY|WF*P*`SC{^^UlZL!86IqOuL?dWKy4(W=lU&ptev%0MHHsm ztD(utN|m$S`DQUG9zt;~4;K$q`>AD_=E{mG>elt`&z)T5V_)S zi@53IO}6s)&D36M|I$WGOlojcPGhVm2#K_Ae$?&5=YwhNTdP{KBfZ(* znuho7E1vJ!mi`mR^STk)u%P8}3l8;r-VFV5)_z)%+HLMHXy>tz;*-!_=_5(N`~zr) zqxtP?uVWWYF{N*QHg|GsBIh!qrkj#@>s}(v9L7bu|MX2*eCF(gX9Os)IO5K=uv|C4 zJcZKYJ#qo#+mp^AcM+Rkv2V%Bt(@F^(NdF3mdi6eflykxY$p^X`=K_7(x6oUJ&Utd z?t(wVxayPNaN@xac0=5A)5^vGg0N;+ZC9CT&LM#^LbG-9C`h3w&$&5P06+TtD|9DD z*AMxhLBg|GM)z8WLwgSoo8r=WT@=arI49Q(mWQUvs|ioCiV%0n%MF2d%aWEQ(ncXf z*9$)v=V3CY-ZG>&d1-+OWWT>p`3)u&)adv=`ckU+U;C4%T<|=}c8%V7(CfAd;1Ayg z>;j8s!C$05+0=Kuibzzbi9QCZfJ?GeZJ1dsnf2Mw@AfE>G07fN$2i-=j*HJS&Nv27 zlOWZ_;v}fV8%EGt007{G8Sz}7>pRP@=TPo<5SloSNA4FQEX7uwE0E#*? zMcc}_a0Hm!9g~g~LJvdn8iM2@b!DMvzKVt+ZqnyXCkBjx_QhDu1h0m>3k z)xu)(du`wL1zbr{iNpp*H|i{9XzWif9$mj+4j=+$ALUX73=WBK?_<%G&!>es_PF_U zDV@tGdiG~EYMo?hXWuIMn-l2`o6}46sZnY!BR->HD4oTx>Hv%kbe1mKU`UFdj;>|> zMhcHd9YYea#W$*eRo8@uTTs}H1%6P=ZeX_AJbw3{NRe>XFn?~=&if9gfhast%FXr12qNO$ey50Scq zw=eMzWlw4~q76ut)3S^mw}z=&9Cx;Hj}E%T)7w;}Us@8}^P2DY!8P&8KYQ4czjU)R zX*|2=u-`w(v#ZnX8@`J#ADK3*^M8tbfycPR_Oa9)%SPW9Qu%S7);LSw8+&N)6&7r~ z30Vl0o(kzQ(tvCl@G7Jwtd|VQMx38b1F&bi9`o)Q21|{rNt?6e`q!A=+EfVp-a`wr zrvC@rphs-@EOo#z^Y&R^leUY?m1clDBrPgTBjm?p>@}=wvNcdvse8z>b|y(Huk^9! z`X#3Cc@e;z8EH2ezXYtBjck9P5Uo|kV}xxJaj&w~KZT5|K)sBG%&kWK%C?{N2_$Ax z@7VL*08!*@49p%bO^!V4+40NEqJQD|Y6vh47;?i2nkQp^u#MJaprFChpszIBU+=f8 zobV1!<2QWy{%Gf&d#-=`rbw*w_QJM<&I_FSnskf+kKGnGakBy&S{7#yVF*+j;~!& zw;zv0?ERVAsF`)6hqI=Cf8g#P-)t5NSxYgyJJD+e%s*)zIIZg+HJ@cP21GyhSpB&7 zIJG-hX}fk05*e3NovWefh~YV09{E@B)MKksN^5EgniyFA4T~a6vT1j6uC$MVd_dZ- zbetaB?NRc?t0(sVbXpfAU9Hc_>RpBk3OYXUsb;`i#g{3HH>da$C8>|s9@l#eCNISs z?$hcA4j)S#BJ172gCBWFH}m7NZ%kt<7=aEEjP)sY{Su( z?m$%-C&lWze@L)YnxI>J#=($KsH8@`#VDS7aWM$QN*fz}4Qj!r{1!$2oA{em#Hev} zOLm4_6M8Kg$p_-9R=V3pA{fXrHzG2(e}056f=?##Bo{>m9K&r)mX_qjpiuHLNF>gb zwzjPLm#iqSs6$-^C!P~(u1&3*vG+|odk?cJJIdomY5sTI8?5UvF84l*XGz2$DqrmE zNppmQr%9O*eIwVUW52z`^8;IZ3a|+qL)KCQd43K1VQ1Fk(JHWLDauArJ;sdG@=Y8! z41>)q(41w zdUf8akZ*0KmN=PTO1xr}@h2KlUJu1=<4PzB9PnK&+DlVgMLO9mbR{=kHwYCBgXWvR zo)5z*?Z=Jq6F)IGGz$r7L?=5=)Ts!LqcollHd2;vYa{;QI^TY72$#tsdKxZ#9&y)0 zP2p@k%)I$jWp#rg_hdTzc>jkqi;~698aB%^;?#4{Q3Q&&^!v^b8PQiXVIMva>Rq0K z$ZXT56)~ln%-;bzfQb$jKZ?=W?(lrK5#@(23r>e`2F!IWRVRQI0GGfAjQXG|X6@kQwK<$}v0y{FkNl&X3oTc_!TB;~;Rz*<%KxgMq*7eeL<) zc`f<)tw@UlG2?GBcw3xHtl5KC50K!OT60FNn992))qPTkMEfMmw+rKv6~a@R>5T88 zZ`2q;%g2xL6T*_S)WVQR0*PwJZrPCi{GT6R`yR8XoDoJW}a-1AwJfS!EHJ6GV0Y zJ`Fg8MCI|Ql)Tjiif`-V`#0@2RO!E$=QV5P|85OlPq_BNwnv;GzkjKMU<-T7s`YM@ zTDarev)Ma0DE!Xsj~`1)V}4J$f0`sX8@1DID^sjMYnQI07-*6{wn~O(^bti-arhP& zFb`b}U5Ol3+A+)txWn>D^T!*CA@on@?B0H8{2}|YrD6~4qlxP2K_2@EWtNT=dA>5dK?Rb0NKOr8-l%B-LDBOx*))U_@@MmdRviqdM zI;vdUu><)?RFx{iwZP>a5I;0;ia(peAyC@d?-c#@^}&m5Idp6VP*g>B#`PGTrC~$% zT=~mzi1*6H%*R8z|K1jsusW$khv2`e`+qG$j;dxo6`S`Vf#<{|Ma7MfZqg{q*uj+0 z7I^{!e#uB3zRf3NT#;O=uyyE}mrQubrv4gg^-l*&LmYbmZl(AEST)OPh4X?3?UsMqRXUOR>y;{(U&6;txCurBY!9JFFEx=-0+p*-y z#*qrjqKWi{(`!XQk&}a~PIbxpWYqLG_fl&Q_oF{9dgIWG|#~ zY*x^BEg_aYJjh?IZE6|gL}uxdw@3cfPq{g}PKC4YGv zGn{0M%oomOAm-m!2sn;IPq*7v4NRiI~6m zZ3NXdgL6KJGl&{h!bPTRM=vQt`54w9K(4+*zpEJ-OMuwTem=>O|H4ccl=fp6w?GJ; zY`Yy7ksM;@RY+={*JvU%GeWvfahvQ>3F1v(pbpq_9A8&H2#}J7^M3rx|oHapy{f3EPi4qGJlvOf>9Eb_mEr0{brJ zyb|8rcf*V0mI&(5Ou2i|5>v8rHe9o2TLT>46X7DfLo9w!1XwLn3U3nkb;_@7!DYz7 zbq6x~aTWN3g$=$_bqwy+K!hPBKv1`yn9|Zjmbti(SwgtgNE>lDHliuh!lqz~`PP`3 zu8zH~55P(HY?b9VOGU2HH;T^X>Dl5Zd}hNwM@+>lxvj=FU0Nghb6t5it!2yTW|T|sEhN^I z?_03bIeC9A4|)DC_~$)q6kPKpDnU6YZWF%W=%So{$EV7D)u%Wie{850c$WJen?qph zPugsBxdZ0*4aRM*YJoZ-N=epp9AYT}^@Fkxzup5kErLJz=q>x`K6_0!8D+hjz|`u4 z6`oB~N5kOBy~SD8$}m_vtaY*XxO1UXVn*j?xFYWOIk+tU62bbF3y+z<^~P@p0)`}f z&GoOntsYA%!4#@t*PV5HG0{bT^xzcVDm{PENxroZs5#P68){QtL|^X-g4}ca2J`nw zF=j+v_X^*y+#BK{zP0$8j(Y9bf4P(9XTqoX)YI7TKZdJbnwF0Wjrf(ZrP}Zgw zrOP$QYwuJamGBAOdruKAAC(#5&DcwhzhZd-8xYk6?1<2ef#Ajy9KaVu+!&FIo`M+J zag{9*w2$bP2_d5~4N_De?3+w#$G-lDcnkgCKp|#Pcq&>|K}u?q`71otl=t6qTZsR) z^>$QQMK1%VT7>GaZ;PQAp$!J_(M6!E##;JyY^d_daiEs>%ydC=xG0G8AN#)b)jUd7zSK zL|-Sq%Fq>9VW%@}j75-S$?TE4hbDo^r+;y9?*8*xPk$La4Vir-=uS#uyXAS#U^)^Y z{(h!XO%%e+x>FFde|niRuFNg{sQT|Hoc};x5RrM~C8}Lz&&!7CMLy98;6`e+1%yi|~+a zCr;5(IC628>Tz=;EoST+=MNuDiZ$SGw|Y8c4AfzhM2Cy>x~aGjoK8Y3@Iymj`;l&; z=~R+idY(-ce=~yH{(X)9)2C8DHw>J)qa|LRMv1gNU*BoP4q3~zv+v&kZ41Q5c^BR& zED-`vYR|Smx|XQ*>CKw=66+E!qPX-R-Q0JP|0TIPurNb3MEPY_U9c~0q@rm<;(pC# zVOX^mCqPG&HvHtUM1CfjTPXq37S%Sf4}_XH6xL|X2-#`N{~h$bI-R`nDL?BtZL`E$ zEKY?W%xM($k_5PUNL7)Z&NQL>4SX{U-&pucJ1oUioA{ahV^O02ey^d=wCa@JH28Y!e|dyZeh2(g96E9-G0QjqPj8{0b7h~Z>mL) z5u+fi?lzHkn6F52$)Rv;x zyv7*tUx)4(KAzLUk5&3$)t0Yf9y0rZop`ad=ESD7Q}P}agEu_U@VZ-nKhqpCw7>j6 zzm|AX%PZ_~B@X>}iiS#SmP|PkQ=(S{&c9X^mx4IqFSYib5fj~EMthP*8HkkEz|4>T zwsuut-9qSp`Jf6b42k?gylj2!6s5~Zfo~>`nU7(;^s0G%3G9+*o!4@`s@Bfw>14Kr z;Cv|kR%$eHfCF{qkY+Q{qH;0A5;AU(4rK_dJuGa5aY{P(7Ygs))5oG6ESOt`DKJ+2 zd!#N@5855eHF-%nCfk;+Aq+o9x-^v{dPZ8gOz zWd2ZavlA@w-qn<*Da~Bg6#F&@5iq6vaW4qB_3NWouMb5ulYbTKM5>94P77PY4|oE< z?Vc_lpj%TMYtX$TE~-pG&k<1U)+%sB#5fKcmBDBf{+qSLoZ7yD|BY)K@x9PH&ucvY z7ygyE?5vQ?$0lqCq14IM{oS&lSkB?93!6Dqk4tJI{G)%0rvY`b`|K?gGBZG%h&ZLg zO@k5w;%jrAz58<`z8zpZ)VOT4dBj@SEppQxeM zdW0?}5KxH1Tmaf?c<1$is80zRZT_q($UM(X^Bh!lPct=Lb;m>;LDdP-_t&59b4)8H z5=M!>p>y+qC%eEnIzu+>{CZw*jX|-%|Y056iD>{j3hJv4Yl_th?w=T{Za*&AjH_SrT5x(X z-~87Ep$}z|Cn}`%qBEU)ISc9sB;IeIbE+YZ#VMA*HNPa=RE4|4Ek1mAR}*PlMLVms zoPW}7tG%|BkR@{6BB%hUvj)%poraPo&-E_|C@r$NIMx=OhGC7v)-+OWxc(q+*S;He z0PWhX3x+5L3cXGHO#_fcjiKqzcd-H<$K}5mMB@NB@cE0q%qr)XO|>f}qjs+FQAjb! zET|W)cN8EHu3d3Q+|SL06|ER_?R{M#q_gl@Wb$<9|MIH||5u;pxh4PZr^jd_4Vl~- z@Bf5c{vJ3SIh;W})|oGe100-Oz*biXr`wrz;qoH&wGy_v4$dBJ5VDC!&h=9Aar z>3UcLmXlj1B?C*DxDHa0Y#7cQz}fw?#-2PBE;(2(rM$X`<)hBeWH+;Myfe=kv!4hF zzE0C3bci0}cqFv0|3h)|imOB&j8wbh(h&=SLBBS9kC0(s(m7`QBRF*IN2Z0hg3YF* z_yCjDQL6m=04DLSgGWK{2>4QU z2~4OVd+r|}6x_QmR(uSGQGAm*Z-OH3qdv9$(&sA?3Uf)B9_OmSiaPi1iq|Q}#N*Gc zPJN>HryA83hc>uG4SaICQPl@H3|>ul=3 zjM#8gB~__4fC^vFjtn4+GM249?0O}_|f4WK#m4pX#edKoK#3ba&1%m_AwxdT#F z?^04eIHC0E5?6zzUJiJ3dh3!0GjNv;M!H&m5Ua{7>TT`F^D*m1xvYZfFUjp#4~@o! z;+sX7^o40){71d2SUW`LqfB+W`p+R?58`?+#1VH# zWpouY+d+Evcy;ja)2Gm>|6eLbl9T_GEq^h=D--@@iwW()4n@;k+Pb~_Qy?|Y8Lq_2 zgiawELHj9AIEz!FiM%B>=#j)_)Y8Lx2H{suzUB_P9W)h^qk_2?tE9P3@!{NLWNm8l(2vZm6!Xs4}ryZdM?iG!C72oFAo3C-1d!zP@1&sQL6n zFWRD=N+Ay8%5PEY{!J^%E9crFYT_jeK9q!uKbg`z!~MopwG_a3dIWV_r%kzgjhTx* zW-%B*Cfe5b3-?N0&-BhlL=FCMlo6`78s5x`uaVbc-bT``Vy=w+yzcS5ZRbIk6)thHg1k7-zM5EdAPK<^MCgVxc^@<^AGS9i}wEQ(@{P~ z16ShUxjUusHy3>b0kbCdG{JyZF+xozI*Y^!Wp_SPydj;|fQ3iqG zm+44r`u!1gX2FQWA99JhkHJ)*{bX!0Pvf-fX6<6aHyC&{ZK!{6m+3D}3K75OiyQLO z-SWurJhj5LlPk6_agVIc0w~v_uJ9VQ;Jo~_Kv!cM9K>rwZC^2Z{74=u+jB1vQ{9PP z3d`_S8)kDE(Zu-;2O`|}(6BS`aKGeUnV|b6z#+VU(|5g+aQ7T(m`ph!v=@{xRO|eY ziFY_eK!WzLi(-4ONAYh}@gsb`Mc$W(rTR^x=Jjqv5>*gc zB`P5w|oISRet~HMc^rxcx*k*vx9US`ptice3P(3QvzQH-?_0hJGzv;vpUnyZtC7 zVt!Mw2uq)^|BVd#`yMj_6JZalza|3j$V?#7-GA}i@FhSU(fpGo(M^TV>%4ksGGlbv z+G8u;D@c`KgIL%1EB3ZP%JAzR0fEMcYgc72T^5rHnB~+*=Y+;-)i?%C3KS7Z++vYFePj3)a33R zQBvW>613;3+HDaRPd=>+9F7Y)Y=i zz0j*JZ8o(mt$%4f=~CGg0A!b^lDOQ(bW@%G0r<^;EP);g3K^hM$;^mWB%aQyf)rEs)PGoZL)&$BmGFbC_a@7o_2Mx4;8ro?BaD225AnS zPDU{tc0qhh+ke?gS%<=y@5FGZNwsBaR0lDbF_nw`!2C7i@q;UUw;hZWp1a~}2x*kG z62Z;w`mjW?DgNzcrw(h|jO>7|u3_mUw4&#BLpuaSbutMRdLqA8fs%k!>e=gu`$((x zgG&#A94lr$t3te}`IWcm$ECP`m8%KIpUM4ZprLwO<~S{Jc{zmLpS)sam{?fNT!`;=?d0@*KlTa3pE~#2 zXaV3)5*q6>DHzxqTM~@4*S}=(#<#G28^RR;dbB*p7?Lrt~&Jaz~i-quqL9U`8~?h}rpPjpe(Pvhh8S;!b>?-g~lCU z)KjQD1he(kU76fJ4@CW|c*^PS9=Q=y=$>N$O6nG#zKcXfyU$) z0!Fr`z|inYfI5!NV8# ziHf}18PmDd!6QVspb_*JDd|6f&pH`NvC^cBMSxZrCgYiBDntpS(fah6_h_6^g? zjI6HQbkpsPD7R1WUzhlqaAu4?v`KKn{+Sqge$e&d(g{3ik3Q1j?WZ z=d-yEndDg|mn_n)h%UI!=Zn<({=kdv;EE!1_ai_fk~o~6(W!Y_CapfuyfKz;k>lIM zz&Xq?`=C!C->h6)6|5(t{l@Kb7FX(xFL7CA5gSS~tG@n{Pf z>!3_6Atz$)&e>MiJ{Hu}pNTkdYoWE8UgoVE<0G)RX`u%TP4kzav>K;$ZaK`oSH;7< z`Df;A(0xSV1!Ma~RAgJr3SE_-kllws;Nke`U20RBYIj8*kOf#774W#RGO{2t$tI+k z(RU6jw>h3qoDQ}!Fuvu6ES>hhbnCERb9dEVwz-|}L$-xuHwAB(GlGJvX$A;N7{eZb zAb^f!l}TXvs}B73k8`M-H+y$9Ym@D2hj7NzJD2TU&?r&-FOK-r%~r`<$IqK{oR!ZS z`4Kp;Uh<;CEOHzl==Gn8=qNl4(+M}Hn@)hPMNA497ZTP3HeCY5?HENW!H1h60-p(e z8w`JL6CAf0U`Eo(JZ($qS-DD`s$sPupu;xH6H>{B1g&fNppI zMmqT&Kfz+AoX9626mym@(Q%E$D_DCIXOeZ*WrfJ#&v`&J#gxckoQ zFB5=cx&~;Ln{KKRVr4mE5U%=z&MuVn#t|h;1Y+OmMB%Ox@VA?ml6lA)_~Naf?&o9V zdEe}BfK`v4=+9M+5W5|*RZ+!aBj{!CCSh;i`wO*M7(u?a)Xx#0hQhT%ojLuOYqEa7 zJ263NB1cvHo@&x^m?RiN<{ngnk#886vVxNw)}%u8$NomUG{968isSS$ED384pL?~K z^n`Uj_z320v$#8r-BAanSlQUCu;Wwp)@}+&p)}g zcH+>U=O2l$tV#t+Mt)hbh6wJum%@tXkF<`23iPK9rwU$QTJ9{SN-K#nw0e zC!K;T9LG3d`Z}L8(@;@94KKfyx)0Ew z^%Ho(UFk!0zX+{O#x`JhR>HWzqkYo#GSu&AcG6lTF&7Nsd&6=A<`0$MYFTBeYyEQ^ zlRKOK!rX6EyUjeG@9ny7?60!!De%2LD@k|kYxC97X7x=!8ccl#76y9Dl%lG^x=IB51B=1Ax3N~YH zEPw-0x7tq;-JtE?DcasWYrZk&iDgLK8#ee~Kkzf9L}@CO|6B}N`1-}RMlbC5l@~C8 z`d#l4i9NLteXmVQxK}t~-j_dIq-J~b5>F|?@2jC_Nk-7NV8NHB=l&RL1DI9+I*n*U;Nbxj~tn$T&D_nL7_F4-+cP+Vm zZ;!_jIcC5c;_2snuOa@J?4r~eQkxa}+xP6;!GvYkmvZL*Mx!CulAXfk(LWtIk5-@g z^`4CY6QYCKFIM?9J}MCVPs7xUV=dB#wM_r{UlQKwpQp7G(Z^qEf>N5G2IejX6nDGR zb+36;VSwf4M$MUq7Ge=}vF~q*Nisk3?xZzyuB4R1543~rBNr-p`8d0|qVgC{mkBsr zqg!$`TI)Cq#H=v2Ti?4;mipit%##~lzB=Mq*|!abRT1Vzh4u9M73`OU^TuYcb{%?rqw`BFFwV?pI91^9 zXZ7=(5iqD(0Mqi6R%(Q}Pjk9MRe8>q&IIC`ip03@UO5L{x~%Wjk@V<^yBf;EM$>v= z1HM%{i;2hXuXyXiS<2q7r;xzZd^(-EdKjGeSU>q*H5LEY7!Vv(juPfm zr1(dYEd*#zufxeUgj}g#i-SwU_ zq;5o#ZYYtl+Pc;^S${GWM=6XG__MsyfkbB)4TN2uhEga{A^OiQ9*qh$-y+bxY87>S zwlET}I`(0Pd#t%SJnbmefziyPFy|*icfH*5rqMzoc_2@fGH7*p^*A4sSQhGqXqJ7q zM0*<+_N6dmnSZ+QOL-{t-*08YZ8tzb&8|uN>O=;9tVDAF-;IA}iG!S;bA7YAv^*a_ zI|_#cUU-5%TwAjy9=sH^)3z;~?gF}&#z=_eFW$|nOBDNVP=^!r`;F6nS1(A7FR&zH zhi74(0vcHde)_~T(>|%0l_gI~5&NX>n)Lym=H-xEy-VV7($$2=|36m5?EhYetz+0; zvb2;j1{CkK?b~6uA*ttor0r?F9wL|&?vZ8_9nL$=?rG~66BEc;y6|;OU8xsA7ybU> zgrKIofj%9|pS_elKhIQ-_l8VtPdr_NFlD0S!=Ayu^2omhQLE$bbcSpu_65_O9;V=K zGDLqQ`_S(=I{+S{g+@q|`Vq5AsMRgJ_>X#PW4D(H99fuZakWyHkLTx+aV}wAVZw&H%8D&7f4Uw34bN(fj zs%aA=BLcH;!RrPQF;q^~x52o#Kxo^wpu;UR4#>!OLfQ|E^VDgSff+r3xUv2En(u2Q z`IAi;K7aYx6p+TWl=P3J-*2<<~hiFk(~vxO-KZYgNIPh z=|r)HRtG=kXeRx&;&dN(&rj!ZR(E)r3Lmizdx6YDYF4V9Gva*5Ziu6%aJYNj zSHmvw_Jep9+hZo3u#t?V(edtx^G zUQWHW5AF`jLvrmDQ*Ez~X={RW{w+8K?vYfW3PV7>D?Ba3duIOlfRTeBtbol3D`cD@ zC>lPU{9Q8u3s#PR$AdLQa0x46dTiqNfTboMEs}4bP(e0+02sdT#V^nmaA5l)^g3<# zn?*oI|B(~=wWqCRBVU>7?#v*7hX`1^ta;H&-BGY<$__{VBmnB{OZIi-b)06L?jHVl zyhj5b)`m(w8N${7`s%j(4c8#$EITk-Uvnnt{-McHeUE}lM8URqf%}Z0;ySw)M0GC& zG-&;mw)xti2t$*F2nxRTQ7U?qKL_8YnI_mZQSj2giTuakb2mk|cp1Q;n<*ULv_~b^Gmc z0}w;u;>b>HZ0|aVLN%k0@U!6KfiGc*2C$b;LXUto=zCR7 zImum;{lLbx86SNc)zZ$er;J|@CA!+HiLbP5OWuYA`u1Qqb;*}vVy?Z7c56jbw=pSk1OK7#X!&)RPhI$5yVdg*DJMG56z!l-!)Q7VkoF#joLxIJbU}(S4<^JUF70%i1v=d2Pv%s)}EVL5y4+ljH2e21!%G;F;)y z=z%EgWIGx6g7snQegqNV=<_spRQu+sA(bg}C|ZwaNjtz@45EEg13VkAm=uUZ%=Jb@ ztcrMOe3&Td&B^Olr;HI97ia1X)e)aZeK?n5@lQJvEIg-AaGBljDXH8{XK@HSaezce z`gemSHr>Z>P4L}-XNFsE*(24*ZNzPHG<~b*uF1E*y(8{qI`1ZE-m@po3`G}#>Y@7* zB$~BT*KM^b-FL22)k!X`<^JoV;FW%Rr3j9+#&6g<*UL*(hDxH*WE?@eoE&-bMqs3& zYY2iLV-kQF<|U@FreaD9pk7X!i@p@34y^k9{VbatZ~WMsKDH4BGOJ>4FYa6@9wR)n zMHKS(;aCDh#hkwaYMb^Q`m0U8HBjL9*4_y7W90_xf4y8v(g3Rj(^G@hvL$7GbVpo8z+jtri0r(L zf##6Pvp;$edZ4i?z5==hZZeMmALnSo+xj+!^^FgTlb*CBj>wtV;$xov$c*ZarTiUU z87hy;XuuRspmSZ{yaoIwRIB9s#B3ONGX8}u0~?`zMql!0kV%3eDGsxQCJI(p#Y^E` zhV+ZSG_g8DnX9Ff%$({vf6Dg!(!ch+oc6X-O2@g;F(tC|YRg>d$~YgS?Fg4ZYfd_D zPizC8Tlj9f(0E`p&IT%@A%6~B>1Y1wWM*(#R#p}1hhvO;yyF{nX(H67^6{6a03Db1 z$C{t#V?^hyH~%m!WeH(W^b-j3&|26r26aJ~tM(ghCP%mbA4^{y*3{#^O*aw((jye< z6ln(1h|(QHkS+mf#z;X@knZm8?vk2FNlvA6^nkJP^8NhYf6l+>y3Tp}x$pbglC$Ng zr?2Ei^5BT+b~Xrx`H*7rZ7`J@lFuKl8-c*norn3n;gGe!91GqT&Ye%Oj^^_&0uI); zWVfzxc`DZ0Ub|_?A0Y9MQ`9KbdN<8t?3&uE0BNMZ@+-EPYZBORB~!Hy5=XRI&Xm4l zIQ0lfbj?#*vIbk{s$`APmD;s_^ysi?dC;ra8$@fR-VR7RrEmUuU9f)7f9b4y$Su7) z5K@MoF`!dvIGX*p>73?t>EV)9Pc%ZfWys; z?eAm)N%`M9q=#R!Tv__CR;&409Zsm`<_ymKCJ6zj|E1Gq#O%_E<}Ds+#4vp`$U)0) zmIw;Wq?2k%LU8}>C|F07b(3;W$)CQT`X==5aSMN%*`=sFgU5Yo7HsWL?N=Rj6Wf}d z_T!PrUv(m5DHrl*?|*1IV7dG$7PEsu!FZ z2NApkiX5PqJ*oLjTgn!ZIX<73-;gUx+9=)+U0D|Y#cHC|@MP-jt<967a&z=Fn&09) zYssmLooqt?^&cp{J-cZHzl)%zO=3r55|5y6ywqtpR-Ilg{X6sgv3MvAT166_cUJne z7<#oqmC{T#5M7`AVn*fosDp--rPdYx2dF<@_1<|KOq(_=0 zj)H-ms#hK@D&+o0Yu-2g;8KQG#60-FJ0)`l{|g^@Uw;Ov$`vH!#gj>pkIWwjNj>Li z${pnYMpS&KOYmC@Cq31yWz*7f4e&m~N9M4ES0Y%cT@<%JjX8FZCaNSvD2GCV_6!>f z(_I;3Af64_$oO-#npT$=P|Os?2-IPa9WI_(C4Pl7l|Ymqk3k##P6$nC)Ax2cA&ZAw zIUJ%eIt|f;rzn`sN^qVEi*7|EaHn?ihuyUSJ4VIg~gr7yCSWG59F> zBMmc+QiA8hr43Axmy(k*--xLu>@*EImSQCgD&Qr4L10Ys?OcRw{2oN$`29R~Cz7p> zndJR+xhHV-b6(!&My$5SbML7wjn3758GVTz;jBp$BsuuC z2fi)wQ3Z}4^&A@6XOr*qs0keqJ*nwHURe`z$N|l+=UIOxxB^VqyIuj5yWo%faff&R ze`?y6Fm~pXmavHc-haApaU66TBTEB>a!pWlY=09i)qA4Xp+t6is6-JY)X?{Xm5alZ zIZ7q|u&)yq-*FdcWRb;NMPW5%z}BwQ+J>&eC(`ZpBO&$t^fz))fX8Re=80_t>-QX@?i6& z0uFS2J;spq#E*g8_B8@CvF&GNLC@!OsSmI^81I9W1z>i*l^E9(DBef8sA%DsCIu1+ z2bvQ}sw9eIX4V-mFfQK-0rW-F$p~1V@RK*(n8`xEwDQj^p(oFLAf-i~ben4=8kW}p zT^qFnMy|v_55N_xtv7e-?F#G(SBrepe_ic-6^u(2|Ff z66J+~8m4%3- zS)7B}-hnC`@@S2yZ^DhcnE;uZ$gwjdsqNQ6qx60r5Ku`P-PI?9UZ@L_Mo)qs4sH$) z$Iglf9zcc8zKn*Lp*RI;VcMVYW^2Fi7ZIL)$yaD!LL_R`X(q|xhvZPeqk|#QqJzh! z@GNZ+c{ABK%ns5tta^OHZSB)&Pd;PRvVa(^2z6(TOQ{B3(3hk|!r5KmqZ`~_&7D=P zE}hu{*W&>=J?*APID+2wSQy@=;>7rBCV~a!kGHO$4hCbqJ-{khcOhWVwKCuwr)|@& zQO^GD<`<1g-n$GhTCUpw<<8I$STM<#Bw1lkweetuvx+EI33`-3YNWMkr$caOwM-Qx za*U}hE%d*9h6fjZT^;L_DdJY_wxS>>So>Phvxrc{YV!LY@l$kRm*;woaDI*BUiKTL z>l>f_?-vfOOSFAn(b2x~VZ4t3mhP^@!>FV8G?-#4T_cnP&_U9IAhJn}_t<-4q+8u} z@b33cki{cnufQf2DWBA~Nd$<%TYoRw-`}sQnrQsrfbATI++8otQpZst)dFgDdMV~# z<&8<3!F1Y2auo}c3eiS+l#sCooz4+@&*q6WP{pso(2pgD4h5k~&;QKl{5}PO^*a&H!M~3Af{q$lLy?Dn`G8;?xTx)qgY} zUf-iVB+w^IeUj(}cgBZp(8KXr7YOx9n%}U+aqE^1g=d4>9T_!8&RFBG{|%KR0#;RF z5CO*Eb!nUM+PpCst%hZLrO5O5RU?v=8ZQo0#8JM9;W8M&@ywysy* zVS}|n?@(*~U$yyZ&uU{MPQ?pKmE0F(K&yqAY%MTX-G}UgMHj$l^eFBu*g(0)vy69d zV*&T&y@3hqc?G&15hrYn5#zLV_YF6L;&Wq}S(qBeX}p$GZg}k=(MJP}Q*aAd|EIql zxY#30g6++6S$py{+DlYCI7vK)w&X3P34#0&X3l#w8dM8y%k-0B_CoYj1XQkJl z7%eizEZ&LA6!q2j29}aZ0@2gJ`0Vbz6LlvHQ%?Bfe3!ypAS&z5GJPPXCaR@uNSE{%QEodR7r&q=ZYq$S zxicDo+E6+Gx^{8Ls`u3gPhtHfXKDO762$}p5fXjrC4-^p#V2(HjJ4FB-h1{BnYiZr zD*bt#;SoemaJ$K%bt_V7y9wjIsk^It$|-(o#FS>&tiw?c_d3~>*t4m))suZ3e~=z9 zX|&to6gZPVk7^Vorb&IjQT1fauWREfmL^Z z0uUCQf<~ASV1)>eJo@DE<4eVF_939?W%v6Si2MB=0Hr)YQZo&@{|?gAdZnYnZ+{6h=@NlE|bs5zy-K5X5|Z=FZU z?ZtDxzW9UVG}R_F6nXfhGrVq#U}`J0sq49YrX0>~jG=pQm+@_XDF4bno2pgk7ECh; zs!8dqbwU|p_K&0e$H$T>7KKmpp9YTHq|@aI`t9?Gtq59gN&(&kFJoY*fl69=5;U5s z;4u4IEn}q*?K1Rh&b7qEJokZBr@mGl^@S^VK}$S?>?fdj?Uew z!r(rizCK5x0rgyy_tW*%6KvRpE9;XjGx~BJ@>o6 z`Y?VCFM8*AV+Y^$S2D{HqN_ZO%{vNg@fbB$A$opu=oH8Rd?q^aAP(ir2ON8GGE5ji zW(>Q}$#sfxo*U=}0P9pxO`&1b1X^p+5$umBhEX&UP`k7Vd#qXhSHp^<@1Y5s0uTS5 zQQtixJT5Qnc^+4ncN?nrKc=&S(>>JYPuQB-K&g`I8o&n#kqGm7g;AG!gi;xjENH;ZHAKWGsg;eKF* zKiBjpwx@!bhkL>F3GOMI)kxkDT8B~MHc=vIw(rccvj-;532Y{NS=Y6V^ac1$% zDRX188>Q=C5UApg5J*a%FZgWE5w>`tWe(d|RTI2o8rh7vz`H?O7jCe+(d-E#v6$8q zB=$cNIZox(&+!RH+>^bEKU=nN7UDX1UhzUIuC1AT+=7AM&0`HF=wg(F>*DCmT52DX z-!Co|rF@?pl%+LXe<6?fdH*&j;fTzFaQ*44yRM^MD>nPTAB(>JZ-fs>xvpGm-Vb0ubDH}j`Ncg;SPtv{_bi{p=M=St zu+=A*QW>FdE)wP#2LE7CDhC%>!uknx_$`nFR8P*|%gj?8FHN4et7(hn6VM-xPoG`^ zgzzv-lW&77dPPDk8IR~iBzO9_N;^#=yLzx2qG!=+d&8hk#_@DyLZ-7NG}@tIeRD8E z*oN}lUU?R(Rr%gh=BdS_41!|o*MG!ZDDBmmJzn&W7c{B{q3Kg??|olgtj^ly^c&>S z^~tzdD?K@z>I#JzM&2Rm^qW5uz|zR?O9Xxbt};?y$RT976m^((B=vI$lZDrfdV~>1 zUoBk@aM!7}>eOJ$pcTYv&;7kIPzG6}D}5?G2V*@=X_=hJk{qiH7RM>H(0=jec*4Js z;o_jR-^SZ~9QhR5X4h=u=>?c`(!4IyzgD+DU5;g#Ar(3;dFhz=QP@crK0g&astULWcc2^syD` zeYwKpIadmgd!Dks{hd~mb`ev}=d+fQuEa;uGu-PBCTI#jlZJ9G&Qz3b?~(U}lcY?- zpE{_!qAjKZBb|JpG@mA}F9cXHKUBP!wG|o^=z*ItHyF!4h}u5e-r>>{l3uerX-(2+Eh@QopVzN0eaB>tP@^GGv>LrxdHSm&`I#AH z*Lp;`jL3LXM%r#HT^|=8IJ6{rfRlSSl~FI!2SdMUx0JVjA^!f&bLiaYJ9hL6PT&q} z;`&GW7c-S)rLF3&u43P5?k+nDCdBQ~FM6>j`a3fYJfY|Z{luRon^ILvdcBUa&L{e9 zVIn1wHf1a!nq`O8ugcZGs>vzeX}x5EkRCaXdyBR$Nnc_<7|74@nM(h(%FWX!9R6To zXG1Znx)Iqj-1qh;@MA`ZC zhlWEa(^gu}_m^UshIboTA5$}^t&QnKlG*et`Y$wbbzu!oT?cmSn|q*KKyT#8(VxRqABlQV?a@l_}FjiIB3Z1v`1V@sK@)EI01%dRNI1F_y>OY z^62-wHS2Gkhp7?zrnhZFbds#q<#gWcs-HX?hnEujABfY@pL4mJHP*6rBbuK~eK!Vk# zF@}(>4|o?h5msMS@*2zUjW^>D)vMPI(i1VUq{JUyQIW)TJgN}9CrF}-VH$+7{@q;R zy%7;oCmO+f%7gg@_mo`6sNZUSM|N|v@n z7;GSxpz}_m_SVy|jJtecMVM&4#g5Z^L&0Y3f{N~81S7@V)EOM>l=CwV_FJ8U*Pdqc zHX6%r!P}y&oW0GNeu?_SHD-JUp>O z6uZ`5{9XhnAs7Tidzwt~*V}h5tO8%R74XYB_2G~E=xcq^@jPN$f*uyXl3A^55489$ z={7;D>C}85@3*iXcD;CZFiJ`%-JWp6*y?c}P-R1IMQF*oYBs`7@CG*% ziR)u&(L_F@20uc#?jnn7{Op_oY5&Af(-X(Vhv^@_a6G72a{ zpFt5WM|hzq`r~=>8!Te332p9zE02#rD~kHBrOBJ6VYce_$70{dyEAnnaDc;JWvgn0=wl3O^5>*gdc=pTR3Cx;46OfGVl8r~&6o<#6h&Z-fDJ)&&zJyZ* z3mqJy;bL3KKyBKyn@t%H<$4{nrI%bk)1oQkZh*;cEC6uf=}dtzh`VZX|@4 z3?6K%YW$#)q5!jfqaQI)g$@J6gEm=J-2y%h?fuLFQGXxt0Hv0-y;&nJAd@Fmz6qJr zCuSAlYu-6+^|&E{=&cYvax8ik8pH0~rCmXPBcJHla*h0Odv%J-e3Bl=7_w)SfBRX6 zaL$5^G+!*u-AklD`o^=_K~$-y!{CM@47kwWQ-w+WlR2m>YYwi2wOP~ zP+PD9I@_Dss_}^Lq~wcvEh>B8KBG#-13Jyf*s2AtHVDYJ9)Q%ZhA-HghUjH-(~Wcp zi#bzUey#>KItXV0j2wKWDW@Oh zwhZO6i#e3s)u2y}V#>D_-hFyf9`o!R3lWf(5P}ib?7)&7)lKT=B zSW8r*?&Z2kk2bJTQ~KTUL{xTUd1K+2$pnw8E>Rh3#T*$W@&PCviPT|ylB zZL+uic?^Gu|Jy|&l&vQArg90(0J(2>+J@F7_>x#_N{uXn z#<%g()QYDCAJBHJ1O(;j(xJa!zQQ4;HXG}*WF?2eao20?OGeGw_rT|Fm143@rpN!7 znSn}Y^igx^)|wT2>bOsiUZ1(g_Xp^|Bj==H=s2RFpvSh>xGc{j{9bHan2xWTu`$Nd z4WOYQP?jK$$Z$|W{f;a7HNhQRx3oKDBY`L?jI_^U=@-Ul%oyp8M!!iV9=tTx){po{ z?eU-yJibWlY1-*G1SW#HgU!Nh={u({LJozJeUI{FG|mjwD~s(_g=oK!N!JySYss`2 z&l_GB*)wE>A|pJBzm+~?XC@@JZXyR9mj#(|DYlc^U41zCr#atWqEfbZ={M0=L0N7# z<_`zMxQM?ReTgEXK~`$6bq%W}f}YF9WV(0YCcq7b=ksR*}op$~T+NOkkZ_xVa zKsAsAUXNw1<;X1~F!!vvK9*9w;Z?2OO%wcD)hTqI8PQ{ znesn3B;Q>w#Wo(5*Q(Gb$;JvFh6mPnyq`Fw8-J@M@I0RDsIJ7wTL&QoRh8bB;hS%Q*=1v}ZedBTTlap7x1jrk%es6P z9odN0k-~Z-LfBYhUz^@Gfy)J3rN6@19MX`@^(lBZl{xP&*!;yJW9DC>V7Dwj$jIv8 z=Zr7*&*AcNm1FNFtl~f_<)wq2(AU32DE)^-bIDzZR&1dR6Hka^sP#+r!m7XaH&XuG z-YE2L^&dKV{cwGo5n-(Kw>$s+&x%lk$Wjq*i$qy8_(k=86W$fW?-Z+NzRPpG%hSj2XIm==vbRP0u=`(sTHGTn_Bg+Y3X~ZdTTWaE_r9e__ycBq$x>J? zrmDvH`$r%|Fool0pcv`B#`SyFvQ@b8F5hfKHRh2?U#YYo^3QGcKBPIm(@*aMw`qhw zb?w`n^-H~oX1wir*jn;EU88n{N|2TE`^Zx$_*M9+Suc)7laKIu5;Eg(UYnY-;3%r| zXVG5M%FGGa_E@m53fnVQXt=2bh`clSw@bYc%L1`v>mVgg?U+jQ2a7^GcjcFPQKDPz zlqwQXI33)aHOG7dL5($i^(b4}HACQxkb=Gl5@>Y(X`=_{K3b;tqlpU&rZ<9)ltx9>&&JVM1o)4A0icL$3xg#H`-JVzUB;}ELfZC zkbPk`JrPzuq%(zh_=Pk$91}r(qh7ltn+W-S^~;!P%1PlMXV)Q30vF=q3gQ(n$0j$# z6bu)b?HH`Qdz9%0ll`{}1G`IG{8 zEyCK5O-k=x(62DZcH(U?%tEeY-*Ab`(BIQjAM2^j8kQ}P*qd>6ExZvrP z^@(SZcqo!lwz)ivjdyJP8S|#bcu^`}1I~P8YT{1lp4Lt<>kakJD)O&}s*VVx#`HBr z35G*oK6`@ODW>~Hk1aghvii8uHj$I0_saS@jA=XF&oSO2D4PhZUw#r~{oIdc&$qh+ zl=OuyJpcK4GA$K3p69LKw4oB-Xnv8e^6roqjeYQnpYrERrUNp0FP&}&v>Vh&`%VR( zC~?Tabobp9$33f3m~=~xh2xF-R4QBRFmHNOzaj4573h_5m1fbae7}j2wc(|nGf_=w zQXyrG&fO`S@%vZX2U_`x;2#1Eus&Do-pWG#+?W;%+;g-PvAd%?TNg`*ZGNvI5VCzMXZcRr^%Wd5AfDtT`zDWHiR|{I|rkZB_g8TAJE{wbi3E;Gg>e}UcIYnMJ zVBc7#$M&x!)D2Yx%Ds)3L^HYgzqY9CzqUxKc(|VW!>bbq@~WHn6vuSNgw4A`0uWEB zdJmlGvA2{8^r5mvOOLdt6ahQi?OVEz?A0G{jC&Rdi&(>jHWMI-SP~(R^htodv>6|* zPz2Ni3>U#^a9X9pvBl5H`AaTix>{UkhozVlthC!NXEIP^e22ImA{S5`2|*%Nyr z77B&pr7)7bD2g`IM2{Ws|1`WLixHngIrlRc1^2 zG{F8yUNf(HjxvWyUgQqL)%lsw0ZFil&lni*xYZQp_4H}v8~VZh$w)yST0fbbIP(KT z5R#E96Oh0q4Hu;NPiu?Z(V0A6e;2)qbp$ zm5k?%f0rw}B_>6L?sv=3U(#ohV#Ju#Hv%*l{qFe+?4sj`IMmHrhZaJ1M5MA$wnq6$ zANdMvt6bB|4iI{HX?mpOFj(; z&N~y-*PdNPd6i$71NA>IA~z7MH!XYO+8h*|@{Te#OpbX@fw)9ThACAQGuDr(`7!>m z*ea}A9Qk}|;YN%E{Q(a~wUXqp?A}S$5@psLBhUpzrZU5wakUC+Z?As!2`w5Yt|lH2 zxq5{-vtMSNU~7FFFp=xb#FMA~oBKoIT6tMuJ$^c6OY6WFl{(nH!0hhd_-o|fr4jJf z_qLnz?Nfut!&gP}yF05D!toBeps4MLHj0LTEg;!w(G|rcW`cQ0yRh01sg)Ar1)alamvCby9Ru2y*S{YtMuhTzTS<6a(8a2wc+E$R{uY~^(>8^t%iYYe9O1_K z#MgnSY>JZD$5UF2h^$)qsqN*ZHHv7l%LnQlc?P|FAO80d6oNc6djw6zT-eW6>5I75 zUJl$3(0_>LmDL#JTR~-eGT2+V;PVik2E;YHEZK%cCiXA<&Sf>#udg1&E&H5lxnKO=oX$q>Hwlt)o%|r+LSL0w z_=A4H9RY%Fpf+d+ETwG9T^X%`(c)6q961?UU+J`D&etiljVkY~tX4gw4nf}dLxABv zN1_V(0HT4F1m9XGP|f7?k7@AAEuNES(y8p;D*D$?bbV1~qu!O1^C!}2DlEMT5<>?v=Pbh zs4r)e19)xwSi!!oG|U&FPhnn_fd;xN=sAS7Oh;Sh4~7Un^`N+odXb+Z^@3Q(8U7ka z-I`TP&${>~E2G2FB8$$KMHP`Hw5Pp++JTGW7@%0d#q$Z@GkhJK**_&1dd%B4izSF0 zR1dbZ%a}oS8?z=PSXbrcpC2NgJKHtC1Ch?@ z8mal>vc1RPwr+huI_4-34HmNc(fp!l0+{Zgh+Dz7DPfd-9tesrP zzm{!wc+9E16E`ovZ&W_7m$2s8w9X{}J5Z!;#-ms=GN<(Tm?V|-N~Fhzg+Fl88r!Q) z)cDHB8~;p^x;qPe;&Y`wn0)k%|C^H3$b?c27t2TJc7G@vxpt;C3Ptl$5n*V=w$ErA z6RDJ`pFG>VJG4o73LjU;jNynU{zjE;V|Lrs!ejSwmiDQmT5wY+JBP1{9x1n4lGA~J z56_?UXG(k{LLukO^vp^NU*+|ueup>Fy zvJdh}U;bJ(uvv12hPnV#df2{9*16&Km%f9s{|6uM6}y{u6D7zOw4+aVipqIwYnag< zs{BI~$7^Cwmep}4U!Mny#y`W4NRfO1A`KPJI};>CC3VhuZ9$;$Lpo}9JLd17RA$H4 zG3YQeUe%`*{VI(b#~h~&)nV&5McoHHRm((DEp>n@0j|`!P&R#_h&D5P#-8a{v%@;m z*F67I-0&>yzWv{#?&R$*YUJ!+E|~sSy1|gKY%6xEy1i(kILolQCB8+9u~g^6djTSo z)SkvuBkJ!O5Pc(#5xpCT-FzJ}8-a}lb#u!a!RZ)sAP^RPz9Gb(ZGB`LgEhb3g7)p< zw}X0blT79?(w;j*kM?-m0u2q{zRg6W+m%0LwBX!{u=c%MKkzj7lg4M!%4?Cqnu~x3 z`SivL57o$-715|S`n#U_@0^t*Y0-`RJXR~8$X9>z$Jk(BUr~xh?!G4?${5=`;dj1? zCwbX`r;N8WpWx9NVW=Sw-*wNd(KLg8JJ}zcUUvfqXd z4aa!*v#YPWJ+3QtnDBPoNc=!yu@7X;EbQ7-5yt6O&(AdorZ-JBfKGk+jFrqFsL<1> z?6lL-)3~fn_*|2#!Slg$7O0yM z7lx4~%fDT&FaHAoAQb*DoqkI`_5}K{%FjvR@D+HW4RI;ut6Y5$p06&nFYuH9xQY=Q ze5AvQOQQj)s*B-n1?!f&<5*rqwD}B6eGO6gDO>8ueEZ-ApYeEQ+&C=wAoP*CLWgu3 zKSUFU6Vt!olAnNu#U6Jhl;zV?ldm+aHS%k?ppKA}gVhoK#1uM;(B%ee@3o+W@#=yu zH;aef!J0=i224eMlJcH9a&eM}f*s@|eff5%W){Da$X@P0n2b1+n7m4Zm0mFDs@E8F z2}BZRoqzarqU&eB(v*c*yi2%)!Vj8eomE#%d>v!fESNz~El}BIO*_=*x6NDC3uxz# z4s@H)h!xlcwAc%|K+W-)Pl6_ISCC^D_p;=l0^zd04Xr}ZnkJhzi7MFYVv|SS>e*dT zj6awh0u2}lt;405;f}L=lq_Di!^r;ORO70^h(s&7F51xK2`_ZnL$=rzhKG*Z7kS?#c-e1oTW@XaIHDEiKI%#vAj6d7Z%8?iY`1 zmu!)6KMhTv);iev%5p~|{;Z>AgYD%J^%lw~2al>Pw!vQ`Ape7gcDvO}QG&acW&R1+ z>}yUZQ`LQs)(3Ml7y|_EF){v{+<}hR<{`^qK_h>q=eU~J!lL&Qm~!h=>7&a9X_`6d zyA>%TKQ<>&)+#e+1HZ<)g4}2)VPXK)t^bCvq;8<|3nz`cnzq`pEP71+=XIE=!Omo|+}yl|@OH!_46P0);6gWz@_ZG$jG2S`O z9{-Aa;PHeyejMoQCRo?g@+p_cG{ynke)I$HLW)n<=WWaSq7a^Np76U@oi5oWO&fJh zvOl2)aBYRmWrho66|QhABIuS++?)41C*0)kF=msbt%6fQPSI#x2IrH>6Y9hkFiL0g z)yDV5zbon>Qyw3Ynl|Vcq1vw25mOi(d>hH4Zf?0+eijZ>76Vx`R_`BP=j%;#R8R-| zRUiD&jVXQq>~2M*3)r0MXEd>nw96noUP|-e%S#zD{#Mqr81DnLSe^eY>bneycc*S# z_XE0$S|)9$OipgDKlJ1Ps>qP`88at}fNX%>?%Tz=-F*~|{KAyt0Ufg)X0mYYuxyiR zF5>D+0tMQbv_4K0dTl!umHLpaD=Xrz?me?}NzVxZ6>3}rWdJ=5Qr5~^?#p9qX>Nv4 zcEnh94LmE?w%&3Qa8RDreL@o9FWZ%Ua~ltXY#V#9&>iVO}_ z9UDTVAZhUtY-19G>rY6XQu7J?2u5kavRBU7FTndh>iDQd7J&y6DB`?;Tr26d*2ui; zTMMjg9xg<^^jp78y*v)Os-@#)+pj(}!vkCcCQWEH zPioBaa&uh;Y8qi>my_xWPpU<&UKH7ze*4$*?xmRRbKig;6yL}8=D~fYw{ej@T_!ur z65sbT0(M3!W4F=0Qs0qIbKkQ^^Lmpmo**g-cpRp50k~>U`OV zMSHdQtF18Ksq1>UuFMk(Y{}HOy) zL0kO066Ot;J7m0ux4`{xP3m|x<`47~w|8H+MvUn|u+e8h=!65}a#&rNXhUejE3-$0Hg z^bh|YGYD}({2Ove6{{P9MQ-+NyI81f+8Um)YUjmzfEkyD()^@7x)!fiD^pOtb7h@5 zJz2`%3ghITVlR%!9M=HC+UvTR@Jx>p84YpEIr*O@_m|-GIIka`41e}MKIDt!MUOUn z#amv~n6FBdSls7il+CnD40jl!nOpnZHsK1OjqbMHRKOifJH&~w2 zpCE618C6A~ucveX zw=#`Ft?nYh05VLB8zFz+gOo^MY{!hD(}JVdVFDeydC-Cb+|;TG2zdxw!}pc4xV~jc zs-Z9Oeu^2ou?xOzI|_SPz!OHGIT7_F(HK9ekz8a}zVrPhV??fb+v5RSX=Qe66G&)V1+3f!)EsVKuK{qzg3|DB z)6=?e6-J-`=s+!VH5$G$;Q>qQEy>s34H+E@EL%V~&+i$@!ZkH7SOuCyY%^{0NLf_S zpn(|gz}(!t(e7WzX$IcL%j36C;=!@-_i6gWk^Rau4tdyGN=r$UEaIP!rpyKQr>(X6 zdu2*UM8dYbw*0PNE%^G&x*D27z8W@LGhL|F4K(;Ob=QfQt{gO{oRQO~M7rl*qf4E- zL|9swJpg0apR%hWJ;4v)K-t!=z@X;FoM+cUFM5~!)OpVS(q6er3-KA$g>Kv0_3g~M zJ&=bxHB8l)}856 zHVJy$naVh*V`KBquyE>T!<^WS)H~LDYtEIs#yNMC7LYJY2|4fJtiAF-8Isq8jfb_$ zUflei5S$Q&d-?S)SZDJgk1zQ8jq9>VY^PxtzG<6z$aUxg38M@Qnz50#(CHb6oU9b@ zU6%#>pCHCmAyAex?u*_jiEFtTj$gIQ)_-hTITJFBJ(};jpDfZc3!OSn*})dmDvq?Z zUF3hN8Yg&G`m9d`gA(4gI$d}%4tYPskz^SeY#a(#@z#bAkS8?KFZq)NHgE3=1qHT) zXPn!;EiRw>*o4#$EeP^hTOk(bKG*VUmzeh;rs#Ms-HiGyma zQE>@}&8X>kaHh)yh>BRE-(-$$}(mV6?IDTfdf%Evcx;cHB#q zhhxGHyr+dJfzo(O23=Dudo>rg!9ST#Ob$n&wo)ITJelWShbH9hgc%p3RJN_3ko@NM zy}cDu(zy`E!f#p#k`8_-;5$6_e*7(vAS4Q!i}YA^LjC1LvZsb%1UMPXeoGm+Eqs%? zj%hF=12d%~v6d@IQ|;@0TL9xen2q)Xei_P4tr=kvR*}}>zQC+1ZMQvqkM13&GA#mw znc>X&z7}%;<^-pA1ws4r1@~)??(q{t=7{iK$YH@N)6&E1OOkjO$#&5{R#j2M`H8o; zo9ByRNHf@^Q=OS2=y%$(PS4CNnE$$3F`nk9ES|Ck%FFpyI{u=bELtqh5X<1Iy~a8j z$zY?8fOs>}rnI&`+y-UigLYUz@RHIoHDPXH2^qWjd6gJ&s$rlH5a00bR=jSEB_ly| zY+2Cu;M0Dpc9Z7$odoct?eXLyuWsEi@J{y`l-rl}g z7w5C#y7)cZaozroFT=WfIB3kW#VN~)L!Q)#vGgwwYVo4GI^&IgP@hFwKz%?8oXB-S zo?=O&eJ0Wy6veWri!<(d@Z00aL=e5b|Mz+b8ua*wH#d*n+}c)Q(rc~{utzbebH|t% zA_&sw<7cK&6?PFf*ImywPxkc8fhhg!Wl~mj4y3P%N8ug?@xNO>uCckYNelBh+-qpG zXoH5>FUkCEeyhi{WV`n4x`FAg;Wz{?4LrB|SpIPtq5g0&ckJ`OSG~mu2E2HT?-X}w z4?}$&D8$3zg9lOxsenAUk-f>Au3HC;dtM?;{!T<*ZXBHX1_TAk>Y0dKwHRp4FqiAN zxgXS+S79YrBssw0&&amMTx1RK;#Z{rj;rY8vYu+HYZM*XNze4n_SN-8TH2}r@Zs;Z zPao>|7%_Rao#jVBVDyhg(v6?tSY4?uxE zHNt)srtQOQ65Q%Q1}|)#192Grm7W6{bN!_bR-J;p^^TO6YiHB!e$=`%`(tnl(-t}> zER)tSD3TFL1E&mHv!^6=)lGSpClAvo!oQ{#FFcm!)O$_D!?Jbwht*n2BW$|C?B!IO zZ!aT{o&TEP3!0$s`t1JQNeXy;8*}c-rLGoL9^RzI;5lGPO!)?0ECOB8`wF-5*z}jh zIm?LfDK{zvj0gG0=Ib9j2=S~Gc{~+}ccCA9ZaODy?jzc;+we$8ffO%74bXw72~cGQ z`}o2j67uPM!^tgLaImL$ylNI*hNy(^-tQUz<0&WJ1o_gKu|MRfz{Bk&ZYB}WEt|N% z+9nf+9ln74X!Z9v#a1v++Juzpq?#&_@@owPU*-Nfh~3BMv6pA*PGGOJJwqRZ=NEz5 zs8p5LZ#L%6qhi7ENtbuoZPpz-wapdpJns|RM^}55pzw?okvq$gGe<;mBCAknEnog? zc*ODVj~xrbN9%Ep5pC;Rrh=|sFUP^-jWdTlut`_tsugp zxD_g)xq*n*G&!cy=9)`ori~)G0B(R~iitv|f{21;N{UE|fPlc)&+ni3J(>H-IroF} z`1WI6jT+x{?HHm+~?4&U$>uJht`3*ylDMM5e@B^Hw=lU>I#k~4(?jWv0`Q~TP7ik`0~nmxkh4^($2`G zaRP(sQ)K3ln#%{FaI<%xltvGdLas#$+t8PIic)f|ZTaM!b1J-Cs9fYrOO*L&2Pac` zf|x$WWU>LonLZM*sM6h0E)K5IKmNRnv+151OwLY;__ zbV^?QOvR!-gw^>`LoWC|MEovNT)OIhhjem+^SQ)!*HDs32&Iq3lBls5H!TeluL5by zwW>r_mo=Q^#e@`8ZQs^IZ4-&Fs@tAn=xOR__qlM)&PS6rjyL^2$f?43GmpPW8eWp@ z1{wtN*3M7!zY(oKE5|=ir%9jP*O=m9W6@PGVEQ!Ce2rD@B z!|Ut@os~j05|zH}(R2TCsAjFD%JekqsJofgSde14jIW>AEuWpbDf{k{sknpbtY z_AV!{YtBHce$nJ=GH)=d)|FEZimy;ZO?mS0VVw@%-iagECDY`MVp7tYty10PT3bKU zzhUWDwd!ai=r5U_u3{CKbi?`q8?Z(PbuI=ofx&-%Tkxk}E5rO&f+C?!7KenZmu#gA>{qYc7~t31J!KXs!^3`Ir1ML<~san2H3HY-9|@ ze}*TYsZc9eaVcWp?Zg;%IJImYKo)-kR3}aIC0*M(znllv4A{^UQir@(q!v^0Q8U(Z zjYFou3B*ox;kja0ii}^;jUq-dn87qS^ytdh)c^%)1te~$`oVpW0?r9l|Ew0NrJ*?K z{JWnfuB_8Z7ei3nREtxh)q4nEBU#OAVtxo5^lWViE??`#fwzY}k=>^i`SCXJon$M) zAk(d8vm`*?S;6B2yT#13^7!9GCiWJfRaa>kwEyFL*YkVOTXnpNpYK|P7t4c%Au}GX z@&l3HCFNMdGLDs5RmU@-2{-h0p%9=r_$L}#+uV8l+w*Ix=aDTM@HP8&I@610!R=m0 zhG{w`Grf~?`D*LL#Ms7xVWt3ux;tuFzDRZqhGZ|H$Jj2H;xH4eH1<^nurC>J(6}Kb z&XmDw@xLhH+cm#E_IX&6BD;TBES>`6pLEXWmFDW6h5Fqa;mswr`;Ii2YGpi*hCP*b zJ6awy?yI*Xs5^m_Cz;*7t=w9Wv~`-jaS(M-ai}*{|L+#%nMTOiu6k(> zhY=TP?R6qYOw6QCc1A?J$$cW)8UR3_7VQ^ZUzpeJ(qa^rk+2=Rv$PAomdIr8q3&F7eb_ z?(aMYrKC8q&Ud=J!At%e->MhfDWScRNc2i}9C;&MNm$Z+z}UX57L- zuMa+W!rn=?7&?3r%4@$8c13wnOKCC7B!cb|h8$*2SCG#2z&OZaCCuBcUbx zIwTBmFbfLRf%Z{HAV^X=86=gyYx%RQV69sEr*QJOuo}K`v^5E18f24SmXUre4!wIl znok73sK&*hyytHkF!=sP#H`zXdm2}+PY|Ku7HmRm7O#NoKH2|aDOb3&lBlty2QWDe ztgBard5yYOV$-q6N~-68|ADc>siXiIaZCI*S}JvYO1DzUTv@RfG=$gJ#m6$2J^Ml) z(PE<69~CQ)cIwP0yMAja6?g(0N4rS#T>X%zQid9?n@{1>Zm1bV{JhX4VDVwmTh@t< z=0fj>Wg_;1QzVy|-?qW01V^7r?bW*p`aac~*}xI+qD`?9+_#09aJPTIVMqFKG8M}2 zW||bjL$KU9)WcULc9QmDdF|zy{zXf9$)v;1@G`;GzUsKp{Kzv+LvbT?G#bC&AuekW z$qc07t3JU8`{rrpRsT3`05j(s7aFas?^Iq!l*@AvfFkd$`KXmN6TwikmH5Wf8=;X# zzaXep3{1g|3%V5l`LGVT81b8(wCYFUt`<@=#aj?vo@rPbWtAoCSqOzanpHFj1{h}hwy&>a;&{g8@0JUa{H!?Aj2qvgf}ttY2WChpzSxBAF*U0cH-`oa5?7G9?16`I+a0W*$q6w#;ip3S~%z-u!U8-1*Dcxw4+9TOJ_|#p~v#ED3AD*;~cjj&zf~Sar0hG_EAv$ z$*-aDDDLe{vyEi0_01x9EX+yF1m;JCH$~l;3EW^spoE|Mpx)c?+t(nYcQ0zABYxoj zq#j?ZYk{hst+6;&RG5zluR6>5@O`n-fRf~q2_Q;t0Yaw9Rby=*+swlxdwnj5T!$L@E9$?=E*zWuNx+ue$&xeS=Y3YCeR#Najx3o zB6?rp_cD}a!l2^W(+m;s46zHtJP}@fdFQ)aH9>>d^xL8cXrXA9+O(- zJJHw>0KqGRh9G`K@P*;CcYB_?Pr33JPH^#&)tFu7+RM0s0WwaaTuov-U! z!1lZ<+Ruk)q>tqi)%OpdN8cn9O3?(!LmT=* zF;|6*Y$*-TH^~+0?W1+n14#F2&Jm_t{5SnTAK9SuLv3MIJn*>%=+~I={Zp$wcu4-P zeOje>Ubq|UzL|%t4g!o4ypxvfV@|N3=cs^&V`)r1X%M`KOF3~-n%|-7=p5s#14`w1y%_*{S{z{2YQkC#8Q@}`ahm9+X$?3|)>*m}7ZxB?b9iD}VW3Y!6+S!}=F zqo4aKHoN;VfFxam!RYaEaHC4$1gWJ9U@0Z9+Qb!=g0CpyR8OK2it76}?A%ECG%@KnnRQY%)v;SJV#OK1(rea!+x%^U9_Og6<`cU+>xMyqSw0Al2*FB7g1S zdY2KO!~=d|yz`;eJ3m#~KSG@h-(X{_ii+_9;-6f9X5?XU=Ai7x7USmb{Y7if%6|E4 zg<%iyxEjF+q>GF6btY6N%&SFvoj<>c@1;tH#(AMj7KA%(h63AH(ifGj&O6!imtMDS zd@-^5g0rnB-6rL?t;pvZgVyNNSl>x)_eY9#AL3RNn)*s)>g%Rfj1hMbViT`ZJJ3b6 zj!4`aKrgSD#LDA3TE{5E$YgCtYOVg$3m@F`w4?dxowfBQcb~8{-^D0iju{(6%^hPv zVN(>5(Y8QUz4?HO0t|JEJ(C}vFPeu~>?RP7lWy>-Ev5(alw?#lP3V~Gf;hjK$^3Ty zzG;M2?fedvoZ6nBVF9sFyy&7P{-j8TPzj5CQVJvY$HfRbv2X7B+q!qjE)m&1uy2J^ zpS#z-p*wj}lO89;MRP*JeeFU<31GGHa7*C>!)PZ*svIGM-JD zTIuibPa|y%=ytIcJ0(P9ZHoJ#DGi@$Cu!8qe_Cxbcvqe8`}VU|E?jwYoB7Z4IBqlc zK+5`M*B%`m3PyAaPHaBsaohA@8nLy`P^kIgOfe*5+W+G1&Fl}vlH z)UYM#wVae+8zhK!q~MQs+hT7h7284}uOikXVSDHDWLFlLOd{MR)~ru(o-ewqP@YkH za{e|sg^m@bKI8-6y1R7--g5?{-04vi9@x)g@FqOQ#Lg!5H%Np0loshB2x2XeqwC4T zeVH6<`^~l%H>~d)(tLUN`!j>!@RxOFvetdoNw^tMuu>se`ztQ8H2s&&p?Xi$p6w!pWr&Ezw zo27kW`@|~GbPkF;xtoaFU`WjBSGu%rnZxr5Joe1b;ww}Bm3uZK#^gfvY80w?DGhi2 zl&b=@XkKfoX|^N%q`jT-Wp|_0@h?F<^ZWek;%69Aj`$T{Zj1fM2ka_-mt~l}45p)Z zk1Z@KMP9PY9d9BchbBp_pfRk8b^uYM`*Bi8vqix%yfz9_E63l?vFDOniwWc6^7sTN zp*w5j;N{C=LD5L-m0!Mm5#gjRVs)u1NJj3jrjDyRbMu>rv(&5d?PsZ7z>kpq zwSFd$a>;TyxtvdTU`j;bQ)P4`93?V%qtdoFO0zJ!Tx69L7-$V=>2>kklhl1IP5l29ssmZ^hG11y`B!9jN3;=tLuL@S z-PfLJK2Z@@Vq{r=2=+|_H8Qc=s|?V?oE^7eC4|u7Q{Ii|&H{M6DTl(Ls)gNy6YG*xAA#Z(TT6SIcOV@!WtN3l(9K>{9||z&^;2`B>FWFvfu- zo8Qr5EsYmaB#Dl)Q(?ebm4B}a`fT`xmJ(r`Q;ypKYTO;?oZs`ytl$jxWcPcI`lsmL zxSaQ^( z{Xn|uPhUJI4w`}Ss9j%ce`95#ds*D5^q{;71%I`c>3yhq4Iw;HDj>rbRN$IL1Q&}V z6W%Z2n5CwKF;j>Q7Ke}$YUj%QWmwJ*aSNQ|ter!{X5GuRbl)GJi~pS;Srd5I05!3% zEv)H6v_~nA&$VFDE-=jLJFBhMcoS;6P(|wr>l=X2TKbT&1rh=yVgU!$OMOsyx^W&= zln9Te)mPfH)IOhu+RrozvpzC=DE*vPefZfowFqCKk(Wb~o}*KY+&|8h0Z5WvbyT>o z*vdxz&7SS{cNa<(ATCM>df14t_S?{bq9Y@@^9<~!o4Z3C0z*Rft41~|MvL_%sbrxO zEF%AS6f~5FPqSL1lPX`0ThNwpM%zxkx1NM!zzFP{*{M_QOXFfH{6R=L-FGVN3$#f( zHwfyJ#@-zauaOwrP+XsPpG4zVLTu2*lgo^lK59_MrL#hqYg-8 zNmN&vqvbI{f8ow8lkbpWr+|`PW_F>g?9bN$kcy>-{N&J z6mffCGD>MH-q-@dOQaBoTwG;)#P%^lwBYJi5|14~l=@&~p(?>{) znr6ym@$VHnxtC^U7as*<;+$A(+}C2V0XDXE^NY?G*O&$x7UlDwte=kTb!h^$g2Cd* zPe-^5w54kGShnh8e39Fds4{Gz76)XH+GGyQ3lVkQd$0u6_71t{>iKeT;dr<1&b4jl zKne+Kd1Z`OjNvo2?Y2uet2YTg8a!J3sWoI;7u588JjOldTqxkf{o%fu4hAdG{LVqM zJIo8hV4*+-=uEK8Xbn|S7#Q}2A0jWgz`0!B%QRf~(N6=lkl8$W8E8eKg_ju&00TxK z1w#LZ^)8UXP_G8PS%*jTHh%7;joPEh#GfXNjPZyGPQ!mD5rwjfJlq$HihW=#D&pL3 zD{UeXUlY_oI*)^xHfFKpl&PJ&+n6R=7duxM~yTkZ$$&uu(x!W?pIvlwXO51rmp{AOdaS|}@>E`Em2wPwa=|xQ?fZae}f&&S!?8Jrr#=fi>^c*_S7fHN&n40O@5_5BNu+Y zDSLvy+veiza!$E?ymi^L?eG)*KA-U<^ZWHDD$lh!bC_xEgv}>E?hGhe=U|-XJP(rd zx$9CnS-ZUf(;YF5sbX6IuSO%b>V&v;8VFxOJNAkGw*Tpo?()K5`_WY;0Nyr#;b^tBVm{RY$Op$>ZedOy%l-0)&dYJk zO9SdfhsRGMzD55uIV*g#sQ%#m^pD_(4WQ9Xty*)GSc!{eygYITVGSi;uCo|1pl9BB za2P^+r&|20&+|?ouw{Hdfyz8`>CSevi`j`oEP15ce%-Xc{)ZPo3BSO7Y=uX!S5Ce0 zTV)y|g`e1}37{5zym=I{?O(Nuuzpr89Xhl!8)>#%s(BEJegNC>UXw?jx@9`mDi>Mp z!bI=JOCIsX75Gt55+d6<8(yLSZq#%sf;S~`9*bVxFVMHCLa zTu0+IVq-3o4od&=b*s_18e<}8AChwEedttp#68bdJs{CX_JWry3*4y`^fs?mk)!J{ zFp+p~_L=8NI4E#frPZMW4)FaN9TtD@mRO4jY+;Q~j{;7~^I*Hydw_FKv4 z$J~bxTL}}^&8Rl6j9x*yf>UFDDy!jpF9>?HoYMxrY}wUO_iF9qiXeBGZ(3~jU)wm_ z8-sdVr%z@MG=NNb!Zf05Uj=iKQ@i$lew!0)PdyKxJTDK>7&~9pl$g;>!Hb}@#Wd@? z6ELfn3TWkKwjR%1ZDW_5ZE(4O1Bvwyw|IS}HscxD(@mb;mM>l)H?#@fu!N2E7_)oV zWNl0qCxOvT^(PfJE{Nq~6Qde(joY=f5>MR}^!T$T=g^N$`jT6=$N<-vb>|CMcuj<$y%h zGVekcm5)a+r4zJ`T_7eQ`U`eivg02UZ)wh(jVdiXqcJ+1%Kh6UzCybL);IU;_*VBZ z6u5{g^DJn_PXT4{;>+QGuI19JBQ0|duR%S>3BI(;8W(%s>5H>Dp{~`(#7t2j=2W$_qmuDHSNk^6LcIg-`8M%Hxp-> zKF0G6AwW6;>F{99Z0bY&ZaY8&b1B*YC|GPOO}}Vy7RIat<6kEo6+0An_4B!svoWGl8ff35CuV%f@1 zT?KE%Egwd5^??*KX1#0UhXo}_#P9)20fAd5O&t1K--b60>E9z0G-g8Aly(`z7WlHA zX(7Wcnx0BmNem`X2Ud|&qaFvqixPKPWs7ETgrB?i1gqJ+vt?$l!|i-mdhWL^^Xe03 z`l8k4r2%xu+3#BD3#qO>XAgejoKY27TLZ9K=2WDd64}R{s{U8H#p|)iM;b zDo5H~zc4%fqirgRCCXSRZJD)%%x+ z<>ZuT{~aH6dj^fWD#$+qyRgd84esFwt9C{k8IoVx_Etq2XG3@4x;Y}{F$T%#dBECW znSN1P+Bvt5xhJ8yH=a$m!^OhhO_}j^ggIM!bg7hr*W8m9%j9C6#*6Ke|_T0Vx<%sW?1XjXQe>h?3l+x&FBOk(srWnB3jM3g{l zG9yk@(zqT$2P-^fCr{^U>nRZPcavxPJj+tz(S# z+Yk1!J-8^Yme%(^)b7UFmK;KPP^(4bwK1yO;j`LadlK94TSzwN*SJ@j6t90KBFlbn ze7dME88y3`H%Yl<7lJ$zF$d#q4CStOy5rQ+>E$Jgt?t)fzH#fs+O!?E>K4LCQx=0O z{CBB)m)xu3nArsOkAtxQq0z08jesC-Be=`e&YlR>qL96QGMhD;^Tr&==%jj*!p6w! z_x7Gd4j}o&V~^)iZ@yHNxpINpwKTXcmz@+fzFmpX?x2}WRGs`E5hy&CYun}h%%9>SAvlzyoW0f3J}E%sfMqQf}JXciG+51(}3^Zk-6gUtV7xx@+Yy^>vJL?B92Pz|_JMIj<9T9;1@X`5Vv1_1zsQ*tBEGJj$oSM($o8}Gh^f&-j*(^HRp-i_JCsiKye$@_w>~qgP#3UtTL%Lr2es(*4iqCKc zPD(1^$rksQuPn7N44A#~umO`pyC40qo&F00vFa6-tCMr$&5Zx3z@qq{(~@u2z!hUo zXjx;)Vi0o@v&lAFg4uB9;_MZeLkpjF@*=-nWXz*uBHs5=z9c;F?TP4tK6Kb?_bBoy z0>0f8^{FmHmVwS{sfA8g8zCs&a557a@-s9$Tgpjr?LT#ayD+~wH@irXNM>Z`9KU`# zIv#LjN$A4B*7lG*%$eh^t=i)rA18b4djcJS-~+uQWi48>fXjDZq9g7+z82REkFmS5 z^uo>UbziH7r*uJV_?>H217t--iRs!gF$^%NF$zyLG244(5jJtPPW5cfzqFHmmNhoh z@0|tRy`$v1(v6`!w@>pkG|r#vS5K!pt0W0>bQ+2|sj&s>sq7-@tbXT}M=7Yj@4NG~ zyvWuju-x)ap3y_GAPFR|`jnT*9gI{JK#S1h74JC|r|aAAXN~X3YfA0_im@A~T|4+u zrSn=K07u?e2zZaRs6 zjoVV^cTqEmu%M+Jc!@1VrOpmCY#NQWT96=11ipvi{XZVD-7QKQ7uNaxsP%mXHGO%- zAvdLHxNhTF@KihuEG{*=>7iPQy|~$kj??{nOso+$$8yy#sUSu{^JCa)wAEY0f!qs8 zPA5X#*^g7&X*M}Ryp=VRKk{O(c>BAD3z{=+A^u7EE!3%of0~0cAdudV}lneCTfb6(EBQH9h_ z576Wb3$m&GSKK88P0J(GadR>1*E@L*+YE%H0VEs9lHZp3eSsOYRUgSIJezatX~txT za%7X$&sP%FatMCT*_cP( zOJ$O{o$>mcj$b+EHv#QG`pC|9<;#AszhqgUkxF3Mhc(MH4*5WG!gw%32 zMBDbZU;h#vHLcBd*1CqA6Cx3)`EbqRHr*+bmlug?72?~ws<9vVAI_vn==b^5ab8*! zpqS+M1$(Ww@iEW*_P}XJ;8F-Fg`?7ei5^)y(WjqX9?+|ZTN*Og4t!>9#3GT7#H$hD zSl8RRY15H6s?n$m=l1bIuNVbcNtjKs!e>@sIEf^vN28w;2ql~>C#T*zQBM}k>(Klb zCG8iHG93g#(&N}^O&OEmOJU9znEBs_Nt!Px3c_YYU^z)B^?y*lho zzc1}^hqnalW~)~MsF5vL{ijzH4BlPn3k-S z=lt%mWhgv_21DeWHGJPGlFfLhQu97K^MosX;c^lEL#1rI%04ZHOlGLW$(U$KtJk?i zW^0;T1bx%_E;MSF{;ll#hZv{Dz%*hs1U?b}@>W)CJiV+{OYns)(H{f)_P zv`wnbjD!WG)yWlQxK7*-1n7M5tCHL$ZBYgYxClW;k=2%R!@6UC zzdL;8Ds8Pg0JHh|2bAJl8J*#$f;uMq)Pm`l*rA@xWMeC2l7VuLafD?@DLm9cOCyIn z$!&DIHBD3Qql@2_4=d2(Nh(uhpFdFB+?PJEFtT)(WyHepO+kbqfeZ50L0gXb~!d6GC2J_`NntCWXSrE7o7`#aqF5{!z z&Ti(_id<_+q}v5-nsQVCy(q6b(@hVVPZ13-_KSKC>q%1!*8-FD zxCimCOynXZ*e~fBMN?oR!i4>llfR;vah*Qjo@kPOc+EPi!RlDA5KK|Z5jqBl^;|6+ zlN2SU!qOXQdW)$u^kj$IW?%!U>T&KOv-W`$6=ofFfZ_N$FkjuSH3?jEjDB$1J|NI{ za@}_jINK8BO*G5f6%Uh_q|Kai<=PsVDJAL)e{{a*l5%mB7 literal 0 HcmV?d00001 diff --git a/static/js/AppService.js b/static/js/AppService.js new file mode 100644 index 0000000..f095863 --- /dev/null +++ b/static/js/AppService.js @@ -0,0 +1,112 @@ +/** + * 앱의 전역 상태 및 데이터 관리 엔진 (State Management & Core Services) + */ +import { API } from './api.js'; +import { UI } from './ui.js'; +import { CalendarManager } from './components/CalendarManager.js'; +import { HeatmapManager } from './components/HeatmapManager.js'; + +export const AppService = { + state: { + memosCache: [], + currentFilterGroup: 'all', + currentFilterDate: null, + currentSearchQuery: '', + offset: 0, + limit: 20, + hasMore: true, + isLoading: false + }, + + /** + * 필터 상태 초기화 및 데이터 첫 페이지 로딩 + */ + async refreshData(onUpdateSidebar) { + this.state.offset = 0; + this.state.memosCache = []; + this.state.hasMore = true; + this.state.isLoading = false; + + // 히트맵 데이터 새로고침 + if (HeatmapManager && HeatmapManager.refresh) { + HeatmapManager.refresh(); + } + + await this.loadMore(onUpdateSidebar, false); + }, + + /** + * 다음 페이지 데이터를 가져와 병합 + */ + async loadMore(onUpdateSidebar, isAppend = true) { + if (this.state.isLoading || !this.state.hasMore) return; + + this.state.isLoading = true; + // UI.showLoading(true)는 호출부에서 관리하거나 여기서 직접 호출 가능 + + try { + const filters = { + group: this.state.currentFilterGroup, + date: this.state.currentFilterDate, + query: this.state.currentSearchQuery, + offset: this.state.offset, + limit: this.state.limit + }; + + const newMemos = await API.fetchMemos(filters); + + if (newMemos.length < this.state.limit) { + this.state.hasMore = false; + } + + if (isAppend) { + this.state.memosCache = [...this.state.memosCache, ...newMemos]; + } else { + this.state.memosCache = newMemos; + } + window.allMemosCache = this.state.memosCache; + + this.state.offset += newMemos.length; + + // 캘린더 점 표시는 첫 로드 시에면 하면 부족할 수 있으므로, + // 필요 시 전체 데이터를 새로 고침하는 별도 API가 필요할 수 있음. + // 여기서는 현재 캐시된 데이터 기반으로 업데이트. + CalendarManager.updateMemoDates(this.state.memosCache); + + if (onUpdateSidebar) { + onUpdateSidebar(this.state.memosCache, this.state.currentFilterGroup); + } + + UI.setHasMore(this.state.hasMore); + UI.renderMemos(newMemos, {}, window.memoEventHandlers, isAppend); + + } catch (err) { + console.error('[AppService] loadMore failed:', err); + } finally { + this.state.isLoading = false; + } + }, + + /** + * 필터 상태를 변경하고 데이터 초기화 후 다시 로딩 + */ + async setFilter({ group, date, query }, onUpdateSidebar) { + let changed = false; + if (group !== undefined && this.state.currentFilterGroup !== group) { + this.state.currentFilterGroup = group; + changed = true; + } + if (date !== undefined && this.state.currentFilterDate !== date) { + this.state.currentFilterDate = date; + changed = true; + } + if (query !== undefined && this.state.currentSearchQuery !== query) { + this.state.currentSearchQuery = query; + changed = true; + } + + if (changed) { + await this.refreshData(onUpdateSidebar); + } + } +}; diff --git a/static/js/api.js b/static/js/api.js new file mode 100644 index 0000000..0b1ca03 --- /dev/null +++ b/static/js/api.js @@ -0,0 +1,78 @@ +/** + * 백엔드 API와의 통신을 관리하는 모듈 + */ + +export const API = { + async request(url, options = {}) { + const res = await fetch(url, options); + if (res.status === 401) { + window.location.href = '/login'; + return; + } + if (!res.ok) { + const data = await res.json().catch(() => ({})); + throw new Error(data.error || `Request failed: ${res.statusText}`); + } + return await res.json(); + }, + + async fetchMemos(filters = {}) { + const { limit = 20, offset = 0, group = 'all', query = '' } = filters; + const params = new URLSearchParams({ limit, offset, group, query }); + return await this.request(`/api/memos?${params.toString()}`); + }, + async fetchHeatmapData(days = 365) { + return await this.request(`/api/stats/heatmap?days=${days}`); + }, + + async saveMemo(payload, id = null) { + const url = id ? `/api/memos/${id}` : '/api/memos'; + return await this.request(url, { + method: id ? 'PUT' : 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(payload) + }); + }, + + async decryptMemo(id, password) { + return await this.request(`/api/memos/${id}/decrypt`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ password }) + }); + }, + + async deleteMemo(id) { + return await this.request(`/api/memos/${id}`, { method: 'DELETE' }); + }, + + async triggerAI(id) { + return await this.request(`/api/memos/${id}/analyze`, { method: 'POST' }); + }, + + async fetchAssets() { + return await this.request('/api/assets'); + }, + + async uploadFile(file) { + const formData = new FormData(); + formData.append('file', file); + return await this.request('/api/upload', { method: 'POST', body: formData }); + }, + async deleteAttachment(filename) { + return await this.request(`/api/attachments/${filename}`, { method: 'DELETE' }); + }, + // 설정 관련 + fetchSettings: async () => { + const res = await fetch('/api/settings'); + return await res.json(); + }, + saveSettings: async (data) => { + const res = await fetch('/api/settings', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data) + }); + return await res.json(); + } +}; diff --git a/static/js/components/AttachmentBox.js b/static/js/components/AttachmentBox.js new file mode 100644 index 0000000..9357c18 --- /dev/null +++ b/static/js/components/AttachmentBox.js @@ -0,0 +1,39 @@ +/** + * 첨부파일 영역 및 파일 칩 UI 컴포넌트 + */ +import { escapeHTML } from '../utils.js'; + +/** + * 파일 확장자에 따른 아이콘 반환 + */ +export function getFileIcon(mime) { + if (!mime) return '📎'; + mime = mime.toLowerCase(); + if (mime.includes('image')) return '🖼️'; + if (mime.includes('pdf')) return '📕'; + if (mime.includes('word') || mime.includes('text')) return '📄'; + if (mime.includes('zip') || mime.includes('compressed')) return '📦'; + return '📎'; +} + +/** + * 첨부파일 영역 HTML 생성 + */ +export function renderAttachmentBox(attachments) { + if (!attachments || attachments.length === 0) return ''; + + let html = '

'; + attachments.forEach(a => { + const icon = getFileIcon(a.file_type || ''); + html += ` + + ${icon} + ${escapeHTML(a.original_name)} + `; + }); + html += '
'; + return html; +} diff --git a/static/js/components/CalendarManager.js b/static/js/components/CalendarManager.js new file mode 100644 index 0000000..6bb364a --- /dev/null +++ b/static/js/components/CalendarManager.js @@ -0,0 +1,159 @@ +import { I18nManager } from '../utils/I18nManager.js'; + +/** + * 사이드바 미니 캘린더 관리 모듈 + */ +export const CalendarManager = { + currentDate: new Date(), + selectedDate: null, + onDateSelect: null, + memoDates: new Set(), // 메모가 있는 날짜들 (YYYY-MM-DD 형식) + container: null, + isCollapsed: false, + + init(containerId, onDateSelect) { + this.container = document.getElementById(containerId); + this.onDateSelect = onDateSelect; + + // 브라우저 저장소에서 접힘 상태 복구 + this.isCollapsed = localStorage.getItem('calendar_collapsed') === 'true'; + + this.bindEvents(); // 이벤트 먼저 바인딩 + this.updateCollapseUI(); + this.render(); + }, + + updateMemoDates(memos) { + this.memoDates.clear(); + memos.forEach(memo => { + if (memo.created_at) { + const dateStr = memo.created_at.split('T')[0]; + this.memoDates.add(dateStr); + } + }); + this.render(); + }, + + bindEvents() { + const header = document.getElementById('calendarHeader'); + if (header) { + console.log('[Calendar] Binding events to header:', header); + + const handleToggle = (e) => { + console.log('[Calendar] Header clicked!', e.target); + e.preventDefault(); + e.stopPropagation(); + + // 시각적 피드백: 클릭 시 잠시 배경색 변경 + const originalBg = header.style.background; + header.style.background = 'rgba(255, 255, 255, 0.2)'; + setTimeout(() => { header.style.background = originalBg; }, 100); + + this.isCollapsed = !this.isCollapsed; + localStorage.setItem('calendar_collapsed', this.isCollapsed); + this.updateCollapseUI(); + }; + + header.addEventListener('click', handleToggle, { capture: true }); + // 모바일 터치 대응을 위해 mousedown도 추가 (일부 브라우저 클릭 지연 방지) + header.addEventListener('mousedown', (e) => console.log('[Calendar] Mousedown detected'), { capture: true }); + } else { + console.error('[Calendar] Failed to find calendarHeader element!'); + } + }, + + updateCollapseUI() { + const content = document.getElementById('calendarContainer'); + const icon = document.getElementById('calendarToggleIcon'); + + if (content) { + if (this.isCollapsed) { + content.classList.add('collapsed'); + if (icon) icon.innerText = '▼'; + } else { + content.classList.remove('collapsed'); + if (icon) icon.innerText = '▲'; + } + } + }, + + render() { + if (!this.container) return; + + const year = this.currentDate.getFullYear(); + const month = this.currentDate.getMonth(); + + const firstDay = new Date(year, month, 1).getDay(); + const daysInMonth = new Date(year, month + 1, 0).getDate(); + const prevDaysInMonth = new Date(year, month, 0).getDate(); + + const monthNames = I18nManager.t('calendar_months'); + const dayLabels = I18nManager.t('calendar_days'); + + // 문화권에 맞는 날짜 포맷팅 (예: "April 2026" vs "2026년 4월") + const monthYearHeader = I18nManager.t('date_month_year') + .replace('{year}', year) + .replace('{month}', monthNames[month]); + + let html = ` +
+
+ + ${monthYearHeader} + +
+
+ ${dayLabels.map(day => `
${day}
`).join('')} + `; + + // 이전 달 날짜들 + for (let i = firstDay - 1; i >= 0; i--) { + html += `
${prevDaysInMonth - i}
`; + } + + // 현재 달 날짜들 + const today = new Date(); + for (let day = 1; day <= daysInMonth; day++) { + const dateStr = `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`; + const isToday = today.getFullYear() === year && today.getMonth() === month && today.getDate() === day; + const isSelected = this.selectedDate === dateStr; + const hasMemo = this.memoDates.has(dateStr); + + html += ` +
+ ${day} + ${hasMemo ? '' : ''} +
+ `; + } + + html += `
`; + this.container.innerHTML = html; + + // 이벤트 바인딩 + this.container.querySelector('#prevMonth').onclick = (e) => { + e.stopPropagation(); + this.currentDate.setMonth(this.currentDate.getMonth() - 1); + this.render(); + }; + this.container.querySelector('#nextMonth').onclick = (e) => { + e.stopPropagation(); + this.currentDate.setMonth(this.currentDate.getMonth() + 1); + this.render(); + }; + + this.container.querySelectorAll('.calendar-day[data-date]').forEach(el => { + el.onclick = (e) => { + e.stopPropagation(); + const date = el.dataset.date; + if (this.selectedDate === date) { + this.selectedDate = null; // 선택 해제 + } else { + this.selectedDate = date; + } + this.render(); + if (this.onDateSelect) this.onDateSelect(this.selectedDate); + }; + }); + } +}; diff --git a/static/js/components/ComposerManager.js b/static/js/components/ComposerManager.js new file mode 100644 index 0000000..70f2802 --- /dev/null +++ b/static/js/components/ComposerManager.js @@ -0,0 +1,225 @@ +/** + * 메모 작성 및 수정기 (Composer) 관리 모듈 + */ +import { API } from '../api.js'; +import { EditorManager } from '../editor.js'; +import { I18nManager } from '../utils/I18nManager.js'; +import { Constants } from '../utils/Constants.js'; + +export const ComposerManager = { + DOM: {}, + + init(onSaveSuccess) { + // 타이밍 이슈 방지를 위해 DOM 요소 지연 할당 + this.DOM = { + trigger: document.getElementById('composerTrigger'), + composer: document.getElementById('composer'), + title: document.getElementById('memoTitle'), + group: document.getElementById('memoGroup'), + tags: document.getElementById('memoTags'), + id: document.getElementById('editingMemoId'), + encryptionToggle: document.getElementById('encryptionToggle'), + password: document.getElementById('memoPassword'), + foldBtn: document.getElementById('foldBtn'), + discardBtn: document.getElementById('discardBtn') + }; + + if (!this.DOM.composer || !this.DOM.trigger) return; + + // 1. 이벤트 바인딩 + this.DOM.trigger.onclick = () => this.openEmpty(); + this.DOM.foldBtn.onclick = () => this.close(); + + this.DOM.discardBtn.onclick = async () => { + if (confirm(I18nManager.t('msg_confirm_discard'))) { + await EditorManager.cleanupSessionFiles(); + this.clear(); + this.close(); + } + }; + + this.DOM.composer.onsubmit = (e) => { + e.preventDefault(); + this.handleSave(onSaveSuccess); + }; + + this.DOM.encryptionToggle.onclick = () => this.toggleEncryption(); + + // 단축키 힌트 토글 바인딩 + const shortcutToggle = document.getElementById('shortcutToggle'); + const shortcutDetails = document.getElementById('shortcutDetails'); + if (shortcutToggle && shortcutDetails) { + shortcutToggle.onclick = () => { + const isVisible = shortcutDetails.style.display !== 'none'; + shortcutDetails.style.display = isVisible ? 'none' : 'flex'; + const label = I18nManager.t('shortcuts_label'); + shortcutToggle.textContent = isVisible ? label : `${label} ▲`; + }; + } + + // --- 자동 임시저장 (Auto-Draft) --- + this.draftTimer = setInterval(() => this.saveDraft(), 3000); + this.checkDraftRestore(); + }, + + openEmpty() { + this.clear(); + this.DOM.composer.style.display = 'block'; + this.DOM.trigger.style.display = 'none'; + this.DOM.title.focus(); + }, + + openForEdit(memo) { + if (!memo) return; + this.clear(); + this.DOM.id.value = memo.id; + this.DOM.title.value = memo.title || ''; + this.DOM.group.value = memo.group_name || Constants.GROUPS.DEFAULT; + this.DOM.tags.value = (memo.tags || []).filter(t => t.source === 'user').map(t => t.name).join(', '); + + EditorManager.setMarkdown(memo.content || ''); + EditorManager.setAttachedFiles(memo.attachments || []); + + if (memo.was_encrypted || memo.is_encrypted) { + this.setLocked(true, memo.tempPassword || ''); + } + + this.DOM.composer.style.display = 'block'; + this.DOM.trigger.style.display = 'none'; + window.scrollTo({ top: 0, behavior: 'smooth' }); + }, + + async handleSave(callback) { + const data = { + title: this.DOM.title.value.trim(), + content: EditorManager.getMarkdown(), + group_name: this.DOM.group.value.trim() || Constants.GROUPS.DEFAULT, + tags: this.DOM.tags.value.split(',').map(t => t.trim()).filter(t => t), + is_encrypted: this.DOM.encryptionToggle.dataset.locked === 'true', + password: this.DOM.password.value.trim(), + attachment_filenames: EditorManager.getAttachedFilenames() + }; + + if (!data.title && !data.content) { this.close(); return; } + if (data.is_encrypted && !data.password) { alert(I18nManager.t('msg_alert_password_required')); return; } + + try { + await API.saveMemo(data, this.DOM.id.value); + EditorManager.sessionFiles.clear(); + this.clearDraft(); + if (callback) await callback(); + this.clear(); + this.close(); + } catch (err) { alert(err.message); } + }, + + close() { + this.DOM.composer.style.display = 'none'; + this.DOM.trigger.style.display = 'block'; + }, + + clear() { + this.DOM.id.value = ''; + this.DOM.title.value = ''; + this.DOM.group.value = Constants.GROUPS.DEFAULT; + this.DOM.tags.value = ''; + EditorManager.setMarkdown(''); + EditorManager.setAttachedFiles([]); + this.setLocked(false); + }, + + toggleEncryption() { + const isLocked = this.DOM.encryptionToggle.dataset.locked === 'true'; + this.setLocked(!isLocked); + }, + + setLocked(locked, password = null) { + this.DOM.encryptionToggle.dataset.locked = locked; + this.DOM.encryptionToggle.innerText = locked ? '🔒' : '🔓'; + this.DOM.password.style.display = locked ? 'block' : 'none'; + + // 비밀번호가 명시적으로 전달된 경우에만 업데이트 (해제 시 기존 비번 유지) + if (password !== null) { + this.DOM.password.value = password; + } + + if (locked && !this.DOM.password.value) { + this.DOM.password.focus(); + } + }, + + // === 자동 임시저장 (Auto-Draft) === + + /** + * 현재 에디터 내용을 localStorage에 자동 저장 + */ + saveDraft() { + // 컴포저가 닫혀있으면 저장하지 않음 + if (this.DOM.composer.style.display !== 'block') return; + + const title = this.DOM.title.value; + const content = EditorManager.getMarkdown(); + + // 내용이 비어있으면 저장하지 않음 + if (!title && !content) return; + + const draft = { + title: title, + content: content, + group: this.DOM.group.value, + tags: this.DOM.tags.value, + editingId: this.DOM.id.value, + timestamp: Date.now() + }; + localStorage.setItem('memo_draft', JSON.stringify(draft)); + }, + + /** + * 페이지 로드 시 임시저장된 내용이 있으면 복원 확인 + */ + checkDraftRestore() { + const raw = localStorage.getItem('memo_draft'); + if (!raw) return; + + try { + const draft = JSON.parse(raw); + + // 24시간 이상 된 임시저장은 자동 삭제 + if (Date.now() - draft.timestamp > 86400000) { + this.clearDraft(); + return; + } + + // 내용이 실제로 있는 경우에만 복원 확인 + if (!draft.title && !draft.content) { + this.clearDraft(); + return; + } + + const titlePreview = draft.title || I18nManager.t('label_untitled'); + const confirmMsg = I18nManager.t('msg_draft_restore_confirm') + .replace('{title}', titlePreview); + + if (confirm(confirmMsg)) { + this.openEmpty(); + this.DOM.title.value = draft.title || ''; + this.DOM.group.value = draft.group || Constants.GROUPS.DEFAULT; + this.DOM.tags.value = draft.tags || ''; + if (draft.editingId) this.DOM.id.value = draft.editingId; + EditorManager.setMarkdown(draft.content || ''); + } else { + this.clearDraft(); + } + } catch (e) { + console.warn('[Draft] Failed to parse draft, deleting:', e); + this.clearDraft(); + } + }, + + /** + * 임시저장 데이터 삭제 + */ + clearDraft() { + localStorage.removeItem('memo_draft'); + } +}; diff --git a/static/js/components/DrawerManager.js b/static/js/components/DrawerManager.js new file mode 100644 index 0000000..e6ad0e0 --- /dev/null +++ b/static/js/components/DrawerManager.js @@ -0,0 +1,152 @@ +/** + * 지식 탐색 서랍(Drawer) 관리 모듈 + */ +import { escapeHTML } from '../utils.js'; +import { I18nManager } from '../utils/I18nManager.js'; +import { Constants } from '../utils/Constants.js'; + +export const DrawerManager = { + DOM: {}, + + init() { + this.DOM.drawer = document.getElementById('knowledgeDrawer'); + this.DOM.drawerContent = document.getElementById('drawerContent'); + const header = this.DOM.drawer?.querySelector('.drawer-header'); + + if (!this.DOM.drawer || !header) return; + + // 닫기 버튼 이벤트 + const closeBtn = document.getElementById('closeDrawerBtn'); + if (closeBtn) { + closeBtn.onclick = () => this.close(); + } + + // --- 드래그 앤 드롭 로직 구현 --- + let isDragging = false; + let offset = { x: 0, y: 0 }; + + header.addEventListener('mousedown', (e) => { + if (e.target.closest('.close-btn')) return; // 닫기 버튼 클릭 시 드래그 방지 + + isDragging = true; + this.DOM.drawer.classList.add('dragging'); + + // 마우스 클릭 위치와 요소 좌상단 사이의 거리 계산 + const rect = this.DOM.drawer.getBoundingClientRect(); + offset.x = e.clientX - rect.left; + offset.y = e.clientY - rect.top; + }); + + document.addEventListener('mousemove', (e) => { + if (!isDragging) return; + + e.preventDefault(); + + // 새로운 위치 계산 + let left = e.clientX - offset.x; + let top = e.clientY - offset.y; + + // 화면 경계 이탈 방지 + const winW = window.innerWidth; + const winH = window.innerHeight; + const cardW = this.DOM.drawer.offsetWidth; + const cardH = this.DOM.drawer.offsetHeight; + + left = Math.max(0, Math.min(left, winW - cardW)); + top = Math.max(0, Math.min(top, winH - cardH)); + + this.DOM.drawer.style.left = `${left}px`; + this.DOM.drawer.style.top = `${top}px`; + this.DOM.drawer.style.bottom = 'auto'; // bottom 제거 + }); + + document.addEventListener('mouseup', () => { + isDragging = false; + this.DOM.drawer?.classList.remove('dragging'); + }); + }, + + open(memos = [], activeFilter, onFilterCallback) { + if (!this.DOM.drawer || !this.DOM.drawerContent) return; + + // 0. 데이터 유효성 검사 + if (!memos || memos.length === 0) { + this.DOM.drawerContent.innerHTML = `

${I18nManager.t('label_no_results')}

`; + this.DOM.drawer.classList.add('active'); + return; + } + // 1. 그룹 및 태그 카운트 계산 + const groupAllKey = 'all'; + const groupCounts = { [groupAllKey]: memos.length }; + const tagCounts = {}; + const tagsSourceMap = new Map(); + + memos.forEach(m => { + const g = m.group_name || Constants.GROUPS.DEFAULT; + groupCounts[g] = (groupCounts[g] || 0) + 1; + + if (m.tags) { + m.tags.forEach(t => { + tagCounts[t.name] = (tagCounts[t.name] || 0) + 1; + const current = tagsSourceMap.get(t.name); + if (!current || t.source === 'user') tagsSourceMap.set(t.name, t.source); + }); + } + }); + + const sortedGroups = Object.keys(groupCounts).filter(g => g !== groupAllKey).sort(); + const sortedTags = Object.keys(tagCounts).sort().map(tn => ({ + name: tn, + source: tagsSourceMap.get(tn), + count: tagCounts[tn] + })); + + // 2. HTML 렌더링 + let html = ` +
+

${I18nManager.t('drawer_title_groups')}

+
+
+ 💡 ${I18nManager.t('nav_all')} ${groupCounts[groupAllKey]} +
+ ${sortedGroups.map(g => ` +
+ 📁 ${escapeHTML(g)} ${groupCounts[g]} +
+ `).join('')} +
+
+ +
+

${I18nManager.t('drawer_title_tags')}

+
+ ${sortedTags.map(t => ` +
+ ${t.source === 'ai' ? '🪄' : '🏷️'} ${escapeHTML(t.name)} ${t.count} +
+ `).join('')} +
+
+ `; + + this.DOM.drawerContent.innerHTML = html; + this.DOM.drawer.classList.add('active'); + + // 3. 이벤트 바인딩 + this.DOM.drawerContent.querySelectorAll('.explorer-chip').forEach(chip => { + chip.onclick = () => { + const filter = chip.dataset.filter; + onFilterCallback(filter); + // 선택 시 서랍을 닫을지 유지할지는 UX 선택 (일단 닫음) + // this.close(); + }; + }); + }, + + close() { + if (this.DOM.drawer) { + this.DOM.drawer.classList.remove('active'); + } + } +}; diff --git a/static/js/components/HeatmapManager.js b/static/js/components/HeatmapManager.js new file mode 100644 index 0000000..5b6bd03 --- /dev/null +++ b/static/js/components/HeatmapManager.js @@ -0,0 +1,148 @@ +import { I18nManager } from '../utils/I18nManager.js'; + +/** + * 지식 성장 히트맵(Heatmap) 관리 모듈 + * 최근 지정된 기간(기본 365일) 동안의 메모 작성 활동량을 시각화합니다. + */ +export const HeatmapManager = { + container: null, + data: [], // [{date: 'YYYY-MM-DD', count: N}, ...] + currentRange: 365, // 기본 365일 + + init(containerId) { + this.container = document.getElementById(containerId); + if (!this.container) { + console.warn('[Heatmap] Container not found:', containerId); + return; + } + + // 로컬스토리지에서 이전에 선택한 범위 복구 + const savedRange = localStorage.getItem('heatmap_range'); + if (savedRange) { + this.currentRange = parseInt(savedRange, 10); + } + }, + + /** + * 데이터를 서버에서 가져와 렌더링합니다. + */ + async refresh() { + try { + const { API } = await import('../api.js'); + this.data = await API.fetchHeatmapData(this.currentRange); + this.render(); + } catch (error) { + console.error('[Heatmap] Failed to fetch stats:', error); + } + }, + + /** + * 히트맵 그리드를 생성합니다. + */ + render() { + if (!this.container) return; + + const dataMap = new Map(this.data.map(d => [d.date, d.count])); + + // 날짜 계산 + const today = new Date(); + today.setHours(0, 0, 0, 0); + + const startDate = new Date(today); + startDate.setDate(today.getDate() - (this.currentRange - 1)); + + // 요일 맞추기 (일요일 시작 기준) + const dayOfWeek = startDate.getDay(); + const adjustedStartDate = new Date(startDate); + adjustedStartDate.setDate(startDate.getDate() - dayOfWeek); + + const rangeLabel = I18nManager.t(`heatmap_ranges.${this.currentRange}`) || I18nManager.t('label_select_range'); + + const heatmapTitle = I18nManager.t('label_heatmap_title'); + const rangeOptions = I18nManager.t('heatmap_ranges'); + const labelLess = I18nManager.t('label_less'); + const labelMore = I18nManager.t('label_more'); + + let html = ` +
+
+ ${heatmapTitle} + +
+
+ `; + + const formatDate = (date) => { + const y = date.getFullYear(); + const m = String(date.getMonth() + 1).padStart(2, '0'); + const d = String(date.getDate()).padStart(2, '0'); + return `${y}-${m}-${d}`; + }; + + // 전체 표시 일수 (범위 + 요일 보정) + const totalCells = this.currentRange + dayOfWeek + (6 - today.getDay()); + + for (let i = 0; i < totalCells; i++) { + const currentDate = new Date(adjustedStartDate); + currentDate.setDate(adjustedStartDate.getDate() + i); + + const dateStr = formatDate(currentDate); + const count = dataMap.get(dateStr) || 0; + const level = this.calculateLevel(count); + + const isOutOfRange = currentDate < startDate || currentDate > today; + + const tooltip = I18nManager.t('tooltip_heatmap_stat') + .replace('{date}', dateStr) + .replace('{count}', count); + + html += ` +
+
+ `; + } + + html += ` +
+
+ ${labelLess} +
+
+
+
+
+ ${labelMore} +
+
+ `; + + this.container.innerHTML = html; + this.bindEvents(); + }, + + calculateLevel(count) { + if (count === 0) return 0; + if (count <= 1) return 1; + if (count <= 3) return 2; + if (count <= 5) return 3; + return 4; + }, + + bindEvents() { + const select = this.container.querySelector('#heatmapRangeSelect'); + if (select) { + select.onchange = (e) => { + this.currentRange = parseInt(e.target.value, 10); + localStorage.setItem('heatmap_range', this.currentRange); + this.refresh(); + }; + } + } +}; diff --git a/static/js/components/MemoCard.js b/static/js/components/MemoCard.js new file mode 100644 index 0000000..67e0724 --- /dev/null +++ b/static/js/components/MemoCard.js @@ -0,0 +1,93 @@ +/** + * 메모 카드 컴포넌트 + */ +import { escapeHTML, parseInternalLinks, fixImagePaths } from '../utils.js'; +import { renderAttachmentBox } from './AttachmentBox.js'; +import { Constants } from '../utils/Constants.js'; +import { I18nManager } from '../utils/I18nManager.js'; + +/** + * 단일 메모 카드의 HTML 생성을 전담합니다. + */ +export function createMemoCardHtml(memo, isDone) { + const cardClass = `memo-card ${isDone ? 'done' : ''} ${memo.is_encrypted ? 'encrypted' : ''} glass-panel`; + const borderStyle = memo.color ? `style="border-left: 5px solid ${memo.color}"` : ''; + + let summaryHtml = ''; + if (memo.summary) { + // 암호화된 메모가 잠긴 상태라면 AI 요약도 숨김 (정보 유출 방지) + const isLocked = memo.is_encrypted && (!memo.content || memo.content.includes('encrypted-block') || typeof memo.is_encrypted === 'number'); + // 참고: app.js에서 해독 성공 시 memo.is_encrypted를 false로 바꿨으므로, is_encrypted가 true면 잠긴 상태임 + if (!memo.is_encrypted) { + summaryHtml = `
${I18nManager.t('label_ai_summary')}: ${escapeHTML(memo.summary)}
`; + } + } + + const titleHtml = memo.title ? `

${escapeHTML(memo.title)}

` : ''; + + let htmlContent = ''; + if (!isDone) { + if (memo.is_encrypted) { + htmlContent = ` +
+ 🔒 + ${I18nManager.t('msg_encrypted_locked')} + +
+ `; + } else { + // marked로 파싱한 후 DOMPurify로 살균하여 XSS 방지 + htmlContent = DOMPurify.sanitize(marked.parse(memo.content || '')); + htmlContent = parseInternalLinks(htmlContent); + htmlContent = fixImagePaths(htmlContent); + } + } + const contentHtml = `
${htmlContent}
`; + + let metaHtml = '
'; + if (!isDone && memo.group_name && memo.group_name !== Constants.GROUPS.DEFAULT) { + const groupName = (Object.values(Constants.GROUPS).includes(memo.group_name)) + ? I18nManager.t(`groups.${memo.group_name}`) + : memo.group_name; + metaHtml += `📁 ${escapeHTML(groupName)}`; + } + if (memo.tags && memo.tags.length > 0) { + memo.tags.forEach(t => { + // 암호화된 메모가 잠긴 상태일 때 AI 태그만 선택적으로 숨김 + if (memo.is_encrypted && t.source === 'ai') return; + + const typeClass = t.source === 'ai' ? 'tag-ai' : 'tag-user'; + metaHtml += `${t.source === 'ai' ? '🪄 ' : '#'}${escapeHTML(t.name)}`; + }); + } + metaHtml += '
'; + + let linksHtml = ''; + if (!isDone && memo.backlinks && memo.backlinks.length > 0) { + linksHtml = `'; + } + + // 암호화된 메모인 경우 해독 전까지 첨부파일 목록 숨김 + const attachmentsHtml = !memo.is_encrypted ? renderAttachmentBox(memo.attachments) : ''; + + // 암호화된 메모가 잠긴 상태라면 하단 액션 버튼(수정, 삭제, AI 등)을 아예 보여주지 않음 (보안 및 UI 겹침 방지) + const isLocked = memo.is_encrypted && (!htmlContent || htmlContent.includes('encrypted-block')); + const actionsHtml = isLocked ? '' : ` +
+ + + ${!isDone ? `` : ''} + + +
+ `; + const idBadge = `
#${memo.id}
`; + + return { + className: cardClass, + style: borderStyle, + innerHtml: idBadge + summaryHtml + titleHtml + metaHtml + contentHtml + linksHtml + attachmentsHtml + actionsHtml + }; +} diff --git a/static/js/components/ModalManager.js b/static/js/components/ModalManager.js new file mode 100644 index 0000000..2877692 --- /dev/null +++ b/static/js/components/ModalManager.js @@ -0,0 +1,212 @@ +/** + * 모달 창(메모 상세, 파일 라이브러리 등) 생성을 관리하는 모듈 + */ +import { API } from '../api.js'; +import { escapeHTML } from '../utils.js'; +import { renderAttachmentBox } from './AttachmentBox.js'; +import { I18nManager } from '../utils/I18nManager.js'; +import { Constants } from '../utils/Constants.js'; + +export const ModalManager = { + // 타이밍 이슈 방지를 위해 lazy getter 패턴 적용 + getDOM() { + return { + modal: document.getElementById('memoModal'), + modalContent: document.getElementById('modalContent'), + loadingOverlay: document.getElementById('loadingOverlay'), + explorerModal: document.getElementById('explorerModal'), + explorerContent: document.getElementById('explorerContent') + }; + }, + + /** + * 전체 첨부파일 라이브러리(Asset Library) 모달 열기 + */ + async openAssetLibrary(openMemoDetailsCallback) { + const dom = this.getDOM(); + if (!dom.loadingOverlay) return; + + dom.loadingOverlay.style.display = 'flex'; + try { + const assets = await API.fetchAssets(); + let html = ` +
+ +

${I18nManager.t('label_asset_management')}

+

${I18nManager.t('label_asset_hint')}

+
+ ${assets.length > 0 ? assets.map(a => ` +
+ ${['png','jpg','jpeg','gif','webp','svg'].includes(a.file_type?.toLowerCase()) + ? `` + : `
📎
` + } +
${escapeHTML(a.original_name)}
+
${a.memo_title ? `${I18nManager.t('label_memo_ref')}${escapeHTML(a.memo_title)}` : I18nManager.t('label_no_memo_ref')}
+
+ `).join('') : `
${I18nManager.t('label_no_assets')}
`} +
+
+ `; + dom.modalContent.innerHTML = html; + dom.modal.classList.add('active'); + + // 닫기 버튼 이벤트 + dom.modalContent.querySelector('.close-modal-btn').onclick = () => { + dom.modal.classList.remove('active'); + }; + + dom.modalContent.querySelectorAll('.asset-card').forEach(card => { + card.onclick = (e) => { + const url = card.dataset.url; + const filename = url.split('/').pop(); + const originalName = card.querySelector('div').innerText; + const memoId = card.dataset.memoId; + + if (e.altKey) { + e.stopPropagation(); + window.downloadFile(filename, originalName); + } else if (memoId && memoId !== 'null') { + dom.modal.classList.remove('active'); + openMemoDetailsCallback(memoId, window.allMemosCache); + } else { + window.downloadFile(filename, originalName); + } + }; + }); + } catch (err) { alert(err.message); } + finally { dom.loadingOverlay.style.display = 'none'; } + }, + + /** + * 지식 탐색기(Knowledge Explorer) 모달 열기 + */ + openKnowledgeExplorer(memos, activeFilter, onFilterCallback) { + const dom = this.getDOM(); + // 1. 그룹 및 태그 카운트 계산 + const groupAllKey = 'all'; + const groupCounts = { [groupAllKey]: memos.length }; + const tagCounts = {}; + const tagsSourceMap = new Map(); // 태그명 -> 소스 매핑 + + memos.forEach(m => { + const g = m.group_name || Constants.GROUPS.DEFAULT; + groupCounts[g] = (groupCounts[g] || 0) + 1; + + if (m.tags) { + m.tags.forEach(t => { + tagCounts[t.name] = (tagCounts[t.name] || 0) + 1; + const current = tagsSourceMap.get(t.name); + if (!current || t.source === 'user') tagsSourceMap.set(t.name, t.source); + }); + } + }); + + const sortedGroups = Object.keys(groupCounts) + .filter(g => g !== groupAllKey) + .sort((a,b) => a === Constants.GROUPS.DEFAULT ? -1 : b === Constants.GROUPS.DEFAULT ? 1 : a.localeCompare(b)); + + const sortedTags = Object.keys(tagCounts).sort().map(tn => ({ + name: tn, + source: tagsSourceMap.get(tn), + count: tagCounts[tn] + })); + + let html = ` +
+

${I18nManager.t('label_group_explorer')}

+
+
+ 💡 ${I18nManager.t('nav_all')} ${groupCounts[groupAllKey]} +
+ ${sortedGroups.map(g => ` +
+ 📁 ${escapeHTML(g)} ${groupCounts[g]} +
+ `).join('')} +
+
+ +
+

${I18nManager.t('label_tag_explorer')}

+
+ ${sortedTags.map(t => ` +
+ ${t.source === 'ai' ? '🪄' : '🏷️'} ${escapeHTML(t.name)} ${t.count} +
+ `).join('')} +
+
+ `; + + dom.explorerContent.innerHTML = html; + dom.explorerModal.classList.add('active'); + + // 이벤트 바인딩 + const closeBtn = dom.explorerModal.querySelector('.close-explorer-btn'); + closeBtn.onclick = () => dom.explorerModal.classList.remove('active'); + + dom.explorerContent.querySelectorAll('.explorer-chip').forEach(chip => { + chip.onclick = () => { + const filter = chip.dataset.filter; + onFilterCallback(filter); + dom.explorerModal.classList.remove('active'); + }; + }); + }, + + /** + * 개별 메모 상세 모달 열기 + */ + openMemoModal(id, memos) { + const dom = this.getDOM(); + const memo = memos.find(m => m.id == id); + if (!memo) return; + + import('../utils.js').then(({ parseInternalLinks, fixImagePaths }) => { + // 마크다운 파싱 후 살균 처리 (marked, DOMPurify는 global 사용) + let html = DOMPurify.sanitize(marked.parse(memo.content)); + html = parseInternalLinks(html); + html = fixImagePaths(html); + + const lastUpdatedTime = new Date(memo.updated_at).toLocaleString(); + + dom.modalContent.innerHTML = ` + + ${memo.title ? `

${escapeHTML(memo.title)}

` : ''} + + ${memo.summary ? ` +
+
+ 🪄 AI INSIGHT +
+
${escapeHTML(memo.summary)}
+
+ ` : '
'} + +
${html}
+
${I18nManager.t('label_last_updated')}${lastUpdatedTime}
+ `; + + // 닫기 버튼 이벤트 + const closeBtn = dom.modalContent.querySelector('.close-modal-btn'); + if (closeBtn) { + closeBtn.onclick = () => dom.modal.classList.remove('active'); + } + + const attachmentsHtml = renderAttachmentBox(memo.attachments); + if (attachmentsHtml) { + const footer = document.createElement('div'); + footer.style.cssText = 'margin-top:30px; padding-top:15px; border-top:1px solid rgba(255,255,255,0.05);'; + footer.innerHTML = attachmentsHtml; + dom.modalContent.appendChild(footer); + } + + dom.modal.classList.add('active'); + dom.modalContent.querySelectorAll('.internal-link').forEach(l => { + l.onclick = () => this.openMemoModal(l.dataset.id, memos); + }); + }); + } +}; diff --git a/static/js/components/SidebarUI.js b/static/js/components/SidebarUI.js new file mode 100644 index 0000000..9d562a4 --- /dev/null +++ b/static/js/components/SidebarUI.js @@ -0,0 +1,47 @@ +/** + * 사이드바 그룹 목록 컴포넌트 + */ +import { escapeHTML } from '../utils.js'; +import { Constants } from '../utils/Constants.js'; +import { I18nManager } from '../utils/I18nManager.js'; + +/** + * 그룹 목록 HTML 렌더링 + */ +export function renderGroupList(container, groups, activeGroup, onGroupClick) { + if (!container) return; + + container.innerHTML = ''; + groups.forEach(group => { + const li = document.createElement('li'); + const isActive = group === activeGroup || (group === Constants.GROUPS.DEFAULT && activeGroup === 'all'); + li.className = isActive ? 'active' : ''; + + // 아이콘 선택 및 클래스 추가 + let icon = '📁'; + if (group === Constants.GROUPS.DEFAULT || group === 'all') icon = '💡'; + else if (group === Constants.GROUPS.FILES) icon = '📂'; + else if (group === Constants.GROUPS.DONE) icon = '✅'; + else if (group.startsWith('tag:')) { + const parts = group.split(':'); // tag:source:name + const source = parts[1]; + icon = source === 'ai' ? '🪄' : '🏷️'; + li.classList.add(source === 'ai' ? 'tag-ai' : 'tag-user'); + } + + // 표시 이름 결정 + let label = group; + if (group === 'all') label = I18nManager.t('groups.all'); + else if (group === Constants.GROUPS.DEFAULT) label = I18nManager.t('groups.default'); + else if (group === Constants.GROUPS.FILES) label = I18nManager.t('groups.files'); + else if (group === Constants.GROUPS.DONE) label = I18nManager.t('groups.done'); + else if (group.startsWith('tag:')) { + const parts = group.split(':'); + label = parts[2]; // 태그 이름 + } + + li.innerHTML = `${icon} ${escapeHTML(label)}`; + li.onclick = () => onGroupClick(group); + container.appendChild(li); + }); +} diff --git a/static/js/components/SlashCommand.js b/static/js/components/SlashCommand.js new file mode 100644 index 0000000..473d62b --- /dev/null +++ b/static/js/components/SlashCommand.js @@ -0,0 +1,352 @@ +import { I18nManager } from '../utils/I18nManager.js'; + +export const SlashCommand = { + // 사용 가능한 명령 목록 + commands: [ + { icon: '☑️', label: I18nManager.t('slash.task'), cmd: 'taskList' }, + { icon: '•', label: I18nManager.t('slash.bullet'), cmd: 'bulletList' }, + { icon: '1.', label: I18nManager.t('slash.number'), cmd: 'orderedList' }, + { icon: '❝', label: I18nManager.t('slash.quote'), cmd: 'blockQuote' }, + { icon: '—', label: I18nManager.t('slash.line'), cmd: 'thematicBreak' }, + { icon: '{}', label: I18nManager.t('slash.code'), cmd: 'codeBlock' }, + { icon: 'H1', label: I18nManager.t('slash.h1'), cmd: 'heading', payload: { level: 1 } }, + { icon: 'H2', label: I18nManager.t('slash.h2'), cmd: 'heading', payload: { level: 2 } }, + { icon: 'H3', label: I18nManager.t('slash.h3'), cmd: 'heading', payload: { level: 3 } }, + { icon: '🪄', label: I18nManager.t('slash.ai_summary'), cmd: 'ai-summary', isAI: true }, + { icon: '🏷️', label: I18nManager.t('slash.ai_tags'), cmd: 'ai-tags', isAI: true }, + ], + + popupEl: null, + selectedIndex: 0, + isOpen: false, + editorRef: null, + editorElRef: null, + filterText: '', // '/' 이후 입력된 필터 텍스트 + filteredCommands: [], // 필터링된 명령 목록 + + /** + * 초기화: 팝업 DOM 생성 및 이벤트 바인딩 + */ + init(editor, editorEl) { + this.editorRef = editor; + this.editorElRef = editorEl; + console.log('[SlashCmd] init 호출됨, editor:', !!editor, 'editorEl:', !!editorEl); + + // 팝업 컨테이너 생성 + this.popupEl = document.createElement('div'); + this.popupEl.id = 'slashCommandPopup'; + this.popupEl.className = 'slash-popup'; + this.popupEl.style.display = 'none'; + document.body.appendChild(this.popupEl); + + // 에디터 keydown 이벤트 (팝업 열린 상태에서 네비게이션 가로채기) + editorEl.addEventListener('keydown', (e) => { + if (!this.isOpen) return; + + switch (e.key) { + case 'ArrowDown': + e.preventDefault(); + e.stopPropagation(); + this.navigate(1); + break; + case 'ArrowUp': + e.preventDefault(); + e.stopPropagation(); + this.navigate(-1); + break; + case 'Enter': + case 'Tab': + e.preventDefault(); + e.stopPropagation(); + this.executeSelected(); + break; + case 'Escape': + e.preventDefault(); + e.stopPropagation(); + this.hide(); + break; + case 'Backspace': + // 필터 텍스트 삭제, '/'까지 지우면 팝업 닫기 + if (this.filterText.length > 0) { + this.filterText = this.filterText.slice(0, -1); + this.updateFilter(); + } else { + // '/' 자체를 지우는 경우 → 팝업 닫기 + this.hide(); + } + break; + default: + // 일반 문자 입력 시 필터링 적용 + if (e.key.length === 1 && !e.ctrlKey && !e.altKey && !e.metaKey) { + this.filterText += e.key; + this.updateFilter(); + // 필터 결과가 없으면 팝업 닫기 + if (this.filteredCommands.length === 0) { + this.hide(); + } + } + break; + } + }, true); // capture 단계 + + // 에디터 keyup 이벤트 ('/' 입력 감지) + editorEl.addEventListener('keyup', (e) => { + console.log('[SlashCmd] keyup:', e.key, 'isOpen:', this.isOpen); + if (this.isOpen) return; // 이미 열려있으면 무시 + + if (e.key === '/') { + console.log('[SlashCmd] / 감지, WYSIWYG:', this.editorRef.isWysiwygMode()); + // WYSIWYG 모드에서만 동작 + if (!this.editorRef.isWysiwygMode()) return; + + // 줄 시작이거나 공백 뒤에서만 팝업 활성화 + const shouldActivate = this._shouldActivate(); + console.log('[SlashCmd] shouldActivate:', shouldActivate); + if (shouldActivate) { + const rect = this._getCursorRect(); + console.log('[SlashCmd] cursorRect:', rect); + if (rect) { + this.filterText = ''; + this.filteredCommands = [...this.commands]; + this.show(rect); + } + } + } + }, true); + + // 에디터 외부 클릭 시 팝업 닫기 + document.addEventListener('mousedown', (e) => { + if (this.isOpen && !this.popupEl.contains(e.target)) { + this.hide(); + } + }); + + // 에디터 스크롤/리사이즈 시 팝업 닫기 + editorEl.addEventListener('scroll', () => { if (this.isOpen) this.hide(); }, true); + window.addEventListener('resize', () => { if (this.isOpen) this.hide(); }); + }, + + /** + * '/' 입력이 유효한 위치인지 판별 + * (줄 시작 또는 공백/빈 줄 뒤) + */ + _shouldActivate() { + const sel = window.getSelection(); + console.log('[SlashCmd] _shouldActivate - sel:', !!sel, 'rangeCount:', sel?.rangeCount); + if (!sel || sel.rangeCount === 0) return false; + + const range = sel.getRangeAt(0); + const node = range.startContainer; + const offset = range.startOffset; + console.log('[SlashCmd] node type:', node.nodeType, 'offset:', offset, 'nodeName:', node.nodeName); + + // Case 1: 텍스트 노드 내부에 커서가 있는 경우 + if (node.nodeType === Node.TEXT_NODE) { + const textBefore = node.textContent.substring(0, offset); + console.log('[SlashCmd] TEXT_NODE textBefore:', JSON.stringify(textBefore)); + if (textBefore === '/' || textBefore.endsWith(' /') || textBefore.endsWith('\n/')) { + return true; + } + } + + // Case 2: 요소 노드 내부에 커서가 있는 경우 (WYSIWYG contenteditable) + if (node.nodeType === Node.ELEMENT_NODE) { + // offset 위치의 바로 앞 자식 노드 확인 + const childBefore = node.childNodes[offset - 1]; + console.log('[SlashCmd] ELEMENT_NODE childBefore:', childBefore?.nodeType, 'text:', JSON.stringify(childBefore?.textContent)); + + if (childBefore) { + const text = childBefore.textContent || ''; + if (text === '/' || text.endsWith(' /') || text.endsWith('\n/')) { + return true; + } + } + + // 현재 요소의 전체 텍스트에서 마지막 문자 확인 (fallback) + const fullText = node.textContent || ''; + console.log('[SlashCmd] ELEMENT_NODE fullText:', JSON.stringify(fullText)); + if (fullText === '/' || fullText.endsWith(' /') || fullText.endsWith('\n/')) { + return true; + } + } + + console.log('[SlashCmd] shouldActivate → false (조건 불충족)'); + return false; + }, + + /** + * 현재 커서의 화면 좌표(px) 반환 + */ + _getCursorRect() { + const sel = window.getSelection(); + if (!sel || sel.rangeCount === 0) return null; + + const range = sel.getRangeAt(0).cloneRange(); + range.collapse(true); + + // 빈 영역에서도 좌표를 얻기 위해 임시 span 삽입 + const span = document.createElement('span'); + span.textContent = '\u200b'; // zero-width space + range.insertNode(span); + const rect = span.getBoundingClientRect(); + const result = { top: rect.top, left: rect.left, bottom: rect.bottom }; + span.parentNode.removeChild(span); + + // Selection 복원 + sel.removeAllRanges(); + sel.addRange(range); + + return result; + }, + + /** + * 팝업 표시 + */ + show(rect) { + this.selectedIndex = 0; + this.isOpen = true; + this._renderItems(); + + // 팝업 위치 계산 (커서 바로 아래) + const popupHeight = this.popupEl.offsetHeight || 280; + const viewportH = window.innerHeight; + + // 화면 아래 공간이 부족하면 위에 표시 + if (rect.bottom + popupHeight > viewportH) { + this.popupEl.style.top = `${rect.top - popupHeight - 4}px`; + } else { + this.popupEl.style.top = `${rect.bottom + 4}px`; + } + this.popupEl.style.left = `${Math.max(8, rect.left)}px`; + this.popupEl.style.display = 'block'; + }, + + /** + * 팝업 숨기기 + */ + hide() { + this.isOpen = false; + this.popupEl.style.display = 'none'; + this.filterText = ''; + }, + + /** + * 필터링 업데이트 + */ + updateFilter() { + const q = this.filterText.toLowerCase(); + const isAIDisabled = document.body.classList.contains('ai-disabled'); + + this.filteredCommands = this.commands.filter(c => { + if (c.isAI && isAIDisabled) return false; + return c.label.toLowerCase().includes(q) || c.cmd.toLowerCase().includes(q); + }); + this.selectedIndex = 0; + this._renderItems(); + }, + + /** + * 팝업 내 항목 DOM 렌더링 + */ + _renderItems() { + this.popupEl.innerHTML = this.filteredCommands.map((c, i) => ` +
+ ${c.icon} + ${c.label} +
+ `).join(''); + + // 마우스 클릭 이벤트 + this.popupEl.querySelectorAll('.slash-item').forEach(item => { + item.addEventListener('mousedown', (e) => { + e.preventDefault(); // 에디터 포커스 유지 + this.selectedIndex = parseInt(item.dataset.index); + this.executeSelected(); + }); + item.addEventListener('mouseenter', () => { + this.selectedIndex = parseInt(item.dataset.index); + this._highlightSelected(); + }); + }); + }, + + /** + * 선택 항목 하이라이트 갱신 + */ + _highlightSelected() { + this.popupEl.querySelectorAll('.slash-item').forEach((el, i) => { + el.classList.toggle('selected', i === this.selectedIndex); + }); + + // 선택된 항목이 보이도록 스크롤 + const selectedEl = this.popupEl.querySelector('.slash-item.selected'); + if (selectedEl) { + selectedEl.scrollIntoView({ block: 'nearest' }); + } + }, + + /** + * ↑↓ 네비게이션 + */ + navigate(direction) { + const len = this.filteredCommands.length; + if (len === 0) return; + this.selectedIndex = (this.selectedIndex + direction + len) % len; + this._highlightSelected(); + }, + + /** + * 선택된 명령 실행 + */ + executeSelected() { + const cmd = this.filteredCommands[this.selectedIndex]; + if (!cmd) { this.hide(); return; } + + // 1. '/' + 필터 텍스트를 에디터에서 삭제 + this._deleteSlashAndFilter(); + + // 2. 팝업 닫기 + this.hide(); + + // 3. 에디터 포커스 유지 후 명령 실행 + this.editorRef.focus(); + + // 짧은 딜레이 후 명령 실행 (DOM 반영 대기) + requestAnimationFrame(() => { + if (cmd.payload) { + this.editorRef.exec(cmd.cmd, cmd.payload); + } else { + this.editorRef.exec(cmd.cmd); + } + }); + }, + + /** + * '/' 문자와 필터 텍스트를 에디터 본문에서 삭제 + */ + _deleteSlashAndFilter() { + const sel = window.getSelection(); + if (!sel || sel.rangeCount === 0) return; + + const range = sel.getRangeAt(0); + const node = range.startContainer; + + if (node.nodeType === Node.TEXT_NODE) { + const offset = range.startOffset; + const deleteLen = 1 + this.filterText.length; // '/' + filter + const start = offset - deleteLen; + + if (start >= 0) { + // 텍스트 노드에서 직접 삭제 + node.textContent = node.textContent.substring(0, start) + node.textContent.substring(offset); + + // 커서를 삭제 위치로 복원 + const newRange = document.createRange(); + newRange.setStart(node, start); + newRange.collapse(true); + sel.removeAllRanges(); + sel.addRange(newRange); + } + } + } +}; diff --git a/static/js/components/ThemeManager.js b/static/js/components/ThemeManager.js new file mode 100644 index 0000000..8774683 --- /dev/null +++ b/static/js/components/ThemeManager.js @@ -0,0 +1,165 @@ +import { API } from '../api.js'; +import { I18nManager } from '../utils/I18nManager.js'; + +export const ThemeManager = { + /** + * 환경 설정 및 개인화 테마 로직 초기화 + */ + async initSettings() { + const settingsBtn = document.getElementById('settingsBtn'); + const settingsModal = document.getElementById('settingsModal'); + const closeSettingsBtn = document.getElementById('closeSettingsBtn'); + const saveThemeBtn = document.getElementById('saveThemeBtn'); + const resetThemeBtn = document.getElementById('resetThemeBtn'); + const pickers = settingsModal.querySelectorAll('input[type="color"]'); + + // 1. 서버에서 설정 불러오기 및 적용 + try { + const settings = await API.fetchSettings(); + await this.applyTheme(settings); + // 만약 서버에 설정된 테마가 없다면 시스템 테마 감지 시작 + if (Object.keys(settings).length === 0) { + this.initSystemThemeDetection(); + } + } catch (err) { + console.error('Failed to load settings:', err); + this.initSystemThemeDetection(); + } + + // ... 나머지 모달 제어 로직 유지 (기존 코드와 동일) + if (settingsBtn) settingsBtn.onclick = () => settingsModal.classList.add('active'); + if (closeSettingsBtn) closeSettingsBtn.onclick = () => settingsModal.classList.remove('active'); + + window.addEventListener('click', (e) => { + if (e.target === settingsModal) settingsModal.classList.remove('active'); + }); + + pickers.forEach(picker => { + picker.oninput = (e) => { + const variable = e.target.dataset.var; + const value = e.target.value; + document.documentElement.style.setProperty(variable, value); + }; + }); + + if (saveThemeBtn) { + saveThemeBtn.onclick = async () => { + const data = {}; + const mapping = { + 'set-bg': 'bg_color', + 'set-sidebar': 'sidebar_color', + 'set-card': 'card_color', + 'set-encrypted': 'encrypted_border', + 'set-ai': 'ai_accent' + }; + + pickers.forEach(p => { + data[mapping[p.id]] = p.value; + }); + data['enable_ai'] = document.getElementById('set-enable-ai').checked; + + // 언어 설정이 UI에 있다면 추가 (현재는 config.json 수동 명시 권장이나 대비책 마련) + const langSelect = document.getElementById('set-lang'); + if (langSelect) data['lang'] = langSelect.value; + + try { + await API.saveSettings(data); + await this.applyTheme(data); + alert(I18nManager.t('msg_settings_saved')); + settingsModal.classList.remove('active'); + } catch (err) { alert('저장 실패: ' + err.message); } + }; + } + + if (resetThemeBtn) { + resetThemeBtn.onclick = () => { + if (confirm('모든 색상을 기본값으로 되돌릴까요?')) { + const defaults = { + bg_color: "#0f172a", + sidebar_color: "rgba(30, 41, 59, 0.7)", + card_color: "rgba(30, 41, 59, 0.85)", + encrypted_border: "#00f3ff", + ai_accent: "#8b5cf6", + lang: "ko" + }; + this.applyTheme(defaults); + } + }; + } + }, + + /** + * 테마 데이터를 실제 CSS 변수 및 UI 요소에 반영 + */ + async applyTheme(settings) { + const mapping = { + 'bg_color': '--bg', + 'sidebar_color': '--sidebar', + 'card_color': '--card', + 'encrypted_border': '--encrypted-border', + 'ai_accent': '--ai-accent' + }; + + for (const [key, variable] of Object.entries(mapping)) { + if (settings[key]) { + document.documentElement.style.setProperty(variable, settings[key]); + const pickerId = 'set-' + key.split('_')[0]; + const picker = document.getElementById(pickerId); + if (picker) { + picker.value = settings[key].startsWith('rgba') ? this.rgbaToHex(settings[key]) : settings[key]; + } + } + } + + // 2. AI 활성화 상태 적용 + const enableAI = (settings.enable_ai !== false); + document.body.classList.toggle('ai-disabled', !enableAI); + const aiToggle = document.getElementById('set-enable-ai'); + if (aiToggle) aiToggle.checked = enableAI; + + // 3. i18n 적용 + const lang = settings.lang || 'ko'; + await I18nManager.init(lang); + const langSelect = document.getElementById('set-lang'); + if (langSelect) langSelect.value = lang; + }, + + rgbaToHex(rgba) { + const parts = rgba.match(/[\d.]+/g); + if (!parts || parts.length < 3) return '#0f172a'; + const r = parseInt(parts[0]); + const g = parseInt(parts[1]); + const b = parseInt(parts[2]); + return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); + }, + + /** + * 시스템 다크/라이트 모드 감지 및 자동 적용 + */ + initSystemThemeDetection() { + const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + + const handleThemeChange = (e) => { + const isDark = e.matches; + const theme = isDark ? { + bg_color: "#0f172a", + sidebar_color: "rgba(30, 41, 59, 0.7)", + card_color: "rgba(30, 41, 59, 0.85)", + encrypted_border: "#00f3ff", + ai_accent: "#8b5cf6", + lang: "ko" + } : { + bg_color: "#f8fafc", + sidebar_color: "rgba(241, 245, 249, 0.8)", + card_color: "#ffffff", + encrypted_border: "#0ea5e9", + ai_accent: "#6366f1", + lang: "ko" + }; + this.applyTheme(theme); + }; + + darkModeMediaQuery.addEventListener('change', handleThemeChange); + handleThemeChange(darkModeMediaQuery); + }, +}; diff --git a/static/js/components/Visualizer.js b/static/js/components/Visualizer.js new file mode 100644 index 0000000..e55434e --- /dev/null +++ b/static/js/components/Visualizer.js @@ -0,0 +1,286 @@ +/** + * 지식 시각화 맵(Graph) 관리 모듈 (v7.5 - D3.js 기반 혁신) + */ +import { I18nManager } from '../utils/I18nManager.js'; +import { Constants } from '../utils/Constants.js'; + +export const Visualizer = { + simulation: null, + svg: null, + container: null, + width: 0, + height: 0, + + init(containerId) { + this.container = document.getElementById(containerId); + if (!this.container) { + console.error(`[Visualizer] Container #${containerId} not found.`); + return; + } + + // 초기 크기 설정 + this.width = this.container.clientWidth; + this.height = this.container.clientHeight; + console.log(`[Visualizer] Init - Size: ${this.width}x${this.height}`); + }, + + render(memos, onNodeClick) { + console.log(`[Visualizer] Rendering ${memos.length} memos...`); + if (!this.container) return; + + // 모달이 열리는 중이라 크기가 0일 경우 대비 재측정 + if (this.width === 0 || this.height === 0) { + this.width = this.container.clientWidth || 800; + this.height = this.container.clientHeight || 600; + console.log(`[Visualizer] Re-measured Size: ${this.width}x${this.height}`); + } + + // 0. 기존 내용 청소 + this.container.innerHTML = ''; + + // 1. 데이터 전처리 + const uniqueGroups = [...new Set(memos.map(m => m.group_name || Constants.GROUPS.DEFAULT))]; + const groupCenters = {}; + const radius = Math.min(this.width, this.height) * 0.35; + + // 그룹별 성단 중심점 계산 (원형 레이아웃) + uniqueGroups.forEach((g, i) => { + const angle = (i / uniqueGroups.length) * Math.PI * 2; + groupCenters[g] = { + x: this.width / 2 + Math.cos(angle) * radius, + y: this.height / 2 + Math.sin(angle) * radius + }; + }); + + const nodes = memos.map(m => ({ + ...m, + id: m.id.toString(), + group: m.group_name || Constants.GROUPS.DEFAULT, + weight: (m.links ? m.links.length : 0) + 5 + })); + + const links = []; + const nodeMap = new Map(nodes.map(n => [n.id, n])); + + // 1. 명시적 링크 (Internal Links) 처리 + memos.forEach(m => { + if (m.links) { + m.links.forEach(l => { + const targetId = (l.target_id || l.id).toString(); + if (nodeMap.has(targetId)) { + links.push({ source: m.id.toString(), target: targetId, type: 'explicit' }); + } + }); + } + }); + + // 2. 공통 태그 및 그룹 기반 자동 연결 (Constellation Links) + for (let i = 0; i < nodes.length; i++) { + for (let j = i + 1; j < nodes.length; j++) { + const nodeA = nodes[i]; + const nodeB = nodes[j]; + + // 태그 목록 추출 + const tagsA = new Set((nodeA.tags || []).map(t => t.name)); + const tagsB = new Set((nodeB.tags || []).map(t => t.name)); + + // 교집합 확인 (태그 링크) + const commonTags = [...tagsA].filter(t => tagsB.has(t)); + if (commonTags.length > 0) { + links.push({ + source: nodeA.id, + target: nodeB.id, + type: 'tag', + strength: commonTags.length + }); + } else if (nodeA.group === nodeB.group) { + // 동일 그룹 내 자동 연결 (성단 형성) - 태그가 없을 때만 + links.push({ + source: nodeA.id, + target: nodeB.id, + type: 'group', + strength: 0.1 + }); + } + } + } + + console.log(`[Visualizer] Data Prepared - Nodes: ${nodes.length}, Links: ${links.length}, Groups: ${uniqueGroups.length}`); + const totalTags = nodes.reduce((acc, n) => acc + (n.tags ? n.tags.length : 0), 0); + console.log(`[Visualizer] Total Tags in Data: ${totalTags}`); + + // 2. SVG 생성 + this.svg = d3.select(this.container) + .append('svg') + .attr('width', '100%') + .attr('height', '100%') + .style('background', 'radial-gradient(circle at center, #1e293b 0%, #020617 100%)') + .attr('viewBox', `0 0 ${this.width} ${this.height}`); + + // 우주 배경 (작은 별들) 생성 + const starCount = 100; + const stars = Array.from({ length: starCount }, () => ({ + x: Math.random() * this.width, + y: Math.random() * this.height, + r: Math.random() * 1.5, + opacity: Math.random() + })); + + this.svg.selectAll('.star') + .data(stars) + .enter() + .append('circle') + .attr('class', 'star') + .attr('cx', d => d.x) + .attr('cy', d => d.y) + .attr('r', d => d.r) + .style('fill', '#fff') + .style('opacity', d => d.opacity); + + // 글로우 효과 필터 정의 + const defs = this.svg.append('defs'); + const filter = defs.append('filter') + .attr('id', 'glow'); + filter.append('feGaussianBlur') + .attr('stdDeviation', '3.5') + .attr('result', 'coloredBlur'); + const feMerge = filter.append('feMerge'); + feMerge.append('feMergeNode').attr('in', 'coloredBlur'); + feMerge.append('feMergeNode').attr('in', 'SourceGraphic'); + + const g = this.svg.append('g').attr('class', 'main-g'); + + // 3. 줌(Zoom) 설정 + const zoom = d3.zoom() + .scaleExtent([0.1, 5]) + .on('zoom', (event) => g.attr('transform', event.transform)); + this.svg.call(zoom); + + // 4. 그룹 라벨 생성 (Subtle Center Labels) + const groupLabels = g.selectAll('.group-label') + .data(uniqueGroups) + .join('text') + .attr('class', 'group-label') + .attr('x', d => groupCenters[d].x) + .attr('y', d => groupCenters[d].y) + .text(d => d) + .style('fill', 'rgba(56, 189, 248, 0.2)') + .style('font-size', '14px') + .style('font-weight', 'bold') + .style('text-anchor', 'middle') + .style('pointer-events', 'none'); + + // 5. 물리 시뮬레이션 설정 (Force Simulation) + this.simulation = d3.forceSimulation(nodes) + .force('link', d3.forceLink(links).id(d => d.id).distance(100).strength(0.1)) + .force('charge', d3.forceManyBody().strength(-200)) // 서로 밀어냄 + .force('collide', d3.forceCollide().radius(d => d.weight + 20)) + .force('x', d3.forceX(d => groupCenters[d.group].x).strength(0.08)) // 그룹 중심으로 당김 + .force('y', d3.forceY(d => groupCenters[d.group].y).strength(0.08)) + .force('center', d3.forceCenter(this.width / 2, this.height / 2).strength(0.01)); + + // 6. 링크(선) 활성화 + const link = g.selectAll('.link') + .data(links) + .join('line') + .attr('class', 'link') + .style('stroke', d => { + if (d.type === 'explicit') return '#38bdf8'; + if (d.type === 'tag') return '#8b5cf6'; + return 'rgba(56, 189, 248, 0.05)'; // group links + }) + .style('stroke-width', d => d.type === 'explicit' ? 2 : 1) + .style('stroke-dasharray', d => d.type === 'group' ? '2,2' : 'none') + .style('opacity', d => d.type === 'group' ? 0.3 : 0.6); + + // 7. 노드(점) 활성화 + const node = g.selectAll('.node') + .data(nodes) + .join('g') + .attr('class', d => `node ${d.is_encrypted ? 'encrypted' : ''}`) + .call(d3.drag() + .on('start', dragstarted) + .on('drag', dragged) + .on('end', dragended)) + .on('click', (event, d) => onNodeClick && onNodeClick(d.id)) + .on('mouseover', function(event, d) { + // 이웃 노드 및 링크 하이라이트 + const neighborIds = new Set(); + neighborIds.add(d.id); + links.forEach(l => { + if (l.source.id === d.id) neighborIds.add(l.target.id); + if (l.target.id === d.id) neighborIds.add(l.source.id); + }); + + node.style('opacity', n => neighborIds.has(n.id) ? 1 : 0.1); + link.style('stroke', l => (l.source.id === d.id || l.target.id === d.id) ? '#38bdf8' : 'rgba(56, 189, 248, 0.05)') + .style('stroke-opacity', l => (l.source.id === d.id || l.target.id === d.id) ? 1 : 0.2); + }) + .on('mouseout', function() { + node.style('opacity', 1); + link.style('stroke', 'rgba(56, 189, 248, 0.1)') + .style('stroke-opacity', 0.6); + }); + + // 노드 원형 스타일 + node.append('circle') + .attr('r', d => d.weight) + .style('fill', d => d.is_encrypted ? '#64748b' : '#38bdf8') + .style('filter', 'url(#glow)') + .style('cursor', 'pointer'); + + // 노드 텍스트 라벨 + node.append('text') + .attr('dy', d => d.weight + 15) + .text(d => { + const untitled = I18nManager.t('label_untitled'); + const title = d.title || untitled; + return d.is_encrypted ? `🔒 ${title}` : title; + }) + .style('fill', d => d.is_encrypted ? '#94a3b8' : '#cbd5e1') + .style('font-size', '10px') + .style('text-anchor', 'middle') + .style('pointer-events', 'none') + .style('text-shadow', '0 2px 4px rgba(0,0,0,0.8)'); + + // 8. 틱(Tick)마다 좌표 업데이트 + this.simulation.on('tick', () => { + link + .attr('x1', d => d.source.x) + .attr('y1', d => d.source.y) + .attr('x2', d => d.target.x) + .attr('y2', d => d.target.y); + + node + .attr('transform', d => `translate(${d.x}, ${d.y})`); + }); + + // 드래그 함수 + const self = this; + function dragstarted(event, d) { + if (!event.active) self.simulation.alphaTarget(0.3).restart(); + d.fx = d.x; + d.fy = d.y; + } + + function dragged(event, d) { + d.fx = event.x; + d.fy = event.y; + } + + function dragended(event, d) { + if (!event.active) self.simulation.alphaTarget(0); + d.fx = null; + d.fy = null; + } + }, + + resize() { + if (!this.container || !this.svg) return; + this.width = this.container.clientWidth; + this.height = this.container.clientHeight; + this.svg.attr('viewBox', `0 0 ${this.width} ${this.height}`); + this.simulation.force('center', d3.forceCenter(this.width / 2, this.height / 2)); + this.simulation.alpha(0.3).restart(); + } +}; diff --git a/static/js/editor.js b/static/js/editor.js new file mode 100644 index 0000000..5f5aac2 --- /dev/null +++ b/static/js/editor.js @@ -0,0 +1,190 @@ +import { API } from './api.js'; +import { renderAttachmentBox } from './components/AttachmentBox.js'; +import { SlashCommand } from './components/SlashCommand.js'; +import { I18nManager } from './utils/I18nManager.js'; + +export const EditorManager = { + editor: null, + attachedFiles: [], // 현재 에디터에 첨부된 파일들 + sessionFiles: new Set(), // 이번 세션에 새로 추가된 파일 트래킹 (취소 시 삭제용) + + init(elSelector, onCtrlEnter) { + const isMobile = window.innerWidth <= 768; + + // --- 플러그인 설정 (글자 색상) --- + const colorPlugin = (window.toastui && window.toastui.EditorPluginColorSyntax) || + (window.toastui && window.toastui.Editor && window.toastui.Editor.plugin && window.toastui.Editor.plugin.colorSyntax); + + const plugins = (typeof colorPlugin === 'function') ? [colorPlugin] : []; + + this.editor = new toastui.Editor({ + el: document.querySelector(elSelector), + height: '100%', + initialEditType: 'wysiwyg', + previewStyle: isMobile ? 'tab' : 'vertical', + theme: 'dark', + placeholder: I18nManager.t('composer_placeholder'), + plugins: plugins, + toolbarItems: isMobile ? [ + ['heading', 'bold', 'italic', 'strike'], + ['hr', 'quote'], + ['ul', 'ol', 'task'], + ['table', 'image', 'link'], + ['code', 'codeblock'] + ] : [ + ['heading', 'bold', 'italic', 'strike'], + ['hr', 'quote'], + ['ul', 'ol', 'task', 'indent', 'outdent'], + ['table', 'image', 'link'], + ['code', 'codeblock'], + ['scrollSync'] + ], + hooks: { + addImageBlobHook: async (blob, callback) => { + try { + const data = await API.uploadFile(blob); + if (data.url) { + const filename = data.url.split('/').pop(); + callback(`/api/download/${filename}`, data.name || 'image'); + + this.attachedFiles.push({ + filename: filename, + original_name: data.name || 'image', + file_type: blob.type + }); + this.sessionFiles.add(filename); + this.refreshAttachmentUI(); + } + } catch (err) { alert(err.message); } + } + } + }); + + // --- 키보드 단축키 시스템 --- + const editorEl = document.querySelector(elSelector); + + // Ctrl+Shift 조합 단축키 맵 (toolbar 메뉴 대체) + const shortcutMap = { + 'x': 'taskList', // Ctrl+Shift+X : 체크박스(Task) 토글 + 'u': 'bulletList', // Ctrl+Shift+U : 순서 없는 목록 + 'o': 'orderedList', // Ctrl+Shift+O : 순서 있는 목록 + 'q': 'blockQuote', // Ctrl+Shift+Q : 인용 블록 + 'k': 'codeBlock', // Ctrl+Shift+K : 코드 블록 + 'l': 'thematicBreak', // Ctrl+Shift+L : 수평선(구분선) + ']': 'indent', // Ctrl+Shift+] : 들여쓰기 + '[': 'outdent', // Ctrl+Shift+[ : 내어쓰기 + }; + + editorEl.addEventListener('keydown', (e) => { + // 1. Ctrl+Enter → 저장 + if (onCtrlEnter && e.ctrlKey && !e.shiftKey && (e.key === 'Enter' || e.keyCode === 13)) { + onCtrlEnter(); + return; + } + + // 2. Ctrl+Shift+[Key] → toolbar 명령 실행 + if (e.ctrlKey && e.shiftKey) { + const cmd = shortcutMap[e.key.toLowerCase()]; + if (cmd) { + e.preventDefault(); + e.stopPropagation(); + this.editor.exec(cmd); + } + } + }, true); // capture 단계에서 잡아서 에디터 내부 이벤트보다 먼저 처리 + + // --- 슬래시 명령(/) 팝업 초기화 --- + SlashCommand.init(this.editor, editorEl); + + return this.editor; + }, + + setAttachedFiles(files) { + console.log('[Editor] Loading attachments:', files); + this.attachedFiles = (files || []).map(f => ({ + filename: f.filename || f.file_name, + original_name: f.original_name || f.name || 'file', + file_type: f.file_type || f.type || '' + })); + this.sessionFiles.clear(); // 기존 파일을 로드할 때는 세션 트래킹 초기화 (기존 파일은 삭제 대상 제외) + this.refreshAttachmentUI(); + }, + + refreshAttachmentUI() { + const container = document.getElementById('editorAttachments'); + if (!container) { + console.warn('[Editor] #editorAttachments element not found in DOM!'); + return; + } + + console.log('[Editor] Refreshing UI with:', this.attachedFiles); + container.innerHTML = renderAttachmentBox(this.attachedFiles); + }, + + bindDropEvent(wrapperSelector, onDropComplete) { + const wrapper = document.querySelector(wrapperSelector); + wrapper.addEventListener('dragover', (e) => { e.preventDefault(); e.stopPropagation(); }); + wrapper.addEventListener('drop', async (e) => { + e.preventDefault(); e.stopPropagation(); + + const files = e.dataTransfer.files; + if (!files || files.length === 0) return; + + // 에디터가 닫혀있다면 상위에서 열어줘야 함 + onDropComplete(true); + + for (let file of files) { + try { + const data = await API.uploadFile(file); + if (data.url) { + const filename = data.url.split('/').pop(); + const isImg = ['png','jpg','jpeg','gif','webp','svg'].includes(data.ext?.toLowerCase()); + const name = data.name || 'file'; + + // Ensure editor is focused before inserting + this.editor.focus(); + + if (isImg) { + this.editor.exec('addImage', { altText: name, imageUrl: data.url }); + } + + // 공통: 첨부 파일 목록에 추가 및 UI 갱신 + this.attachedFiles.push({ + filename: filename, + original_name: name, + file_type: file.type + }); + this.sessionFiles.add(filename); // 세션 트래킹 추가 + this.refreshAttachmentUI(); + } + } catch (err) { console.error(err); } + } + }); + }, + + getAttachedFilenames() { + return this.attachedFiles.map(f => f.filename); + }, + + /** + * 취소(삭제) 시 세션 동안 추가된 파일들을 서버에서 지움 + */ + async cleanupSessionFiles() { + if (this.sessionFiles.size === 0) return; + + console.log(`[Editor] Cleaning up ${this.sessionFiles.size} session files...`); + const filesToDelete = Array.from(this.sessionFiles); + for (const filename of filesToDelete) { + try { + await API.deleteAttachment(filename); + } catch (err) { + console.error(`Failed to delete session file ${filename}:`, err); + } + } + this.sessionFiles.clear(); + }, + + getMarkdown() { return this.editor.getMarkdown().trim(); }, + setMarkdown(md) { this.editor.setMarkdown(md); }, + focus() { this.editor.focus(); } +}; diff --git a/static/js/ui.js b/static/js/ui.js new file mode 100644 index 0000000..23e0a6f --- /dev/null +++ b/static/js/ui.js @@ -0,0 +1,222 @@ +/** + * UI 렌더링 및 이벤트를 관리하는 오케스트레이터 (Orchestrator) + */ +import { API } from './api.js'; +import { createMemoCardHtml } from './components/MemoCard.js'; +import { renderGroupList } from './components/SidebarUI.js'; +import { ThemeManager } from './components/ThemeManager.js'; +import { ModalManager } from './components/ModalManager.js'; +import { I18nManager } from './utils/I18nManager.js'; + +const DOM = { + memoGrid: document.getElementById('memoGrid'), + groupList: document.getElementById('groupList'), + modal: document.getElementById('memoModal'), + loadingOverlay: document.getElementById('loadingOverlay'), + searchInput: document.getElementById('searchInput'), + sidebar: document.getElementById('sidebar'), + systemNav: document.getElementById('systemNav'), + scrollSentinel: document.getElementById('scrollSentinel') +}; + +export const UI = { + /** + * 사이드바 및 로그아웃 버튼 초기화 + */ + initSidebarToggle() { + const toggle = document.getElementById('sidebarToggle'); + const sidebar = DOM.sidebar; + const overlay = document.getElementById('sidebarOverlay'); + const logoutBtn = document.getElementById('logoutBtn'); + + if (toggle && sidebar) { + const isCollapsed = localStorage.getItem('sidebarCollapsed') === 'true'; + if (isCollapsed) { + sidebar.classList.add('collapsed'); + const calendar = document.getElementById('calendarContainer'); + if (calendar) calendar.style.display = 'none'; + } + + const toggleSidebar = () => { + const isMobile = window.innerWidth <= 768; + if (isMobile) { + sidebar.classList.toggle('mobile-open'); + overlay.style.display = sidebar.classList.contains('mobile-open') ? 'block' : 'none'; + } else { + sidebar.classList.toggle('collapsed'); + const collapsed = sidebar.classList.contains('collapsed'); + localStorage.setItem('sidebarCollapsed', collapsed); + + const calendar = document.getElementById('calendarContainer'); + if (calendar) calendar.style.display = collapsed ? 'none' : 'block'; + } + }; + + toggle.onclick = toggleSidebar; + const mobileBtn = document.getElementById('mobileMenuBtn'); + if (mobileBtn) mobileBtn.onclick = toggleSidebar; + + if (overlay) { + overlay.onclick = () => { + sidebar.classList.remove('mobile-open'); + overlay.style.display = 'none'; + }; + } + } + + if (logoutBtn) { + logoutBtn.onclick = () => { + if (confirm(I18nManager.t('msg_logout_confirm'))) { + window.location.href = '/logout'; + } + }; + } + }, + + /** + * 환경 설정 및 테마 엔진 초기화 (ThemeManager 위임) + */ + async initSettings() { + return await ThemeManager.initSettings(); + }, + + /** + * 무한 스크롤 초기화 + */ + initInfiniteScroll(onLoadMore) { + if (!DOM.scrollSentinel) return; + + const observer = new IntersectionObserver((entries) => { + if (entries[0].isIntersecting) { + onLoadMore(); + } + }, { threshold: 0.1 }); + + observer.observe(DOM.scrollSentinel); + }, + + /** + * 사이드바 시스템 고정 메뉴 상태 갱신 + */ + updateSidebar(memos, activeGroup, onGroupClick) { + if (!DOM.systemNav) return; + + DOM.systemNav.querySelectorAll('li').forEach(li => { + const group = li.dataset.group; + li.className = (group === activeGroup) ? 'active' : ''; + li.onclick = () => onGroupClick(group); + }); + }, + + /** + * 메모 목록 메인 렌더링 (서버 사이드 필터링 결과 기반) + */ + renderMemos(memos, filters = {}, handlers, isAppend = false) { + if (!isAppend) { + DOM.memoGrid.innerHTML = ''; + } + + if (!memos || memos.length === 0) { + if (!isAppend) { + DOM.memoGrid.innerHTML = `
${I18nManager.t('label_no_results')}
`; + } + return; + } + + memos.forEach(memo => { + const { className, style, innerHtml } = createMemoCardHtml(memo, memo.status === 'done'); + const card = document.createElement('div'); + card.className = className; + card.dataset.id = memo.id; // ID 저장 + if (style) card.setAttribute('style', style); + card.innerHTML = innerHtml; + card.style.cursor = 'pointer'; + card.title = I18nManager.t('tooltip_edit_hint'); + card.onclick = (e) => { + // 버튼(삭제, 핀 등) 클릭 시에는 무시 + if (e.target.closest('.action-btn')) return; + + if (e.altKey) { + // Alt + 클릭: 즉시 수정 모드 + handlers.onEdit(memo.id); + } else { + // 일반 클릭: 상세 모달 열기 + this.openMemoModal(memo.id, window.allMemosCache || memos); + } + }; + DOM.memoGrid.appendChild(card); + + // 신규 카드에만 이벤트 바인딩 + this.bindCardEventsToElement(card, handlers); + }); + + if (DOM.scrollSentinel) { + DOM.scrollSentinel.innerText = I18nManager.t('msg_loading'); + } + }, + + /** + * 특정 요소(카드) 내부에 이벤트 바인딩 + */ + bindCardEventsToElement(card, handlers) { + const id = card.dataset.id; + const bind = (selector, handler) => { + const btn = card.querySelector(selector); + if (btn) { + btn.onclick = (e) => { + e.stopPropagation(); + handler(id); + }; + } + }; + + bind('.edit-btn', handlers.onEdit); + bind('.delete-btn', handlers.onDelete); + bind('.ai-btn', handlers.onAI); + bind('.toggle-pin', handlers.onTogglePin); + bind('.toggle-status', handlers.onToggleStatus); + bind('.link-item', (linkId) => this.openMemoModal(linkId, window.allMemosCache || [])); + bind('.unlock-btn', handlers.onUnlock); + }, + + /** + * 모달 열기 위임 (ModalManager 위임) + */ + openMemoModal(id, memos) { + ModalManager.openMemoModal(id, memos); + }, + + showLoading(show) { + DOM.loadingOverlay.style.display = show ? 'flex' : 'none'; + if (DOM.scrollSentinel) { + DOM.scrollSentinel.style.display = show ? 'none' : 'flex'; + } + }, + + setHasMore(hasMore) { + if (DOM.scrollSentinel) { + DOM.scrollSentinel.style.visibility = hasMore ? 'visible' : 'hidden'; + DOM.scrollSentinel.innerText = hasMore ? I18nManager.t('msg_loading') : I18nManager.t('msg_last_memo'); + } + } +}; + +/** + * 전역 파일 다운로드 함수 (항상 전역 스코프 유지) + */ +window.downloadFile = async function(filename, originalName) { + try { + const res = await fetch(`/api/download/${filename}`); + if (!res.ok) { + if (res.status === 403) alert(I18nManager.t('msg_permission_denied')); + else alert(`${I18nManager.t('msg_download_failed')}: ${res.statusText}`); + return; + } + const blob = await res.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; a.download = originalName; + document.body.appendChild(a); a.click(); + window.URL.revokeObjectURL(url); document.body.removeChild(a); + } catch (err) { alert(`${I18nManager.t('msg_download_error')}: ` + err.message); } +}; diff --git a/static/js/utils.js b/static/js/utils.js new file mode 100644 index 0000000..4f170eb --- /dev/null +++ b/static/js/utils.js @@ -0,0 +1,43 @@ +import { I18nManager } from './utils/I18nManager.js'; + +/** + * 유틸리티 기능을 담은 모듈 + */ + +/** + * HTML 특수 문자를 이스케이프 처리합니다. + */ +export function escapeHTML(str) { + if (!str) return ''; + const charMap = { + '&': '&', + '<': '<', + '>': '>', + "'": ''', + '"': '"' + }; + return str.replace(/[&<>'"]/g, t => charMap[t] || t); +} + +/** + * [[#ID]] 형태의 내부 링크를 HTML 링크로 변환합니다. + */ +export function parseInternalLinks(text, onLinkClick) { + if (!text) return ''; + // 이 함수는 단순히 텍스트만 변환하며, 이벤트 바인딩은 UI 모듈에서 수행합니다. + return text.replace(/\[\[#(\d+)\]\]/g, (match, id) => { + const prefix = I18nManager.t('label_memo_id_prefix'); + return `${prefix}${id}`; + }); +} + +/** + * HTML 내의 상대 경로 이미지 src를 서버 API 경로(/api/download/...)로 변환합니다. + */ +export function fixImagePaths(html) { + if (!html) return ''; + // src="image.png" 같이 상대 경로로 시작하는 경우만 가로채서 API 경로로 변경 + return html.replace(/ { + return ` (obj && obj[k]), this.localeData); + return value !== undefined ? value : key; // 없으면 키 자체 반환 + }, + + /** + * 화면 내 i18n 관련 모든 속성을 번역 + */ + applyTranslations() { + // 1. 일반 텍스트 번역 + document.querySelectorAll('[data-i18n]').forEach(el => { + const key = el.dataset.i18n; + el.textContent = this.t(key); + }); + + // 2. Placeholder 번역 + document.querySelectorAll('[data-i18n-placeholder]').forEach(el => { + const key = el.dataset.i18nPlaceholder; + el.placeholder = this.t(key); + }); + + // 3. Title (Browser Tooltip) 번역 + document.querySelectorAll('[data-i18n-title]').forEach(el => { + const key = el.dataset.i18nTitle; + el.title = this.t(key); + }); + + // 4. Custom Tooltip (data-tooltip) 번역 + document.querySelectorAll('[data-i18n-tooltip]').forEach(el => { + const key = el.dataset.i18nTooltip; + el.setAttribute('data-tooltip', this.t(key)); + }); + } +}; diff --git a/static/locales/en.json b/static/locales/en.json new file mode 100644 index 0000000..0d0ec1d --- /dev/null +++ b/static/locales/en.json @@ -0,0 +1,133 @@ +{ + "app_name": "Brain Dogfood", + "app_tagline": "Welcome to your intelligent knowledge base.", + + "nav_all": "All Knowledge", + "nav_files": "Files", + "nav_done": "Done", + "nav_explorer": "Knowledge Explorer", + "nav_calendar": "Calendar", + "nav_nebula": "Knowledge Nebula", + "nav_logout": "Logout", + "nav_settings": "Settings", + "nav_toggle": "Toggle Sidebar", + + "search_placeholder": "Search memos... (Title, Content, Tag)", + "composer_placeholder": "Leave a fragment of knowledge...", + "composer_placeholder_trigger": "Capture knowledge or drop files...", + "composer_title": "Title", + "composer_group": "Group", + "composer_tags": "Tags (comma separated)", + "composer_save": "Save Memo", + "composer_discard": "Discard (Delete)", + "composer_encrypt": "Encrypt", + "composer_password": "Password", + "tooltip_fold": "Fold Window (Preserve Content)", + + "settings_title": "⚙️ Settings", + "settings_bg": "Background Color", + "settings_sidebar": "Sidebar Color", + "settings_card": "Memo Card Color", + "settings_security": "Security Border Color", + "settings_ai_accent": "AI Accent Color", + "settings_ai_enable": "Enable AI Features", + "settings_lang": "Language", + "settings_save": "Save Settings", + "settings_reset": "Reset", + "settings_close": "Close", + + "msg_logout_confirm": "Are you sure you want to log out completely?", + "msg_delete_confirm": "Are you sure you want to delete this memo? This cannot be undone.", + "msg_save_success": "Saved successfully!", + "msg_settings_saved": "🎨 Settings have been saved to the server!", + "msg_ai_loading": "Gemini AI is analyzing the memo...", + "msg_encrypted_locked": "🚫 Encryption detected. Decrypt first to modify.", + "msg_auth_failed": "Invalid credentials. Please try again.", + "msg_network_error": "Network instability or server error occurred.", + "msg_confirm_discard": "Discard all current content and delete uploaded files from the server?", + "msg_alert_password_required": "A password is required to encrypt this knowledge.", + "msg_draft_restore_confirm": "📝 There is an auto-saved draft.\nTitle: \"{title}\"\nWould you like to restore it?", + + "title_pin": "Pin to Top", + "title_done": "Mark as Done", + "title_undo": "Undo Done", + "title_ai": "AI Analysis", + "title_edit": "Edit", + "title_delete": "Delete", + "btn_unlock": "Unlock", + "label_mentioned": "Mentioned In", + "label_linked_memo": "Linked Memo", + "label_no_results": "No results found.", + "label_memo_id_prefix": "Memo #", + "tooltip_edit_hint": "Alt + Click: Quick Edit", + "prompt_password": "Enter password to decrypt this knowledge:", + "msg_loading": "Loading more knowledge...", + "msg_last_memo": "This is the last piece of knowledge.", + "msg_permission_denied": "🚫 Access Denied. Decrypt the knowledge first.", + "msg_download_failed": "❌ Download failed", + "msg_download_error": "📦 Error during download", + + "login_title": "Secure Login", + "login_welcome": "Welcome to your intelligent knowledge base.", + "login_id": "Auth ID", + "login_pw": "Password", + "login_btn": "Enter System", + "msg_authenticating": "Authenticating...", + + "drawer_title_groups": "📁 Groups", + "drawer_title_tags": "🏷️ Tags", + "label_untitled": "Untitled", + "label_ai_summary": "AI Summary", + "label_heatmap_title": "Knowledge Growth", + "label_more": "More", + "label_less": "Less", + "tooltip_heatmap_stat": "{date}: {count} items", + "label_asset_management": "📁 Asset Management", + "label_asset_hint": "Click: Go to memo / Alt+Click: Download", + "label_no_assets": "No files uploaded yet.", + "label_memo_ref": "Memo: ", + "label_no_memo_ref": "No linked memo", + "label_group_explorer": "📁 Group Explorer", + "label_tag_explorer": "🏷️ Tag Explorer", + "label_last_updated": "Last updated: ", + + "shortcuts_label": "⌨️ Shortcuts", + "shortcut_save": "Save", + "shortcut_new": "New", + "shortcut_nebula": "Nebula", + "shortcut_slash": "Slash commands", + "shortcut_edit": "Quick Edit", + + "slash": { + "task": "Task List", + "bullet": "Bullet List", + "number": "Ordered List", + "quote": "Block Quote", + "line": "Divider", + "code": "Code Block", + "h1": "Heading 1", + "h2": "Heading 2", + "h3": "Heading 3", + "ai_summary": "AI Summary", + "ai_tags": "AI Tags" + }, + + "calendar_months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + "calendar_days": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + "date_month_year": "{month} {year}", + + "heatmap_ranges": { + "365": "1 Year", + "180": "6 Months", + "90": "3 Months", + "30": "1 Month" + }, + "label_select_range": "Select Range", + + "groups": { + "all": "All Knowledge", + "default": "Default", + "files": "Files", + "done": "Done" + } +} diff --git a/static/locales/ko.json b/static/locales/ko.json new file mode 100644 index 0000000..47724c3 --- /dev/null +++ b/static/locales/ko.json @@ -0,0 +1,132 @@ +{ + "app_name": "뇌사료", + "app_tagline": "지식 창고에 오신 것을 환영합니다.", + + "nav_all": "전체 지식", + "nav_files": "파일 모음", + "nav_done": "완료 모음", + "nav_explorer": "지식 탐색기", + "nav_calendar": "달력 탐색", + "nav_nebula": "지식 맵 보기", + "nav_logout": "로그아웃", + "nav_settings": "환경 설정", + "nav_toggle": "사이드바 토글", + + "search_placeholder": "메모 검색... (제목, 내용, 태그)", + "composer_placeholder": "지식의 파편을 남겨주세요...", + "composer_placeholder_trigger": "메모를 기록하거나 파일을 던져보세요...", + "composer_title": "제목", + "composer_group": "그룹명", + "composer_tags": "태그 (쉼표로 구분)", + "composer_save": "메모 저장", + "composer_discard": "취소 (삭제)", + "composer_encrypt": "암호화", + "composer_password": "비밀번호", + "tooltip_fold": "창 접기 (내용 보존)", + + "settings_title": "⚙️ 환경 설정", + "settings_bg": "전체 배경색", + "settings_sidebar": "사이드바 색상", + "settings_card": "메모지 색상", + "settings_security": "보안 테두리색", + "settings_ai_accent": "AI 분석 강조색", + "settings_ai_enable": "AI 기능 활성화", + "settings_lang": "언어 설정", + "settings_save": "저장", + "settings_reset": "초기화", + "settings_close": "닫기", + + "msg_logout_confirm": "완전하게 로그아웃하시겠습니까?", + "msg_delete_confirm": "이 메모를 정말 삭제할까요? 되돌릴 수 없습니다.", + "msg_save_success": "저장되었습니다!", + "msg_settings_saved": "🎨 테마 설정이 서버에 저장되었습니다!", + "msg_ai_loading": "Gemini AI가 메모를 분석 중입니다...", + "msg_encrypted_locked": "🚫 암호화된 메모입니다. 먼저 해독하세요.", + "msg_auth_failed": "올바른 자격 증명이 아닙니다. 다시 시도해 주세요.", + "msg_network_error": "네트워크 불안정 또는 서버 오류가 발생했습니다.", + "msg_confirm_discard": "작성 중인 내용을 모두 지우고 업로드한 파일도 서버에서 삭제할까요?", + "msg_alert_password_required": "암호화하려면 비밀번호를 입력해야 합니다.", + "msg_draft_restore_confirm": "📝 임시 저장된 메모가 있습니다.\n제목: \"{title}\"\n복원하시겠습니까?", + + "title_pin": "중요 (상단 고정)", + "title_done": "완료 처리", + "title_undo": "다시 활성화", + "title_ai": "AI 분석", + "title_edit": "수정", + "title_delete": "삭제", + "btn_unlock": "해독하기", + "label_mentioned": "언급됨", + "label_no_results": "조회 결과가 없습니다.", + "label_memo_id_prefix": "메모 #", + "tooltip_edit_hint": "Alt + 클릭: 즉시 수정", + "prompt_password": "이 지식을 해독할 비밀번호를 입력하세요:", + "msg_loading": "더 많은 지식을 불러오는 중...", + "msg_last_memo": "마지막 지식입니다.", + "msg_permission_denied": "🚫 접근 권한 부족. 먼저 지식을 해독하세요.", + "msg_download_failed": "❌ 다운로드 실패", + "msg_download_error": "📦 다운로드 중 오류", + + "login_title": "보안 로그인", + "login_welcome": "지능형 지식 창고에 오신 것을 환영합니다.", + "login_id": "인증 아이디", + "login_pw": "비밀번호", + "login_btn": "보안 시스템 접속", + "msg_authenticating": "인증 중...", + + "drawer_title_groups": "📁 그룹", + "drawer_title_tags": "🏷️ 태그", + "label_untitled": "무제", + "label_ai_summary": "AI 요약", + "label_heatmap_title": "지식 성장", + "label_more": "많음", + "label_less": "적음", + "tooltip_heatmap_stat": "{date}: {count}개의 지식", + "label_asset_management": "📁 전체 첨부파일 관리", + "label_asset_hint": "클릭: 해당 메모로 이동 / Alt+클릭: 미리보기", + "label_no_assets": "아직 업로드된 파일이 없습니다.", + "label_memo_ref": "메모: ", + "label_no_memo_ref": "연결된 메모 없음", + "label_group_explorer": "📁 그룹별 탐색", + "label_tag_explorer": "🏷️ 태그별 탐색", + "label_last_updated": "마지막 수정: ", + + "shortcuts_label": "⌨️ 단축키", + "shortcut_save": "저장", + "shortcut_new": "새 메모", + "shortcut_nebula": "네뷸라", + "shortcut_slash": "슬래시 명령", + "shortcut_edit": "즉시 수정", + + "slash": { + "task": "체크박스", + "bullet": "목록", + "number": "번호 목록", + "quote": "인용", + "line": "구분선", + "code": "코드 블록", + "h1": "제목 1", + "h2": "제목 2", + "h3": "제목 3", + "ai_summary": "AI 요약", + "ai_tags": "AI 태그 추출" + }, + + "calendar_months": ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], + "calendar_days": ["일", "월", "화", "수", "목", "금", "토"], + "date_month_year": "{year}년 {month}", + + "heatmap_ranges": { + "365": "1년", + "180": "6개월", + "90": "3개월", + "30": "1개월" + }, + "label_select_range": "기간 선택", + + "groups": { + "all": "전체 지식", + "default": "기본", + "files": "파일모음", + "done": "완료모음" + } +} diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..ad80bc8 --- /dev/null +++ b/static/style.css @@ -0,0 +1,25 @@ +/* 🧠 뇌사료(Memo Server) Main Stylesheet + - Modularized Architecture (v4.0) +*/ + +/* 1. Global Variables & Reset */ +@import url('./css/variables.css'); + +/* 2. Base Layout Shell */ +@import url('./css/layout.css'); + +/* 3. Core Components Styles */ +@import url('./css/sidebar.css'); +@import url('./css/components/memo.css'); +@import url('./css/components/editor.css'); +@import url('./css/components/modals.css'); + +/* 4. Visualization & Navigation (Calendar, Drawer, Map) */ +@import url('./css/components/visualization.css'); +@import url('./css/components/heatmap.css'); + +/* 5. Slash Command Popup */ +@import url('./css/components/slash-command.css'); + +/* 6. Mobile Responsive Overrides */ +@import url('./css/mobile.css'); diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..b9f8fdd --- /dev/null +++ b/templates/index.html @@ -0,0 +1,219 @@ + + + + + + Brain Dogfood + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ +
+ Capture knowledge or drop files... +
+ + + +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + +
+
+

🔍 Knowledge Explorer

+ +
+
+ +
+
+ + + + diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..c249455 --- /dev/null +++ b/templates/login.html @@ -0,0 +1,98 @@ + + + + + + 뇌사료 | 보안 로그인 + + + + + + + + + + + +