{"behavior":"degenerate_repetition","label_filter":null,"limit":10,"next_offset":21137,"offset":21127,"previous_offset":null,"rows":[{"assistant_initiates":false,"asst_text":"[Votre Nom]  \n[Votre Adresse]  \n[Code Postal, Ville]  \n[Votre Email]  \n[Num\u00e9ro de T\u00e9l\u00e9phone]  \n\n[Date]\n\n[Nom du destinataire]  \n[Poste du destinataire]  \n[Nom de l'\u00e9cole]  \n[Adresse de l'\u00e9cole]  \n[Code Postal, Ville]  \n\nObjet : Justification de mon absence \u00e0 la r\u00e9union\n\nMadame, Monsieur,\n\nJe me permets de vous \u00e9crire pour vous informer et justifier mon absence \u00e0 la r\u00e9union qui s'est tenue le [date de la r\u00e9union] au sein de notre \u00e9tablissement.\n\nMalheureusement, j'ai \u00e9t\u00e9 contraint(e) de m'absenter en raison de [expliquer bri\u00e8vement la raison de l'absence, par exemple : des motifs de sant\u00e9, une urgence personnelle, un rendez-vous m\u00e9dical, etc.]. Cette situation \u00e9tait impr\u00e9visible et ind\u00e9pendante de ma volont\u00e9, ce qui m'a emp\u00each\u00e9(e) d'informer l'\u00e9quipe dans les d\u00e9lais habituels.\n\nJe suis conscient(e) de l'importance de ces r\u00e9unions pour le suivi et l'organisation de notre travail. Je souhaiterais donc recevoir un compte-rendu des points abord\u00e9s afin de ne rien manquer des d\u00e9cisions prises et des informations partag\u00e9es.\n\nJe vous prie de bien vouloir accepter mes excuses pour tout inconv\u00e9nient que mon absence a pu causer. Je reste \u00e0 votre disposition pour toute information compl\u00e9mentaire et j'esp\u00e8re pouvoir contribuer pleinement aux futures r\u00e9unions.\n\nJe vous remercie par avance de votre compr\u00e9hension.\n\nCordialement,\n\n[Votre Nom et Pr\u00e9nom]  \n[Votre poste, par exemple : Enseignant(e) de...]  \n[Votre mati\u00e8re ou classe, si applicable]  ","behavior":"degenerate_repetition","conversation_hash":"3dc5f0cebdcee65ef99fc1f2aa08fd4d","conversation_redacted":false,"conversation_toxic":false,"country":"DR Congo","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"French","model":"gpt-4o-mini-2024-07-18","n_chars":1531,"n_turns_in_conversation":1,"n_words":226,"source_row_offset":21127,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:35:35 GMT","turn_id":"ae5cef0d083d9496a7ed033e","turn_index":0,"user_text":"Lettre de justification  d'absence d'un enseignant a la  r\u00e9union dans son \u00e9cole "},{"assistant_initiates":false,"asst_text":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u0430\u043a \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, \u0442\u0430\u043a \u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430. \u0412\u044b \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043d\u0430 HTML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 LocalStorage \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0439 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c **Flask** (\u043c\u0438\u043a\u0440\u043e\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f Python) \u0438 **SQLite** \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.\n\n\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0448\u0430\u0433\u0438 \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 API.\n\n## \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\n\n1. **\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 (Client-Side):**\n   - HTML, CSS \u0438 JavaScript \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\n   - \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 `fetch` API \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.\n\n2. **\u0411\u044d\u043a\u0435\u043d\u0434 (Server-Side):**\n   - Flask \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f API.\n   - SQLite \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u043f\u043e\u0441\u0442\u044b, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0433\u0440\u0443\u043f\u043f\u044b, \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438).\n   - \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b (endpoints) \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f CRUD \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.\n\n## \u0428\u0430\u0433 1: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432\n\n\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:\n\n- **Python 3.7+**\n- **Flask**\n- **Flask-CORS** (\u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441-\u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432)\n- **SQLite3** (\u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Python)\n\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e `pip`:\n\n```bash\npip install Flask Flask-CORS\n```\n\n## \u0428\u0430\u0433 2: \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0411\u044d\u043a\u0435\u043d\u0434\u0430 \u0441 Flask\n\n\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `app.py` \u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:\n\n```python\nfrom flask import Flask, request, jsonify\nfrom flask_cors import CORS\nimport sqlite3\nfrom datetime import datetime\n\napp = Flask(__name__)\nCORS(app)  # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c CORS \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432\n\nDATABASE = 'database.db'\n\ndef init_db():\n    conn = sqlite3.connect(DATABASE)\n    cursor = conn.cursor()\n    \n    # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\n    cursor.execute('''\n        CREATE TABLE IF NOT EXISTS users (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            username TEXT UNIQUE NOT NULL,\n            password TEXT NOT NULL,\n            avatar TEXT\n        )\n    ''')\n    \n    cursor.execute('''\n        CREATE TABLE IF NOT EXISTS posts (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            author_id INTEGER,\n            content TEXT,\n            image TEXT,\n            likes INTEGER DEFAULT 0,\n            created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n            FOREIGN KEY(author_id) REFERENCES users(id)\n        )\n    ''')\n\n    cursor.execute('''\n        CREATE TABLE IF NOT EXISTS comments (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            post_id INTEGER,\n            user_id INTEGER,\n            content TEXT,\n            created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n            FOREIGN KEY(post_id) REFERENCES posts(id),\n            FOREIGN KEY(user_id) REFERENCES users(id)\n        )\n    ''')\n\n    cursor.execute('''\n        CREATE TABLE IF NOT EXISTS groups (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            name TEXT UNIQUE NOT NULL,\n            description TEXT,\n            created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n        )\n    ''')\n\n    cursor.execute('''\n        CREATE TABLE IF NOT EXISTS events (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            group_id INTEGER,\n            name TEXT,\n            description TEXT,\n            location TEXT,\n            latitude REAL,\n            longitude REAL,\n            date TEXT,\n            time TEXT,\n            created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n            FOREIGN KEY(group_id) REFERENCES groups(id)\n        )\n    ''')\n\n    conn.commit()\n    conn.close()\n\ninit_db()\n\n# \u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414\ndef get_db_connection():\n    conn = sqlite3.connect(DATABASE)\n    conn.row_factory = sqlite3.Row\n    return conn\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n@app.route('/api/register', methods=['POST'])\ndef register():\n    data = request.json\n    username = data.get('username')\n    password = data.get('password')\n    avatar = data.get('avatar', 'https://i.imgur.com/8Km9tLL.jpg')  # \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0430\u0432\u0430\u0442\u0430\u0440\n\n    if not username or not password:\n        return jsonify({'error': 'Username and password are required.'}), 400\n\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    try:\n        cursor.execute('INSERT INTO users (username, password, avatar) VALUES (?, ?, ?)',\n                       (username, password, avatar))\n        conn.commit()\n        user_id = cursor.lastrowid\n    except sqlite3.IntegrityError:\n        conn.close()\n        return jsonify({'error': 'Username already exists.'}), 400\n\n    conn.close()\n    return jsonify({'message': 'User registered successfully.', 'user_id': user_id}), 201\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n@app.route('/api/login', methods=['POST'])\ndef login():\n    data = request.json\n    username = data.get('username')\n    password = data.get('password')\n\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT * FROM users WHERE username = ? AND password = ?', (username, password))\n    user = cursor.fetchone()\n    conn.close()\n\n    if user:\n        return jsonify({'message': 'Login successful.', 'user_id': user['id'], 'username': user['username'], 'avatar': user['avatar']}), 200\n    else:\n        return jsonify({'error': 'Invalid credentials.'}), 401\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0441\u0442\u043e\u0432\n@app.route('/api/posts', methods=['GET'])\ndef get_posts():\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT posts.*, users.username, users.avatar FROM posts JOIN users ON posts.author_id = users.id ORDER BY created_at DESC')\n    posts = cursor.fetchall()\n    conn.close()\n\n    posts_list = []\n    for post in posts:\n        posts_list.append({\n            'id': post['id'],\n            'author': post['username'],\n            'avatar': post['avatar'],\n            'content': post['content'],\n            'image': post['image'],\n            'likes': post['likes'],\n            'created_at': post['created_at']\n        })\n\n    return jsonify(posts_list), 200\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430\n@app.route('/api/posts', methods=['POST'])\ndef create_post():\n    data = request.json\n    author_id = data.get('author_id')\n    content = data.get('content')\n    image = data.get('image')  # \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a URL\n\n    if not author_id:\n        return jsonify({'error': 'Author ID is required.'}), 400\n\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('INSERT INTO posts (author_id, content, image) VALUES (?, ?, ?)',\n                   (author_id, content, image))\n    conn.commit()\n    post_id = cursor.lastrowid\n    conn.close()\n\n    return jsonify({'message': 'Post created successfully.', 'post_id': post_id}), 201\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043b\u0430\u0439\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\n@app.route('/api/posts/<int:post_id>/like', methods=['POST'])\ndef like_post(post_id):\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('UPDATE posts SET likes = likes + 1 WHERE id = ?', (post_id,))\n    conn.commit()\n    cursor.execute('SELECT likes FROM posts WHERE id = ?', (post_id,))\n    likes = cursor.fetchone()['likes']\n    conn.close()\n    return jsonify({'likes': likes}), 200\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043f\u043e\u0441\u0442\u0430\n@app.route('/api/posts/<int:post_id>/comments', methods=['GET'])\ndef get_comments(post_id):\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('''\n        SELECT comments.*, users.username, users.avatar \n        FROM comments \n        JOIN users ON comments.user_id = users.id \n        WHERE comments.post_id = ? \n        ORDER BY comments.created_at ASC\n    ''', (post_id,))\n    comments = cursor.fetchall()\n    conn.close()\n\n    comments_list = []\n    for comment in comments:\n        comments_list.append({\n            'id': comment['id'],\n            'user': comment['username'],\n            'avatar': comment['avatar'],\n            'content': comment['content'],\n            'created_at': comment['created_at']\n        })\n\n    return jsonify(comments_list), 200\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u043a \u043f\u043e\u0441\u0442\u0443\n@app.route('/api/posts/<int:post_id>/comments', methods=['POST'])\ndef add_comment(post_id):\n    data = request.json\n    user_id = data.get('user_id')\n    content = data.get('content')\n\n    if not user_id or not content:\n        return jsonify({'error': 'User ID and content are required.'}), 400\n\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('INSERT INTO comments (post_id, user_id, content) VALUES (?, ?, ?)',\n                   (post_id, user_id, content))\n    conn.commit()\n    comment_id = cursor.lastrowid\n    conn.close()\n\n    return jsonify({'message': 'Comment added successfully.', 'comment_id': comment_id}), 201\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0433\u0440\u0443\u043f\u043f\n@app.route('/api/groups', methods=['GET'])\ndef get_groups():\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT * FROM groups ORDER BY created_at DESC')\n    groups = cursor.fetchall()\n    conn.close()\n\n    groups_list = []\n    for group in groups:\n        groups_list.append({\n            'id': group['id'],\n            'name': group['name'],\n            'description': group['description'],\n            'created_at': group['created_at']\n        })\n\n    return jsonify(groups_list), 200\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b\n@app.route('/api/groups', methods=['POST'])\ndef create_group():\n    data = request.json\n    name = data.get('name')\n    description = data.get('description')\n\n    if not name or not description:\n        return jsonify({'error': 'Name and description are required.'}), 400\n\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    try:\n        cursor.execute('INSERT INTO groups (name, description) VALUES (?, ?)', (name, description))\n        conn.commit()\n        group_id = cursor.lastrowid\n    except sqlite3.IntegrityError:\n        conn.close()\n        return jsonify({'error': 'Group with this name already exists.'}), 400\n\n    conn.close()\n    return jsonify({'message': 'Group created successfully.', 'group_id': group_id}), 201\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e ID\n@app.route('/api/groups/<int:group_id>', methods=['GET'])\ndef get_group(group_id):\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT * FROM groups WHERE id = ?', (group_id,))\n    group = cursor.fetchone()\n    if not group:\n        conn.close()\n        return jsonify({'error': 'Group not found.'}), 404\n\n    cursor.execute('SELECT * FROM events WHERE group_id = ?', (group_id,))\n    events = cursor.fetchall()\n    conn.close()\n\n    events_list = []\n    for event in events:\n        events_list.append({\n            'id': event['id'],\n            'name': event['name'],\n            'description': event['description'],\n            'location': event['location'],\n            'latitude': event['latitude'],\n            'longitude': event['longitude'],\n            'date': event['date'],\n            'time': event['time'],\n            'created_at': event['created_at']\n        })\n\n    group_info = {\n        'id': group['id'],\n        'name': group['name'],\n        'description': group['description'],\n        'created_at': group['created_at'],\n        'events': events_list\n    }\n\n    return jsonify(group_info), 200\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0435\n@app.route('/api/groups/<int:group_id>/events', methods=['POST'])\ndef create_event(group_id):\n    data = request.json\n    name = data.get('name')\n    description = data.get('description')\n    location = data.get('location')\n    latitude = data.get('latitude')\n    longitude = data.get('longitude')\n    date = data.get('date')\n    time = data.get('time')\n\n    if not all([name, description, location, latitude, longitude, date, time]):\n        return jsonify({'error': 'All fields are required.'}), 400\n\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT * FROM groups WHERE id = ?', (group_id,))\n    group = cursor.fetchone()\n    if not group:\n        conn.close()\n        return jsonify({'error': 'Group not found.'}), 404\n\n    cursor.execute('''\n        INSERT INTO events (group_id, name, description, location, latitude, longitude, date, time)\n        VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n    ''', (group_id, name, description, location, latitude, longitude, date, time))\n    conn.commit()\n    event_id = cursor.lastrowid\n    conn.close()\n\n    return jsonify({'message': 'Event created successfully.', 'event_id': event_id}), 201\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0433\u0440\u0443\u043f\u043f\u044b\n@app.route('/api/groups/<int:group_id>/events', methods=['GET'])\ndef get_group_events(group_id):\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT * FROM events WHERE group_id = ?', (group_id,))\n    events = cursor.fetchall()\n    conn.close()\n\n    events_list = []\n    for event in events:\n        events_list.append({\n            'id': event['id'],\n            'name': event['name'],\n            'description': event['description'],\n            'location': event['location'],\n            'latitude': event['latitude'],\n            'longitude': event['longitude'],\n            'date': event['date'],\n            'time': event['time'],\n            'created_at': event['created_at']\n        })\n\n    return jsonify(events_list), 200\n\n# \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n@app.route('/api/users/<int:user_id>', methods=['GET'])\ndef get_user_profile(user_id):\n    conn = get_db_connection()\n    cursor = conn.cursor()\n    cursor.execute('SELECT * FROM users WHERE id = ?', (user_id,))\n    user = cursor.fetchone()\n    if not user:\n        conn.close()\n        return jsonify({'error': 'User not found.'}), 404\n\n    # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n    cursor.execute('SELECT * FROM posts WHERE author_id = ? ORDER BY created_at DESC', (user_id,))\n    posts = cursor.fetchall()\n\n    posts_list = []\n    for post in posts:\n        posts_list.append({\n            'id': post['id'],\n            'content': post['content'],\n            'image': post['image'],\n            'likes': post['likes'],\n            'created_at': post['created_at']\n        })\n\n    user_info = {\n        'id': user['id'],\n        'username': user['username'],\n        'avatar': user['avatar'],\n        'posts': posts_list\n    }\n\n    conn.close()\n    return jsonify(user_info), 200\n\nif __name__ == '__main__':\n    app.run(debug=True)\n```\n\n### \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u041a\u043e\u0434\u0430 \u0411\u044d\u043a\u0435\u043d\u0434\u0430:\n\n- **\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445:** \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442.\n\n- **\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b API:**\n  - **\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u041b\u043e\u0433\u0438\u043d:** \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e.\n  - **\u041f\u043e\u0441\u0442\u044b:** \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u0441\u0442\u044b, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0441\u0442\u044b \u0438 \u043b\u0430\u0439\u043a\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u044b.\n  - **\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438:** \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0443 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.\n  - **\u0413\u0440\u0443\u043f\u043f\u044b \u0438 \u0421\u043e\u0431\u044b\u0442\u0438\u044f:** \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b, \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0433\u0440\u0443\u043f\u043f\u0430\u0445, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f.\n  - **\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:** \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435 \u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u0430\u0445.\n\n## \u0428\u0430\u0433 3: \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0411\u044d\u043a\u0435\u043d\u0434\u043e\u043c\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0430\u0448 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c \u0447\u0435\u0440\u0435\u0437 API. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 HTML \u0438 JavaScript.\n\n### \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 HTML (`index.html`)\n\n```html\n<!DOCTYPE html>\n<html lang=\"ru\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u0425\u0438\u043a\u0430 \u041c\u043e\u0440i - \u0410\u043d\u0438\u043c\u0435\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e</title>\n    <!-- \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Google Fonts -->\n    <link href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&family=Noto+Sans+JP:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n    <style>\n        /* \u0412\u0430\u0448\u0438 \u0441\u0442\u0438\u043b\u0438 \u0437\u0434\u0435\u0441\u044c */\n        body {\n            font-family: 'Roboto', sans-serif;\n            margin: 0;\n            padding: 0;\n            background-color: #f0f2f5;\n        }\n        .navbar {\n            background-color: #4267B2;\n            color: white;\n            padding: 15px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n        .nav-icons span {\n            margin: 0 10px;\n            cursor: pointer;\n        }\n        .section {\n            display: none;\n            padding: 20px;\n        }\n        .section.active {\n            display: block;\n        }\n        .post {\n            background-color: white;\n            padding: 15px;\n            margin-bottom: 15px;\n            border-radius: 8px;\n            box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n        }\n        .post-header {\n            display: flex;\n            align-items: center;\n        }\n        .post-header img {\n            width: 40px;\n            height: 40px;\n            border-radius: 50%;\n            margin-right: 10px;\n        }\n        .post-content img {\n            max-width: 100%;\n            border-radius: 8px;\n            margin-top: 10px;\n        }\n        .post-actions span {\n            margin-right: 15px;\n            cursor: pointer;\n        }\n        .comments-section {\n            margin-top: 10px;\n        }\n        .comment-input {\n            width: 80%;\n            padding: 8px;\n            margin-right: 5px;\n            border-radius: 4px;\n            border: 1px solid #ccc;\n        }\n        .create-post textarea {\n            width: 100%;\n            height: 100px;\n            padding: 10px;\n            border-radius: 8px;\n            border: 1px solid #ccc;\n            resize: vertical;\n        }\n        .create-post input[type=\"file\"] {\n            margin-top: 10px;\n        }\n        .create-post button {\n            margin-top: 10px;\n            padding: 10px 20px;\n            background-color: #4267B2;\n            color: white;\n            border: none;\n            border-radius: 8px;\n            cursor: pointer;\n        }\n        /* \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 */\n    </style>\n</head>\n<body>\n\n    <!-- \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c -->\n    <div class=\"navbar\">\n        <div class=\"logo\" onclick=\"showSection('feed')\">\u0425\u0438\u043a\u0430 \u041c\u043e\u0440i</div>\n        <div class=\"nav-icons\">\n            <span onclick=\"showSection('feed')\">\ud83c\udfe0 \u041b\u0435\u043d\u0442\u0430</span>\n            <span onclick=\"showSection('createPost')\">\u2795 \u0421\u043e\u0437\u0434\u0430\u0442\u044c</span>\n            <span onclick=\"showSection('animeWatch')\">\ud83c\udfa5 \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440</span>\n            <span onclick=\"showSection('community')\">\ud83d\udc65 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430</span>\n            <span onclick=\"showSection('profile')\">\ud83d\udc64 \u041f\u0440\u043e\u0444\u0438\u043b\u044c</span>\n            <span onclick=\"logout()\">\ud83d\udeaa \u0412\u044b\u0439\u0442\u0438</span>\n        </div>\n    </div>\n\n    <!-- \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043b\u0435\u043d\u0442\u0430 -->\n    <div id=\"feed\" class=\"section active feed\">\n        <h2>\u041b\u0435\u043d\u0442\u0430 \u041f\u043e\u0441\u0442\u043e\u0432</h2>\n        <div id=\"postsContainer\">\n            <!-- \u041f\u043e\u0441\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430 -->\n    <div id=\"createPost\" class=\"section create-post\">\n        <h2>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0441\u0442</h2>\n        <textarea id=\"postContent\" placeholder=\"\u0427\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0430 \u0443\u043c\u0435?\"></textarea>\n        <input type=\"file\" id=\"postImages\" accept=\"image/*\" multiple>\n        <button onclick=\"createPost()\">\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c</button>\n    </div>\n\n    <!-- \u0420\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0430\u043d\u0438\u043c\u0435 -->\n    <div id=\"animeWatch\" class=\"section anime-watch\">\n        <h2>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0410\u043d\u0438\u043c\u0435</h2>\n        <!-- \u041f\u043e\u0438\u0441\u043a \u0430\u043d\u0438\u043c\u0435 -->\n        <div class=\"search-bar\">\n            <input type=\"text\" id=\"searchAnime\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u0430\u043d\u0438\u043c\u0435...\">\n            <button onclick=\"searchAnime()\">\ud83d\udd0d</button>\n        </div>\n        <!-- \u0421\u043f\u0438\u0441\u043e\u043a \u0430\u043d\u0438\u043c\u0435 -->\n        <div class=\"anime-list\" id=\"animeList\">\n            <!-- \u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u043d\u0438\u043c\u0435 -->\n            <!-- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0430\u043d\u0438\u043c\u0435 \u0447\u0435\u0440\u0435\u0437 API -->\n        </div>\n\n        <!-- \u0412\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440 -->\n        <div class=\"video-player\" id=\"videoPlayer\" style=\"display:none;\">\n            <div class=\"player-content\">\n                <button class=\"close-btn\" onclick=\"closeVideoPlayer()\">\u2716</button>\n                <video controls id=\"animeVideo\" width=\"600\">\n                    <source src=\"\" type=\"video/mp4\">\n                    \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e.\n                </video>\n            </div>\n        </div>\n    </div>\n\n    <!-- \u0420\u0430\u0437\u0434\u0435\u043b \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 -->\n    <div id=\"community\" class=\"section community\">\n        <div class=\"community-header\">\n            <h2>\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430</h2>\n            <button onclick=\"openModal('createGroupModal')\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e</button>\n        </div>\n        <div class=\"groups-list\" id=\"groupsList\">\n            <!-- \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 (\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e) -->\n    <div class=\"modal\" id=\"createGroupModal\" style=\"display:none;\">\n        <div class=\"modal-content\">\n            <h2>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e</h2>\n            <input type=\"text\" id=\"groupName\" placeholder=\"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\">\n            <textarea id=\"groupDescription\" placeholder=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\"></textarea>\n            <div style=\"display: flex; justify-content: flex-end; width: 100%;\">\n                <button onclick=\"createGroup()\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c</button>\n                <button onclick=\"closeModal('createGroupModal')\" class=\"cancel-btn\">\u041e\u0442\u043c\u0435\u043d\u0430</button>\n            </div>\n        </div>\n    </div>\n\n    <!-- \u0421\u0435\u043a\u0446\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b -->\n    <div id=\"groupSection\" class=\"section group-section\">\n        <div class=\"group-header\">\n            <h2 id=\"currentGroupName\">\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430</h2>\n            <button id=\"createEventBtn\" onclick=\"openModal('createEventModal')\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435</button>\n        </div>\n        <div id=\"groupPosts\" class=\"feed\">\n            <!-- \u041f\u043e\u0441\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n        <h3>\u0421\u043e\u0431\u044b\u0442\u0438\u044f</h3>\n        <div class=\"events-list\" id=\"groupEvents\">\n            <!-- \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n        <!-- \u041a\u0430\u0440\u0442\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f -->\n        <div id=\"eventMap\" class=\"event-map\">\n            <!-- \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e) -->\n    <div class=\"modal\" id=\"createEventModal\" style=\"display:none;\">\n        <div class=\"modal-content\">\n            <h2>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435</h2>\n            <input type=\"text\" id=\"eventName\" placeholder=\"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\">\n            <textarea id=\"eventDescription\" placeholder=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\"></textarea>\n            <input type=\"text\" id=\"eventLocation\" placeholder=\"\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0430\u0434\u0440\u0435\u0441)\">\n            <input type=\"date\" id=\"eventDate\" placeholder=\"\u0414\u0430\u0442\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\">\n            <input type=\"time\" id=\"eventTime\" placeholder=\"\u0412\u0440\u0435\u043c\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f\">\n            <div style=\"display: flex; justify-content: flex-end; width: 100%;\">\n                <button onclick=\"createEvent()\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c</button>\n                <button onclick=\"closeModal('createEventModal')\" class=\"cancel-btn\">\u041e\u0442\u043c\u0435\u043d\u0430</button>\n            </div>\n        </div>\n    </div>\n\n    <!-- \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -->\n    <div id=\"profile\" class=\"section profile\">\n        <h2>\u041f\u0440\u043e\u0444\u0438\u043b\u044c</h2>\n        <div class=\"profile-header\">\n            <img id=\"profileAvatar\" src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n            <div>\n                <h2 id=\"profileName\">\u0418\u043c\u044f \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f</h2>\n                <p id=\"profileUsername\">@nik_name</p>\n            </div>\n        </div>\n        <div class=\"profile-content\">\n            <h3>\u041e \u0441\u0435\u0431\u0435</h3>\n            <p id=\"profileBio\">\u041b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0430\u043d\u0438\u043c\u0435, \u043c\u0430\u043d\u0433\u0438 \u0438 \u0432\u0441\u0435\u0433\u043e \u044f\u043f\u043e\u043d\u0441\u043a\u043e\u0433\u043e! \ud83c\udf8c</p>\n            <h3>\u041c\u043e\u0438 \u043f\u043e\u0441\u0442\u044b</h3>\n            <div id=\"userPosts\">\n                <!-- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u043e\u0441\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n            </div>\n        </div>\n    </div>\n\n    <!-- \u0412\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440 -->\n    <div class=\"video-player\" id=\"videoPlayer\" style=\"display:none;\">\n        <div class=\"player-content\">\n            <button class=\"close-btn\" onclick=\"closeVideoPlayer()\">\u2716</button>\n            <video controls id=\"animeVideo\" width=\"600\">\n                <source src=\"\" type=\"video/mp4\">\n                \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e.\n            </video>\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0432\u0445\u043e\u0434\u0430 (\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e) -->\n    <div class=\"modal\" id=\"loginModal\" style=\"display:flex; justify-content:center; align-items:center;\">\n        <div class=\"modal-content\">\n            <h2>\u0412\u0445\u043e\u0434</h2>\n            <input type=\"text\" id=\"loginUsername\" placeholder=\"\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\">\n            <input type=\"password\" id=\"loginPassword\" placeholder=\"\u041f\u0430\u0440\u043e\u043b\u044c\">\n            <div style=\"display: flex; justify-content: flex-end; width: 100%;\">\n                <button onclick=\"login()\">\u0412\u043e\u0439\u0442\u0438</button>\n            </div>\n            <p>\u041d\u0435\u0442 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430? <a href=\"#\" onclick=\"showRegister()\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f</a></p>\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 (\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e) -->\n    <div class=\"modal\" id=\"registerModal\" style=\"display:none; justify-content:center; align-items:center;\">\n        <div class=\"modal-content\">\n            <h2>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f</h2>\n            <input type=\"text\" id=\"registerUsername\" placeholder=\"\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\">\n            <input type=\"password\" id=\"registerPassword\" placeholder=\"\u041f\u0430\u0440\u043e\u043b\u044c\">\n            <div style=\"display: flex; justify-content: flex-end; width: 100%;\">\n                <button onclick=\"register()\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f</button>\n            </div>\n            <p>\u0423\u0436\u0435 \u0435\u0441\u0442\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442? <a href=\"#\" onclick=\"showLogin()\">\u0412\u043e\u0439\u0442\u0438</a></p>\n        </div>\n    </div>\n\n    <!-- \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Google Maps API -->\n    <script async\n        src=\"https://maps.googleapis.com/maps/api/js?key=YOUR_GOOGLE_MAPS_API_KEY&callback=initMap\">\n    </script>\n\n    <!-- JavaScript \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f -->\n    <script>\n        let currentUser = null;\n\n        // \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u0440\u0442\u044b\n        let map;\n        let markers = [];\n\n        function initMap() {\n            map = new google.maps.Map(document.getElementById('eventMap'), {\n                center: { lat: 55.7558, lng: 37.6173 }, // \u0426\u0435\u043d\u0442\u0440 \u043a\u0430\u0440\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041c\u043e\u0441\u043a\u0432\u0430\n                zoom: 10\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0439\n        function showSection(sectionId) {\n            const sections = document.querySelectorAll('.section');\n            sections.forEach(section => {\n                if (section.id === sectionId) {\n                    section.classList.add('active');\n                } else {\n                    section.classList.remove('active');\n                }\n            });\n\n            // \u0421\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0441\u0435\u043a\u0446\u0438\u0439\n            const modals = document.querySelectorAll('.modal');\n            modals.forEach(modal => {\n                modal.style.display = 'none';\n            });\n\n            // \u0415\u0441\u043b\u0438 \u043d\u0435 \u0433\u0440\u0443\u043f\u043f\u0430, \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u044b\n            if (sectionId !== 'groupSection') {\n                document.getElementById('groupSection').style.display = 'none';\n            }\n\n            // \u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0446\u0438\u044f - \u043b\u0435\u043d\u0442\u0430, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u043e\u0441\u0442\u044b\n            if (sectionId === 'feed') {\n                loadPosts();\n            }\n\n            // \u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0446\u0438\u044f - \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u044b\n            if (sectionId === 'community') {\n                loadGroups();\n            }\n\n            // \u0415\u0441\u043b\u0438 \u0441\u0435\u043a\u0446\u0438\u044f - \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044c\n            if (sectionId === 'profile') {\n                loadProfile();\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u043e\u043d\n        function openModal(modalId) {\n            document.getElementById(modalId).style.display = 'flex';\n        }\n\n        function closeModal(modalId) {\n            document.getElementById(modalId).style.display = 'none';\n        }\n\n        // \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n        function register() {\n            const username = document.getElementById('registerUsername').value.trim();\n            const password = document.getElementById('registerPassword').value.trim();\n\n            if (username === \"\" || password === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f.\");\n                return;\n            }\n\n            fetch('http://localhost:5000/api/register', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify({ username, password })\n            })\n            .then(response => response.json())\n            .then(data => {\n                if (data.error) {\n                    alert(data.error);\n                } else {\n                    alert(data.message);\n                    closeModal('registerModal');\n                    openModal('loginModal');\n                }\n            })\n            .catch(error => {\n                console.error('Error:', error);\n            });\n        }\n\n        // \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438\n        function showRegister() {\n            closeModal('loginModal');\n            openModal('registerModal');\n        }\n\n        // \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0432\u0445\u043e\u0434\u0430\n        function showLogin() {\n            closeModal('registerModal');\n            openModal('loginModal');\n        }\n\n        // \u0412\u0445\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n        function login() {\n            const username = document.getElementById('loginUsername').value.trim();\n            const password = document.getElementById('loginPassword').value.trim();\n\n            if (username === \"\" || password === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f.\");\n                return;\n            }\n\n            fetch('http://localhost:5000/api/login', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify({ username, password })\n            })\n            .then(response => response.json())\n            .then(data => {\n                if (data.error) {\n                    alert(data.error);\n                } else {\n                    currentUser = {\n                        id: data.user_id,\n                        username: data.username,\n                        avatar: data.avatar\n                    };\n                    closeModal('loginModal');\n                    showSection('feed');\n                }\n            })\n            .catch(error => {\n                console.error('Error:', error);\n            });\n        }\n\n        // \u0412\u044b\u0445\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n        function logout() {\n            currentUser = null;\n            showSection('loginModal');\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430\n        function createPost() {\n            if (!currentUser) {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u044b.\");\n                return;\n            }\n\n            const content = document.getElementById('postContent').value.trim();\n            const imagesInput = document.getElementById('postImages');\n            const imageFiles = imagesInput.files;\n\n            if (content === \"\" && imageFiles.length === 0) {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u0442\u0430 \u0438\u043b\u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\");\n                return;\n            }\n\n            // \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043b\u0438 \u0445\u043e\u0441\u0442\u0438\u043d\u0433)\n            // \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Base64 \u0441\u0442\u0440\u043e\u043a\u0438\n            if (imageFiles.length > 0) {\n                const reader = new FileReader();\n                reader.onload = function(e) {\n                    const imageData = e.target.result; // Base64 \u0441\u0442\u0440\u043e\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\n\n                    fetch('http://localhost:5000/api/posts', {\n                        method: 'POST',\n                        headers: { 'Content-Type': 'application/json' },\n                        body: JSON.stringify({\n                            author_id: currentUser.id,\n                            content: content,\n                            image: imageData\n                        })\n                    })\n                    .then(response => response.json())\n                    .then(data => {\n                        if (data.error) {\n                            alert(data.error);\n                        } else {\n                            alert(data.message);\n                            document.getElementById('postContent').value = \"\";\n                            imagesInput.value = \"\";\n                            loadPosts();\n                            showSection('feed');\n                        }\n                    })\n                    .catch(error => {\n                        console.error('Error:', error);\n                    });\n                }\n                reader.readAsDataURL(imageFiles[0]);\n            } else {\n                fetch('http://localhost:5000/api/posts', {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application/json' },\n                    body: JSON.stringify({\n                        author_id: currentUser.id,\n                        content: content,\n                        image: null\n                    })\n                })\n                .then(response => response.json())\n                .then(data => {\n                    if (data.error) {\n                        alert(data.error);\n                    } else {\n                        alert(data.message);\n                        document.getElementById('postContent').value = \"\";\n                        imagesInput.value = \"\";\n                        loadPosts();\n                        showSection('feed');\n                    }\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                });\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0441\u0442\u043e\u0432\n        function loadPosts() {\n            fetch('http://localhost:5000/api/posts')\n                .then(response => response.json())\n                .then(data => {\n                    const postsContainer = document.getElementById('postsContainer');\n                    postsContainer.innerHTML = \"\";\n\n                    data.forEach(post => {\n                        const postElement = document.createElement('div');\n                        postElement.className = 'post';\n                        postElement.innerHTML = `\n                            <div class=\"post-header\">\n                                <img src=\"${post.avatar}\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                                <strong>${post.author}</strong>\n                            </div>\n                            <div class=\"post-content\">\n                                ${post.content ? `<p>${post.content}</p>` : ''}\n                                ${post.image ? `<img src=\"${post.image}\" alt=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\">` : ''}\n                            </div>\n                            <div class=\"post-actions\">\n                                <span onclick=\"likePost(${post.id}, this)\">\ud83d\udc4d <span class=\"like-count\">${post.likes}</span></span>\n                                <span onclick=\"toggleComments(this, ${post.id})\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n                            </div>\n                            <div class=\"comments-section\" style=\"display: none; margin-top: 15px;\">\n                                <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\" id=\"commentInput-${post.id}\">\n                                <button onclick=\"addComment(${post.id})\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                                <div class=\"comments-list\" id=\"commentsList-${post.id}\"></div>\n                            </div>\n                        `;\n                        postsContainer.appendChild(postElement);\n                    });\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043b\u0430\u0439\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\n        function likePost(postId, element) {\n            fetch(`http://localhost:5000/api/posts/${postId}/like`, {\n                method: 'POST'\n            })\n            .then(response => response.json())\n            .then(data => {\n                if (data.likes !== undefined) {\n                    element.querySelector('.like-count').textContent = data.likes;\n                }\n            })\n            .catch(error => {\n                console.error('Error:', error);\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432\n        function toggleComments(element, postId) {\n            const commentsSection = element.parentElement.nextElementSibling;\n            if (commentsSection.style.display === 'none') {\n                commentsSection.style.display = 'block';\n                loadComments(postId);\n            } else {\n                commentsSection.style.display = 'none';\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432\n        function loadComments(postId) {\n            fetch(`http://localhost:5000/api/posts/${postId}/comments`)\n                .then(response => response.json())\n                .then(data => {\n                    const commentsList = document.getElementById(`commentsList-${postId}`);\n                    commentsList.innerHTML = \"\";\n\n                    data.forEach(comment => {\n                        const commentElement = document.createElement('div');\n                        commentElement.style.padding = '10px 0';\n                        commentElement.style.borderBottom = '1px solid #eee';\n                        commentElement.innerHTML = `\n                            <img src=\"${comment.avatar}\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\" style=\"width:30px; height:30px; border-radius:50%; vertical-align: middle; margin-right:10px;\">\n                            <strong>${comment.user}</strong>\n                            <p>${comment.content}</p>\n                        `;\n                        commentsList.appendChild(commentElement);\n                    });\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\n        function addComment(postId) {\n            if (!currentUser) {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.\");\n                return;\n            }\n\n            const commentInput = document.getElementById(`commentInput-${postId}`);\n            const commentText = commentInput.value.trim();\n            if (commentText === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439.\");\n                return;\n            }\n\n            fetch(`http://localhost:5000/api/posts/${postId}/comments`, {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify({\n                    user_id: currentUser.id,\n                    content: commentText\n                })\n            })\n            .then(response => response.json())\n            .then(data => {\n                if (data.error) {\n                    alert(data.error);\n                } else {\n                    alert(data.message);\n                    commentInput.value = \"\";\n                    loadComments(postId);\n                }\n            })\n            .catch(error => {\n                console.error('Error:', error);\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\n        function createGroup() {\n            const name = document.getElementById('groupName').value.trim();\n            const description = document.getElementById('groupDescription').value.trim();\n\n            if (name === \"\" || description === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f.\");\n                return;\n            }\n\n            fetch('http://localhost:5000/api/groups', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify({ name, description })\n            })\n            .then(response => response.json())\n            .then(data => {\n                if (data.error) {\n                    alert(data.error);\n                } else {\n                    alert(data.message);\n                    closeModal('createGroupModal');\n                    loadGroups();\n                }\n            })\n            .catch(error => {\n                console.error('Error:', error);\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\n        function loadGroups() {\n            fetch('http://localhost:5000/api/groups')\n                .then(response => response.json())\n                .then(data => {\n                    const groupsList = document.getElementById('groupsList');\n                    groupsList.innerHTML = \"\";\n\n                    data.forEach(group => {\n                        const groupElement = document.createElement('div');\n                        groupElement.className = 'group-item';\n                        groupElement.style.padding = '15px';\n                        groupElement.style.backgroundColor = '#fff';\n                        groupElement.style.marginBottom = '10px';\n                        groupElement.style.borderRadius = '8px';\n                        groupElement.style.boxShadow = '0 2px 5px rgba(0,0,0,0.1)';\n                        groupElement.style.cursor = 'pointer';\n                        groupElement.onclick = () => openGroup(group.id);\n                        groupElement.innerHTML = `\n                            <h3>${group.name}</h3>\n                            <p>${group.description}</p>\n                        `;\n                        groupsList.appendChild(groupElement);\n                    });\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b\n        function openGroup(groupId) {\n            fetch(`http://localhost:5000/api/groups/${groupId}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.error) {\n                        alert(data.error);\n                    } else {\n                        showSection('groupSection');\n                        document.getElementById('currentGroupName').textContent = data.name;\n                        loadGroupPosts(data.id);\n                        loadGroupEvents(data.id);\n                    }\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0441\u0442\u043e\u0432 \u0433\u0440\u0443\u043f\u043f\u044b\n        function loadGroupPosts(groupId) {\n            // \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u0441\u0442\u044b \u0433\u0440\u0443\u043f\u043f \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u0435\n            // \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u0435\n            // \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f dummy \u0434\u0430\u043d\u043d\u044b\u0445\n\n            const groupPostsContainer = document.getElementById('groupPosts');\n            groupPostsContainer.innerHTML = \"<p>\u041f\u043e\u0441\u0442\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0441\u044e\u0434\u0430.</p>\";\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0433\u0440\u0443\u043f\u043f\u044b\n        function loadGroupEvents(groupId) {\n            // \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0433\u0440\u0443\u043f\u043f \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0433\u0440\u0443\u043f\u043f\u044b\n            // \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e\n            // \u041e\u0434\u043d\u0430\u043a\u043e, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f\n        function createEvent() {\n            const name = document.getElementById('eventName').value.trim();\n            const description = document.getElementById('eventDescription').value.trim();\n            const location = document.getElementById('eventLocation').value.trim();\n            const date = document.getElementById('eventDate').value;\n            const time = document.getElementById('eventTime').value;\n\n            if (name === \"\" || description === \"\" || location === \"\" || date === \"\" || time === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f.\");\n                return;\n            }\n\n            // \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Geocoding API)\n            fetch(`https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(location)}&key=YOUR_GOOGLE_MAPS_API_KEY`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.status === \"OK\") {\n                        const locationData = data.results[0].geometry.location;\n                        const currentGroupName = document.getElementById('currentGroupName').textContent;\n\n                        // \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 ID \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e \u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e\n                        fetch(`http://localhost:5000/api/groups`)\n                            .then(resp => resp.json())\n                            .then(groups => {\n                                const group = groups.find(g => g.name === currentGroupName);\n                                if (!group) {\n                                    alert(\"\u0413\u0440\u0443\u043f\u043f\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.\");\n                                    return;\n                                }\n\n                                fetch(`http://localhost:5000/api/groups/${group.id}/events`, {\n                                    method: 'POST',\n                                    headers: { 'Content-Type': 'application/json' },\n                                    body: JSON.stringify({\n                                        name,\n                                        description,\n                                        location,\n                                        latitude: locationData.lat,\n                                        longitude: locationData.lng,\n                                        date,\n                                        time\n                                    })\n                                })\n                                .then(resp => resp.json())\n                                .then(eventData => {\n                                    if (eventData.error) {\n                                        alert(eventData.error);\n                                    } else {\n                                        alert(eventData.message);\n                                        closeModal('createEventModal');\n                                        loadGroupEvents(group.id);\n                                        addMarkerToMap({\n                                            name,\n                                            description,\n                                            latitude: locationData.lat,\n                                            longitude: locationData.lng,\n                                            date,\n                                            time\n                                        });\n                                    }\n                                })\n                                .catch(error => {\n                                    console.error('Error:', error);\n                                });\n                            });\n\n                    } else {\n                        alert(\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.\");\n                    }\n                })\n                .catch(error => {\n                    console.error(\"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442:\", error);\n                    alert(\"\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f.\");\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0443\n        function addMarkerToMap(event) {\n            const marker = new google.maps.Marker({\n                position: { lat: event.latitude, lng: event.longitude },\n                map: map,\n                title: event.name\n            });\n\n            const infoWindow = new google.maps.InfoWindow({\n                content: `<h3>${event.name}</h3><p>${event.description}</p><p>${event.date} ${event.time}</p>`\n            });\n\n            marker.addListener('click', () => {\n                infoWindow.open(map, marker);\n            });\n\n            markers.push(marker);\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0435\u0440\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 API)\n        function showEpisodes(element) {\n            // \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e API \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440\u0430\n        function openVideoPlayer(videoUrl) {\n            const videoPlayer = document.getElementById('videoPlayer');\n            const videoElement = document.getElementById('animeVideo');\n            videoElement.src = videoUrl;\n            videoPlayer.style.display = 'flex';\n            videoElement.play();\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440\u0430\n        function closeVideoPlayer() {\n            const videoPlayer = document.getElementById('videoPlayer');\n            const videoElement = document.getElementById('animeVideo');\n            videoElement.pause();\n            videoElement.src = '';\n            videoPlayer.style.display = 'none';\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u043d\u0438\u043c\u0435 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 API)\n        function searchAnime() {\n            const query = document.getElementById('searchAnime').value.toLowerCase();\n            const animeItems = document.querySelectorAll('.anime-item');\n\n            animeItems.forEach(item => {\n                const title = item.querySelector('.anime-info h3').textContent.toLowerCase();\n                if (title.includes(query)) {\n                    item.style.display = 'flex';\n                } else {\n                    item.style.display = 'none';\n                }\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n        function loadProfile() {\n            if (!currentUser) {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c.\");\n                showSection('loginModal');\n                return;\n            }\n\n            fetch(`http://localhost:5000/api/users/${currentUser.id}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.error) {\n                        alert(data.error);\n                    } else {\n                        document.getElementById('profileName').textContent = data.username;\n                        document.getElementById('profileUsername').textContent = `@${data.username}`;\n                        document.getElementById('profileAvatar').src = data.avatar;\n                        document.getElementById('userPosts').innerHTML = \"\";\n\n                        data.posts.forEach(post => {\n                            const postElement = document.createElement('div');\n                            postElement.className = 'post';\n                            postElement.innerHTML = `\n                                <div class=\"post-header\">\n                                    <img src=\"${currentUser.avatar}\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                                    <strong>\u0412\u044b</strong>\n                                </div>\n                                <div class=\"post-content\">\n                                    ${post.content ? `<p>${post.content}</p>` : ''}\n                                    ${post.image ? `<img src=\"${post.image}\" alt=\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\">` : ''}\n                                </div>\n                                <div class=\"post-actions\">\n                                    <span onclick=\"likePost(${post.id}, this)\">\ud83d\udc4d <span class=\"like-count\">${post.likes}</span></span>\n                                    <span onclick=\"toggleComments(this, ${post.id})\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n                                </div>\n                                <div class=\"comments-section\" style=\"display: none; margin-top: 15px;\">\n                                    <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\" id=\"commentInput-${post.id}\">\n                                    <button onclick=\"addComment(${post.id})\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                                    <div class=\"comments-list\" id=\"commentsList-${post.id}\"></div>\n                                </div>\n                            `;\n                            document.getElementById('userPosts').appendChild(postElement);\n                        });\n                    }\n                })\n                .catch(error => {\n                    console.error('Error:', error);\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n        document.addEventListener('DOMContentLoaded', () => {\n            if (!currentUser) {\n                showSection('loginModal');\n            } else {\n                showSection('feed');\n            }\n        });\n\n    </script>\n\n</body>\n</html>\n```\n\n### \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u041a\u043e\u0434\u0430 \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430:\n\n- **\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f:** \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 `currentUser`.\n\n- **\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u041f\u043e\u0441\u0442\u043e\u0432:** \u041f\u043e\u0441\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 API \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u0441\u0442\u043e\u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440.\n\n- **\u041b\u0430\u0439\u043a\u0438 \u0438 \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438:** \u041b\u0430\u0439\u043a\u0438 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 API.\n\n- **\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430:** \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0445. (\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u044b\u0445 \u043f\u043e\u0441\u0442\u043e\u0432 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.)\n\n- **\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:** \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435 \u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u044b.\n\n- **\u0412\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440 \u0438 \u0410\u043d\u0438\u043c\u0435:** \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 API \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0435.\n\n## \u0428\u0430\u0433 4: \u0417\u0430\u043f\u0443\u0441\u043a \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\n\n1. **\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0411\u044d\u043a\u0435\u043d\u0434:**\n\n   \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f `app.py`, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n\n   ```bash\n   python app.py\n   ```\n\n   \u0411\u044d\u043a\u0435\u043d\u0434 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043d\u0430 [http://localhost:5000](http://localhost:5000).\n\n2. **\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434:**\n\n   \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b `index.html` \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 Python:\n\n   ```bash\n   python -m http.server 8000\n   ```\n\n   \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 [http://localhost:8000](http://localhost:8000) \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.\n\n## \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\n\n1. **\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c:**\n   - **\u0425\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041f\u0430\u0440\u043e\u043b\u0435\u0439:** \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a `werkzeug.security`, \u0434\u043b\u044f \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u0435\u0439.\n   - **JWT \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f:** \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f JWT \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\n   - **\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0438 \u0421\u0430\u043d\u0438\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0414\u0430\u043d\u043d\u044b\u0445:** \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0438 \u043e\u0447\u0438\u0449\u0430\u0439\u0442\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0430\u0442\u0430\u043a \u0442\u0438\u043f\u0430 SQL Injection \u0438 XSS.\n\n2. **\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439:**\n   - \u0412\u043c\u0435\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043a\u0430\u043a Base64 \u0441\u0442\u0440\u043e\u043a, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, AWS S3) \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.\n\n3. **\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438:**\n   - **\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u041f\u043e\u0441\u0442\u043e\u0432/\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u043e\u0432.**\n   - **\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438.**\n   - **\u0420\u0435\u0439\u0442\u0438\u043d\u0433\u0438 \u0438 \u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u0410\u043d\u0438\u043c\u0435.**\n   - **\u041f\u043e\u0438\u0441\u043a \u0438 \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u041a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.**\n\n4. **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432:**\n   - \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a React \u0438\u043b\u0438 Vue.js, \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438 \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430.\n\n## \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\n\n\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c \u043d\u0430 Flask \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c SQLite. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c `YOUR_GOOGLE_MAPS_API_KEY` \u043d\u0430 \u0432\u0430\u0448 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 Google.","behavior":"degenerate_repetition","conversation_hash":"af72c7e684dfb43bd5b1f13e8df3631d","conversation_redacted":false,"conversation_toxic":false,"country":"Russia","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"o1-mini-2024-09-12","n_chars":106197,"n_turns_in_conversation":1,"n_words":7409,"source_row_offset":21128,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:12 GMT","turn_id":"9a991c823c219f233bea645d","turn_index":0,"user_text":"\u0412\u043e\u0442 \u043c\u043e\u0439 \u0444\u0440\u043e\u043d\u0442 <!DOCTYPE html>\n<html lang=\"ru\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u0425\u0438\u043a\u0430 \u041c\u043e\u0440i - \u0410\u043d\u0438\u043c\u0435\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e</title>\n    <!-- \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Google Fonts -->\n    <link href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&family=Noto+Sans+JP:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n     <style>\n    </style>\n</head>\n<body>\n\n    <!-- \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c -->\n    <div class=\"navbar\">\n        <div class=\"logo\" onclick=\"showSection('feed')\">\u0425\u0438\u043a\u0430 \u041c\u043e\u0440i</div>\n        <div class=\"nav-icons\">\n            <span onclick=\"showSection('feed')\">\ud83c\udfe0 \u041b\u0435\u043d\u0442\u0430</span>\n            <span onclick=\"showSection('createPost')\">\u2795 \u0421\u043e\u0437\u0434\u0430\u0442\u044c</span>\n            <span onclick=\"showSection('animeWatch')\">\ud83c\udfa5 \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440</span>\n            <span onclick=\"showSection('community')\">\ud83d\udc65 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430</span>\n            <span onclick=\"showSection('profile')\">\ud83d\udc64 \u041f\u0440\u043e\u0444\u0438\u043b\u044c</span>\n        </div>\n    </div>\n\n    <!-- \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043b\u0435\u043d\u0442\u0430 -->\n    <div id=\"feed\" class=\"section active feed\">\n        <!-- \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u0442\u0430 -->\n        <div class=\"post\" data-post-id=\"1\">\n            <div class=\"post-header\">\n                <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                <strong>Anko_Lover</strong>\n            </div>\n            <div class=\"post-content\">\n                <img src=\"https://cdn.myanimelist.net/images/anime/10/47347.jpg\" alt=\"Attack on Titan\">\n                \u041e\u0431\u043e\u0436\u0430\u044e \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0437\u043e\u043d \"Attack on Titan\"! \u041a\u0430\u043a \u0432\u0430\u043c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0441\u044e\u0436\u0435\u0442\u0430?\n            </div>\n            <div class=\"post-actions\">\n                <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">0</span></span>\n                <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n            </div>\n            <div class=\"comments-section\" style=\"display: none; margin-top: 15px;\">\n                <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                <div class=\"comments-list\"></div>\n            </div>\n        </div>\n        <!-- \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u044b -->\n        <div class=\"post\" data-post-id=\"2\">\n            <div class=\"post-header\">\n                <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                <strong>Otaku_Girl</strong>\n            </div>\n            <div class=\"post-content\">\n                <img src=\"https://cdn.myanimelist.net/images/anime/1322/128099.jpg\" alt=\"Naruto Shippuden\">\n                \u041d\u043e\u0432\u044b\u0435 \u0441\u0435\u0440\u0438\u0438 \"Naruto Shippuden\" \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0443\u043f\u0435\u0440! \u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u043c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0441\u044e\u0436\u0435\u0442\u0430?\n            </div>\n            <div class=\"post-actions\">\n                <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">0</span></span>\n                <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n            </div>\n            <div class=\"comments-section\" style=\"display: none; margin-top: 15px;\">\n                <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                <div class=\"comments-list\"></div>\n            </div>\n        </div>\n        <!-- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 -->\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430 -->\n    <div id=\"createPost\" class=\"section create-post\">\n        <h2>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0441\u0442</h2>\n        <textarea id=\"postContent\" placeholder=\"\u0427\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0430 \u0443\u043c\u0435?\"></textarea>\n        <input type=\"file\" id=\"postImages\" accept=\"image/*\" multiple>\n        <button onclick=\"createPost()\">\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c</button>\n    </div>\n\n    <!-- \u0420\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0430\u043d\u0438\u043c\u0435 -->\n    <div id=\"animeWatch\" class=\"section anime-watch\">\n        <h2>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0410\u043d\u0438\u043c\u0435</h2>\n        <!-- \u041f\u043e\u0438\u0441\u043a \u0430\u043d\u0438\u043c\u0435 -->\n        <div class=\"search-bar\">\n            <input type=\"text\" id=\"searchAnime\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u0430\u043d\u0438\u043c\u0435...\">\n            <button onclick=\"searchAnime()\">\ud83d\udd0d</button>\n        </div>\n        <!-- \u0421\u043f\u0438\u0441\u043e\u043a \u0430\u043d\u0438\u043c\u0435 -->\n        <div class=\"anime-list\" id=\"animeList\">\n            <!-- \u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u043d\u0438\u043c\u0435 -->\n            <div class=\"anime-item\">\n                <img src=\"https://cdn.myanimelist.net/images/anime/1552/108717.jpg\" alt=\"Attack on Titan\">\n                <div class=\"anime-info\">\n                    <h3>Attack on Titan</h3>\n                    <p>\u042d\u043f\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0431\u043e\u0440\u044c\u0431\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u0438\u0442\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432.</p>\n                    <div class=\"anime-actions\">\n                        <span onclick=\"toggleFavorite(this)\">\u2b50 <span class=\"favorite-count\">0</span></span>\n                        <span onclick=\"showEpisodes(this)\">\ud83d\udcfa \u0421\u0435\u0440\u0438\u0438</span>\n                        <div class=\"rating\" onclick=\"rateAnime(event, this)\">\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- \u0414\u0440\u0443\u0433\u0438\u0435 \u0430\u043d\u0438\u043c\u0435 -->\n            <div class=\"anime-item\">\n                <img src=\"https://cdn.myanimelist.net/images/anime/13/17405.jpg\" alt=\"Naruto Shippuden\">\n                <div class=\"anime-info\">\n                    <h3>Naruto Shippuden</h3>\n                    <p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u041d\u0430\u0440\u0443\u0442\u043e \u0423\u0437\u0443\u043c\u0430\u043a\u0438 \u0438 \u0435\u0433\u043e \u0434\u0440\u0443\u0437\u0435\u0439 \u0432 \u043c\u0438\u0440\u0435 \u043d\u0438\u043d\u0434\u0437\u044f.</p>\n                    <div class=\"anime-actions\">\n                        <span onclick=\"toggleFavorite(this)\">\u2b50 <span class=\"favorite-count\">0</span></span>\n                        <span onclick=\"showEpisodes(this)\">\ud83d\udcfa \u0421\u0435\u0440\u0438\u0438</span>\n                        <div class=\"rating\" onclick=\"rateAnime(event, this)\">\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"anime-item\">\n                <img src=\"https://cdn.myanimelist.net/images/anime/5/73245.jpg\" alt=\"One Piece\">\n                <div class=\"anime-info\">\n                    <h3>One Piece</h3>\n                    <p>\u042d\u043f\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u041b\u0430\u0444\u0444\u0438 \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0440\u043e\u0432\u0438\u0449\u0430 - One Piece.</p>\n                    <div class=\"anime-actions\">\n                        <span onclick=\"toggleFavorite(this)\">\u2b50 <span class=\"favorite-count\">0</span></span>\n                        <span onclick=\"showEpisodes(this)\">\ud83d\udcfa \u0421\u0435\u0440\u0438\u0438</span>\n                        <div class=\"rating\" onclick=\"rateAnime(event, this)\">\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                            <span class=\"star\">&#9734;</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <!-- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0430\u043d\u0438\u043c\u0435 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 -->\n        </div>\n\n        <!-- \u0412\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440 -->\n        <div class=\"video-player\" id=\"videoPlayer\">\n            <div class=\"player-content\">\n                <button class=\"close-btn\" onclick=\"closeVideoPlayer()\">\u2716</button>\n                <video controls id=\"animeVideo\">\n                    <source src=\"\" type=\"video/mp4\">\n                    \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e.\n                </video>\n            </div>\n        </div>\n    </div>\n\n    <!-- \u0420\u0430\u0437\u0434\u0435\u043b \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 -->\n    <div id=\"community\" class=\"section community\">\n        <div class=\"community-header\">\n            <h2>\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430</h2>\n            <button onclick=\"openModal('createGroupModal')\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e</button>\n        </div>\n        <div class=\"groups-list\" id=\"groupsList\">\n            <!-- \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 -->\n            <div class=\"group-item\" onclick=\"openGroup('\u0410\u0442\u0430\u043a\u0430 \u0442\u0438\u0442\u0430\u043d\u043e\u0432')\">\n                <h3>\u0410\u0442\u0430\u043a\u0430 \u0442\u0438\u0442\u0430\u043d\u043e\u0432</h3>\n                <p>\u041e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c \u0432\u0441\u0451, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \"\u0410\u0442\u0430\u043a\u043e\u0439 \u0422\u0438\u0442\u0430\u043d\u043e\u0432\"!</p>\n                <div class=\"group-actions\">\n                    <span title=\"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435\">\ud83d\udd0d</span>\n                </div>\n            </div>\n            <div class=\"group-item\" onclick=\"openGroup('\u041d\u0430\u0440\u0443\u0442\u043e \u0428\u0438\u043f\u043f\u0443\u0434\u0435\u043d')\">\n                <h3>\u041d\u0430\u0440\u0443\u0442\u043e \u0428\u0438\u043f\u043f\u0443\u0434\u0435\u043d</h3>\n                <p>\u041f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041d\u0430\u0440\u0443\u0442\u043e \u0438 \u0435\u0433\u043e \u0434\u0440\u0443\u0437\u0435\u0439 \u0432 \u043c\u0438\u0440\u0435 \u043d\u0438\u043d\u0434\u0437\u044f.</p>\n                <div class=\"group-actions\">\n                    <span title=\"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435\">\ud83d\udd0d</span>\n                </div>\n            </div>\n            <!-- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 -->\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 (\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e) -->\n    <div class=\"modal\" id=\"createGroupModal\">\n        <div class=\"modal-content\">\n            <h2>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e</h2>\n            <input type=\"text\" id=\"groupName\" placeholder=\"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\">\n            <textarea id=\"groupDescription\" placeholder=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\"></textarea>\n            <div style=\"display: flex; justify-content: flex-end; width: 100%;\">\n                <button onclick=\"createGroup()\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c</button>\n                <button onclick=\"closeModal('createGroupModal')\" class=\"cancel-btn\">\u041e\u0442\u043c\u0435\u043d\u0430</button>\n            </div>\n        </div>\n    </div>\n\n    <!-- \u0421\u0435\u043a\u0446\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b -->\n    <div id=\"groupSection\" class=\"section group-section\">\n        <div class=\"group-header\">\n            <h2 id=\"currentGroupName\">\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430</h2>\n            <button id=\"createEventBtn\" onclick=\"openModal('createEventModal')\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435</button>\n        </div>\n        <div id=\"groupPosts\" class=\"feed\">\n            <!-- \u041f\u043e\u0441\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n            <!-- \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b -->\n            <div class=\"post\" data-post-id=\"group1\">\n                <div class=\"post-header\">\n                    <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                    <strong>\u0410\u0434\u043c\u0438\u043d \u0433\u0440\u0443\u043f\u043f\u044b</strong>\n                </div>\n                <div class=\"post-content\">\n                    \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\"! \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0432\u0441\u0451, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u044d\u0442\u0438\u043c \u0430\u043d\u0438\u043c\u0435.\n                </div>\n                <div class=\"post-actions\">\n                    <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">0</span></span>\n                    <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n                </div>\n                <div class=\"comments-section\" style=\"display: none; margin-top: 15px;\">\n                    <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                    <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                    <div class=\"comments-list\"></div>\n                </div>\n            </div>\n            <!-- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 -->\n        </div>\n        <h3>\u0421\u043e\u0431\u044b\u0442\u0438\u044f</h3>\n        <div class=\"events-list\" id=\"groupEvents\">\n            <!-- \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n        <!-- \u041a\u0430\u0440\u0442\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f -->\n        <div id=\"eventMap\" class=\"event-map\">\n            <!-- \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n        </div>\n    </div>\n\n    <!-- \u0424\u043e\u0440\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e) -->\n    <div class=\"modal\" id=\"createEventModal\">\n        <div class=\"modal-content\">\n            <h2>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435</h2>\n            <input type=\"text\" id=\"eventName\" placeholder=\"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\">\n            <textarea id=\"eventDescription\" placeholder=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\"></textarea>\n            <input type=\"text\" id=\"eventLocation\" placeholder=\"\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0430\u0434\u0440\u0435\u0441)\">\n            <input type=\"date\" id=\"eventDate\" placeholder=\"\u0414\u0430\u0442\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\">\n            <input type=\"time\" id=\"eventTime\" placeholder=\"\u0412\u0440\u0435\u043c\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f\">\n            <div style=\"display: flex; justify-content: flex-end; width: 100%;\">\n                <button onclick=\"createEvent()\">\u0421\u043e\u0437\u0434\u0430\u0442\u044c</button>\n                <button onclick=\"closeModal('createEventModal')\" class=\"cancel-btn\">\u041e\u0442\u043c\u0435\u043d\u0430</button>\n            </div>\n        </div>\n    </div>\n\n    <!-- \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -->\n    <div id=\"profile\" class=\"section profile\">\n        <h2>\u041f\u0440\u043e\u0444\u0438\u043b\u044c</h2>\n        <div class=\"profile-header\">\n            <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n            <div>\n                <h2>\u0418\u043c\u044f \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f</h2>\n                <p>@nik_name</p>\n            </div>\n        </div>\n        <div class=\"profile-content\">\n            <h3>\u041e \u0441\u0435\u0431\u0435</h3>\n            <p>\u041b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0430\u043d\u0438\u043c\u0435, \u043c\u0430\u043d\u0433\u0438 \u0438 \u0432\u0441\u0435\u0433\u043e \u044f\u043f\u043e\u043d\u0441\u043a\u043e\u0433\u043e! \ud83c\udf8c</p>\n            <h3>\u041c\u043e\u0438 \u043f\u043e\u0441\u0442\u044b</h3>\n            <!-- \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u043e\u0441\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c -->\n            <!-- \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -->\n            <div class=\"post\" data-post-id=\"user1\">\n                <div class=\"post-header\">\n                    <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                    <strong>\u0412\u044b</strong>\n                </div>\n                <div class=\"post-content\">\n                    <p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u043e\u0432\u044b\u0439 \u044d\u043f\u0438\u0437\u043e\u0434 \"One Piece\" \u2014 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e!</p>\n                </div>\n                <div class=\"post-actions\">\n                    <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">0</span></span>\n                    <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n                </div>\n                <div class=\"comments-section\" style=\"display: none; margin-top: 15px;\">\n                    <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                    <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                    <div class=\"comments-list\"></div>\n                </div>\n            </div>\n            <!-- \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 -->\n        </div>\n    </div>\n\n    <!-- \u0412\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440 -->\n    <div class=\"video-player\" id=\"videoPlayer\">\n        <div class=\"player-content\">\n            <button class=\"close-btn\" onclick=\"closeVideoPlayer()\">\u2716</button>\n            <video controls id=\"animeVideo\">\n                <source src=\"\" type=\"video/mp4\">\n                \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e.\n            </video>\n        </div>\n    </div>\n\n    <!-- \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Google Maps API -->\n    <script async\n        src=\"https://maps.googleapis.com/maps/api/js?key=YOUR_GOOGLE_MAPS_API_KEY&callback=initMap\">\n    </script>\n\n    <!-- JavaScript \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f -->\n    <script>\n        // \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u0440\u0442\u044b\n        let map;\n        let markers = [];\n\n        function initMap() {\n            map = new google.maps.Map(document.getElementById('eventMap'), {\n                center: { lat: 55.7558, lng: 37.6173 }, // \u0426\u0435\u043d\u0442\u0440 \u043a\u0430\u0440\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041c\u043e\u0441\u043a\u0432\u0430\n                zoom: 10\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0439\n        function showSection(sectionId) {\n            const sections = document.querySelectorAll('.section');\n            sections.forEach(section => {\n                if (section.id === sectionId) {\n                    section.classList.add('active');\n                } else {\n                    section.classList.remove('active');\n                }\n            });\n\n            // \u0421\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0441\u0435\u043a\u0446\u0438\u0439\n            const modals = document.querySelectorAll('.modal');\n            modals.forEach(modal => {\n                modal.style.display = 'none';\n            });\n\n            // \u0415\u0441\u043b\u0438 \u043d\u0435 \u0433\u0440\u0443\u043f\u043f\u0430, \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u044b\n            if (sectionId !== 'groupSection') {\n                document.getElementById('groupSection').style.display = 'none';\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430\n        function openModal(modalId) {\n            document.getElementById(modalId).style.display = 'flex';\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430\n        function closeModal(modalId) {\n            document.getElementById(modalId).style.display = 'none';\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430\n        function createPost() {\n            const content = document.getElementById('postContent').value.trim();\n            const imagesInput = document.getElementById('postImages');\n            const imageFiles = imagesInput.files;\n\n            if (content === \"\" && imageFiles.length === 0) {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u0442\u0430 \u0438\u043b\u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\");\n                return;\n            }\n\n            // \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e ID \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0430\n            const postId = Date.now().toString();\n\n            // \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0441\u0442\u0430\n            const post = document.createElement('div');\n            post.className = 'post';\n            post.setAttribute('data-post-id', postId);\n            post.style.opacity = '0';\n\n            const postHeader = document.createElement('div');\n            postHeader.className = 'post-header';\n            postHeader.innerHTML = `\n                <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                <strong>\u0412\u044b</strong>\n            `;\n\n            const postContent = document.createElement('div');\n            postContent.className = 'post-content';\n            if (content !== \"\") {\n                const text = document.createElement('p');\n                text.textContent = content;\n                postContent.appendChild(text);\n            }\n\n            if (imageFiles.length > 0) {\n                Array.from(imageFiles).forEach(file => {\n                    const reader = new FileReader();\n                    reader.onload = function(e) {\n                        const img = document.createElement('img');\n                        img.src = e.target.result;\n                        img.alt = \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\";\n                        postContent.appendChild(img);\n                    }\n                    reader.readAsDataURL(file);\n                });\n            }\n\n            const postActions = document.createElement('div');\n            postActions.className = 'post-actions';\n            postActions.innerHTML = `\n                <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">0</span></span>\n                <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n            `;\n\n            const commentsSection = document.createElement('div');\n            commentsSection.className = 'comments-section';\n            commentsSection.style.display = 'none';\n            commentsSection.innerHTML = `\n                <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                <div class=\"comments-list\"></div>\n            `;\n\n            post.appendChild(postHeader);\n            post.appendChild(postContent);\n            post.appendChild(postActions);\n            post.appendChild(commentsSection);\n\n            // \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043b\u0435\u043d\u0442\u044b\n            const feed = document.getElementById('feed');\n            feed.insertBefore(post, feed.firstChild);\n\n            // \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430 \u0432 LocalStorage (\u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438)\n            let posts = JSON.parse(localStorage.getItem('posts')) || [];\n            const newPost = {\n                id: postId,\n                author: \"\u0412\u044b\",\n                content: content,\n                images: [],\n                likes: 0\n            };\n            if (imageFiles.length > 0) {\n                Array.from(imageFiles).forEach(file => {\n                    const reader = new FileReader();\n                    reader.onload = function(e) {\n                        newPost.images.push(e.target.result);\n                        // \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439\n                        const img = document.createElement('img');\n                        img.src = e.target.result;\n                        img.alt = \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\";\n                        postContent.appendChild(img);\n                        // \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 LocalStorage\n                        localStorage.setItem('posts', JSON.stringify(posts));\n                    }\n                    reader.readAsDataURL(file);\n                });\n            }\n            posts.unshift(newPost);\n            localStorage.setItem('posts', JSON.stringify(posts));\n\n            // \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\n            setTimeout(() => {\n                post.style.opacity = '1';\n            }, 100);\n\n            // \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u0435\u043d\u0442\u0443\n            document.getElementById('postContent').value = \"\";\n            imagesInput.value = \"\";\n            showSection('feed');\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043b\u0430\u0439\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\n        function likePost(element) {\n            const likeCountSpan = element.querySelector('.like-count');\n            let count = parseInt(likeCountSpan.textContent);\n            count++;\n            likeCountSpan.textContent = count;\n            // \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0434\u0446\u0430\n            element.style.transform = 'scale(1.2)';\n            setTimeout(() => {\n                element.style.transform = 'scale(1)';\n            }, 200);\n\n            // \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043b\u0430\u0439\u043a\u0430 \u0432 LocalStorage\n            const post = element.closest('.post');\n            const postId = post.getAttribute('data-post-id');\n            let posts = JSON.parse(localStorage.getItem('posts')) || [];\n            const currentPost = posts.find(p => p.id === postId);\n            if (currentPost) {\n                currentPost.likes = count;\n                localStorage.setItem('posts', JSON.stringify(posts));\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432\n        function toggleComments(element) {\n            const commentsSection = element.parentElement.nextElementSibling;\n            if (commentsSection.style.display === 'none') {\n                commentsSection.style.display = 'block';\n                commentsSection.style.animation = 'fadeIn 0.5s ease-in';\n                loadComments(commentsSection);\n            } else {\n                commentsSection.style.display = 'none';\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\n        function addComment(button) {\n            const commentsSection = button.parentElement;\n            const commentInput = commentsSection.querySelector('.comment-input');\n            const commentText = commentInput.value.trim();\n            if (commentText === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439.\");\n                return;\n            }\n\n            const commentsList = commentsSection.querySelector('.comments-list');\n            const comment = document.createElement('div');\n            comment.style.padding = '10px 0';\n            comment.style.borderBottom = '1px solid #eee';\n            comment.textContent = commentText;\n            comment.style.opacity = '0';\n            comment.style.animation = 'fadeIn 0.3s forwards';\n            commentsList.appendChild(comment);\n\n            // \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0432 LocalStorage\n            const post = button.closest('.post');\n            const postId = post.getAttribute('data-post-id');\n            let comments = JSON.parse(localStorage.getItem(`comments-${postId}`)) || [];\n            comments.push(commentText);\n            localStorage.setItem(`comments-${postId}`, JSON.stringify(comments));\n\n            commentInput.value = \"\";\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0438\u0437 LocalStorage\n        function loadComments(commentsSection) {\n            const post = commentsSection.closest('.post');\n            const postId = post.getAttribute('data-post-id');\n            const comments = JSON.parse(localStorage.getItem(`comments-${postId}`)) || [];\n            const commentsList = commentsSection.querySelector('.comments-list');\n            commentsList.innerHTML = \"\";\n            comments.forEach(text => {\n                const comment = document.createElement('div');\n                comment.style.padding = '10px 0';\n                comment.style.borderBottom = '1px solid #eee';\n                comment.textContent = text;\n                comment.style.opacity = '0';\n                comment.style.animation = 'fadeIn 0.3s forwards';\n                commentsList.appendChild(comment);\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u043d\u0438\u043c\u0435\n        function searchAnime() {\n            const query = document.getElementById('searchAnime').value.toLowerCase();\n            const animeItems = document.querySelectorAll('.anime-item');\n\n            animeItems.forEach(item => {\n                const title = item.querySelector('.anime-info h3').textContent.toLowerCase();\n                if (title.includes(query)) {\n                    item.style.display = 'flex';\n                } else {\n                    item.style.display = 'none';\n                }\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0435\u0440\u0438\u0439\n        function showEpisodes(element) {\n            const animeItem = element.closest('.anime-item');\n            const animeTitle = animeItem.querySelector('.anime-info h3').textContent;\n            let episodes = [];\n\n            // \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\n            if (animeTitle === \"Attack on Titan\") {\n                episodes = [\n                    {number: 1, title: \"To You, in 2000 Years: The Fall of Shiganshina, Part 1\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    {number: 2, title: \"That Day: The Fall of Shiganshina, Part 2\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    {number: 3, title: \"A Dim Light Amid Despair: Humanity\u2019s Comeback, Part 1\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    // \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0435\u0440\u0438\u0439 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438\n                ];\n            } else if (animeTitle === \"Naruto Shippuden\") {\n                episodes = [\n                    {number: 1, title: \"Homecoming\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    {number: 2, title: \"The Akatsuki Makes Its Move\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    {number: 3, title: \"The Results of Training\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    // \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0435\u0440\u0438\u0439 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438\n                ];\n            } else if (animeTitle === \"One Piece\") {\n                episodes = [\n                    {number: 1, title: \"I'm Luffy! The Man Who's Gonna Be King of the Pirates!\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    {number: 2, title: \"Enter the Great Swordsman! Pirate Hunter Roronoa Zoro!\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    {number: 3, title: \"Morgan vs. Luffy! Who\u2019s the Mysterious Pretty Girl?\", video: \"https://www.w3schools.com/html/mov_bbb.mp4\"},\n                    // \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0435\u0440\u0438\u0439 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438\n                ];\n            }\n\n            // \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u0435\u0440\u0438\u0439\n            const episodesModal = document.createElement('div');\n            episodesModal.style.position = 'fixed';\n            episodesModal.style.top = '0';\n            episodesModal.style.left = '0';\n            episodesModal.style.width = '100%';\n            episodesModal.style.height = '100%';\n            episodesModal.style.backgroundColor = 'rgba(0,0,0,0.8)';\n            episodesModal.style.display = 'flex';\n            episodesModal.style.justifyContent = 'center';\n            episodesModal.style.alignItems = 'center';\n            episodesModal.style.zIndex = '3000';\n            episodesModal.style.animation = 'fadeIn 0.5s ease-in';\n\n            const modalContent = document.createElement('div');\n            modalContent.style.backgroundColor = 'var(--modal-bg-color)';\n            modalContent.style.padding = '25px 30px';\n            modalContent.style.borderRadius = '12px';\n            modalContent.style.width = '90%';\n            modalContent.style.maxWidth = '700px';\n            modalContent.style.maxHeight = '80%';\n            modalContent.style.overflowY = 'auto';\n            modalContent.style.position = 'relative';\n            modalContent.style.animation = 'slideIn 0.5s ease-out';\n            modalContent.style.boxShadow = '0 4px 8px var(--shadow-color)';\n            modalContent.style.backdropFilter = 'blur(5px)';\n\n            const closeBtn = document.createElement('button');\n            closeBtn.textContent = '\u2716';\n            closeBtn.style.position = 'absolute';\n            closeBtn.style.top = '15px';\n            closeBtn.style.right = '15px';\n            closeBtn.style.backgroundColor = 'var(--primary-color)';\n            closeBtn.style.color = '#fff';\n            closeBtn.style.border = 'none';\n            closeBtn.style.borderRadius = '50%';\n            closeBtn.style.width = '35px';\n            closeBtn.style.height = '35px';\n            closeBtn.style.fontSize = '18px';\n            closeBtn.style.cursor = 'pointer';\n            closeBtn.style.transition = 'background-color var(--transition-speed) ease, transform var(--transition-speed) ease, box-shadow var(--transition-speed) ease';\n            closeBtn.onclick = () => {\n                document.body.removeChild(episodesModal);\n            };\n\n            closeBtn.onmouseover = () => {\n                closeBtn.style.backgroundColor = 'var(--secondary-color)';\n                closeBtn.style.transform = 'scale(1.1)';\n                closeBtn.style.boxShadow = '0 2px 4px rgba(0,0,0,0.3)';\n            }\n\n            closeBtn.onmouseout = () => {\n                closeBtn.style.backgroundColor = 'var(--primary-color)';\n                closeBtn.style.transform = 'scale(1)';\n                closeBtn.style.boxShadow = 'none';\n            }\n\n            modalContent.appendChild(closeBtn);\n\n            const episodesList = document.createElement('ul');\n            episodesList.style.listStyle = 'none';\n            episodesList.style.padding = '0';\n            episodesList.style.width = '100%';\n\n            episodes.forEach(ep => {\n                const li = document.createElement('li');\n                li.style.marginBottom = '15px';\n\n                const btn = document.createElement('button');\n                btn.textContent = `\u042d\u043f\u0438\u0437\u043e\u0434 ${ep.number}: ${ep.title}`;\n                btn.style.width = '100%';\n                btn.style.padding = '15px';\n                btn.style.border = 'none';\n                btn.style.borderRadius = '8px';\n                btn.style.backgroundColor = 'var(--primary-color)';\n                btn.style.color = '#fff';\n                btn.style.cursor = 'pointer';\n                btn.style.transition = 'background-color var(--transition-speed) ease, transform var(--transition-speed) ease';\n                btn.style.fontSize = '16px';\n                btn.style.fontFamily = 'Roboto, sans-serif';\n\n                btn.onclick = () => {\n                    openVideoPlayer(ep.video);\n                    document.body.removeChild(episodesModal);\n                };\n\n                btn.onmouseover = () => {\n                    btn.style.backgroundColor = 'var(--secondary-color)';\n                    btn.style.transform = 'scale(1.05)';\n                }\n\n                btn.onmouseout = () => {\n                    btn.style.backgroundColor = 'var(--primary-color)';\n                    btn.style.transform = 'scale(1)';\n                }\n\n                li.appendChild(btn);\n                episodesList.appendChild(li);\n            });\n\n            modalContent.appendChild(episodesList);\n            episodesModal.appendChild(modalContent);\n            document.body.appendChild(episodesModal);\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440\u0430\n        function openVideoPlayer(videoUrl) {\n            const videoPlayer = document.getElementById('videoPlayer');\n            const videoElement = document.getElementById('animeVideo');\n            videoElement.src = videoUrl;\n            videoPlayer.style.display = 'flex';\n            videoElement.play();\n            videoPlayer.style.animation = 'fadeIn 0.5s ease-in';\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440\u0430\n        function closeVideoPlayer() {\n            const videoPlayer = document.getElementById('videoPlayer');\n            const videoElement = document.getElementById('animeVideo');\n            videoElement.pause();\n            videoElement.src = '';\n            videoPlayer.style.display = 'none';\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0435 \u0432 \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435\n        function toggleFavorite(element) {\n            const favoriteCountSpan = element.querySelector('.favorite-count');\n            let count = parseInt(favoriteCountSpan.textContent);\n            const animeItem = element.closest('.anime-item');\n\n            if (!element.classList.contains('favorite')) {\n                count++;\n                favoriteCountSpan.textContent = count;\n                element.classList.add('favorite');\n                // \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \"\u0437\u0432\u0435\u0437\u0434\u044b\"\n                element.style.transform = 'scale(1.2)';\n                setTimeout(() => {\n                    element.style.transform = 'scale(1)';\n                }, 200);\n            } else {\n                if (count > 0) {\n                    count--;\n                    favoriteCountSpan.textContent = count;\n                }\n                element.classList.remove('favorite');\n                // \u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f \"\u0437\u0432\u0435\u0437\u0434\u044b\"\n                element.style.transform = 'scale(0.8)';\n                setTimeout(() => {\n                    element.style.transform = 'scale(1)';\n                }, 200);\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u0430\u043d\u0438\u043c\u0435\n        function rateAnime(event, element) {\n            const stars = element.querySelectorAll('.star');\n            const rating = Array.from(stars).indexOf(event.target) + 1;\n\n            stars.forEach((star, index) => {\n                if (index < rating) {\n                    star.classList.add('selected');\n                } else {\n                    star.classList.remove('selected');\n                }\n            });\n\n            // \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\n        }\n\n        // \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0432\u0438\u0434\u0435\u043e-\u043f\u043b\u0435\u0435\u0440\u0430 \u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u043e\u043d \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430\n        window.onclick = function(event) {\n            const videoPlayer = document.getElementById('videoPlayer');\n            if (event.target == videoPlayer) {\n                closeVideoPlayer();\n            }\n\n            const modals = document.querySelectorAll('.modal');\n            modals.forEach(modal => {\n                if (event.target == modal) {\n                    modal.style.display = 'none';\n                }\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\n        function createGroup() {\n            const groupName = document.getElementById('groupName').value.trim();\n            const groupDescription = document.getElementById('groupDescription').value.trim();\n\n            if (groupName === \"\" || groupDescription === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f.\");\n                return;\n            }\n\n            // \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c\n            const existingGroups = document.querySelectorAll('.group-item h3');\n            for (let group of existingGroups) {\n                if (group.textContent.toLowerCase() === groupName.toLowerCase()) {\n                    alert(\"\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0441 \u0442\u0430\u043a\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.\");\n                    return;\n                }\n            }\n\n            // \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e ID \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u044b\n            const groupId = Date.now().toString();\n\n            // \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\n            const groupItem = document.createElement('div');\n            groupItem.className = 'group-item';\n            groupItem.setAttribute('data-group-id', groupId);\n            groupItem.onclick = () => openGroup(groupName);\n            groupItem.innerHTML = `\n                <h3>${groupName}</h3>\n                <p>${groupDescription}</p>\n                <div class=\"group-actions\">\n                    <span title=\"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435\">\ud83d\udd0d</span>\n                </div>\n            `;\n\n            document.getElementById('groupsList').appendChild(groupItem);\n\n            // \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0432 LocalStorage\n            let groups = JSON.parse(localStorage.getItem('groups')) || [];\n            groups.push({\n                id: groupId,\n                name: groupName,\n                description: groupDescription,\n                posts: [],\n                events: []\n            });\n            localStorage.setItem('groups', JSON.stringify(groups));\n\n            // \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u043b\u0435\u0439\n            closeModal('createGroupModal');\n            document.getElementById('groupName').value = \"\";\n            document.getElementById('groupDescription').value = \"\";\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b\n        function openGroup(groupName) {\n            // \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0438\n            const sections = document.querySelectorAll('.section');\n            sections.forEach(section => {\n                if (section.id === 'groupSection') {\n                    section.classList.add('active');\n                } else {\n                    section.classList.remove('active');\n                }\n            });\n\n            // \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430\n            const modals = document.querySelectorAll('.modal');\n            modals.forEach(modal => {\n                modal.style.display = 'none';\n            });\n\n            // \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b\n            document.getElementById('currentGroupName').textContent = groupName;\n\n            // \u041e\u0447\u0438\u0449\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u043e\u0441\u0442\u044b \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\n            document.getElementById('groupPosts').innerHTML = \"\";\n            document.getElementById('groupEvents').innerHTML = \"\";\n            document.getElementById('eventMap').innerHTML = \"\";\n\n            // \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0433\u0440\u0443\u043f\u043f\u0435 \u0438\u0437 LocalStorage\n            let groups = JSON.parse(localStorage.getItem('groups')) || [];\n            let currentGroup = groups.find(g => g.name === groupName);\n\n            if (!currentGroup) {\n                alert(\"\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.\");\n                showSection('community');\n                return;\n            }\n\n            // \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u0432 \u0433\u0440\u0443\u043f\u043f\u044b\n            currentGroup.posts.forEach(postData => {\n                const post = document.createElement('div');\n                post.className = 'post';\n                post.setAttribute('data-post-id', postData.id);\n\n                const postHeader = document.createElement('div');\n                postHeader.className = 'post-header';\n                postHeader.innerHTML = `\n                    <img src=\"${postData.avatar || 'https://i.imgur.com/8Km9tLL.jpg'}\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                    <strong>${postData.author}</strong>\n                `;\n\n                const postContent = document.createElement('div');\n                postContent.className = 'post-content';\n                if (postData.content) {\n                    const text = document.createElement('p');\n                    text.textContent = postData.content;\n                    postContent.appendChild(text);\n                }\n\n                if (postData.images && postData.images.length > 0) {\n                    postData.images.forEach(imgSrc => {\n                        const img = document.createElement('img');\n                        img.src = imgSrc;\n                        img.alt = \"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\";\n                        postContent.appendChild(img);\n                    });\n                }\n\n                const postActions = document.createElement('div');\n                postActions.className = 'post-actions';\n                postActions.innerHTML = `\n                    <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">${postData.likes || 0}</span></span>\n                    <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n                `;\n\n                const commentsSection = document.createElement('div');\n                commentsSection.className = 'comments-section';\n                commentsSection.style.display = 'none';\n                commentsSection.innerHTML = `\n                    <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                    <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                    <div class=\"comments-list\"></div>\n                `;\n\n                post.appendChild(postHeader);\n                post.appendChild(postContent);\n                post.appendChild(postActions);\n                post.appendChild(commentsSection);\n\n                document.getElementById('groupPosts').appendChild(post);\n            });\n\n            // \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0433\u0440\u0443\u043f\u043f\u044b\n            currentGroup.events.forEach(eventData => {\n                const eventItem = document.createElement('div');\n                eventItem.className = 'event-item';\n                eventItem.innerHTML = `\n                    <h3>${eventData.name}</h3>\n                    <p>${eventData.description}</p>\n                    <p><strong>\u041c\u0435\u0441\u0442\u043e:</strong> ${eventData.location}</p>\n                    <p><strong>\u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f:</strong> ${eventData.date} ${eventData.time}</p>\n                `;\n                document.getElementById('groupEvents').appendChild(eventItem);\n\n                // \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0443\n                if (eventData.latitude && eventData.longitude) {\n                    const marker = new google.maps.Marker({\n                        position: { lat: eventData.latitude, lng: eventData.longitude },\n                        map: map,\n                        title: eventData.name\n                    });\n\n                    const infoWindow = new google.maps.InfoWindow({\n                        content: `<h3>${eventData.name}</h3><p>${eventData.description}</p><p>${eventData.date} ${eventData.time}</p>`\n                    });\n\n                    marker.addListener('click', () => {\n                        infoWindow.open(map, marker);\n                    });\n\n                    markers.push(marker);\n                }\n            });\n\n            // \u0426\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0438 \u0438\u043b\u0438 \u043d\u0430 \u041c\u043e\u0441\u043a\u0432\u0435\n            if (currentGroup.events.length > 0) {\n                const lastEvent = currentGroup.events[currentGroup.events.length - 1];\n                if (lastEvent.latitude && lastEvent.longitude) {\n                    map.setCenter({ lat: lastEvent.latitude, lng: lastEvent.longitude });\n                }\n            } else {\n                map.setCenter({ lat: 55.7558, lng: 37.6173 }); // \u041c\u043e\u0441\u043a\u0432\u0430\n            }\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f\n        function createEvent() {\n            const eventName = document.getElementById('eventName').value.trim();\n            const eventDescription = document.getElementById('eventDescription').value.trim();\n            const eventLocation = document.getElementById('eventLocation').value.trim();\n            const eventDate = document.getElementById('eventDate').value;\n            const eventTime = document.getElementById('eventTime').value;\n\n            if (eventName === \"\" || eventDescription === \"\" || eventLocation === \"\" || eventDate === \"\" || eventTime === \"\") {\n                alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f.\");\n                return;\n            }\n\n            // \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Geocoding API\n            fetch(`https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(eventLocation)}&key=YOUR_GOOGLE_MAPS_API_KEY`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.status === \"OK\") {\n                        const location = data.results[0].geometry.location;\n\n                        // \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435\n                        const marker = new google.maps.Marker({\n                            position: location,\n                            map: map,\n                            title: eventName\n                        });\n\n                        const infoWindow = new google.maps.InfoWindow({\n                            content: `<h3>${eventName}</h3><p>${eventDescription}</p><p>${eventDate} ${eventTime}</p>`\n                        });\n\n                        marker.addListener('click', () => {\n                            infoWindow.open(map, marker);\n                        });\n\n                        markers.push(marker);\n\n                        // \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b\n                        const currentGroupName = document.getElementById('currentGroupName').textContent;\n                        let groups = JSON.parse(localStorage.getItem('groups')) || [];\n                        let currentGroup = groups.find(g => g.name === currentGroupName);\n\n                        if (!currentGroup) {\n                            alert(\"\u041e\u0448\u0438\u0431\u043a\u0430: \u0433\u0440\u0443\u043f\u043f\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.\");\n                            return;\n                        }\n\n                        // \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0443\n                        const newEvent = {\n                            id: Date.now().toString(),\n                            name: eventName,\n                            description: eventDescription,\n                            location: eventLocation,\n                            date: eventDate,\n                            time: eventTime,\n                            latitude: location.lat,\n                            longitude: location.lng\n                        };\n                        currentGroup.events.push(newEvent);\n                        localStorage.setItem('groups', JSON.stringify(groups));\n\n                        // \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439\n                        const eventItem = document.createElement('div');\n                        eventItem.className = 'event-item';\n                        eventItem.innerHTML = `\n                            <h3>${eventName}</h3>\n                            <p>${eventDescription}</p>\n                            <p><strong>\u041c\u0435\u0441\u0442\u043e:</strong> ${eventLocation}</p>\n                            <p><strong>\u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f:</strong> ${eventDate} ${eventTime}</p>\n                        `;\n                        document.getElementById('groupEvents').appendChild(eventItem);\n\n                        // \u0426\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0438\n                        map.setCenter(location);\n\n                        // \u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u043e\u043b\u0435\u0439\n                        closeModal('createEventModal');\n                        document.getElementById('eventName').value = \"\";\n                        document.getElementById('eventDescription').value = \"\";\n                        document.getElementById('eventLocation').value = \"\";\n                        document.getElementById('eventDate').value = \"\";\n                        document.getElementById('eventTime').value = \"\";\n                    } else {\n                        alert(\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.\");\n                    }\n                })\n                .catch(error => {\n                    console.error(\"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442:\", error);\n                    alert(\"\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f.\");\n                });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n        document.addEventListener('DOMContentLoaded', () => {\n            loadPostsFromLocalStorage();\n            loadGroupsFromLocalStorage();\n        });\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0441\u0442\u043e\u0432 \u0438\u0437 LocalStorage\n        function loadPostsFromLocalStorage() {\n            let posts = JSON.parse(localStorage.getItem('posts')) || [];\n            const feed = document.getElementById('feed');\n\n            posts.forEach(postData => {\n                const post = document.createElement('div');\n                post.className = 'post';\n                post.setAttribute('data-post-id', postData.id);\n\n                const postHeader = document.createElement('div');\n                postHeader.className = 'post-header';\n                postHeader.innerHTML = `\n                    <img src=\"https://i.imgur.com/8Km9tLL.jpg\" alt=\"\u0410\u0432\u0430\u0442\u0430\u0440\">\n                    <strong>${postData.author}</strong>\n                `;\n\n                const postContent = document.createElement('div');\n                postContent.className = 'post-content';\n                if (postData.content) {\n                    const text = document.createElement('p');\n                    text.textContent = postData.content;\n                    postContent.appendChild(text);\n                }\n\n                if (postData.images && postData.images.length > 0) {\n                    postData.images.forEach(imgSrc => {\n                        const img = document.createElement('img');\n                        img.src = imgSrc;\n                        img.alt = \"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\";\n                        postContent.appendChild(img);\n                    });\n                }\n\n                const postActions = document.createElement('div');\n                postActions.className = 'post-actions';\n                postActions.innerHTML = `\n                    <span onclick=\"likePost(this)\">\ud83d\udc4d <span class=\"like-count\">${postData.likes || 0}</span></span>\n                    <span onclick=\"toggleComments(this)\">\ud83d\udcac \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438</span>\n                `;\n\n                const commentsSection = document.createElement('div');\n                commentsSection.className = 'comments-section';\n                commentsSection.style.display = 'none';\n                commentsSection.innerHTML = `\n                    <input type=\"text\" placeholder=\"\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439...\" class=\"comment-input\">\n                    <button onclick=\"addComment(this)\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c</button>\n                    <div class=\"comments-list\"></div>\n                `;\n\n                post.appendChild(postHeader);\n                post.appendChild(postContent);\n                post.appendChild(postActions);\n                post.appendChild(commentsSection);\n\n                feed.appendChild(post);\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0433\u0440\u0443\u043f\u043f \u0438\u0437 LocalStorage\n        function loadGroupsFromLocalStorage() {\n            let groups = JSON.parse(localStorage.getItem('groups')) || [];\n            const groupsList = document.getElementById('groupsList');\n\n            groups.forEach(group => {\n                const groupItem = document.createElement('div');\n                groupItem.className = 'group-item';\n                groupItem.setAttribute('data-group-id', group.id);\n                groupItem.onclick = () => openGroup(group.name);\n                groupItem.innerHTML = `\n                    <h3>${group.name}</h3>\n                    <p>${group.description}</p>\n                    <div class=\"group-actions\">\n                        <span title=\"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435\">\ud83d\udd0d</span>\n                    </div>\n                `;\n                groupsList.appendChild(groupItem);\n            });\n        }\n\n        // \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432 LocalStorage\n        function saveComments(postId, comments) {\n            localStorage.setItem(`comments-${postId}`, JSON.stringify(comments));\n        }\n    </script>\n\n</body>\n</html>\n\u043d\u0430\u043f\u0438\u0448\u0438 \u043d\u0430 \u043f\u0430\u0439\u0442\u043e\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u043b\u0430\u0441\u043a \u0438 litelsql \u0431\u044d\u043a \u0438 \u043d\u0430\u043f\u0438\u0448\u0438 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0444\u0440\u043e\u043d\u0442\u0430 \u0438 \u0431\u044d\u043a\u0430 "},{"assistant_initiates":false,"asst_text":"\u041e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \"\u0447\u0442\u043e \u044f \u0437\u0434\u0435\u0441\u044c \u0438\u0449\u0443\" \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0447\u0435\u0441\u0442\u043d\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0446\u0435\u043b\u0438. \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432:\n\n1. **\u0427\u0435\u0441\u0442\u043d\u044b\u0439 \u0438 \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u0432\u0435\u0442:** \n   - \"\u042f \u0438\u0449\u0443 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043c\u043e\u0433\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u044b \u0438 \u0436\u0438\u0442\u0435\u0439\u0441\u043a\u0438\u0435 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438.\"\n   - \"\u042f \u0437\u0434\u0435\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0441\u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430\u0448\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u0435.\"\n\n2. **\u0418\u0433\u0440\u0438\u0432\u044b\u0439 \u0438 \u043b\u0435\u0433\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434:**\n   - \"\u0418\u0449\u0443 \u043a\u043e\u0433\u043e-\u0442\u043e, \u043a\u0442\u043e \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u044f \u0445\u043e\u0447\u0443 \u043d\u0430 \u0443\u0436\u0438\u043d.\"\n   - \"\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u043f\u0430\u0440\u043d\u0438\u0446\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0438\u043a\u0442\u043e\u0440\u0438\u043d\u0430\u0445!\"\n\n3. **\u0418\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u043e\u0431\u0449\u0435\u043d\u0438\u044e:**\n   - \"\u0412\u0430\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f.\"\n   - \"\u0418\u0449\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u044e\u0431\u0438\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435.\"\n\n4. **\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b:** \n   - \"\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u043b\u044e\u0434\u0435\u0439, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f.\"\n\n\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u044b \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f, \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0439\u0442\u0435\u0441\u044c \u0431\u044b\u0442\u044c \u0438\u0441\u043a\u0440\u0435\u043d\u043d\u0438\u043c \u0441 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043d\u0438\u0446\u0435\u0439.","behavior":"degenerate_repetition","conversation_hash":"62bf79222604be43418ae1d1e887d8f2","conversation_redacted":false,"conversation_toxic":false,"country":"Russia","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Russian","model":"gpt-4o-2024-08-06","n_chars":1172,"n_turns_in_conversation":1,"n_words":175,"source_row_offset":21129,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:14 GMT","turn_id":"11ecc7f3745ca1bf0c3692c7","turn_index":0,"user_text":"\u0417\u043d\u0430\u043a\u043e\u043c\u043b\u044e\u0441\u044c \u0441 \u0434\u0435\u0432\u0443\u0448\u043a\u043e\u0439 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432. \u041e\u043d\u0430 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \"\u0447\u0442\u043e \u044f \u0437\u0434\u0435\u0441\u044c \u0438\u0449\u0443? \". \u041a\u0430\u043a \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c "},{"assistant_initiates":false,"asst_text":"### **Case Summary and Evaluation**\n\nBased on the provided case research documentation, you are currently involved in a legal dispute with your sister concerning the partition of ancestral property. The key aspects of the case are as follows:\n\n1. **Previous Adjudications:**\n   - **Maintenance Tribunal & Appellate Tribunal Orders:** These bodies, under the Senior Citizens Act, 2007, have already deliberated on property rights and maintenance concerning your father. In March 2023, the Appellate Tribunal restored the property to your father, reinforcing his rights under the Act.\n   \n2. **High Court Writ Petition (WP 7925 of 2023):**\n   - **Admissions by Sister:** In her writ petition, your sister acknowledged that properties transferred to you by your father were rightfully yours. Despite this acknowledgment, she is now seeking a 1/3rd share in the ancestral property through a separate civil partition suit.\n   - **Current Status:** The writ petition is still pending in the High Court. However, her prior admissions potentially undermine her current claims in the partition suit.\n\n3. **Civil Partition Suit (OS 143 of 2024):**\n   - **Sister's Claims:** She is attempting to claim a 1/3rd share in the same properties previously acknowledged as yours in her writ petition.\n   - **Legal Grounds for Defense:**\n     - **Res Judicata:** The principle prevents re-litigation of matters already adjudicated between the same parties. Given the Appellate Tribunal's prior decisions and her admissions in the writ petition, her partition claim may be barred.\n     - **Section 27 of the Senior Citizens Act, 2007:** This section restricts civil courts from intervening in matters already addressed under the Act, potentially rendering her partition suit non-viable.\n     - **Judicial Admissions & Estoppel:** Her earlier admissions in sworn affidavits could prevent her from making contradictory claims without substantial evidence to the contrary.\n     - **Abuse of Process & Forum Shopping:** Filing multiple suits on the same subject matter across different forums may be perceived as an attempt to manipulate the judicial system, weakening her position.\n     - **Suppression of Material Facts:** Her failure to disclose prior proceedings may be grounds for dismissal based on the doctrine of clean hands.\n\n### **Assessment of Case Analysis and Research Notes**\n\nYour case research documentation is **comprehensive and well-structured**, addressing multiple legal angles to challenge your sister's partition suit. Here's an evaluation based on key elements:\n\n1. **Identification of Legal Issues:**\n   - **Res Judicata:** Clearly explained with references to relevant sections of the Code of Civil Procedure (CPC).\n   - **Jurisdictional Challenges:** Detailed analysis of Section 27 of the Senior Citizens Act and its implications on civil court jurisdiction.\n   - **Judicial Admissions and Estoppel:** Properly connected to the Indian Evidence Act to solidify the defense.\n   - **Procedural Defenses:** Including forum shopping and abuse of process, which are pertinent to the case.\n\n2. **Legal Options and Strategies:**\n   - **Invocation of Res Judicata and Estoppel:** Appropriately suggested as primary defenses.\n   - **Challenging Maintainability:** Addressed through jurisdictional arguments and procedural rules.\n   - **Emphasis on Prior Tribunal Orders:** Strengthens the defense by highlighting previous adjudications.\n\n3. **Supporting Legal Provisions:**\n   - **CPC, Senior Citizens Act, Indian Evidence Act:** Appropriately cited to back each legal argument.\n\n4. **Conclusion and Action Points:**\n   - **Clear Call to Action:** Emphasizes the need for swift legal maneuvers to dismiss the partition suit.\n   - **Integration with Writ Proceedings:** Suggests leveraging the ongoing High Court proceedings to further weaken the sister's claims.\n\n### **Prima Facie Assessment**\n\n**Prima Facie Case Against Sister's Partition Suit:**\n\n- **Strong Foundations:**\n  - **Prior Adjudications:** The property rights have been previously addressed by the Maintenance Tribunal and the Appellate Tribunal, making the partition suit potentially meritless under the doctrine of res judicata.\n  - **Judicial Admissions:** Your sister's acknowledgment in the writ petition that the properties transferred to you are yours significantly weakens her current claim for a 1/3rd share.\n  - **Jurisdictional Barriers:** Section 27 of the Senior Citizens Act effectively limits the civil court's authority to entertain her partition suit.\n  - **Estoppel and Abuse of Process:** Her contradictory actions across different legal forums may be viewed unfavorably by the court, bolstering the defense's position.\n\n- **Potential Challenges:**\n  - **High Court Pending:** The writ petition is still pending, and a favorable outcome there would further support your defense. However, reliance on a pending case entails some uncertainty.\n  - **Evidence of Suppression:** Demonstrating that your sister intentionally suppressed material facts may require substantial evidence.\n\nOverall, **there appears to be a strong prima facie case** against your sister's partition suit based on the documented facts and relevant legal principles.\n\n### **Suggestions for Further Improvements**\n\nWhile your case research is robust, enhancing it in the following areas could further strengthen your defense:\n\n1. **Detailed Timeline:**\n   - **Chronological Order of Events:** Presenting a clear timeline of all legal proceedings, property transfers, and tribunal orders can help in illustrating the sequence of admissions and decisions.\n   \n2. **Evidence Compilation:**\n   - **Documentary Evidence:** Gather all relevant documents, including the gift deeds, tribunal orders, writ affidavits, and any communications between family members regarding the property.\n   - **Affidavits Highlighting Admissions:** Ensure that your sister's admissions in the writ petition are clearly highlighted and annotated for easy reference during legal proceedings.\n\n3. **Expert Opinions:**\n   - **Legal Precedents:** Cite relevant case laws where similar defenses (res judicata, estoppel, etc.) have been successfully employed against partition suits.\n   - **Statutory Interpretations:** Include interpretations of the Senior Citizens Act by legal experts or previous case judgments to reinforce jurisdictional arguments.\n\n4. **Addressing Potential Counterarguments:**\n   - **Likely Claims by Sister:** Anticipate arguments your sister might present, such as changes in circumstances or new evidence, and prepare counter-responses.\n   - **Maintenance Obligations:** Clarify how the existing maintenance orders are unaffected by the partition suit to preempt challenges related to maintenance claims.\n\n5. **Strengthening Procedural Defenses:**\n   - **Highlighting Abuse of Process:** Provide specific instances or patterns that demonstrate an ongoing attempt to misuse the legal system.\n   - **Emphasizing Judicial Economy:** Argue how dismissing the suit would conserve judicial resources and uphold legal efficiency.\n\n6. **Emotional and Personal Factors:**\n   - **Impact on Family Relations:** While primarily a legal matter, subtly highlighting the familial discord caused by the litigation might garner sympathetic consideration, though this should be approached cautiously to maintain professionalism.\n\n7. **Alternative Dispute Resolution (ADR):**\n   - **Mediation Records:** If any attempts at mediation or negotiation were made, include records to show willingness to resolve disputes amicably, strengthening the argument against forum shopping.\n\n8. **Expediting Legal Actions:**\n   - **Timely Filings:** Ensure all motions to dismiss or challenges to jurisdiction are filed promptly to avoid delays that could be exploited by the opposing party.\n\n### **Conclusion**\n\nYour case research provides a solid foundation for defending against your sister's civil partition suit. The arguments based on res judicata, jurisdictional bar under the Senior Citizens Act, judicial admissions, estoppel, and abuse of process are well-articulated and supported by relevant legal provisions. To further fortify your position, consider incorporating additional evidence, expert opinions, and addressing potential counterarguments proactively. Collaborating closely with your advocate to implement these strategies will enhance the effectiveness of your defense and increase the likelihood of a favorable outcome.","behavior":"degenerate_repetition","conversation_hash":"e6846ab3f4932ebfdd9ba353560e92eb","conversation_redacted":false,"conversation_toxic":false,"country":"United Kingdom","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"English","model":"o1-mini-2024-09-12","n_chars":19187,"n_turns_in_conversation":1,"n_words":2892,"source_row_offset":21130,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:33 GMT","turn_id":"fd3a659d19be06d539615ab7","turn_index":0,"user_text":"Can you evaluate and assess the below my case research documentation and summarize the case so that I understand whether this research has captured enough case analysis and research notes for my advocate in civil partition suit to advise me and take necessary steps to defend the case? Is there a prima faci case in my sister's civil partition suit based on the facts and law documented in the below case research notes? Also suggest any further improvements to below case research based on the gaps you may find or strengths you see in defending the case against my sister.\n\n\nAssessed the case against the backdrop of both the writ petition in the High Court (WP 7925 of 2023) and the civil partition suit (OS 143 of 2024). Here's the preliminary analysis:\n\nKey Legal Issues:\n\n1. Res Judicata: \nThe Maintenance Tribunal and the Appellate Tribunal under the Senior Citizens Act, 2007, have already adjudicated issues regarding the property rights and maintenance of my father. The Appellate Tribunal, in its March 2023 order, restored the property to my father based on his right under the Senior Citizens Act, and my sister had the opportunity to challenge this through her writ petition.\n\nThe writ petition in the High Court, where my sister acknowledged that the properties my father transferred to me were mine, and where she sought a 1/3rd share in the ancestral property, has been pending in high court. However, her earlier admissions in the writ affidavit weaken her current claim for a share in the same properties in the partition suit.\n\nUnder Section 11 of the CPC (the doctrine of res judicata), any claim regarding the same property and the same parties that has already been adjudicated cannot be reopened. My sister\u2019s filing of a partition suit for 1/3rd share may be barred if it is proven that the property rights have already been settled by the Appellate Tribunal or that the same issues are being raised in the writ petition which is the case in hand.\n\n2. Civil Court Jurisdiction Under Section 27 of the Senior Citizens Act, 2007:\n\nSection 27 explicitly bars civil courts from entertaining any matter related to the Senior Citizens Act, which would include my father's rights over the property restored to him by the Appellate Tribunal. This means that the partition suit filed by my sister in the civil court may be barred because the Appellate Tribunal's order has already dealt with property rights under the Senior Citizens Act. The civil court cannot adjudicate on matters that fall under this Act.\n\nSince the tribunal\u2019s decision restored the property to my father and allowed him to transfer it to me under a gift deed, the civil partition suit may be seen as challenging an issue already settled by a competent authority under a special statute, making it non-maintainable in civil court.\n\n3. Writ Petition and Judicial Admissions:\n\nIn my sister's writ petition (WP 7925 of 2023), she made key admissions regarding the properties transferred to me by my father. Her current attempt to claim a share in these properties through the partition suit contradicts her earlier stance. Judicial admissions, especially those made in sworn affidavits, are binding on the party making them unless shown otherwise through convincing evidence.\nUnder Order 12 Rule 6 of the Code of Civil Procedure, 1908, admissions made in pleadings, including affidavits, can be used to grant summary judgement. If the admission made in the affidavit is clear, unequivocal, and unambiguous, it may serve as the basis for dismissing the new claims without a full trial.\nThe courts are generally not favourable toward plaintiffs who change their stance for personal gain after admitting facts under oath, and such tactics may result in the dismissal of the new claims or adverse rulings.\nThe rejection of her Reply Affidavit and Additional Affidavit in the High Court further weakens her position, and the acceptance of my father\u2019s counter-affidavit and my counter-affidavit supports my/our argument that the writ petition lacks merit.\n4. Judicial Estoppel (Estoppel by Record):\nThe principle of estoppel prevents a person from asserting something contrary to what they previously stated or agreed to by their words, actions, or legal documents (such as a writ affidavit). In this case, the plaintiff, by admitting the property rights of the defendants in the writ affidavit, may be estopped from later contradicting that admission for personal gain.\nSection 115 of the Indian Evidence Act, 1872, specifically deals with estoppel and could be invoked. This provision bars a party from denying the truth of a statement they have made when another person/respondents has relied on that statement to their detriment (via Counter Affidavits in writ petition).\n\n5. Implication of the Maintenance Tribunal\u2019s Orders:\n\nThe Maintenance Tribunal and the Appellate Tribunal have already factored in the property transfers while deciding the maintenance obligations and restoration of property to my father. My sister\u2019s failure to honor the maintenance order, as well as her failure to challenge the gift deeds within the proper forum, undermines her claim in the civil court.\n\n6. Suppression of Material Facts:\nThe plaintiff has suppressed material facts by not disclosing the existence of the writ petition and the Appellate Tribunal\u2019s order under the Senior Citizens Act, 2007, to the civil court.\nCourts have repeatedly held that suppression of material facts amounts to abuse of the legal process and is sufficient ground for the dismissal of the suit. The doctrine of clean hands applies in both civil and writ proceedings.\n7. Forum Shopping:\nThe plaintiff is engaging in forum shopping by filing multiple proceedings (the writ petition in the High Court and the partition suit in the civil court) involving the same parties and the same subject matter.\nForum shopping is seen as an attempt to manipulate the judicial process to get favourable orders from different courts. It undermines the integrity of the legal system and the principle of judicial economy. This is not permissible under Indian law.\n8. Abuse of Process of Law:\nWe/Defendants/Respondents can argue that by taking contradictory stances in two different courts, my sister is engaging in an abuse of the judicial process. Filing a civil suit for property share after admitting the properties belonged to me and my father (A1.86 at that time) in the High Court amounts to vexatious litigation.\nWe/Defendants/Respondents can request the civil court to dismiss the suit on this ground, stating that such contradictory actions waste judicial time and resources.\n9. Impact on Her Maintenance Case:\nMy sister\u2019s position regarding maintenance is also undermined by her contradictory claims in different legal proceedings. In the High Court writ petition, she used the ownership of the properties as a defence to avoid paying maintenance, claiming those were mine and my father's properties. By claiming a share in the same properties in the civil suit, she is undercutting the argument made in the High Court.\nWe should argue that this inconsistency further weakens her defence in the maintenance case, as her credibility is now under question.\n\nLegal Options:\n\n1. Use of Res Judicata: In our/defendants defense against the civil partition suit, we should invoke the doctrine of res judicata as the same issues regarding the property have already been addressed by the Maintenance Tribunal and the Appellate Tribunal under the Senior Citizens Act. The civil court cannot reopen these matters, especially given that the Senior Citizens Act bars its jurisdiction under Section 27.\n\n2. Challenge the Maintainability of the Civil Partition Suit: We/defendants should file an application (I.A) before the civil court to dismiss my sister\u2019s partition suit (OS 143 of 2024) on the grounds of:\nLack of jurisdiction, as Section 27 of the Senior Citizens Act bars the civil court from hearing any matters covered under the Act.\nRes judicata, given that the same parties and property rights were already adjudicated by the Appellate Tribunal and are being litigated in the High Court writ petition.\nThe principle of judicial discipline requires that lower courts wait for the outcome of proceedings in higher courts when the same matter is at issue.\nThe we/respondents may file an application under Order VI Rule 16 of the CPC for striking out the contradictory pleadings or for dismissal of the suit under Order VII Rule 11 for lack of cause of action if the contradictions are fundamental.\n\n3. Argue Judicial Admissions: In both the writ petition and the partition suit, emphasize my sister\u2019s admissions regarding the property transferred to me. The High Court has already accepted our/respondents counter-affidavit, which relies on these admissions, and this strengthens our argument that her partition claim is contradictory and should be dismissed.\n4. Estoppel (Section 115 of the Indian Evidence Act, 1872): The principle of estoppel prevents a party from denying or contradicting statements they previously made, especially when others have relied on those statements. If a plaintiff admits the property rights of the defendants in an affidavit, they may be barred from later claiming rights over the same property for personal gain. Estoppel can be invoked to prevent them from asserting something contrary to their earlier admission.\n5. Abuse of Process of Law: It can be argued that my sister, by taking contradictory stances in two different courts, is engaging in an abuse of the judicial process. She has filed a civil suit for a share in the properties after admitting in the High Court that these properties belonged to me and my father. This amounts to vexatious litigation. We should request the civil court to dismiss the suit on this ground, as such contradictory actions waste judicial time and resources.\n6. Expedite the Writ Petition: Since the writ petition is already pending, we continue pressing our arguments based on the Appellate Tribunal\u2019s ruling and my sister's judicial admissions. Any favorable decision in the High Court can further weaken her partition claim.\n\nConclusion:\n\nThe civil partition suit appears to be a second attempt by my sister to claim a share in the property despite the matter having already been adjudicated under the Senior Citizens Act, 2007. By relying on res judicata, the bar on civil jurisdiction under Section 27 of the Act, and my sister\u2019s judicial admissions, we/defendants/respondents have a strong basis to challenge her claims both in the civil court and the High Court.\n\nI/We want you to take swift action to file for dismissal of the partition suit on these grounds and strengthen our case in the ongoing High Court proceedings.\n"},{"assistant_initiates":false,"asst_text":"El gobierno espa\u00f1ol no suele cubrir el costo de repatriaci\u00f3n en casos de accidentes en el extranjero, como podr\u00eda ser un accidente en Tailandia en el que quedes en coma inducido. Sin embargo, si tienes un seguro de viaje, este podr\u00eda cubrir el costo de la repatriaci\u00f3n m\u00e9dica.\n\nTe recomiendo que te pongas en contacto con tu compa\u00f1\u00eda de seguros y con el consulado o embajada espa\u00f1ola en Tailandia. Ellos pueden ofrecerte informaci\u00f3n espec\u00edfica sobre tu situaci\u00f3n y asesorarte sobre los pasos a seguir. Tambi\u00e9n es importante que informes a tu familia o a alguien cercano para que puedan ayudar en la gesti\u00f3n de la situaci\u00f3n.","behavior":"degenerate_repetition","conversation_hash":"085cc5b173edd979b3fe6b6d85e8f65d","conversation_redacted":false,"conversation_toxic":false,"country":"Spain","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Spanish","model":"gpt-4o-mini-2024-07-18","n_chars":777,"n_turns_in_conversation":5,"n_words":131,"source_row_offset":21131,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:57 GMT","turn_id":"f4657e47722dfc1cd5b2b9fb","turn_index":0,"user_text":"Si soy espa\u00f1ola y tengo un accidente en tailandia, que me deja en coma inducido, el gobierno espa\u00f1ol paga aviones medicos para accidentados en tailandia?"},{"assistant_initiates":false,"asst_text":"S\u00ed, puedes solicitar asistencia al consulado o embajada espa\u00f1ola en el pa\u00eds donde te encuentres. Sin embargo, es importante tener en cuenta que el consulado no est\u00e1 obligado a cubrir todos los costos de repatriaci\u00f3n, y generalmente no proporciona servicios m\u00e9dicos ni transportes. La repatriaci\u00f3n suele ser responsabilidad del viajero o de su seguro de viaje.\n\nSi est\u00e1s en una situaci\u00f3n de emergencia, el consulado puede ayudarte de las siguientes maneras:\n\n1. **Asesor\u00eda y apoyo**: Te ofrecer\u00e1n informaci\u00f3n sobre los recursos disponibles, como hospitales, servicios m\u00e9dicos y otras asistencias necesarias.\n\n2. **Facilitaci\u00f3n de tr\u00e1mites**: Pueden ayudarte con la documentaci\u00f3n necesaria para organizar un vuelo de regreso.\n\n3. **Contacto con familiares**: Pueden ayudar a comunicarte con tus familiares y mantenerles informados sobre tu situaci\u00f3n.\n\n4. **Recomendaciones de seguros**: Si no cuentas con un seguro de viaje, pueden darte recomendaciones sobre c\u00f3mo proceder.\n\nRecuerda que es muy recomendable tener un seguro de viaje que cubra emergencias m\u00e9dicas y repatriaci\u00f3n antes de viajar al extranjero.","behavior":"degenerate_repetition","conversation_hash":"085cc5b173edd979b3fe6b6d85e8f65d","conversation_redacted":false,"conversation_toxic":false,"country":"Spain","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Spanish","model":"gpt-4o-mini-2024-07-18","n_chars":1161,"n_turns_in_conversation":5,"n_words":171,"source_row_offset":21132,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:57 GMT","turn_id":"226f7906c7a33b20f62c9718","turn_index":1,"user_text":"Se puede pedir al consulado espa\u00f1ol que te repatrien?"},{"assistant_initiates":false,"asst_text":"El costo de un d\u00eda en la universidad en Tailandia puede variar significativamente dependiendo de varios factores, como la universidad espec\u00edfica, el programa de estudio, si eres un estudiante nacional o internacional, y el estilo de vida del estudiante. Aqu\u00ed tienes una idea general de los costos involucrados:\n\n1. **Matr\u00edcula**: La matr\u00edcula anual para estudiantes internacionales puede estar en el rango de 1,000 a 20,000 USD, dependiendo de la universidad y el programa. Eso se traduce aproximadamente en 3,300 a 66,600 THB al a\u00f1o.\n\n2. **Gastos diarios**: Los gastos diarios, que incluyen comida, transporte, materiales de estudio y otros gastos, pueden variar, pero un estudiante promedio podr\u00eda gastar entre 300 y 1,000 THB al d\u00eda, dependiendo de su estilo de vida y sus gastos personales.\n\n3. **Alojamiento**: Si incluyes el costo del alojamiento, este puede variar ampliamente. Los dormitorios universitarios pueden costar entre 1,500 y 6,000 THB al mes, mientras que los apartamentos privados pueden ser m\u00e1s caros, dependiendo de la ubicaci\u00f3n.\n\nSi necesitas una estimaci\u00f3n m\u00e1s precisa, ser\u00eda \u00fatil especificar el tipo de universidad y programa, as\u00ed como tus necesidades y preferencias personales. Adem\u00e1s, siempre es recomendable investigar y planificar con anticipaci\u00f3n para tener una mejor idea del costo total.","behavior":"degenerate_repetition","conversation_hash":"085cc5b173edd979b3fe6b6d85e8f65d","conversation_redacted":false,"conversation_toxic":false,"country":"Spain","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Spanish","model":"gpt-4o-mini-2024-07-18","n_chars":1370,"n_turns_in_conversation":5,"n_words":210,"source_row_offset":21133,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:57 GMT","turn_id":"36bc58850d87f08b3092545e","turn_index":2,"user_text":"Cuanto cuesta 1 d\u00eda en la universidad en tailandia"},{"assistant_initiates":false,"asst_text":"Los costos de atenci\u00f3n m\u00e9dica en la unidad de cuidados intensivos (UCI) de un hospital en Tailandia pueden ser bastante altos y var\u00edan dependiendo del hospital, la gravedad de la enfermedad o lesi\u00f3n, el tiempo que se pase en cuidados intensivos y el tipo de tratamiento requerido.\n\n1. **Costo diario en UCI**: En Tailandia, los costos diarios de estancia en una UCI pueden variar desde alrededor de 20,000 THB (aproximadamente 600 USD) hasta m\u00e1s de 50,000 THB (aproximadamente 1,500 USD) o incluso m\u00e1s. Esto depender\u00e1 de si el hospital es privado o p\u00fablico, y de los servicios incluidos, como atenci\u00f3n m\u00e9dica, medicaci\u00f3n, y otros tratamientos.\n\n2. **Tratamientos adicionales**: Si tu situaci\u00f3n requiere procedimientos adicionales o tratamientos especializados, los costos pueden aumentar considerablemente.\n\nEn el caso de un accidente grave que requiera hospitalizaci\u00f3n en la UCI, es fundamental contar con un buen seguro m\u00e9dico que cubra estos gastos, ya que pueden acumularse r\u00e1pidamente. Si est\u00e1s en esta situaci\u00f3n, la embajada o consulado puede tambi\u00e9n ofrecer asistencia y orientaci\u00f3n sobre c\u00f3mo proceder, especialmente en t\u00e9rminos de seguros y pagos.","behavior":"degenerate_repetition","conversation_hash":"085cc5b173edd979b3fe6b6d85e8f65d","conversation_redacted":false,"conversation_toxic":false,"country":"Spain","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Spanish","model":"gpt-4o-mini-2024-07-18","n_chars":1179,"n_turns_in_conversation":5,"n_words":182,"source_row_offset":21134,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:57 GMT","turn_id":"c5e5fcd8f3a4d8709fad2d91","turn_index":3,"user_text":"En la uci del hospital"},{"assistant_initiates":false,"asst_text":"El costo de repatriar a una persona en coma desde Tailandia a Espa\u00f1a puede variar considerablemente dependiendo de varios factores, como la gravedad de la condici\u00f3n del paciente, el tipo de transporte (vuelo comercial con asistencia m\u00e9dica o un vuelo m\u00e9dico especializado), y otros requisitos m\u00e9dicos.\n\n1. **Vuelos m\u00e9dicos**: Si se necesita un vuelo m\u00e9dico especializado, los costos pueden oscilar entre 20,000 a 100,000 USD (aproximadamente 18,000 a 90,000 EUR) o m\u00e1s. Esto incluir\u00eda atenci\u00f3n m\u00e9dica a bordo, equipo m\u00e9dico y personal m\u00e9dico especializado.\n\n2. **Vuelos comerciales**: Si la condici\u00f3n del paciente lo permite y se opta por un vuelo comercial con asistencia m\u00e9dica (es decir, con un profesional de la salud que lo acompa\u00f1e), los costos pueden ser significativamente menores, pero a\u00fan as\u00ed podr\u00edan estar en el rango de 5,000 a 30,000 USD (aproximadamente 4,500 a 27,000 EUR) dependiendo de los arreglos necesarios.\n\n3. **Gastos adicionales**: Adem\u00e1s de los costos del vuelo, tambi\u00e9n pueden surgir otros gastos, como tarifas de hospital, preparaci\u00f3n de la documentaci\u00f3n necesaria para la repatriaci\u00f3n y cualquier equipo m\u00e9dico adicional que se pueda requerir.\n\nEs recomendable que las familias verifiquen y se coordinen con su seguro m\u00e9dico, ya que algunos seguros de salud pueden cubrir parte o la totalidad de los costos de repatriaci\u00f3n. Tambi\u00e9n es esencial contactar a la embajada o consulado espa\u00f1ol en Tailandia para recibir asistencia y orientaci\u00f3n en estas situaciones complicadas.","behavior":"degenerate_repetition","conversation_hash":"085cc5b173edd979b3fe6b6d85e8f65d","conversation_redacted":false,"conversation_toxic":false,"country":"Spain","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Spanish","model":"gpt-4o-mini-2024-07-18","n_chars":1569,"n_turns_in_conversation":5,"n_words":244,"source_row_offset":21135,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:57 GMT","turn_id":"5036772d1edd2a185a63a9c5","turn_index":4,"user_text":"Cua to cuesta repatria r a una persona en coma de tailandia a espa\u00f1a"},{"assistant_initiates":false,"asst_text":"\u041e\u043d\u0430 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0435\u0442\u0438, \u0440\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0435 \u043e\u0442 \u0438\u043d\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0435\u0439, \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c. \u041f\u0435\u0440\u0438\u043e\u0434 \u0431\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0432\u044f\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u0438 \u043b\u044e\u0431\u043e\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043d\u043e\u0440\u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0434\u043b\u044f \u0440\u0435\u0431\u0435\u043d\u043a\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0435\u0441\u043d\u0435\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0445 \u043e\u0441\u043e\u0431\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0437\u0434\u0440\u0430\u0432\u043e\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u0440\u0438\u0437\u0438\u0441\u043e\u0432. \u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0443\u044e \u043f\u043e\u043c\u043e\u0449\u044c.","behavior":"degenerate_repetition","conversation_hash":"d1b40b99f7b6246028f051fb0a6eda43","conversation_redacted":false,"conversation_toxic":false,"country":"Spain","empty_output":false,"evidence_codes":[],"label":"absent","label_present":false,"label_qualified":false,"label_source":"Final dense release","language":"Russian","model":"gpt-4o-2024-08-06","n_chars":1945,"n_turns_in_conversation":1,"n_words":261,"source_row_offset":21136,"source_shard":"turns-00035.parquet","timestamp":"Thu, 17 Oct 2024 06:36:58 GMT","turn_id":"bd9809e4e6cbd29ff91c8a50","turn_index":0,"user_text":"\u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0435\u0433\u043e \u043e\u0431\u0449\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f: \u0420\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0443\u044e \u043b\u0435\u043a\u0441\u0438\u043a\u0443, \u041f\u0435\u0440\u0435\u0444\u0440\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043b\u043e\u0432 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438, \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u044f\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f: \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u0430\u0442\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0444\u0440\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u0430\u0439\u0437\u0435\u0440\u043e\u0432, \u0421\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443, \u041d\u0438 \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435, \u0443\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u0435\u0441\u044c \u043c\u0443\u0441\u043e\u0440 \u0432\u0440\u043e\u0434\u0435 \u0441\u0441\u044b\u043b\u043e\u043a, \u0441\u043d\u043e\u0441\u043e\u043a, \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u0432. \u0420\u0430\u0437\u0431\u0435\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0430\u0431\u0437\u0430\u0446\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 markdown. \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0412\u043e\u0442 \u0441\u0430\u043c \u0442\u0435\u043a\u0441\u0442: \n\"We've shown that the misconception that uninfected babies born from infected mothers are fine, is sometimes just that: a misconception,\" she says. \"Pregnancy is such a vulnerable nine-month period where any change from the norm can cause long-term impacts on the baby, so we need to work more closely with these individuals to understand their unique healthcare needs during public health crises. It's the only way to make sure they receive the care they need.\" Source: Cleveland Clinic Journal reference: Azamor, T., et al. (2024). Transplacental SARS-CoV-2 protein ORF8 binds to complement C1q to trigger fetal inflammation. The EMBO Journal. doi.org/10.1038/s44318-024-00260-9."}],"shard":{"index":35,"name":"turns-00035.parquet","rows":56995}}
