Spaces:
Sleeping
Sleeping
Add FastAPI service, Dockerfile and README
Browse files- Dockerfile +26 -0
- README.md +37 -0
- app/main.py +217 -0
- app/static/assets/Coat_of_Arms_of_Khoroshevo-Mnevniki_(municipality_in_Moscow).png +3 -0
- app/static/assets/Moscow,_Mnevniki_Street.JPG +3 -0
- app/static/assets/Schinozaurus.jpg +3 -0
- app/static/assets/Wikipedia_interwiki_section_gear_icon.svg.png +3 -0
- app/static/assets/load.css +0 -0
- app/static/assets/load1.js +23 -0
- app/static/assets/load2.css +1 -0
- app/static/assets/load3.css +1 -0
- app/static/assets/load4.css +1 -0
- app/static/assets/mediawiki_compact.svg +30 -0
- app/static/assets/wikimedia.svg +1 -0
- app/static/assets/wikipedia-tagline-ru.svg +1 -0
- app/static/assets/wikipedia-wordmark-ru.svg +1 -0
- app/static/assets/wikipedia.png +3 -0
- app/static/assets/Начало_ул._Мнёвники_(площадь_Маршала_Бабаджаняна,_перекрёсток_с_проспектом_Маршала_Жукова.jpg +3 -0
- app/templates/index.html +0 -0
- app/templates/search.html +212 -0
Dockerfile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.10-slim
|
| 2 |
+
|
| 3 |
+
# Set up a new user named "user" with user ID 1000
|
| 4 |
+
RUN useradd -m -u 1000 user
|
| 5 |
+
USER user
|
| 6 |
+
ENV PATH="/home/user/.local/bin:$PATH"
|
| 7 |
+
|
| 8 |
+
WORKDIR /app
|
| 9 |
+
|
| 10 |
+
# Install CPU-only torch to save space and download time
|
| 11 |
+
# We need torch>=2.6.0 to fix the CVE-2025-32434 vulnerability, but PyTorch 2.6.0+ CPU wheels
|
| 12 |
+
# haven't been published to the main index yet or have dependency issues.
|
| 13 |
+
# Instead, we install the latest torch 2.6+ from the default PyPI index, but force CPU-only.
|
| 14 |
+
RUN pip install --no-cache-dir torch torchvision --extra-index-url https://download.pytorch.org/whl/cpu
|
| 15 |
+
|
| 16 |
+
# Install requirements
|
| 17 |
+
COPY --chown=user ./requirements.txt /app/requirements.txt
|
| 18 |
+
# Remove torch from requirements.txt to avoid reinstalling the heavy CUDA version
|
| 19 |
+
RUN sed -i '/^torch$/d' /app/requirements.txt && \
|
| 20 |
+
pip install --no-cache-dir --upgrade -r /app/requirements.txt
|
| 21 |
+
|
| 22 |
+
# Copy the rest of the application
|
| 23 |
+
COPY --chown=user . /app
|
| 24 |
+
|
| 25 |
+
# Command to run the FastAPI application on port 7860
|
| 26 |
+
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]
|
README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Image2Wiki
|
| 3 |
+
emoji: 🖼️
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: green
|
| 6 |
+
sdk: docker
|
| 7 |
+
pinned: false
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
# Image2Wiki
|
| 11 |
+
|
| 12 |
+
[](https://huggingface.co/spaces/letitbE/image2wiki)
|
| 13 |
+
|
| 14 |
+
Image2Wiki is a service that generates Wikipedia-style articles based on an uploaded image. It uses a fine-tuned VisionEncoderDecoder model (`tuman/vit-rugpt2-image-captioning` with a LoRA adapter) to generate structured text (title, lead, sections, paragraphs) from images.
|
| 15 |
+
|
| 16 |
+
## Features
|
| 17 |
+
- FastAPI based web service
|
| 18 |
+
- Wikipedia-like UI for generated articles
|
| 19 |
+
- Fine-tuned model for structured article generation
|
| 20 |
+
|
| 21 |
+
## Setup
|
| 22 |
+
|
| 23 |
+
1. Install dependencies:
|
| 24 |
+
```bash
|
| 25 |
+
pip install -r requirements.txt
|
| 26 |
+
```
|
| 27 |
+
|
| 28 |
+
2. Run the service:
|
| 29 |
+
```bash
|
| 30 |
+
uvicorn app.main:app --port 8013 --reload
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
## Project Structure
|
| 34 |
+
- `app/` - FastAPI application and UI templates
|
| 35 |
+
- `adapted_best_embed2/` - Fine-tuned LoRA adapter weights
|
| 36 |
+
- `collect_data.py` & `collect_data_async.py` - Scripts for collecting training data
|
| 37 |
+
- `finetune.ipynb` - Notebook used for fine-tuning the model
|
app/main.py
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import json
|
| 3 |
+
import random
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from PIL import Image
|
| 6 |
+
|
| 7 |
+
from fastapi import FastAPI, Request, File, UploadFile
|
| 8 |
+
from fastapi.responses import HTMLResponse
|
| 9 |
+
from fastapi.staticfiles import StaticFiles
|
| 10 |
+
from fastapi.templating import Jinja2Templates
|
| 11 |
+
import shutil
|
| 12 |
+
import uuid
|
| 13 |
+
|
| 14 |
+
import torch
|
| 15 |
+
from transformers import VisionEncoderDecoderModel, AutoTokenizer, AutoImageProcessor
|
| 16 |
+
from peft import PeftModel
|
| 17 |
+
|
| 18 |
+
app = FastAPI()
|
| 19 |
+
|
| 20 |
+
app.mount("/static", StaticFiles(directory="app/static"), name="static")
|
| 21 |
+
templates = Jinja2Templates(directory="app/templates")
|
| 22 |
+
|
| 23 |
+
# --- Model Loading ---
|
| 24 |
+
MODEL_NAME = 'tuman/vit-rugpt2-image-captioning'
|
| 25 |
+
ADAPTER_DIR = 'letitbE/image2wiki-adapter'
|
| 26 |
+
DATA_ROOT = Path('.')
|
| 27 |
+
|
| 28 |
+
print("Loading base model...")
|
| 29 |
+
base_model = VisionEncoderDecoderModel.from_pretrained(MODEL_NAME)
|
| 30 |
+
print("Loading tokenizer and feature extractor...")
|
| 31 |
+
try:
|
| 32 |
+
tok = AutoTokenizer.from_pretrained(ADAPTER_DIR)
|
| 33 |
+
except:
|
| 34 |
+
tok = AutoTokenizer.from_pretrained(MODEL_NAME)
|
| 35 |
+
fe = AutoImageProcessor.from_pretrained(MODEL_NAME)
|
| 36 |
+
|
| 37 |
+
print("Resizing embeddings...")
|
| 38 |
+
base_model.decoder.resize_token_embeddings(len(tok))
|
| 39 |
+
|
| 40 |
+
print("Loading LoRA adapter...")
|
| 41 |
+
try:
|
| 42 |
+
base_model.decoder = PeftModel.from_pretrained(base_model.decoder, ADAPTER_DIR)
|
| 43 |
+
except Exception as e:
|
| 44 |
+
print(f"WARNING: Could not load adapter {ADAPTER_DIR}: {e}. Using base model.")
|
| 45 |
+
base_model.eval()
|
| 46 |
+
|
| 47 |
+
# --- Data Loading ---
|
| 48 |
+
print("Loading dataset...")
|
| 49 |
+
valid_arts = []
|
| 50 |
+
try:
|
| 51 |
+
with open('data/metadata.jsonl', 'r', encoding='utf-8') as f:
|
| 52 |
+
for line in f:
|
| 53 |
+
art = json.loads(line)
|
| 54 |
+
img_path = Path(art.get('image_path', ''))
|
| 55 |
+
if not img_path.is_absolute():
|
| 56 |
+
img_path = DATA_ROOT / img_path
|
| 57 |
+
if img_path.exists():
|
| 58 |
+
valid_arts.append(art)
|
| 59 |
+
print(f"Found {len(valid_arts)} valid articles with images.")
|
| 60 |
+
except Exception as e:
|
| 61 |
+
print(f"Error loading dataset: {e}")
|
| 62 |
+
|
| 63 |
+
def build_target(article):
|
| 64 |
+
# Same logic as in finetune.ipynb
|
| 65 |
+
parts = []
|
| 66 |
+
if article.get('title'):
|
| 67 |
+
parts.append(f"<title>{article['title']}")
|
| 68 |
+
if article.get('lead'):
|
| 69 |
+
parts.append(f"<lead>{article['lead']}")
|
| 70 |
+
for sec in article.get('sections', []):
|
| 71 |
+
if sec.get('title'):
|
| 72 |
+
parts.append(f"<section>{sec['title']}")
|
| 73 |
+
if sec.get('text'):
|
| 74 |
+
parts.append(f"<paragraph>{sec['text']}")
|
| 75 |
+
return "\n".join(parts)
|
| 76 |
+
|
| 77 |
+
def parse_generated_text(text):
|
| 78 |
+
"""Parses the raw generated text into HTML for the Wikipedia template."""
|
| 79 |
+
title = "Сгенерированная статья"
|
| 80 |
+
|
| 81 |
+
# Extract title if present
|
| 82 |
+
if text.startswith('<title>'):
|
| 83 |
+
parts = text.split('<title>', 1)[1]
|
| 84 |
+
# Find next tag
|
| 85 |
+
next_tag_idx = len(parts)
|
| 86 |
+
for tag in ['<lead>', '<section>', '<paragraph>']:
|
| 87 |
+
idx = parts.find(tag)
|
| 88 |
+
if idx != -1 and idx < next_tag_idx:
|
| 89 |
+
next_tag_idx = idx
|
| 90 |
+
title = parts[:next_tag_idx].strip()
|
| 91 |
+
text = parts[next_tag_idx:]
|
| 92 |
+
elif '<lead>' in text:
|
| 93 |
+
title = text.split('<lead>')[0].strip()
|
| 94 |
+
text = '<lead>' + text.split('<lead>', 1)[1]
|
| 95 |
+
|
| 96 |
+
# Replace tags with HTML
|
| 97 |
+
html = text
|
| 98 |
+
html = html.replace('<lead>', '<p>')
|
| 99 |
+
html = html.replace('<paragraph>', '</p><p>')
|
| 100 |
+
|
| 101 |
+
toc_items = []
|
| 102 |
+
|
| 103 |
+
def section_replacer(match):
|
| 104 |
+
content = match.group(1)
|
| 105 |
+
# Split by first period or newline
|
| 106 |
+
split_idx = len(content)
|
| 107 |
+
period_idx = content.find('.')
|
| 108 |
+
if period_idx != -1:
|
| 109 |
+
split_idx = period_idx + 1
|
| 110 |
+
|
| 111 |
+
heading = content[:split_idx].strip()
|
| 112 |
+
rest = content[split_idx:].strip()
|
| 113 |
+
|
| 114 |
+
sec_id = heading.replace(' ', '_').replace('"', '').replace("'", "")
|
| 115 |
+
toc_items.append((sec_id, heading))
|
| 116 |
+
|
| 117 |
+
res = f'</p><div class="mw-heading mw-heading2"><h2 id="{sec_id}">{heading}</h2></div>'
|
| 118 |
+
if rest:
|
| 119 |
+
res += f'<p>{rest}'
|
| 120 |
+
return res
|
| 121 |
+
|
| 122 |
+
import re
|
| 123 |
+
html = re.sub(r'<section>(.*?)(?=<section>|<paragraph>|<lead>|$)', section_replacer, html, flags=re.DOTALL)
|
| 124 |
+
|
| 125 |
+
# Clean up empty paragraphs
|
| 126 |
+
html = html.replace('<p></p>', '')
|
| 127 |
+
if not html.endswith('</p>'):
|
| 128 |
+
html += '</p>'
|
| 129 |
+
|
| 130 |
+
# Generate TOC HTML
|
| 131 |
+
toc_html = ""
|
| 132 |
+
for i, (sec_id, heading) in enumerate(toc_items, 1):
|
| 133 |
+
toc_html += f'''
|
| 134 |
+
<li id="toc-{sec_id}" class="vector-toc-list-item vector-toc-level-1">
|
| 135 |
+
<a class="vector-toc-link" href="#{sec_id}">
|
| 136 |
+
<div class="vector-toc-text">
|
| 137 |
+
<span class="vector-toc-numb">{i}</span>
|
| 138 |
+
<span>{heading}</span>
|
| 139 |
+
</div>
|
| 140 |
+
</a>
|
| 141 |
+
</li>
|
| 142 |
+
'''
|
| 143 |
+
|
| 144 |
+
return title, html, toc_html
|
| 145 |
+
|
| 146 |
+
def generate_article_raw(image, model, tokenizer, feature_extractor):
|
| 147 |
+
pixel_values = feature_extractor(images=image, return_tensors="pt").pixel_values
|
| 148 |
+
|
| 149 |
+
with torch.no_grad():
|
| 150 |
+
output_ids = model.generate(
|
| 151 |
+
pixel_values,
|
| 152 |
+
max_new_tokens=512,
|
| 153 |
+
# Для локального тестирования на CPU отключаем beam search (num_beams=1)
|
| 154 |
+
# чтобы генерация работала в разы быстрее
|
| 155 |
+
num_beams=1,
|
| 156 |
+
no_repeat_ngram_size=3,
|
| 157 |
+
decoder_start_token_id=tokenizer.bos_token_id,
|
| 158 |
+
eos_token_id=tokenizer.eos_token_id,
|
| 159 |
+
pad_token_id=tokenizer.eos_token_id,
|
| 160 |
+
)
|
| 161 |
+
|
| 162 |
+
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=False)
|
| 163 |
+
# Remove bos/eos
|
| 164 |
+
generated_text = generated_text.replace(tokenizer.bos_token, '').replace(tokenizer.eos_token, '').strip()
|
| 165 |
+
return generated_text
|
| 166 |
+
|
| 167 |
+
@app.get("/", response_class=HTMLResponse)
|
| 168 |
+
async def read_root(request: Request):
|
| 169 |
+
return templates.TemplateResponse(request, "search.html", {})
|
| 170 |
+
|
| 171 |
+
@app.post("/generate", response_class=HTMLResponse)
|
| 172 |
+
async def generate_article(request: Request, image: UploadFile = File(...)):
|
| 173 |
+
# Save the uploaded image temporarily
|
| 174 |
+
upload_dir = Path("app/static/uploads")
|
| 175 |
+
upload_dir.mkdir(parents=True, exist_ok=True)
|
| 176 |
+
|
| 177 |
+
file_ext = image.filename.split('.')[-1] if '.' in image.filename else 'jpg'
|
| 178 |
+
filename = f"{uuid.uuid4()}.{file_ext}"
|
| 179 |
+
file_path = upload_dir / filename
|
| 180 |
+
|
| 181 |
+
with open(file_path, "wb") as buffer:
|
| 182 |
+
shutil.copyfileobj(image.file, buffer)
|
| 183 |
+
|
| 184 |
+
# Open image for the model
|
| 185 |
+
try:
|
| 186 |
+
pil_image = Image.open(file_path).convert('RGB')
|
| 187 |
+
|
| 188 |
+
# Generate text
|
| 189 |
+
print(f"Generating article for {filename}...")
|
| 190 |
+
generated_raw = generate_article_raw(pil_image, base_model, tok, fe)
|
| 191 |
+
|
| 192 |
+
if not generated_raw.startswith('<title>'):
|
| 193 |
+
generated_raw = "<title>" + generated_raw
|
| 194 |
+
|
| 195 |
+
title, content_html, toc_html = parse_generated_text(generated_raw)
|
| 196 |
+
|
| 197 |
+
except Exception as e:
|
| 198 |
+
print(f"Error during generation: {e}")
|
| 199 |
+
title = "Ошибка генерации"
|
| 200 |
+
content_html = f"<p>Произошла ошибка при создании статьи: {str(e)}</p>"
|
| 201 |
+
toc_html = ""
|
| 202 |
+
|
| 203 |
+
img_url = f"/static/uploads/{filename}"
|
| 204 |
+
|
| 205 |
+
return templates.TemplateResponse(request, "index.html", {
|
| 206 |
+
"title": title,
|
| 207 |
+
"content": content_html,
|
| 208 |
+
"toc": toc_html,
|
| 209 |
+
"image_url": img_url,
|
| 210 |
+
"target_text": ""
|
| 211 |
+
})
|
| 212 |
+
|
| 213 |
+
# Mount the root directory to serve images
|
| 214 |
+
import os
|
| 215 |
+
|
| 216 |
+
if os.path.exists("data"):
|
| 217 |
+
app.mount("/data", StaticFiles(directory="data"), name="data")
|
app/static/assets/Coat_of_Arms_of_Khoroshevo-Mnevniki_(municipality_in_Moscow).png
ADDED
|
Git LFS Details
|
app/static/assets/Moscow,_Mnevniki_Street.JPG
ADDED
|
|
Git LFS Details
|
app/static/assets/Schinozaurus.jpg
ADDED
|
Git LFS Details
|
app/static/assets/Wikipedia_interwiki_section_gear_icon.svg.png
ADDED
|
|
Git LFS Details
|
app/static/assets/load.css
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
app/static/assets/load1.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
function isCompatible(){return!!('querySelector'in document&&'localStorage'in window&&typeof Promise==='function'&&Promise.prototype['finally']&&/./g.flags==='g'&&(function(){try{new Function('async (a = 0,) => a');return true;}catch(e){return false;}}()));}if(!isCompatible()){document.documentElement.className=document.documentElement.className.replace(/(^|\s)client-js(\s|$)/,'$1client-nojs$2');while(window.NORLQ&&NORLQ[0]){NORLQ.shift()();}NORLQ={push:function(fn){fn();}};RLQ={push:function(){}};}else{if(window.performance&&performance.mark){performance.mark('mwStartup');}(function(){'use strict';var con=window.console;function Map(){this.values=Object.create(null);}Map.prototype={constructor:Map,get:function(selection,fallback){if(arguments.length<2){fallback=null;}if(typeof selection==='string'){return selection in this.values?this.values[selection]:fallback;}var results;if(Array.isArray(selection)){results={};for(var i=0;i<selection.length;i++){if(typeof selection[i]==='string'){
|
| 2 |
+
results[selection[i]]=selection[i]in this.values?this.values[selection[i]]:fallback;}}return results;}if(selection===undefined){results={};for(var key in this.values){results[key]=this.values[key];}return results;}return fallback;},set:function(selection,value){if(arguments.length>1){if(typeof selection==='string'){this.values[selection]=value;return true;}}else if(typeof selection==='object'){for(var key in selection){this.values[key]=selection[key];}return true;}return false;},exists:function(selection){return typeof selection==='string'&&selection in this.values;}};var log=function(){};log.warn=Function.prototype.bind.call(con.warn,con);var mw={now:function(){var perf=window.performance;var navStart=perf&&perf.timing&&perf.timing.navigationStart;mw.now=navStart&&perf.now?function(){return navStart+perf.now();}:Date.now;return mw.now();},trackQueue:[],trackError:function(data){if(mw.track){mw.track('resourceloader.exception',data);}else{mw.trackQueue.push({topic:'resourceloader.exception',args:[data]});
|
| 3 |
+
}var e=data.exception;var msg=(e?'Exception':'Error')+' in '+data.source+(data.module?' in module '+data.module:'')+(e?':':'.');con.log(msg);if(e){con.warn(e);}},Map:Map,config:new Map(),messages:new Map(),templates:new Map(),log:log};window.mw=window.mediaWiki=mw;window.QUnit=undefined;}());(function(){'use strict';var store,hasOwn=Object.hasOwnProperty;function fnv132(str){var hash=0x811C9DC5;for(var i=0;i<str.length;i++){hash+=(hash<<1)+(hash<<4)+(hash<<7)+(hash<<8)+(hash<<24);hash^=str.charCodeAt(i);}hash=(hash>>>0).toString(36).slice(0,5);while(hash.length<5){hash='0'+hash;}return hash;}var registry=Object.create(null),sources=Object.create(null),handlingPendingRequests=false,pendingRequests=[],queue=[],jobs=[],willPropagate=false,errorModules=[],baseModules=["jquery","mediawiki.base"],marker=document.querySelector('meta[name="ResourceLoaderDynamicStyles"]'),lastCssBuffer;function addToHead(el,nextNode){if(nextNode&&nextNode.parentNode){nextNode.parentNode.insertBefore(el,nextNode);
|
| 4 |
+
}else{document.head.appendChild(el);}}function newStyleTag(text,nextNode){var el=document.createElement('style');el.appendChild(document.createTextNode(text));addToHead(el,nextNode);return el;}function flushCssBuffer(cssBuffer){if(cssBuffer===lastCssBuffer){lastCssBuffer=null;}newStyleTag(cssBuffer.cssText,marker);for(var i=0;i<cssBuffer.callbacks.length;i++){cssBuffer.callbacks[i]();}}function addEmbeddedCSS(cssText,callback){if(!lastCssBuffer||cssText.startsWith('@import')){lastCssBuffer={cssText:'',callbacks:[]};requestAnimationFrame(flushCssBuffer.bind(null,lastCssBuffer));}lastCssBuffer.cssText+='\n'+cssText;lastCssBuffer.callbacks.push(callback);}function getCombinedVersion(modules){var hashes=modules.reduce(function(result,module){return result+registry[module].version;},'');return fnv132(hashes);}function allReady(modules){for(var i=0;i<modules.length;i++){if(mw.loader.getState(modules[i])!=='ready'){return false;}}return true;}function allWithImplicitReady(module){return allReady(registry[module].dependencies)&&
|
| 5 |
+
(baseModules.includes(module)||allReady(baseModules));}function anyFailed(modules){for(var i=0;i<modules.length;i++){var state=mw.loader.getState(modules[i]);if(state==='error'||state==='missing'){return modules[i];}}return false;}function doPropagation(){var didPropagate=true;var module;while(didPropagate){didPropagate=false;while(errorModules.length){var errorModule=errorModules.shift(),baseModuleError=baseModules.includes(errorModule);for(module in registry){if(registry[module].state!=='error'&®istry[module].state!=='missing'){if(baseModuleError&&!baseModules.includes(module)){registry[module].state='error';didPropagate=true;}else if(registry[module].dependencies.includes(errorModule)){registry[module].state='error';errorModules.push(module);didPropagate=true;}}}}for(module in registry){if(registry[module].state==='loaded'&&allWithImplicitReady(module)){execute(module);didPropagate=true;}}for(var i=0;i<jobs.length;i++){var job=jobs[i];var failed=anyFailed(job.dependencies);if(failed!==false||allReady(job.dependencies)){
|
| 6 |
+
jobs.splice(i,1);i-=1;try{if(failed!==false&&job.error){job.error(new Error('Failed dependency: '+failed),job.dependencies);}else if(failed===false&&job.ready){job.ready();}}catch(e){mw.trackError({exception:e,source:'load-callback'});}didPropagate=true;}}}willPropagate=false;}function setAndPropagate(module,state){registry[module].state=state;if(state==='ready'){store.add(module);}else if(state==='error'||state==='missing'){errorModules.push(module);}else if(state!=='loaded'){return;}if(willPropagate){return;}willPropagate=true;mw.requestIdleCallback(doPropagation,{timeout:1});}function sortDependencies(module,resolved,unresolved){if(!(module in registry)){throw new Error('Unknown module: '+module);}if(typeof registry[module].skip==='string'){var skip=(new Function(registry[module].skip)());registry[module].skip=!!skip;if(skip){registry[module].dependencies=[];setAndPropagate(module,'ready');return;}}if(!unresolved){unresolved=new Set();}var deps=registry[module].dependencies;
|
| 7 |
+
unresolved.add(module);for(var i=0;i<deps.length;i++){if(!resolved.includes(deps[i])){if(unresolved.has(deps[i])){throw new Error('Circular reference detected: '+module+' -> '+deps[i]);}sortDependencies(deps[i],resolved,unresolved);}}resolved.push(module);}function resolve(modules){var resolved=baseModules.slice();for(var i=0;i<modules.length;i++){sortDependencies(modules[i],resolved);}return resolved;}function resolveStubbornly(modules){var resolved=baseModules.slice();for(var i=0;i<modules.length;i++){var saved=resolved.slice();try{sortDependencies(modules[i],resolved);}catch(err){resolved=saved;mw.log.warn('Skipped unavailable module '+modules[i]);if(modules[i]in registry){mw.trackError({exception:err,source:'resolve'});}}}return resolved;}function resolveRelativePath(relativePath,basePath){var relParts=relativePath.match(/^((?:\.\.?\/)+)(.*)$/);if(!relParts){return null;}var baseDirParts=basePath.split('/');baseDirParts.pop();var prefixes=relParts[1].split('/');prefixes.pop();var prefix;
|
| 8 |
+
var reachedRoot=false;while((prefix=prefixes.pop())!==undefined){if(prefix==='..'){reachedRoot=!baseDirParts.length||reachedRoot;if(!reachedRoot){baseDirParts.pop();}else{baseDirParts.push(prefix);}}}return(baseDirParts.length?baseDirParts.join('/')+'/':'')+relParts[2];}function makeRequireFunction(moduleObj,basePath){return function require(moduleName){var fileName=resolveRelativePath(moduleName,basePath);if(fileName===null){return mw.loader.require(moduleName);}if(hasOwn.call(moduleObj.packageExports,fileName)){return moduleObj.packageExports[fileName];}var scriptFiles=moduleObj.script.files;if(!hasOwn.call(scriptFiles,fileName)){throw new Error('Cannot require undefined file '+fileName);}var result,fileContent=scriptFiles[fileName];if(typeof fileContent==='function'){var moduleParam={exports:{}};fileContent(makeRequireFunction(moduleObj,fileName),moduleParam,moduleParam.exports);result=moduleParam.exports;}else{result=fileContent;}moduleObj.packageExports[fileName]=result;return result;
|
| 9 |
+
};}function addScript(src,callback,modules){var script=document.createElement('script');script.src=src;function onComplete(){if(script.parentNode){script.parentNode.removeChild(script);}if(callback){callback();callback=null;}}script.onload=onComplete;script.onerror=function(){onComplete();if(modules){for(var i=0;i<modules.length;i++){setAndPropagate(modules[i],'error');}}};document.head.appendChild(script);return script;}function queueModuleScript(src,moduleName,callback){pendingRequests.push(function(){if(moduleName!=='jquery'){window.require=mw.loader.require;window.module=registry[moduleName].module;}addScript(src,function(){delete window.module;callback();if(pendingRequests[0]){pendingRequests.shift()();}else{handlingPendingRequests=false;}});});if(!handlingPendingRequests&&pendingRequests[0]){handlingPendingRequests=true;pendingRequests.shift()();}}function addLink(url,media,nextNode){var el=document.createElement('link');el.rel='stylesheet';if(media){el.media=media;}el.href=url;
|
| 10 |
+
addToHead(el,nextNode);return el;}function globalEval(code){var script=document.createElement('script');script.text=code;document.head.appendChild(script);script.parentNode.removeChild(script);}function indirectEval(code){(1,eval)(code);}function enqueue(dependencies,ready,error){if(allReady(dependencies)){if(ready){ready();}return;}var failed=anyFailed(dependencies);if(failed!==false){if(error){error(new Error('Dependency '+failed+' failed to load'),dependencies);}return;}if(ready||error){jobs.push({dependencies:dependencies.filter(function(module){var state=registry[module].state;return state==='registered'||state==='loaded'||state==='loading'||state==='executing';}),ready:ready,error:error});}dependencies.forEach(function(module){if(registry[module].state==='registered'&&!queue.includes(module)){queue.push(module);}});mw.loader.work();}function execute(module){if(registry[module].state!=='loaded'){throw new Error('Module in state "'+registry[module].state+'" may not execute: '+module);
|
| 11 |
+
}registry[module].state='executing';var runScript=function(){var script=registry[module].script;var markModuleReady=function(){setAndPropagate(module,'ready');};var nestedAddScript=function(arr,offset){if(offset>=arr.length){markModuleReady();return;}queueModuleScript(arr[offset],module,function(){nestedAddScript(arr,offset+1);});};try{if(Array.isArray(script)){nestedAddScript(script,0);}else if(typeof script==='function'){if(module==='jquery'){script();}else{script(window.$,window.$,mw.loader.require,registry[module].module);}markModuleReady();}else if(typeof script==='object'&&script!==null){var mainScript=script.files[script.main];if(typeof mainScript!=='function'){throw new Error('Main file in module '+module+' must be a function');}mainScript(makeRequireFunction(registry[module],script.main),registry[module].module,registry[module].module.exports);markModuleReady();}else if(typeof script==='string'){globalEval(script);markModuleReady();}else{markModuleReady();}}catch(e){
|
| 12 |
+
setAndPropagate(module,'error');mw.trackError({exception:e,module:module,source:'module-execute'});}};if(registry[module].deprecationWarning){mw.log.warn(registry[module].deprecationWarning);}if(registry[module].messages){mw.messages.set(registry[module].messages);}if(registry[module].templates){mw.templates.set(module,registry[module].templates);}var cssPending=0;var cssHandle=function(){cssPending++;return function(){cssPending--;if(cssPending===0){var runScriptCopy=runScript;runScript=undefined;runScriptCopy();}};};var style=registry[module].style;if(style){if('css'in style){for(var i=0;i<style.css.length;i++){addEmbeddedCSS(style.css[i],cssHandle());}}if('url'in style){for(var media in style.url){var urls=style.url[media];for(var j=0;j<urls.length;j++){addLink(urls[j],media,marker);}}}}if(module==='user'){var siteDeps;var siteDepErr;try{siteDeps=resolve(['site']);}catch(e){siteDepErr=e;runScript();}if(!siteDepErr){enqueue(siteDeps,runScript,runScript);}}else if(cssPending===0){
|
| 13 |
+
runScript();}}function sortQuery(o){var sorted={};var list=[];for(var key in o){list.push(key);}list.sort();for(var i=0;i<list.length;i++){sorted[list[i]]=o[list[i]];}return sorted;}function buildModulesString(moduleMap){var str=[];var list=[];var p;function restore(suffix){return p+suffix;}for(var prefix in moduleMap){p=prefix===''?'':prefix+'.';str.push(p+moduleMap[prefix].join(','));list.push.apply(list,moduleMap[prefix].map(restore));}return{str:str.join('|'),list:list};}function makeQueryString(params){var str='';for(var key in params){str+=(str?'&':'')+encodeURIComponent(key)+'='+encodeURIComponent(params[key]);}return str;}function batchRequest(batch){if(!batch.length){return;}var sourceLoadScript,currReqBase,moduleMap;function doRequest(){var query=Object.create(currReqBase),packed=buildModulesString(moduleMap);query.modules=packed.str;query.version=getCombinedVersion(packed.list);query=sortQuery(query);addScript(sourceLoadScript+'?'+makeQueryString(query),null,packed.list);}
|
| 14 |
+
batch.sort();var reqBase={"lang":"ru","skin":"vector-2022"};var splits=Object.create(null);for(var b=0;b<batch.length;b++){var bSource=registry[batch[b]].source;var bGroup=registry[batch[b]].group;if(!splits[bSource]){splits[bSource]=Object.create(null);}if(!splits[bSource][bGroup]){splits[bSource][bGroup]=[];}splits[bSource][bGroup].push(batch[b]);}for(var source in splits){sourceLoadScript=sources[source];for(var group in splits[source]){var modules=splits[source][group];currReqBase=Object.create(reqBase);if(group===0&&mw.config.get('wgUserName')!==null){currReqBase.user=mw.config.get('wgUserName');}var currReqBaseLength=makeQueryString(currReqBase).length+23;var length=0;moduleMap=Object.create(null);for(var i=0;i<modules.length;i++){var lastDotIndex=modules[i].lastIndexOf('.'),prefix=modules[i].slice(0,Math.max(0,lastDotIndex)),suffix=modules[i].slice(lastDotIndex+1),bytesAdded=moduleMap[prefix]?suffix.length+3:modules[i].length+3;if(length&&length+currReqBaseLength+bytesAdded>mw.loader.maxQueryLength){
|
| 15 |
+
doRequest();length=0;moduleMap=Object.create(null);}if(!moduleMap[prefix]){moduleMap[prefix]=[];}length+=bytesAdded;moduleMap[prefix].push(suffix);}doRequest();}}}function asyncEval(implementations,cb,offset){if(!implementations.length){return;}offset=offset||0;mw.requestIdleCallback(function(deadline){asyncEvalTask(deadline,implementations,cb,offset);});}function asyncEvalTask(deadline,implementations,cb,offset){for(var i=offset;i<implementations.length;i++){if(deadline.timeRemaining()<=0){asyncEval(implementations,cb,i);return;}try{indirectEval(implementations[i]);}catch(err){cb(err);}}}function getModuleKey(module){return module in registry?(module+'@'+registry[module].version):null;}function splitModuleKey(key){var index=key.lastIndexOf('@');if(index===-1||index===0){return{name:key,version:''};}return{name:key.slice(0,index),version:key.slice(index+1)};}function registerOne(module,version,dependencies,group,source,skip){if(module in registry){throw new Error('module already registered: '+module);
|
| 16 |
+
}registry[module]={module:{exports:{}},packageExports:{},version:version||'',dependencies:dependencies||[],group:typeof group==='undefined'?null:group,source:typeof source==='string'?source:'local',state:'registered',skip:typeof skip==='string'?skip:null};}mw.loader={moduleRegistry:registry,maxQueryLength:5000,addStyleTag:newStyleTag,addScriptTag:addScript,addLinkTag:addLink,enqueue:enqueue,resolve:resolve,work:function(){store.init();var q=queue.length,storedImplementations=[],storedNames=[],requestNames=[],batch=new Set();while(q--){var module=queue[q];if(mw.loader.getState(module)==='registered'&&!batch.has(module)){registry[module].state='loading';batch.add(module);var implementation=store.get(module);if(implementation){storedImplementations.push(implementation);storedNames.push(module);}else{requestNames.push(module);}}}queue=[];asyncEval(storedImplementations,function(err){store.stats.failed++;store.clear();mw.trackError({exception:err,source:'store-eval'});var failed=storedNames.filter(function(name){
|
| 17 |
+
return registry[name].state==='loading';});batchRequest(failed);});batchRequest(requestNames);},addSource:function(ids){for(var id in ids){if(id in sources){throw new Error('source already registered: '+id);}sources[id]=ids[id];}},register:function(modules){if(typeof modules!=='object'){registerOne.apply(null,arguments);return;}function resolveIndex(dep){return typeof dep==='number'?modules[dep][0]:dep;}for(var i=0;i<modules.length;i++){var deps=modules[i][2];if(deps){for(var j=0;j<deps.length;j++){deps[j]=resolveIndex(deps[j]);}}registerOne.apply(null,modules[i]);}},implement:function(module,script,style,messages,templates,deprecationWarning){var split=splitModuleKey(module),name=split.name,version=split.version;if(!(name in registry)){mw.loader.register(name);}if(registry[name].script!==undefined){throw new Error('module already implemented: '+name);}registry[name].version=version;registry[name].declarator=null;registry[name].script=script;registry[name].style=style;registry[name].messages=messages;
|
| 18 |
+
registry[name].templates=templates;registry[name].deprecationWarning=deprecationWarning;if(registry[name].state!=='error'&®istry[name].state!=='missing'){setAndPropagate(name,'loaded');}},impl:function(declarator){var data=declarator(),module=data[0],script=data[1]||null,style=data[2]||null,messages=data[3]||null,templates=data[4]||null,deprecationWarning=data[5]||null,split=splitModuleKey(module),name=split.name,version=split.version;if(!(name in registry)){mw.loader.register(name);}if(registry[name].script!==undefined){throw new Error('module already implemented: '+name);}registry[name].version=version;registry[name].declarator=declarator;registry[name].script=script;registry[name].style=style;registry[name].messages=messages;registry[name].templates=templates;registry[name].deprecationWarning=deprecationWarning;if(registry[name].state!=='error'&®istry[name].state!=='missing'){setAndPropagate(name,'loaded');}},load:function(modules,type){if(typeof modules==='string'&&/^(https?:)?\/?\//.test(modules)){
|
| 19 |
+
if(type==='text/css'){addLink(modules);}else if(type==='text/javascript'||type===undefined){addScript(modules);}else{throw new Error('Invalid type '+type);}}else{modules=typeof modules==='string'?[modules]:modules;enqueue(resolveStubbornly(modules));}},state:function(states){for(var module in states){if(!(module in registry)){mw.loader.register(module);}setAndPropagate(module,states[module]);}},getState:function(module){return module in registry?registry[module].state:null;},require:function(moduleName){if(moduleName.startsWith('./')||moduleName.startsWith('../')){throw new Error('Module names cannot start with "./" or "../". Did you mean to use Package files?');}var path;if(window.QUnit){var paths=moduleName.startsWith('@')?/^(@[^/]+\/[^/]+)\/(.*)$/.exec(moduleName):/^([^/]+)\/(.*)$/.exec(moduleName);if(paths){moduleName=paths[1];path=paths[2];}}if(mw.loader.getState(moduleName)!=='ready'){throw new Error('Module "'+moduleName+'" is not loaded');}return path?makeRequireFunction(registry[moduleName],'')('./'+path):
|
| 20 |
+
registry[moduleName].module.exports;}};var hasPendingFlush=false,hasPendingWrites=false;function flushWrites(){while(store.queue.length){store.set(store.queue.shift());}if(hasPendingWrites){store.prune();try{localStorage.removeItem(store.key);localStorage.setItem(store.key,JSON.stringify({items:store.items,vary:store.vary,asOf:Math.ceil(Date.now()/1e7)}));}catch(e){mw.trackError({exception:e,source:'store-localstorage-update'});}}hasPendingFlush=hasPendingWrites=false;}mw.loader.store=store={enabled:null,items:{},queue:[],stats:{hits:0,misses:0,expired:0,failed:0},key:"MediaWikiModuleStore:ruwiki",vary:"vector-2022:3:2:ru",init:function(){if(this.enabled===null){this.enabled=false;if(true){this.load();}else{this.clear();}}},load:function(){try{var raw=localStorage.getItem(this.key);this.enabled=true;var data=JSON.parse(raw);if(data&&data.vary===this.vary&&data.items&&Date.now()<(data.asOf*1e7)+259e7){this.items=data.items;}}catch(e){}},get:function(module){if(this.enabled){var key=getModuleKey(module);
|
| 21 |
+
if(key in this.items){this.stats.hits++;return this.items[key];}this.stats.misses++;}return false;},add:function(module){if(this.enabled){this.queue.push(module);this.requestUpdate();}},set:function(module){var descriptor=registry[module],key=getModuleKey(module);if(key in this.items||!descriptor||descriptor.state!=='ready'||!descriptor.version||descriptor.group===1||descriptor.group===0||!descriptor.declarator){return;}var script=String(descriptor.declarator);if(script.length>1e5){return;}var srcParts=['mw.loader.impl(',script,');\n'];if(true){srcParts.push('// Saved in localStorage at ',(new Date()).toISOString(),'\n');var sourceLoadScript=sources[descriptor.source];var query=Object.create({"lang":"ru","skin":"vector-2022"});query.modules=module;query.version=getCombinedVersion([module]);query=sortQuery(query);srcParts.push('//# sourceURL=',(new URL(sourceLoadScript,location)).href,'?',makeQueryString(query),'\n');query.sourcemap='1';query=sortQuery(query);srcParts.push(
|
| 22 |
+
'//# sourceMappingURL=',sourceLoadScript,'?',makeQueryString(query));}this.items[key]=srcParts.join('');hasPendingWrites=true;},prune:function(){for(var key in this.items){if(getModuleKey(splitModuleKey(key).name)!==key){this.stats.expired++;delete this.items[key];}}},clear:function(){this.items={};try{localStorage.removeItem(this.key);}catch(e){}},requestUpdate:function(){if(!hasPendingFlush){hasPendingFlush=setTimeout(function(){mw.requestIdleCallback(flushWrites);},2000);}}};}());mw.requestIdleCallbackInternal=function(callback){setTimeout(function(){var start=mw.now();callback({didTimeout:false,timeRemaining:function(){return Math.max(0,50-(mw.now()-start));}});},1);};mw.requestIdleCallback=window.requestIdleCallback?window.requestIdleCallback.bind(window):mw.requestIdleCallbackInternal;(function(){var queue;mw.loader.addSource({"local":"https://ru.wikipedia.org/w/load.php","metawiki":"//meta.wikimedia.org/w/load.php"});mw.loader.register([["site","6a5mb",[1]],["site.styles","17jgf",[],2],["filepage","1ljys"],["user","1tdkc",[],0],["user.styles","18fec",[],0],["user.options","12s5i",[],1],["mediawiki.skinning.interface","1n9hy"],["jquery.makeCollapsible.styles","htx5k"],["mediawiki.skinning.content.parsoid","17v59"],["mediawiki.skinning.typeaheadSearch","1ek4e",[35]],["mediawiki.languageselector","s3yy0",[29]],["web2017-polyfills","174re",[],null,null,"return'IntersectionObserver'in window\u0026\u0026typeof fetch==='function'\u0026\u0026typeof URL==='function'\u0026\u0026'toJSON'in URL.prototype;"],["jquery","xt2am"],["mediawiki.base","2qwyl",[12]],["jquery.chosen","1ft2a"],["jquery.client","5k8ja"],["jquery.confirmable","e6ncb",[106]],["jquery.highlightText","9qzq7",[79]],["jquery.i18n","kakxz",[105]],["jquery.lengthLimit","tlk9z",[62]],["jquery.makeCollapsible","h9wzn",[7,79]],["jquery.spinner","iute0",[22]],["jquery.spinner.styles","11c88"],["jquery.suggestions","69w39",[17]],["jquery.tablesorter","83a68",[25,107,79]],["jquery.tablesorter.styles","1k61e"],["jquery.textSelection","1x0f0",[15]],["jquery.ui","1g2vc"],["moment","1wou6",[103,79]],["vue","17txg",[114]],["vuex","16fjm",[29]],["pinia","17tzw",[29]],["@wikimedia/codex","1ncf8",[33,29]],["codex-styles","qhm75"],["mediawiki.codex.messagebox.styles","x2ixo"],["mediawiki.codex.typeaheadSearch","h9pk4",[29]],["mediawiki.template","1qd38"],["mediawiki.template.mustache","1m2gq",[36]],["mediawiki.apipretty","qt7g6"],["mediawiki.api","1pqfy",[106]],["mediawiki.content.json","62wbh"],["mediawiki.confirmCloseWindow","5u3em"],["mediawiki.DateFormatter","111xz",[5]],["mediawiki.debug","1k7pq",[213]],["mediawiki.diff","mgt1p",[39]],["mediawiki.diff.styles","tep9m"],["mediawiki.feedback","8xri7",[69,106,968,213,221]],["mediawiki.feedlink","642xe"],["mediawiki.filewarning","1i5av",[213,225]],["mediawiki.ForeignApi","r63m6",[320]],["mediawiki.ForeignApi.core","1mk9b",[39,210]],["mediawiki.helplink","kl51b"],["mediawiki.hlist","1rann"],["mediawiki.htmlform","8qt2u",[19,79]],["mediawiki.htmlform.ooui","qp5p1",[213]],["mediawiki.htmlform.styles","1wcx1"],["mediawiki.htmlform.codex.styles","ztvso"],["mediawiki.htmlform.ooui.styles","ybyct"],["mediawiki.inspect","2ufuk",[62,79]],["mediawiki.notification","owj0l",[79,86]],["mediawiki.notification.convertmessagebox","1qfxt",[59]],["mediawiki.notification.convertmessagebox.styles","15u5e"],["mediawiki.String","rowro"],["mediawiki.pager.styles","10qgs"],["mediawiki.pager.codex","127kr"],["mediawiki.pager.codex.styles","heha7"],["mediawiki.pulsatingdot","10gr0"],["mediawiki.searchSuggest","jnb6y",[23,39]],["mediawiki.storage","1utqp",[79]],["mediawiki.Title","57gg0",[62,79]],["mediawiki.Upload","atib4",[39]],["mediawiki.ForeignUpload","1aqh0",[49,70]],["mediawiki.Upload.Dialog","1k5s4",[73]],["mediawiki.Upload.BookletLayout","bf4cu",[70,216,221,226,227]],["mediawiki.ForeignStructuredUpload.BookletLayout","w0hne",[71,73,110,189,182]],["mediawiki.toc","1uu87",[82]],["mediawiki.Uri","q0cxk",[79]],["mediawiki.user","qhmrd",[39,82]],["mediawiki.userSuggest","ba9yz",[23,39]],["mediawiki.util","1mg7d",[15,11]],["mediawiki.checkboxtoggle","11rut"],["mediawiki.checkboxtoggle.styles","fukzx"],["mediawiki.cookie","1dwx0"],["mediawiki.experiments","15xww"],["mediawiki.emailConfirmationBanner.abTest","11htr"],["mediawiki.editfont.styles","l9cd2"],["mediawiki.visibleTimeout","40nxy"],["mediawiki.action.edit","1o0d2",[26,88,85,185]],["mediawiki.action.edit.styles","zdcux"],["mediawiki.action.edit.collapsibleFooter","d5fd8",[20,68]],["mediawiki.action.edit.preview","10jv9",[21,116]],["mediawiki.action.history","1c95i",[20]],["mediawiki.action.history.styles","w46ps"],["mediawiki.action.protect","1ujcw",[185]],["mediawiki.action.view.metadata","r899o",[101]],["mediawiki.editRecovery.postEdit","eap1o"],["mediawiki.editRecovery.edit","dforw",[59,181,229]],["mediawiki.action.view.postEdit","pwawz",[59,68,172,213,233]],["mediawiki.action.view.redirect","9jbdf"],["mediawiki.action.view.redirectPage","4ezjv"],["mediawiki.action.edit.editWarning","15on3",[26,41,106]],["mediawiki.action.view.filepage","p7nf2"],["mediawiki.action.styles","yt050"],["mediawiki.language","1rc9j",[104]],["mediawiki.cldr","1dc8t",[105]],["mediawiki.libs.pluralruleparser","1sv4p"],["mediawiki.jqueryMsg","txsh2",[69,103,5]],["mediawiki.language.months","157qi",[103]],["mediawiki.language.names","1ydty",[103]],["mediawiki.language.specialCharacters","1txxn",[103]],["mediawiki.libs.jpegmeta","n7h67"],["mediawiki.page.gallery","p8nmx",[112,79]],["mediawiki.page.gallery.styles","182wn"],["mediawiki.page.gallery.slideshow","1eznr",[216,236,238]],["mediawiki.page.ready","sowyw",[77]],["mediawiki.page.watch.ajax","538l0",[77]],["mediawiki.page.preview","szyfu",[20,26,44,45,213]],["mediawiki.page.image.pagination","1qg8v",[21,79]],["mediawiki.page.media","1oc5n"],["mediawiki.rcfilters.filters.base.styles","18bmh"],["mediawiki.rcfilters.highlightCircles.seenunseen.styles","8sp3r"],["mediawiki.rcfilters.filters.ui","1hhzv",[20,179,222,229,232,233,234,236,237]],["mediawiki.interface.helpers.linker.styles","1biyp"],["mediawiki.interface.helpers.styles","17zrz"],["mediawiki.special","4uz5n"],["mediawiki.special.apisandbox","1y1r4",[20,202,186,212]],["mediawiki.special.restsandbox.styles","tjxcg"],["mediawiki.special.restsandbox","492t1",[126]],["mediawiki.special.block","i4wjn",[53,182,201,190,202,199,229]],["mediawiki.misc-authed-ooui","hid25",[21,54,179,185]],["mediawiki.misc-authed-pref","19b82",[5]],["mediawiki.misc-authed-curate","18pg7",[14,16,19,21,39]],["mediawiki.special.block.codex","5edke",[32,42,41,31]],["mediawiki.protectionIndicators.styles","ktm1d"],["mediawiki.special.changeslist","uobi7"],["mediawiki.special.changeslist.watchlistexpiry","yu34s",[124,233]],["mediawiki.special.changeslist.enhanced","mqmdi"],["mediawiki.special.changeslist.legend","1u1q4"],["mediawiki.special.changeslist.legend.js","13r7x",[82]],["mediawiki.special.contributions","1203g",[20,182,212]],["mediawiki.special.import.styles.ooui","lzh7m"],["mediawiki.special.interwiki","1qbpi"],["mediawiki.special.changecredentials","1eqrg"],["mediawiki.special.changeemail","q0qtr"],["mediawiki.special.preferences.ooui","qj7vy",[41,85,60,68,190,185,221]],["mediawiki.special.preferences.styles.ooui","z6oth"],["mediawiki.special.editrecovery.styles","1k8hm"],["mediawiki.special.editrecovery","1oc5h",[29]],["mediawiki.special.mergeHistory","kgyee"],["mediawiki.special.search","5kwbo",[205]],["mediawiki.special.search.commonsInterwikiWidget","1ufwn",[39]],["mediawiki.special.search.interwikiwidget.styles","186ox"],["mediawiki.special.search.styles","78jhf"],["mediawiki.special.unwatchedPages","hojmi",[39]],["mediawiki.special.upload","1uggc",[21,39,41,110,124,36]],["mediawiki.authenticationPopup","i1xmr",[21,221]],["mediawiki.authenticationPopup.success","6zddp"],["mediawiki.special.userlogin.common.styles","5of73"],["mediawiki.special.userlogin.login.styles","e4yu5"],["mediawiki.special.userlogin.authentication-popup","hhzh3"],["mediawiki.special.createaccount","nlw50",[39]],["mediawiki.special.userlogin.signup.styles","18ex3"],["mediawiki.special.specialpages","lsj8h",[213]],["mediawiki.special.userrights","djqcy",[19,60]],["mediawiki.special.watchlist","1y79v",[213,233]],["mediawiki.special.watchlistedit","t6r2g",[32,166,213]],["mediawiki.special.watchlistedit.styles","1jrfc"],["mediawiki.special.watchlistlabels","p2g9p"],["mediawiki.special.watchlistlabels.styles","m6byy"],["mediawiki.special.watchlistlabels.onboarding","g6ca3",[32]],["mediawiki.tempUserBanner.styles","24swv"],["mediawiki.tempUserBanner","1kbj5",[106,68]],["mediawiki.tempUserCreated","117j0",[79]],["mediawiki.ui","1mqqz"],["mediawiki.ui.checkbox","kwkz2"],["mediawiki.legacy.messageBox","fcdzm"],["mediawiki.ui.button","nm8ax"],["mediawiki.ui.input","129q1"],["mediawiki.ui.icon","1k0qz"],["mediawiki.widgets","fde2g",[180,216,226,227]],["mediawiki.widgets.styles","yjwn6"],["mediawiki.widgets.AbandonEditDialog","1pmwg",[221]],["mediawiki.widgets.DateInputWidget","zz2gi",[183,28,216,238]],["mediawiki.widgets.DateInputWidget.styles","1csir"],["mediawiki.widgets.DateTimeInputWidget.styles","1r6r1"],["mediawiki.widgets.visibleLengthLimit","4i5bv",[19,213]],["mediawiki.widgets.datetime","1kr7q",[184,213,233,237,238]],["mediawiki.widgets.expiry","w4vsb",[186,28,216]],["mediawiki.widgets.CheckMatrixWidget","12rkt",[213]],["mediawiki.widgets.CategoryMultiselectWidget","1dw3i",[49,216]],["mediawiki.widgets.SelectWithInputWidget","uxzut",[191,216]],["mediawiki.widgets.SelectWithInputWidget.styles","1e9po"],["mediawiki.widgets.SizeFilterWidget","9ryng",[193,216]],["mediawiki.widgets.SizeFilterWidget.styles","1j4ir"],["mediawiki.widgets.MediaSearch","1tz09",[49,216]],["mediawiki.widgets.Table","1162r",[216]],["mediawiki.widgets.TagMultiselectWidget","1y5hq",[216]],["mediawiki.widgets.OrderedMultiselectWidget","1rmms",[216]],["mediawiki.widgets.MenuTagMultiselectWidget","5vc6y",[216]],["mediawiki.widgets.UserInputWidget","gkal4",[216]],["mediawiki.widgets.UsersMultiselectWidget","1nts9",[216]],["mediawiki.widgets.NamespacesMultiselectWidget","1skcg",[179]],["mediawiki.widgets.TitlesMultiselectWidget","1xq8g",[179]],["mediawiki.widgets.LanguageSelectWidget","1sxxw",[10]],["mediawiki.widgets.TagMultiselectWidget.styles","pqvgn"],["mediawiki.widgets.SearchInputWidget","1m94u",[67,179,233]],["mediawiki.widgets.SearchInputWidget.styles","1784o"],["mediawiki.widgets.ToggleSwitchWidget","1yf2l",[216]],["mediawiki.watchstar.widgets","nkbbg",[212]],["mediawiki.deflate","1kmt8"],["oojs","1u2cw"],["mediawiki.router","ia0pk",[210]],["oojs-ui","19txf",[219,216,221]],["oojs-ui-core","82hba",[114,210,215,214,223]],["oojs-ui-core.styles","1ujei"],["oojs-ui-core.icons","16vkh"],["oojs-ui-widgets","k5mxx",[213,218]],["oojs-ui-widgets.styles","tnkuf"],["oojs-ui-widgets.icons","1713p"],["oojs-ui-toolbars","2t1rq",[213,220]],["oojs-ui-toolbars.icons","14c4t"],["oojs-ui-windows","1oxvx",[213,222]],["oojs-ui-windows.icons","1bcnl"],["oojs-ui.styles.indicators","1tptw"],["oojs-ui.styles.icons-accessibility","jgryg"],["oojs-ui.styles.icons-alerts","71vb2"],["oojs-ui.styles.icons-content","wpm1a"],["oojs-ui.styles.icons-editing-advanced","yaohf"],["oojs-ui.styles.icons-editing-citation","1qs31"],["oojs-ui.styles.icons-editing-core","17kym"],["oojs-ui.styles.icons-editing-functions","qojxl"],["oojs-ui.styles.icons-editing-list","1mg56"],["oojs-ui.styles.icons-editing-styling","nw0jz"],["oojs-ui.styles.icons-interactions","r8hq7"],["oojs-ui.styles.icons-layout","n4lo6"],["oojs-ui.styles.icons-location","1p458"],["oojs-ui.styles.icons-media","14kju"],["oojs-ui.styles.icons-moderation","1von6"],["oojs-ui.styles.icons-movement","yogiw"],["oojs-ui.styles.icons-user","w7itz"],["oojs-ui.styles.icons-wikimedia","v2rqu"],["skins.vector.search.codex.styles","1chf5"],["skins.vector.search","1r7g3",[9]],["skins.vector.styles.legacy","pxpwj"],["skins.vector.styles","1w5bm"],["skins.vector.icons.js","1v9w5"],["skins.vector.icons","u0yh1"],["skins.vector.clientPreferences","1mrja",[77]],["skins.vector.js","6amqo",[83,115,68,247,245]],["skins.vector.legacy.js","rnz5r",[114]],["skins.monobook.styles","1lr6c"],["skins.monobook.scripts","lqv7f",[77,225]],["skins.modern","19sua"],["skins.cologneblue","a4uwv"],["skins.timeless","hbnr3"],["skins.timeless.js","15mj7"],["ext.timeline.styles","1osj7"],["ext.wikihiero","13p0k"],["ext.wikihiero.special","18xt7",[257,21,213]],["ext.wikihiero.visualEditor","1xj2v",[445]],["ext.charinsert","1szkj",[26]],["ext.charinsert.styles","17hc7"],["ext.cite.styles","1ky19"],["ext.cite.parsoid.styles","ifq6o"],["ext.cite.ux-enhancements","wpxug"],["ext.cite.community-configuration","1uhg0",[29]],["ext.citeThisPage","z2rvp"],["ext.inputBox","1o09r"],["ext.inputBox.styles","1ar5l"],["ext.imagemap","lq7bt",[270]],["ext.imagemap.styles","118nu"],["ext.pygments","10kfc"],["ext.geshi.visualEditor","1y6oh",[445,227]],["ext.flaggedRevs.basic","lhn4o"],["ext.flaggedRevs.advanced","bwkjv",[21,44,45,123]],["ext.flaggedRevs.review","1abt3",[77]],["ext.flaggedRevs.icons","mfgcl"],["ext.categoryTree","17904",[39]],["ext.categoryTree.styles","d53i9"],["ext.spamBlacklist.visualEditor","1x8kv"],["mediawiki.api.titleblacklist","1qh9e",[39]],["ext.titleblacklist.visualEditor","rdabw"],["ext.tmh.video-js","1h2qa"],["ext.tmh.videojs-ogvjs","1begb",[291,282]],["ext.tmh.player","193nx",[290,287,69]],["ext.tmh.player.dialog","1hr29",[286,221]],["ext.tmh.player.inline","cntqn",[290,282,213,226,227]],["ext.tmh.player.styles","wcxes"],["ext.tmh.transcodetable","3esz1",[212]],["ext.tmh.timedtextpage.styles","bfqwg"],["ext.tmh.OgvJsSupport","kckt1"],["ext.tmh.OgvJs","5tcrw",[290]],["embedPlayerIframeStyle","zgah7"],["ext.urlShortener.special","1qiy3",[54,179,212]],["ext.urlShortener.special.styles","3ziek"],["ext.urlShortener.toolbar","1glx4"],["ext.globalBlocking","pi64x",[53,179,199]],["ext.globalBlocking.styles","1bh82"],["ext.securepoll.htmlform","7l4w6",[21,50,179,199,212,233,234]],["ext.securepoll","1e5y0"],["ext.securepoll.special","8kai6"],["ext.score.visualEditor","1ny7v",[302,445]],["ext.score.visualEditor.icons","1swou"],["ext.score.popup","ucafm",[39]],["ext.score.styles","1m4q2"],["ext.cirrus.serp","1x2q2",[211,79]],["ext.nuke.styles","pt4ca"],["ext.nuke.fields.NukeDateTimeField","yw8ij",[182]],["ext.nuke.codex.styles","19jdp"],["ext.nuke.codex","1dotu",[29]],["ext.confirmEdit.editPreview.ipwhitelist.styles","nwoqf"],["ext.confirmEdit.visualEditor","bl2yi",[947]],["ext.confirmEdit.simpleCaptcha","1cj5u"],["ext.confirmEdit.fancyCaptcha.styles","1lv38"],["ext.confirmEdit.fancyCaptcha","1t725",[313,39]],["ext.centralauth","d1pic",[21,79]],["ext.centralauth.centralautologin","up0za",[106]],["ext.centralauth.centralautologin.clearcookie","cdv6m"],["ext.centralauth.misc.styles","1l7wr"],["ext.centralauth.globalrenameuser","fvwv1",[79]],["ext.centralauth.ForeignApi","lj6ni",[50]],["ext.widgets.GlobalUserInputWidget","zotps",[216]],["ext.centralauth.globalrenamequeue","1odxm"],["ext.centralauth.globalrenamequeue.styles","1j97l"],["ext.centralauth.globalvanishrequest","1ycvv"],["ext.GlobalUserPage","1jhe4"],["ext.apifeatureusage","1cero"],["ext.dismissableSiteNotice","1440g",[82,79]],["ext.dismissableSiteNotice.styles","dn4ef"],["ext.centralNotice.startUp","ei35p",[331,79]],["ext.centralNotice.geoIP","wookz",[82]],["ext.centralNotice.choiceData","yxn0l",[335]],["ext.centralNotice.display","1bibn",[330,333,579,68]],["ext.centralNotice.kvStore","17xmw"],["ext.centralNotice.bannerHistoryLogger","1947h",[332]],["ext.centralNotice.impressionDiet","1vyse",[332]],["ext.centralNotice.largeBannerLimit","12rqy",[332]],["ext.centralNotice.legacySupport","18wyo",[332]],["ext.centralNotice.bannerSequence","1fwka",[332]],["ext.centralNotice.freegeoipLookup","1q1bz",[330]],["ext.centralNotice.impressionEventsSampleRate","1e3w6",[332]],["ext.centralNotice.cspViolationAlert","m4w2u"],["ext.wikimediaCustomizations.officeBan","15b4c",[33,49]],["ext.wikimediamessages.styles","1smpe"],["ext.wikimediamessages.contactpage","1asqc"],["ext.collection","j4p2j",[347,103]],["ext.collection.bookcreator.styles","1rb3s"],["ext.collection.bookcreator","36j1z",[346,68]],["ext.collection.checkLoadFromLocalStorage","bp9l8",[345]],["ext.collection.suggest","kdcz3",[347]],["ext.collection.offline","2gmtr"],["ext.collection.bookcreator.messageBox","19txf",[352,52]],["ext.collection.bookcreator.messageBox.icons","w5xhr"],["ext.ElectronPdfService.special.styles","vvfin"],["ext.ElectronPdfService.special.selectionImages","z9y9m"],["ext.emailauth","1beyj"],["ext.advancedSearch.initialstyles","1vu53"],["ext.advancedSearch.styles","1d64i"],["ext.advancedSearch.searchtoken","1vhat",[],1],["ext.advancedSearch.elements","ybjke",[361,357,233,234]],["ext.advancedSearch.init","wflsr",[359,358,76]],["ext.advancedSearch.SearchFieldUI","17g9y",[216]],["ext.abuseFilter","55ime"],["ext.abuseFilter.edit","1fnea",[21,26,41,216]],["ext.abuseFilter.tools","vvv05",[21,39]],["ext.abuseFilter.examine","yqjlf",[21,39]],["ext.abuseFilter.visualEditor","1f8aq"],["pdfhandler.messages","16ws1"],["ext.wikiEditor","uwvno",[26,27,109,68,179,228,229,231,232,236,36],3],["ext.wikiEditor.styles","pgt7x",[],3],["ext.wikiEditor.images","oj9ti"],["ext.wikiEditor.realtimepreview","on41r",[368,370,116,66,233]],["ext.CodeMirror","5n36l",[77]],["ext.CodeMirror.WikiEditor","1c2d3",[372,26,232]],["ext.CodeMirror.lib","1dswg"],["ext.CodeMirror.addons","19bks",[374]],["ext.CodeMirror.mode.mediawiki","1752k",[374]],["ext.CodeMirror.visualEditor","ok0s7",[372,452]],["ext.CodeMirror.v6","71kte",[380,26,77]],["ext.CodeMirror.v6.init","9cz02",[5]],["ext.CodeMirror.v6.lib","614gi"],["ext.CodeMirror.v6.mode.mediawiki","10fm1",[378]],["ext.CodeMirror.v6.modes","ggwbw",[380]],["ext.CodeMirror.v6.abusefilter","o81x5",[380]],["ext.CodeMirror.v6.WikiEditor","13zj0",[378,368]],["ext.CodeMirror.v6.styles","7w1gh"],["ext.CodeMirror.v6.visualEditor","1e983",[452]],["ext.CodeMirror.visualEditor.init","1y6rr"],["ext.MassMessage.styles","11p9u"],["ext.MassMessage.special.js","1gyvp",[19,213]],["ext.MassMessage.content","zi5gz",[16,179,212]],["ext.MassMessage.create","yz6kn",[41,54,179]],["ext.MassMessage.edit","hf32f",[41,185,212]],["ext.betaFeatures","8s8aw",[213]],["ext.betaFeatures.styles","1s556"],["mmv","111pg",[403,402]],["mmv.codex","xyrqh"],["mmv.ui.reuse","12aj5",[179,396]],["mmv.ui.restriction","fja0w"],["mmv.carousel","6z1ef",[403]],["mmv.carousel.styles","1ub6u"],["mmv.ui.beta","z03a9",[32,403,402]],["mmv.common","j58qj",[39]],["mmv.bootstrap","15s80",[211,68,77,396]],["ext.popups.icons","o5cuv"],["ext.popups","13p6r"],["ext.popups.main","9b7z5",[83,68,77]],["ext.linter.edit","1pcus",[26,5]],["ext.linter.styles","e86ab"],["color-picker","1udyk"],["rangefix","mtvel"],["spark-md5","1ewgr"],["ext.visualEditor.supportCheck","1ogmv",[],4],["ext.visualEditor.sanitize","1nl3k",[434],4],["ext.visualEditor.progressBarWidget","kxifz",[],4],["ext.visualEditor.tempWikitextEditorWidget","bm2az",[85,77],4],["ext.visualEditor.desktopArticleTarget.init","13s8q",[414,412,418,415,114],4],["ext.visualEditor.desktopArticleTarget.noscript","n809x"],["ext.visualEditor.targetLoader","1gzf4",[433,429,26,68,77],4],["ext.visualEditor.desktopTarget","1njwt",[],4],["ext.visualEditor.desktopArticleTarget","11tgt",[437,434,441,419,435,447,106,79],4],["ext.visualEditor.mobileArticleTarget","y72qs",[437,442],4],["ext.visualEditor.collabTarget","ubjtg",[435,440,85,179,233,234],4],["ext.visualEditor.collabTarget.desktop","uuaf4",[422,441,419,447],4],["ext.visualEditor.collabTarget.mobile","1hq35",[422,442,446],4],["ext.visualEditor.collabTarget.init","z7q9t",[412,179,212],4],["ext.visualEditor.collabTarget.init.styles","1i21t"],["ext.visualEditor.collab","nl6n2",[409,439]],["ext.visualEditor.ve","fb3kh",[],4],["ext.visualEditor.track","10mz7",[428],4],["ext.visualEditor.editCheck","4fuvd",[436],4],["ext.visualEditor.editCheck.special","1hnr3"],["ext.visualEditor.core.utils","vclxf",[429,212],4],["ext.visualEditor.core.utils.parsing","pxlsz",[428],4],["ext.visualEditor.base","1grfa",[432,433],4],["ext.visualEditor.mediawiki","172wz",[434,418,24,612,108],4],["ext.visualEditor.mwsave","p7n0u",[445,19,21,44,45,233],4],["ext.visualEditor.articleTarget","49hqu",[446,436,97,181],4],["ext.visualEditor.data","6yqyt",[435]],["ext.visualEditor.core","1hnnv",[413,412,410,411],4],["ext.visualEditor.rebase","19ksd",[409,455,239],4],["ext.visualEditor.core.desktop","ah0z0",[439],4],["ext.visualEditor.core.mobile","axys9",[439],4],["ext.visualEditor.welcome","3nfya",[212],4],["ext.visualEditor.switching","1tz9g",[212,224,227,229],4],["ext.visualEditor.mwcore","6gwg3",[456,435,444,443,123,66,8,179],4],["ext.visualEditor.mwextensions","19txf",[438,465,461,448,463,450,460,451,453],4],["ext.visualEditor.mwextensions.desktop","19txf",[446,452,74],4],["ext.visualEditor.mwformatting","d1iqe",[445],4],["ext.visualEditor.mwimage.core","1wxs3",[445],4],["ext.visualEditor.mwimage","cdyew",[466,449,194,28,236],4],["ext.visualEditor.mwlink","l6yji",[445],4],["ext.visualEditor.mwmeta","1sgxx",[451,99],4],["ext.visualEditor.mwtransclusion","1disq",[445,199],4],["treeDiffer","1o9nz"],["ext.visualEditor.checkList","hfzlv",[439],4],["ext.visualEditor.diffing","v28bm",[439,454],4],["ext.visualEditor.diffPage.init.styles","10hx8"],["ext.visualEditor.diffLoader","1dei4",[418],4],["ext.visualEditor.diffPage.init","1u7z0",[458,457,212,224,227],4],["ext.visualEditor.mwlanguage","s3i9k",[439],4],["ext.visualEditor.mwalienextension","1h689",[445],4],["ext.visualEditor.mwwikitext","1bg9a",[451,85],4],["ext.visualEditor.mwgallery","n9q6v",[445,112,194,236],4],["ext.visualEditor.mwsignature","l0ew2",[453],4],["ext.visualEditor.icons","19txf",[467,468,225,226,227,229,231,232,233,234,237,238,239,223],4],["ext.visualEditor.icons-licenses","fyo7w"],["ext.visualEditor.moduleIcons","1li8x"],["ext.visualEditor.moduleIndicators","fo23r"],["ext.citoid.visualEditor","tw3wm",[823,472,471]],["quagga2","1d4mk"],["ext.citoid.visualEditor.icons","i0730"],["ext.citoid.visualEditor.data","1u6e7",[435]],["ext.citoid.wikibase.init","t55ht"],["ext.citoid.wikibase","eelf2",[473,27,212]],["ext.templateData","17wvg"],["ext.templateDataGenerator.editPage","8oiwy"],["ext.templateDataGenerator.data","1in81",[210]],["ext.templateDataGenerator.editTemplatePage.loading","1fb90"],["ext.templateDataGenerator.editTemplatePage","s76cf",[475,480,477,26,612,216,221,233,234,237]],["ext.templateData.images","130i9"],["ext.templateData.templateDiscovery","1xt9n",[68,179,233,237,238]],["ext.TemplateWizard","rkneh",[26,179,182,199,219,221,233]],["ext.wikiLove.icon","1kmne"],["ext.wikiLove.startup","1rlys",[32]],["ext.wikiLove.local","1cdg5"],["ext.wikiLove.init","ce4xb",[484]],["mediawiki.libs.guiders","8y7cy"],["ext.guidedTour.styles","7v0uu",[487]],["ext.guidedTour.lib.internal","1hslf",[79]],["ext.guidedTour.lib","1ckmx",[489,488,77]],["ext.guidedTour.launcher","de9y5"],["ext.guidedTour","1u9n0",[490]],["ext.guidedTour.tour.firstedit","wryb9",[492]],["ext.guidedTour.tour.test","i2ej2",[492]],["ext.guidedTour.tour.onshow","vyfow",[492]],["ext.guidedTour.tour.uprightdownleft","1pdgx",[492]],["skins.minerva.styles","1lhpw"],["skins.minerva.content.styles.images","18y9g"],["skins.minerva.amc.styles","1vqc6"],["skins.minerva.overflow.icons","nmbvo"],["skins.minerva.icons","t7gie"],["skins.minerva.mainPage.styles","1wl5z"],["skins.minerva.userpage.styles","1dm31"],["skins.minerva.personalMenu.icons","klu0p"],["skins.minerva.mainMenu.advanced.icons","m6phz"],["skins.minerva.loggedin.styles","1x3tn"],["skins.minerva.search","cctd3",[211,9]],["skins.minerva.scripts","11gks",[42,83,515,501,497]],["skins.minerva.categories.styles","fcdzm"],["skins.minerva.codex.styles","1ufcg"],["mobile.userpage.styles","1j0zy"],["mobile.init.styles","1t0fq"],["mobile.init","1gw63",[515]],["mobile.codex.styles","1e7fk"],["mobile.startup","1949s",[115,211,68,37,514,512]],["mobile.editor.overlay","1jmyn",[97,41,85,181,515,212,229]],["mobile.mediaViewer","zwft1",[515]],["mobile.languages.structured","s3cjl",[515]],["mobile.special.styles","r52r1"],["mobile.special.watchlist.scripts","10pwz",[515]],["mobile.special.codex.styles","1af8r"],["mobile.special.mobileoptions.styles","nmg27"],["mobile.special.mobileoptions.scripts","1e2dk",[515]],["mobile.special.userlogin.scripts","1lhsb"],["ext.math.editpage","d02b2"],["ext.math.mathjax","1upcu",[],5],["ext.math.styles","mv9el"],["ext.math.polyfills","wuvs5",[],null,null,"const ns='http://www.w3.org/1998/Math/MathML';if(typeof document!=='object'||typeof document.createElementNS!=='function'){return false;}const menclose=document.createElementNS(ns,'menclose');const hasMenclose='notation'in menclose;const table=document.createElementNS(ns,'mtable');const cell=document.createElementNS(ns,'mtd');const hasColumnAlign='columnalign'in table||'columnAlign'in table||'columnalign'in cell||'columnAlign'in cell;const href=document.createElementNS(ns,'mrow');let hasHref=false;if('href'in href){href.setAttribute('href','#math-href');hasHref=typeof href.href==='string'\u0026\u0026href.href.includes('#math-href');}return hasMenclose\u0026\u0026hasColumnAlign\u0026\u0026hasHref;"],["ext.math.popup","1yhk2",[49,77]],["mw.widgets.MathWbEntitySelector","6w3bw",[49,179,822,221]],["ext.math.visualEditor","u3ikj",[527,445]],["ext.math.visualEditor.mathSymbols","19vss"],["ext.math.visualEditor.chemSymbols","16hgh"],["ext.babel","1fevk"],["ext.echo.ui.desktop","c78sh",[542,536,39,77,79]],["ext.echo.ui","ih0za",[537,955,216,225,226,229,233,237,238,239]],["ext.echo.dm","963lb",[540,28]],["ext.echo.api","1p7hc",[49]],["ext.echo.mobile","1nltm",[536,211]],["ext.echo.init","pixzp",[538]],["ext.echo.centralauth","w08f7"],["ext.echo.styles.badge","1b970"],["ext.echo.styles.notifications","18nzr"],["ext.echo.styles.alert","1phh6"],["ext.echo.special","6z1sy",[546,536]],["ext.echo.styles.special","1flfq"],["ext.thanks","1fjuv",[39,82]],["ext.thanks.corethank","14y9y",[547,16,221]],["ext.thanks.flowthank","sqcw2",[547,221]],["ext.disambiguator","4rk25",[39,59]],["ext.disambiguator.visualEditor","xiq3z",[452]],["ext.discussionTools.init.styles","v8u3w"],["ext.discussionTools.debug.styles","y82xb"],["ext.discussionTools.init","zjpwb",[552,555,433,68,28,221,410]],["ext.discussionTools.minervaicons","1gbak"],["ext.discussionTools.debug","mlyrl",[554]],["ext.discussionTools.ReplyWidget","kxnwd",[947,554,437,464,462,185]],["ext.codeEditor","y9gwb",[560],3],["ext.codeEditor.styles","a4ieh"],["jquery.codeEditor","x5a0y",[562,561,368,221],3],["ext.codeEditor.icons","b8wy9"],["ext.codeEditor.ace","1r0xu",[],6],["ext.codeEditor.ace.modes","mhtcs",[562],6],["ext.scribunto.errors","41534",[216]],["ext.scribunto.logs","7b36r"],["ext.scribunto.edit","1ropp",[21,39]],["ext.relatedArticles.styles","17axd"],["ext.relatedArticles.readMore.bootstrap","1ej6q",[77]],["ext.relatedArticles.readMore","1s82j",[79]],["ext.RevisionSlider.lazyCss","p0y38"],["ext.RevisionSlider.lazyJs","1akeb",[573,238]],["ext.RevisionSlider.init","18i0t",[573,574,28,237]],["ext.RevisionSlider.Settings","1xpil",[68,77]],["ext.RevisionSlider.Slider","1ldlb",[575,27,42,212,233,238]],["ext.RevisionSlider.dialogImages","146vu"],["ext.TwoColConflict.SplitJs","aqopv",[578,66,68,212,233]],["ext.TwoColConflict.SplitCss","1v0zt"],["ext.TwoColConflict.Split.TourImages","3l6s4"],["ext.eventLogging","dong7",[583,77]],["ext.eventLogging.debug","k60ot"],["ext.eventLogging.jsonSchema","17xxu"],["ext.eventLogging.jsonSchema.styles","1245m"],["ext.eventLogging.metricsPlatform","1uy7p"],["ext.wikimediaEvents","mp3yo",[587,83,68,86]],["ext.wikimediaEvents.wikibase","1r3lq",[579,83]],["ext.wikimediaEvents.networkprobe","x0l64",[579]],["ext.wikimediaEvents.testKitchen","fz794",[579]],["ext.wikimediaEvents.WatchlistBaseline","7w4et",[587]],["ext.wikimediaEvents.personalDashboard","kic5w",[587]],["ext.wikimediaEvents.emailConfirmationBanner","3cvu6"],["ext.navigationTiming","12l9b",[579]],["ext.uls.common","1d2ds",[612,68,77]],["ext.uls.compactlinks","174mg",[592]],["ext.uls.ime","1dmfj",[592,602,603,604,610]],["ext.uls.displaysettings","101gi",[594,601,602,608,610,39,77]],["ext.uls.geoclient","17h49",[82]],["ext.uls.i18n","1m5zg",[18,79]],["ext.uls.interface","wcr2l",[608,210]],["ext.uls.interlanguage","1807b"],["ext.uls.languagenames","1dc06"],["ext.uls.languagesettings","qgusn",[603,604,613]],["ext.uls.mediawiki","3jja3",[592,600,603,608,611]],["ext.uls.messages","klkni",[597]],["ext.uls.preferences","1i0ug",[68,77]],["ext.uls.preferencespage","fwsgu"],["ext.uls.pt","uuh6k"],["ext.uls.setlang","ericr",[32]],["ext.uls.webfonts","86xg2",[604]],["ext.uls.webfonts.repository","1lur0"],["jquery.ime","9b6na"],["jquery.uls","conkg",[18,612,613]],["jquery.uls.data","1150b"],["jquery.uls.grid","1u2od"],["rangy.core","18ohu"],["ext.uls.rewrite","tudiv",[617,10,68]],["ext.uls.rewrite.languagesettings","tf8u3",[617]],["ext.uls.rewrite.entrypoints","l2cse"],["ext.cx.contributions","176f8",[213,226,227]],["ext.cx.model","115fa"],["sx.publishing.followup","rc7kn",[626,624,29]],["ext.cx.articlefilters","6my9j"],["mw.cx3","5c9e4",[621,626,625,624,30]],["mw.cx3.ve","1bvqm",[823,421]],["mw.cx.util","jvaws",[619,77]],["mw.cx.eventlogging","bhdlw"],["mw.cx.SiteMapper","3goe4",[619,49,77]],["ext.cx.wikibase.link","y6dvw"],["ext.cx.uls.quick.actions","zhx3j",[592,598,626]],["ext.cx.eventlogging.campaigns","19v0k",[77]],["ext.cx.interlanguagelink.init","1ihfp",[592]],["ext.cx.interlanguagelink","cfbcf",[592,626,216,233]],["ext.cx.entrypoints.recentedit","1j4c7",[612,626,624,29]],["ext.cx.entrypoints.recenttranslation","lhk7d",[32,612,211,626,624]],["ext.cx.entrypoints.newarticle","7ip30",[646,176,213]],["ext.cx.entrypoints.newarticle.veloader","1yrcp"],["ext.cx.entrypoints.languagesearcher.init","1qnv0"],["ext.cx.entrypoints.languagesearcher.legacy","35mcx",[612,626]],["ext.cx.entrypoints.languagesearcher","21azx",[612,626,29]],["ext.cx.entrypoints.mffrequentlanguages","a9z9e",[626]],["ext.cx.entrypoints.ulsrelevantlanguages","o5xh3",[592,626,29]],["ext.cx.entrypoints.newbytranslation","1kexw",[612,626,624,29]],["ext.cx.entrypoints.newbytranslation.mobile","ioqgr",[626,624,226]],["ext.cx.betafeature.init","152oe"],["ext.cx.entrypoints.contributionsmenu","1ffvt",[106]],["ext.cx.widgets.spinner","1psl1",[619]],["ext.cx.widgets.callout","agqfj"],["mw.cx.dm","1iamc",[619,210]],["mw.cx.dm.Translation","14thf",[647]],["mw.cx.SectionMappingService","53xhk",[13,626]],["mw.cx.ui","11zsk",[619,212]],["mw.cx.visualEditor","1fjfh",[823,441,419,447,649,652,653]],["ve.ce.CXLintableNode","av1wq",[439]],["ve.dm.CXLintableNode","sgukm",[439,647]],["mw.cx.init","l6zq9",[645,452,649,660,656,652,653,655]],["ve.init.mw.CXTarget","1m1ik",[441,626,648,625,650,624]],["mw.cx.ui.Infobar","14f27",[650,624,225,233]],["mw.cx.ui.CaptchaDialog","1lqcg",[957,650]],["mw.cx.ui.LoginDialog","1m0r4",[650]],["mw.cx.tools.InstructionsTool","srxw4",[660,37]],["mw.cx.tools.TranslationTool","gnek4",[650]],["mw.cx.ui.FeatureDiscoveryWidget","1ouwp",[66,650]],["mw.cx.skin","128nw"],["mint.styles","1n1ju"],["mint.app","98ngh",[32,612,626]],["ext.ax.articlefooter.entrypoint","rf96e",[626,29]],["mw.externalguidance.init","19txf"],["mw.externalguidance","bzyik",[49,515,668,229]],["mw.externalguidance.icons","jj8nh"],["mw.externalguidance.special","imvnp",[33,612,49,668]],["wikibase.databox.fromWikidata","qmair"],["wikibase.client.init","lju5u"],["wikibase.client.miscStyles","4nyqx"],["wikibase.client.vector-2022","l45nt"],["wikibase.client.linkitem.init","zdnsx",[21]],["jquery.wikibase.linkitem","1xi65",[21,27,49,822,821,958]],["wikibase.client.action.edit.collapsibleFooter","1e4wq",[20,68]],["ext.wikimediaBadges","mw79h"],["ext.TemplateSandbox.styles","wnclz"],["ext.TemplateSandbox","31csp",[682]],["ext.TemplateSandbox.preview","1nltl",[679,21,116]],["ext.TemplateSandbox.visualeditor","1umh9",[682,212]],["ext.TemplateSandbox.TemplateSandboxTitleWidget","wmszm",[179]],["ext.jsonConfig","1j5k4"],["ext.jsonConfig.edit","15xj5",[26,195,221]],["ext.chart.styles","fwz76"],["ext.chart.bootstrap","1u8y5",[11]],["ext.chart.render","1gpbd"],["ext.chart.visualEditor","v4x8d",[453]],["ext.chart.visualEditMode","1vq96",[29]],["ext.MWOAuth.styles","b0c34"],["ext.MWOAuth.AuthorizeDialog","7uyly",[221]],["ext.oath.totpenable.styles","tlkyg"],["ext.oath.recovery.styles","1whts"],["ext.oath.recovery","b310c"],["ext.webauthn.passwordlessLogin","8ul2t",[698]],["ext.oath.manage","farkc",[700,29]],["ext.oath.manage.styles","1hxr5"],["ext.webauthn.ui.base","1u1u5",[699,212]],["ext.webauthn.ui.base.styles","7izv1"],["ext.webauthn.Registrator","nms87",[698]],["ext.webauthn.register","6iw15",[700]],["ext.webauthn.login","cuyfw",[698]],["ext.webauthn.manage","1itbo",[698]],["ext.ores.highlighter","owcar"],["ext.ores.styles","1r0lj"],["ext.ores.api","1ciri"],["ext.checkUser.suggestedInvestigations.styles","spnks"],["ext.checkUser.userInfoCard","habcj",[32,42,13]],["ext.checkUser.clientHints","13jk2",[39,13]],["ext.checkUser.tempAccounts","fml78",[68,179,199]],["ext.checkUser.images","kt21i"],["ext.checkUser","1k3fs",[24,63,68,179,229,233,235,237,239]],["ext.checkUser.styles","1nhcn"],["ext.ipInfo","dl1d4",[53,68,216,226]],["ext.ipInfo.styles","19tag"],["ext.ipInfo.specialIpInfo","mr5sy"],["ext.quicksurveys.lib","18wd5",[21,83,68,77]],["ext.quicksurveys.lib.vue","8a4yj",[32,717]],["ext.quicksurveys.init","13zq8",[717]],["ext.kartographer","1h6se"],["ext.kartographer.style","1jlj3"],["ext.kartographer.site","1rxn9"],["ext.kartographer.site-loader","2h57g",[722],null,null,"return!mw.loader.getState('ext.kartographer.site');"],["mapbox","znuts"],["leaflet.draw","1edfi",[724]],["ext.kartographer.link","35d14",[728,211]],["ext.kartographer.box","1e7oe",[729,740,723,721,732,39,236]],["ext.kartographer.linkbox","2q5eb",[732]],["ext.kartographer.data","8a4ul"],["ext.kartographer.dialog","sgw73",[724,211,216,221]],["ext.kartographer.dialog.sidebar","1i0c6",[68,233,238]],["ext.kartographer.util","1f0vy",[720]],["ext.kartographer.frame","v0i4s",[727,211]],["ext.kartographer.staticframe","10zw4",[728,211,236]],["ext.kartographer.preview","1p9sr"],["ext.kartographer.editing","1hapb",[39]],["ext.kartographer.editor","19txf",[727,725]],["ext.kartographer.visualEditor","12rht",[732,445,235]],["ext.kartographer.lib.leaflet.markercluster","7fwoo",[724]],["ext.kartographer.lib.topojson","kkikj",[724]],["ext.kartographer.wv","1pfv3",[724,229]],["ext.kartographer.specialMap","kjbdy"],["ext.3d","ecfuz",[21]],["ext.3d.styles","jvyl2"],["mmv.3d","j2ia8",[743,395]],["mmv.3d.head","1auwx",[743,213,224,226]],["ext.3d.special.upload","1p8c3",[748,154]],["ext.3d.special.upload.styles","4pnv1"],["ext.readingLists.special.styles","17d6o"],["ext.readingLists.api","1emmn",[39]],["ext.readingLists.special","1hiwa",[750,29]],["ext.readingLists.bookmark.styles","b0afu"],["ext.readingLists.bookmark","18khw",[750,755,68]],["ext.readingLists.bookmark.confirmPopover","11hxk",[29]],["ext.readingLists.bookmark.icons","9eqcn"],["ext.readingLists.onboarding","5v49d",[68,29]],["ext.readingLists.onboarding.desktop","14kkv",[756]],["ext.readingLists.onboarding.mobile","hie85",[756]],["ext.GlobalPreferences.global","1i0ay",[179,188,200]],["ext.GlobalPreferences.local","nvd1y"],["ext.GlobalPreferences.global-nojs","kg98t"],["ext.GlobalPreferences.local-nojs","hlt0w"],["ext.growthExperiments.NotificationsTracking","1gfvt"],["ext.growthExperiments.mobileMenu.icons","1o2ol"],["ext.growthExperiments.SuggestedEditSession","1158a",[68,77,210]],["ext.growthExperiments.LevelingUp.InviteToSuggestedEdits","6j38u",[213,238]],["ext.growthExperiments.HelpPanelCta.styles","1w4pk"],["ext.growthExperiments.HomepageDiscovery.styles","mvm7p"],["ext.growthExperiments.HomepageDiscovery","wf46j"],["ext.growthExperiments.Homepage.mobile","1qqq1",[773,515]],["ext.growthExperiments.Homepage","zy1jd",[221]],["ext.growthExperiments.Homepage.Impact","l3qsm",[32,28]],["ext.growthExperiments.Homepage.Mentorship","1h89j",[780,765,211]],["ext.growthExperiments.Homepage.SuggestedEdits","kf5lg",[791,765,66,211,216,221,226,229,236]],["ext.growthExperiments.Homepage.styles","nv48q"],["ext.growthExperiments.StructuredTask","1gpgi",[779,786,451,211,236,237,238]],["ext.growthExperiments.StructuredTask.desktop","19qno",[776,420]],["ext.growthExperiments.StructuredTask.mobile","jq30v",[776,421]],["ext.growthExperiments.StructuredTask.PreEdit","18swn",[32,791,765,216,221]],["ext.growthExperiments.Help","n4xqw",[791,786,68,216,221,225,227,228,229,233,239]],["ext.growthExperiments.HelpPanel","1o03l",[780,767,779,66,238]],["ext.growthExperiments.HelpPanel.init","bu2f7",[765]],["ext.growthExperiments.PostEdit","1mo27",[791,765,786,221,236,238]],["ext.growthExperiments.Account","o5nzu",[211,216]],["ext.growthExperiments.Account.styles","1vy96"],["ext.growthExperiments.icons","1blm1"],["ext.growthExperiments.MentorDashboard","165j5",[32,786,108,199,28,221,228,229,233,236,237,238,239,30]],["ext.growthExperiments.MentorDashboard.styles","3ppqv"],["ext.growthExperiments.MentorDashboard.Discovery","ls0i0",[66]],["ext.growthExperiments.MentorDashboard.PostEdit","oi8wx",[59]],["ext.growthExperiments.DataStore","41tch",[213]],["ext.growthExperiments.MidEditSignup","pin0f",[68,221]],["ext.campaignEvents.specialPages","r1vci",[20,200,186,221,29]],["ext.campaignEvents.specialPages.styles","17p3i"],["ext.campaignEvents.eventpage.styles","1dwao"],["ext.campaignEvents.eventpage","3u3h6",[216,221]],["ext.campaignEvents.postEdit","1kmoa",[29]],["ext.nearby.styles","2k4sl"],["ext.nearby.scripts","1mnaz",[32,800,211]],["ext.nearby.images","1shax"],["searchVue","18beq",[32,21,49,68,31]],["searchVue.styles","15pre"],["searchVue.mobile.styles","ot4h6"],["ext.phonos.init","1gsyh"],["ext.phonos","16yra",[806,804,807,213,217,236]],["ext.phonos.icons.js","173an"],["ext.phonos.styles","1bxlo"],["ext.phonos.icons","1ryhb"],["ext.parsermigration.edit","dv4zr"],["ext.parsermigration.notice","8xw5l",[79]],["ext.parsermigration.indicator","wo6nn"],["ext.parsermigration.survey","8g6sq",[77]],["ext.parsermigration.reportbug.init","1ej3i",[77]],["ext.parsermigration.reportbug.dialog","1ylr4",[968,29]],["ext.communityConfiguration.Dashboard","pnnwl"],["ext.communityConfiguration.Editor.styles","1jroo"],["ext.communityConfiguration.Editor.common","2wp1y",[29]],["ext.communityConfiguration.Editor","10wvc",[817,49]],["ext.testKitchen","lq25z",[68,77]],["mw.config.values.wbCurrentSiteDetails","6cvop"],["mw.config.values.wbSiteDetails","1i1f4"],["mw.config.values.wbRepo","18lj4"],["ext.cite.visualEditor","1nxb9",[263,262,819,453,225,228,233,235]],["ext.cite.wikiEditor","hnbda",[262,368]],["ext.cite.referencePreviews","hodgb",[406]],["ext.pygments.view","7cskd",[69]],["ext.gadget.common-site","1xkg8",[],2],["ext.gadget.common-action-delete","1xmtf",[],2],["ext.gadget.common-action-edit","10lfk",[5],2],["ext.gadget.common-action-history","fdt9n",[],2],["ext.gadget.common-namespace-file","a0in6",[],2],["ext.gadget.common-special-abusefilter","1kvrg",[],2],["ext.gadget.common-special-block","knlxx",[0],2],["ext.gadget.common-special-movepage","1rmte",[],2],["ext.gadget.common-special-newpages","160rq",[79],2],["ext.gadget.common-special-search","l2b30",[79],2],["ext.gadget.common-special-upload","1go9j",[39,21,26],2],["ext.gadget.common-special-userrights","1ymrj",[79],2],["ext.gadget.common-special-watchlist-helperStyles","17vp1",[],2],["ext.gadget.common-special-watchlist","193lg",[68],2],["ext.gadget.registerTool","brak8",[79,5],2],["ext.gadget.darkModeFixes","1jl80",[],2],["ext.gadget.ondemand-mainPage","1m0f7",[79],2],["ext.gadget.ondemand-autoColumns","19c4g",[],2],["ext.gadget.ondemand-arbcomVoting","yyoew",[],2],["ext.gadget.ondemand-criteriaCheck","czpz2",[212],2],["ext.gadget.ondemand-fullscreenPopup","1fzd3",[],2],["ext.gadget.ondemand-imagemapHighlight","parl5",[],2],["ext.gadget.ondemand-imageStack","ja4fj",[],2],["ext.gadget.ondemand-imgToggle","yoj43",[],2],["ext.gadget.ondemand-inputBoxNoPrefix","olib2",[79],2],["ext.gadget.ondemand-pgn","17ki2",[],2],["ext.gadget.ondemand-purgeLink","bluuw",[79],2],["ext.gadget.BKL","1xljz",[0],2],["ext.gadget.collapserefs","1p11a",[68],2],["ext.gadget.directLinkToCommons","1h5yy",[79],2],["ext.gadget.referenceTooltips","1p0lt",[82,15],2],["ext.gadget.edittop","1aqp8",[0,79],2],["ext.gadget.navboxDefaultGadgets","orn84",[],2],["ext.gadget.navboxNavigation","7heus",[0,79],2],["ext.gadget.navboxFeaturedArticles","24nl5",[0,176,49,20],2],["ext.gadget.markadmins","1q3lz",[],2],["ext.gadget.vector2022KillSwitch","3ls4v",[68,77],2],["ext.gadget.urldecoder","o9yyk",[841],2],["ext.gadget.HotCat","j2ox0",[],2],["ext.gadget.refToolbar","bvwb0",[5,79],2],["ext.gadget.refToolbarBase","1sr86",[],2],["ext.gadget.ProveIt","1t7ei",[],2],["ext.gadget.Wikilinker","fsw91",[841],2],["ext.gadget.preview","12jqt",[39,45],2],["ext.gadget.DotsSyntaxHighlighter","1k873",[15],2],["ext.gadget.convenientDiscussions","1vy0p",[713,708,947,27,76,123,59,68,185,216,221,225,226,227,228,229,233,238],2],["ext.gadget.HighlightRedirects","17d4q",[79],2],["ext.gadget.HighlightUnpatrolledLinks","n1cm3",[79],2],["ext.gadget.popups","qwfy5",[],2],["ext.gadget.HideWikimediaNavigation","1ovu3",[],2],["ext.gadget.HideExternalLinks","6687y",[],2],["ext.gadget.OpaqueInfoboxReferences","pnhf3",[],2],["ext.gadget.shiftrefs","5wwnq",[],2],["ext.gadget.wdRedLinks","1a7uv",[49],2],["ext.gadget.markothers","1h8sf",[862],2],["ext.gadget.markblocked","1mrpj",[39],2],["ext.gadget.watchlist-helperStyles","1xwcn",[],2],["ext.gadget.watchlist","y7unv",[39,76],2],["ext.gadget.disableUpdatedMarker","vynzo",[],2],["ext.gadget.OldDiff","1o6d1",[],2],["ext.gadget.UTCLiveClock-helperStyles","aylyk",[],2],["ext.gadget.UTCLiveClock","1u3tk",[79],2],["ext.gadget.dropdown-menus","19nw7",[39],2],["ext.gadget.dropdown-menus-pagestyles","fqfra",[],2],["ext.gadget.dark-mode-toggle","1blod",[39,76,68],2],["ext.gadget.dark-mode-toggle-pagestyles","1ltsf",[],2],["ext.gadget.ajaxQuickDelete","1mycz",[79],2],["ext.gadget.DelKeepVis","1hgnl",[],2],["ext.gadget.hideSandboxLinkFromPersonalToolbar","1d01f",[],2],["ext.gadget.osm","n5ad0",[79],2],["ext.gadget.instantDiffs","12u1l",[0,39,68,59,210],2],["ext.gadget.logo","15d6n",[],2],["ext.gadget.wfTypos","y16xz",[],2],["ext.gadget.wfTyposUpdate","b0dix",[],2],["ext.gadget.wfIsbnLite","18pr8",[],2],["ext.gadget.toReasonator","1felk",[],2],["ext.gadget.useWD","10e8h",[],2],["ext.gadget.wikidataInfoboxExport","ox3ie",[49,216,221],2],["ext.gadget.wefcore","1xaz4",[27,612,49],2],["ext.gadget.wikidataHeaderLink","11zj4",[79],2],["ext.gadget.shortdesc-helper-loader","xpnt7",[39],2],["ext.gadget.shortdesc-helper-styles","xxn5k",[],2],["ext.gadget.iwcore","1c5lc",[77],2],["ext.gadget.iwlocalnames","g4tr6",[909],2],["ext.gadget.relatedIcons","ta9te",[],2],["ext.gadget.iwen","fr705",[909],2],["ext.gadget.iwde","12oz9",[909],2],["ext.gadget.iwfr","vqj9u",[909],2],["ext.gadget.iwpl","rrxv3",[909],2],["ext.gadget.iwit","159ow",[909],2],["ext.gadget.iwes","qm546",[909],2],["ext.gadget.iwpt","1l9ih",[909],2],["ext.gadget.iwnl","fq5p6",[909],2],["ext.gadget.iwhe","vhh5a",[909],2],["ext.gadget.iwja","aludg",[909],2],["ext.gadget.iwzh","aht64",[909],2],["ext.gadget.iwuk","fq54a",[909],2],["ext.gadget.iwbe","h45g2",[909],2],["ext.gadget.iwrussia","ucj56",[909],2],["ext.gadget.antivandalRequests","16l2b",[79],2],["ext.gadget.qualityArticles","chhx1",[27,39],2],["ext.gadget.featuredlists","1p4df",[27,39],2],["ext.gadget.DYK","rc6nz",[],2],["ext.gadget.articleStats","sbaqw",[39],2],["ext.gadget.iwrm","kzl4h",[79],2],["ext.gadget.mobile-sidebar","1pmj3",[],2],["ext.gadget.dark-mode","10zbc",[],2],["ext.gadget.test","1hp7a",[857],2],["ext.gadget.test2","apvgb",[934],2],["ext.gadget.yandex-tts","1n3ap",[],2],["ext.gadget.yandex-speechrecognition","1s6dx",[],2],["ext.gadget.GeoBox","ggbr1",[],2],["ext.gadget.wikibugs","i63fo",[79],2],["ext.gadget.wikibugs-core","15cuu",[229,216,221],2],["ext.gadget.wikificator","1wx88",[841],2],["ext.gadget.summaryButtons","ply92",[176,79],2],["ext.gadget.newTopicOnTop","2z0z6",[26],2],["ext.gadget.ActivateGadget","1eq87",[27,945,946],2],["ext.gadget.libJQuery","1k8fc",[],2],["ext.gadget.SettingsManager","1mn2p",[77],2],["ext.confirmEdit.CaptchaInputWidget","5awyk",[213]],["ext.globalCssJs.user","1son6",[],0,"metawiki"],["ext.globalCssJs.user.styles","1son6",[],0,"metawiki"],["ext.wikimediaMessages.ipInfo.hooks","1mo8z",[714]],["ext.abuseFilter.ace","6vn7c",[562]],["ext.visualEditor.editCheck.checks","10xa8",[430],4],["ext.guidedTour.tour.firsteditve","1n2xe",[492]],["ext.echo.emailicons","10gxi"],["ext.echo.secondaryicons","gijgo"],["ext.wikimediaEvents.visualEditor","19w1w",[418]],["mw.cx.externalmessages","1bodt"],["wikibase.Site","1aijp",[602]],["ext.checkUser.tempAccountOnboarding","8kwr0",[32]],["ext.checkUser.ipInfo.hooks","1hq0e"],["ext.checkUser.suggestedInvestigations","kttyb",[32,19,13]],["ext.quicksurveys.survey.parsoid-migration-survey-2026","mzjq5",[718]],["ext.quicksurveys.survey.Automatic.Translation.Feedback","oqdic",[718]],["ext.guidedTour.tour.helppanel","1x6kc",[492]],["ext.guidedTour.tour.homepage_mentor","dyiom",[492]],["ext.guidedTour.tour.homepage_welcome","kdr8z",[492]],["ext.guidedTour.tour.homepage_discovery","90of1",[492]],["mediawiki.messagePoster","1d2qc",[49]]]);
|
| 23 |
+
mw.config.set(window.RLCONF||{});mw.loader.state(window.RLSTATE||{});mw.loader.load(window.RLPAGEMODULES||[]);queue=window.RLQ||[];RLQ=[];RLQ.push=function(fn){if(typeof fn==='function'){fn();}else{RLQ[RLQ.length]=fn;}};while(queue[0]){RLQ.push(queue.shift());}NORLQ={push:function(){}};}());}
|
app/static/assets/load2.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
:root,.skin-invert,.notheme{--ruwiki-background-color-blue150:#dcebff;--ruwiki-background-color-blue200:#cfe3ff}@media screen{html.skin-theme-clientpref-night{--ruwiki-background-color-blue150:#1d2a42;--ruwiki-background-color-blue200:#233a67}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os{--ruwiki-background-color-blue150:#1d2a42;--ruwiki-background-color-blue200:#233a67}}blockquote{quotes:'\00AB' '\00BB'}pre{overflow-x:auto;overflow-y:hidden}pre,textarea{tab-size:4}.mw-parser-output small,.mw-parser-output sub,.mw-parser-output sup{font-size:85%}.mw-fr-basic.cdx-message{margin-top:0.25em;padding:0.4em 1em}.mw-fr-basic.mw-fr-draft-synced.cdx-message,.mw-fr-basic.mw-fr-stable-synced.cdx-message,.mw-fr-basic.mw-fr-stable-not-synced.cdx-message{background:none;border:none;color:var(--color-subtle,#54595d);padding:0}.mw-fr-basic.cdx-message .cdx-message__icon{height:1.25rem}.mw-fr-basic.cdx-message .cdx-message__content{--font-size-medium:1em;--line-height-small:inherit;font-size:1em;line-height:inherit;hyphens:none;margin-left:0.5em;word-wrap:normal}.mw-babel-box-level-N{display:none}.cx-callout:not(.cx-campaign-contributionsmenu):not(.cx-entrypoint-dialog){display:none !important}.mwe-math-fallback-image-display,.mwe-math-mathml-display{margin-left:1.6em !important;margin-top:0.6em;margin-bottom:0.6em}.mwe-math-mathml-display math{display:inline}.group-checkuser-show,.group-bureaucrat-show,.group-sysop-show,.group-engineer-show,.group-closer-show,.group-filemover-show,.group-editor-show,.group-autoreview-show,.group-user-show{display:none}.plainlist ol:not(.references),.plainlist dl,.plainlist ul{line-height:inherit;list-style:none none;margin:0;padding:0}.plainlist ol:not(.references) li,.plainlist dl dt,.plainlist dl dd,.plainlist ul li{margin:0}.plainlist dl dt:after{content:":"}.nowrap,.nowraplinks a,.nowraplinks .selflink,.hlist-items-nowrap dd,.hlist-items-nowrap dt,.hlist-items-nowrap li{white-space:nowrap}.wrap,.wraplinks a,.hlist-items-nowrap dl dl,.hlist-items-nowrap dl ol,.hlist-items-nowrap dl ul,.hlist-items-nowrap ol dl,.hlist-items-nowrap ol ol,.hlist-items-nowrap ol ul,.hlist-items-nowrap ul dl,.hlist-items-nowrap ul ol,.hlist-items-nowrap ul ul{white-space:normal}.reflist-narrow .mw-references-columns{column-width:20em}.reflist-wide .mw-references-columns{column-width:40em}.reflist ol.references{list-style-type:inherit}.NavFrame,.NavHead,.NavContent{display:block !important}.infobox th:not(.noplainlist) > ul,.infobox td:not(.noplainlist) > ul,.infobox [data-wikidata-property-id] > ul{list-style-type:none;list-style-image:none;margin:0;padding:0}.infobox .noplainlist > ul:first-child{margin-top:0}.infobox th > ol,.infobox td > ol,.infobox [data-wikidata-property-id] > ol{margin:0 0 0 2em;padding:0}.infobox th > dl,.infobox td > dl,.infobox [data-wikidata-property-id] > dl{margin:0}.infobox.infobox li,.infobox.infobox dt,.infobox.infobox dd{margin-bottom:0}.infobox li,.infobox dt,.infobox dd{margin-bottom:0}.infobox th > ol.references,.infobox td > ol.references{line-height:1.25em}.infobox th > ol.references li,.infobox td > ol.references li{margin-bottom:0.1em}.infobox th > ol.references li:last-child,.infobox td > ol.references li:last-child{margin-bottom:0}table.infobox td p{margin:0 !important}table.infobox td .NavContent{margin-left:0 !important}.ref-info{font-size:85%;cursor:help;color:#72777d}@media screen{html.skin-theme-clientpref-night .ref-info{color:#a2a9b1}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .ref-info{color:#a2a9b1}}@media screen{html.skin-theme-clientpref-night .mw-parser-output [bgcolor],html.skin-theme-clientpref-night .mw-parser-output [style*='background']{color:#202122}html.skin-theme-clientpref-night .mw-parser-output [bgcolor] .mwe-math-element img,html.skin-theme-clientpref-night .mw-parser-output [style*='background'] .mwe-math-element img{filter:none}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output [bgcolor],html.skin-theme-clientpref-os .mw-parser-output [style*='background']{color:#202122}html.skin-theme-clientpref-os .mw-parser-output [bgcolor] .mwe-math-element img,html.skin-theme-clientpref-os .mw-parser-output [style*='background'] .mwe-math-element img{filter:none}}@media screen{html.skin-theme-clientpref-night .infobox table[style*='background'],html.skin-theme-clientpref-night .infobox caption[style*='background'],html.skin-theme-clientpref-night .infobox th[style*='background'],html.skin-theme-clientpref-night .infobox td[style*='background']{background:inherit !important;color:inherit !important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .infobox table[style*='background'],html.skin-theme-clientpref-os .infobox caption[style*='background'],html.skin-theme-clientpref-os .infobox th[style*='background'],html.skin-theme-clientpref-os .infobox td[style*='background']{background:inherit !important;color:inherit !important}}@media screen{html.skin-theme-clientpref-night .infobox-image:has(img[src$='.gif']),html.skin-theme-clientpref-night .infobox-image:has(img[src$='.png']),html.skin-theme-clientpref-night .infobox-image:has(img[src$='.svg']){background:#c8ccd1;color:#000}html.skin-theme-clientpref-night .infobox-image:has(img[src$='.gif']) .media-caption,html.skin-theme-clientpref-night .infobox-image:has(img[src$='.png']) .media-caption,html.skin-theme-clientpref-night .infobox-image:has(img[src$='.svg']) .media-caption{background:var(--background-color-neutral-subtle,#f8f9fa);color:var(--color-base,#202122)}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .infobox-image:has(img[src$='.gif']),html.skin-theme-clientpref-os .infobox-image:has(img[src$='.png']),html.skin-theme-clientpref-os .infobox-image:has(img[src$='.svg']){background:#c8ccd1;color:#000}html.skin-theme-clientpref-os .infobox-image:has(img[src$='.gif']) .media-caption,html.skin-theme-clientpref-os .infobox-image:has(img[src$='.png']) .media-caption,html.skin-theme-clientpref-os .infobox-image:has(img[src$='.svg']) .media-caption{background:var(--background-color-neutral-subtle,#f8f9fa);color:var(--color-base,#202122)}}@media screen{html.skin-theme-clientpref-night .navbox th[style*='background'],html.skin-theme-clientpref-night .navbox-title[style*='background']{background:var(--ruwiki-background-color-blue200,#cfe3ff) !important;color:inherit !important;box-shadow:none !important}html.skin-theme-clientpref-night .navbox-abovebelow[style*='background'],html.skin-theme-clientpref-night th.navbox-group[style*='background'],html.skin-theme-clientpref-night .navbox-subgroup .navbox-title[style*='background']{background:var(--ruwiki-background-color-blue150,#dcebff) !important;color:inherit !important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .navbox th[style*='background'],html.skin-theme-clientpref-os .navbox-title[style*='background']{background:var(--ruwiki-background-color-blue200,#cfe3ff) !important;color:inherit !important;box-shadow:none !important}html.skin-theme-clientpref-os .navbox-abovebelow[style*='background'],html.skin-theme-clientpref-os th.navbox-group[style*='background'],html.skin-theme-clientpref-os .navbox-subgroup .navbox-title[style*='background']{background:var(--ruwiki-background-color-blue150,#dcebff) !important;color:inherit !important}}.mw-changeslist-watchedseen div.mw-rcfilters-ui-highlights-color-c5,.mw-rcfilters-ui-changesListWrapperWidget.mw-rcfilters-ui-changesListWrapperWidget-highlighted .mw-changeslist-watchedseen div.mw-rcfilters-ui-highlights-color-none{background-color:var(--background-color-base,#fff)}@media screen{html.skin-theme-clientpref-night .mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey td:not(:nth-child(-n+2)){background-color:#27292d}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-rcfilters-ui-changesListWrapperWidget-enhanced-grey td:not(:nth-child(-n+2)){background-color:#27292d}}
|
app/static/assets/load3.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
b{font-weight:700}cite,dfn{font-style:inherit}sub,sup{line-height:1em}.mw-body blockquote{background:var(--background-color-interactive-subtle,#f8f9fa);overflow:hidden}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){#p-logo a{background-size:136px auto}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){#p-logo a{background-size:135px auto}}#file img{background:url(https://ru.wikipedia.org/w/resources/src/mediawiki.action/images/checker.svg) repeat}body.ns-talk a.external[href*="//ru.wikipedia.org/"],body.ns-4 a.external[href*="//ru.wikipedia.org/"],body.ns-104 a.external[href*="//ru.wikipedia.org/"],body.ns-106 a.external[href*="//ru.wikipedia.org/"]{background:none !important;padding-right:0 !important}a[href$=".pdf"].external,a[href*=".pdf?"].external,a[href*=".pdf#"].external,a[href$=".PDF"].external,a[href*=".PDF?"].external,a[href*=".PDF#"].external,span.PDFlink a{background:url(https://upload.wikimedia.org/wikipedia/commons/c/cb/Icons-mini-file_pdf.svg) center right no-repeat !important;background-size:16px 100% !important;padding-right:18px !important}.hatnote{font-style:italic;padding-left:1.6em}.clickable-image a:hover{text-decoration:none}#mw-subcategories{clear:left}#mw-pages{clear:both}*:not(.mw-contributions-blocked-notice-partial) > .mw-warning-with-logexcerpt,div.mw-lag-warn-high,div.mw-cascadeprotectedwarning,div#mw-protect-cascadeon{background-color:var(--background-color-error-subtle,#fee7e6);border:1px solid var(--border-color-error,#b32424)}@supports ((-webkit-mask-image:none) or (mask-image:none)){*:not(.mw-contributions-blocked-notice-partial) > .mw-warning-with-logexcerpt .cdx-message__icon,div.mw-lag-warn-high .cdx-message__icon,div.mw-cascadeprotectedwarning .cdx-message__icon,div#mw-protect-cascadeon .cdx-message__icon{background-color:var(--color-error,#d73333)}}.permissions-errors{list-style:none;margin:0}.sitedir-ltr .mw-dismissable-notice-body{margin-right:5em !important}.mw-tag-markers{font-size:90%;font-style:italic}.printonly{display:none}.mw-gallery-traditional.center,.mw-gallery-nolines.center{margin-left:auto;margin-right:auto}.mw-revision,#mw-revision-nav{margin-top:0.5em}.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button){font-weight:normal}.client-js .collapsible:not(.mw-made-collapsible).collapsed > tbody > tr:not(:first-child){display:none}.mwe-math-element{white-space:nowrap}.mw-babel-box-level-N{display:none}.mw-fr-reviewlink,.fr-hist-basic-user,.fr-hist-basic-auto{font-weight:normal;font-size:85%}.flaggedrevs-pending{background:#ffc}.cx-uls-relevant-languages-banner{display:none}.wef_low_priority_links a,.wef_low_priority_links a.extiw,.wef_low_priority_links a.external,.wef_low_priority_links a:visited,.wef_low_priority_links a.extiw:visited,.wef_low_priority_links a.external:visited{color:var(--color-base,#202122)}.mw-ve-editNotice .mbox-image,.ve-active .ve-hide,.ve-show{display:none}.ve-active div.ve-show,.ve-active p.ve-show{display:block}.ve-active span.ve-show,.ve-active small.ve-show{display:inline}.ve-active li.ve-show{display:list-item}.ve-ui-mwSaveDialog .oo-ui-flaggedElement-error.oo-ui-iconElement table.fmbox{margin-top:0}.ve-ui-mwSaveDialog .oo-ui-flaggedElement-error.oo-ui-iconElement .mbox-image{display:none}.hlist dl,.hlist.hlist ol,.hlist.hlist ul{margin:0;padding:0}.hlist dd,.hlist dt,.hlist li{margin:0;display:inline}.hlist.inline,.hlist.inline dl,.hlist.inline ol,.hlist.inline ul,.hlist dl dl,.hlist dl ol,.hlist dl ul,.hlist ol dl,.hlist ol ol,.hlist ol ul,.hlist ul dl,.hlist ul ol,.hlist ul ul{display:inline}.hlist .mw-empty-li,.hlist .mw-empty-elt{display:none}.hlist dt:after{content:":"}.hlist dd:after,.hlist li:after{content:"\00a0· ";font-weight:bold}.hlist dd:last-child:after,.hlist dt:last-child:after,.hlist li:last-child:after{content:none}.hlist dd dd:first-child:before,.hlist dd dt:first-child:before,.hlist dd li:first-child:before,.hlist dt dd:first-child:before,.hlist dt dt:first-child:before,.hlist dt li:first-child:before,.hlist li dd:first-child:before,.hlist li dt:first-child:before,.hlist li li:first-child:before{content:" (";font-weight:normal}.hlist dd dd:last-child:after,.hlist dd dt:last-child:after,.hlist dd li:last-child:after,.hlist dt dd:last-child:after,.hlist dt dt:last-child:after,.hlist dt li:last-child:after,.hlist li dd:last-child:after,.hlist li dt:last-child:after,.hlist li li:last-child:after{content:")";font-weight:normal}.hlist ol{counter-reset:listitem}.hlist ol > li{counter-increment:listitem}.hlist ol > li:before{content:" " counter(listitem) "\a0"}.hlist dd ol > li:first-child:before,.hlist dt ol > li:first-child:before,.hlist li ol > li:first-child:before{content:" (" counter(listitem) "\a0"}ol.references{font-size:100%}.reflist,.references-small{font-size:90%;margin-bottom:0.5em}.references-small ol.references{list-style-type:inherit}sup.reference:target,ol.references li:target,.highlight-target:target,cite:target,span.citation:target{background:var(--background-color-progressive-subtle,#eaf3ff)}sup.reference:target{font-weight:bold}span[rel="mw:referencedBy"]{counter-reset:mw-ref-linkback 0}span[rel="mw:referencedBy"] > a::before{font-weight:bold;font-style:italic;content:counter(mw-ref-linkback,decimal)}div.columns{margin-top:0.3em}div.columns dl,div.columns ol,div.columns ul{margin-top:0}.nocolbreak,div.columns li,div.columns dd dd{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid-column}.standard,.wide{background:none;margin-top:1em;margin-bottom:1em;border:1px solid var(--border-color-base,#a2a9b1);border-collapse:collapse}.standard > tr > th,.standard > tr > td,.standard > * > tr > th,.standard > * > tr > td,.wide > tr > th,.wide > tr > td,.wide > * > tr > th,.wide > * > tr > td{border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em 0.4em}.standard > tr > th,.standard > * > tr > th,.wide > tr > th,.wide > * > tr > th{background-color:var(--background-color-progressive-subtle,#eaf3ff)}.standard > caption,.wide > caption{font-weight:bold}.wide{width:100%}table.graytable{background:var(--background-color-disabled-subtle,#eaecf0);padding:1em;width:100%}table.graytable caption{padding-top:0.5em;background:var(--background-color-disabled-subtle,#eaecf0);font-weight:bold}table.graytable caption span.subcaption{font-size:88.5%;font-weight:normal}table.graytable th,table.graytable td{font-size:88.5%}tr.highlight th,table tr th.highlight{background:var(--ruwiki-background-color-blue150,#dcebff)}tr.highlight td,table tr td.highlight{background:var(--background-color-warning-subtle,#fef6e7);font-weight:normal}tr.bright th,table tr th.bright{background:var(--ruwiki-background-color-blue200,#cfe3ff)}tr.bright td,table tr td.bright{background:var(--background-color-warning-subtle,#fef6e7)}tr.shadow th,tr.shadow td,table tr th.shadow,table tr td.shadow{background:var(--background-color-disabled-subtle,#eaecf0)}tr.dark th,tr.dark td,table tr th.dark,table tr td.dark{background:var(--background-color-disabled,#c8ccd1)}.IPA,.Unicode{font-family:"Arial Unicode MS","Lucida Sans Unicode",sans-serif}.infobox{border:1px solid var(--border-color-base,#a2a9b1);background:var(--background-color-neutral-subtle,#f8f9fa);margin-top:.15em;margin-bottom:.5em;margin-left:1em;padding:.4em;float:right;clear:right;font-size:90%;width:23em;vertical-align:middle;text-align:left;line-height:1.5em;border-collapse:separate;border-spacing:2px}.infobox > caption{font-size:125%;font-weight:bold;padding:.2em}.infobox td,.infobox th{vertical-align:top}.infobox-above{background:var(--ruwiki-background-color-blue200,#cfe3ff);font-size:120%;text-align:center}.infobox-image{padding-left:0;padding-right:0;text-align:center}.infobox-header{background:var(--ruwiki-background-color-blue150,#dcebff);text-align:center}.infobox-below{background:var(--ruwiki-background-color-blue150,#dcebff);text-align:center}.infobox small,.navbox small,.references small{font-size:90%}.navbox{box-sizing:border-box;border:1px solid var(--border-color-base,#a2a9b1);width:100%;margin:1em auto 0;clear:both;font-size:90%;text-align:center;padding:3px}.navbox-inner,.navbox-subgroup{width:100%}.navbox-group,.navbox-title,.navbox-abovebelow{padding:0.25em 1em;text-align:center}.navbox-title{line-height:1.6em}tr + tr > .navbox-abovebelow,tr + tr > .navbox-group,tr + tr > .navbox-image,tr + tr > .navbox-list{border-top:2px solid #fdfdfd}th.navbox-group{white-space:nowrap;text-align:right}.navbox,.navbox-subgroup{background:#fdfdfd}.navbox-list{border-color:#fdfdfd}.navbox th,.navbox-title{background:var(--ruwiki-background-color-blue200,#cfe3ff)}.navbox-abovebelow,th.navbox-group,.navbox-subgroup .navbox-title{background:var(--ruwiki-background-color-blue150,#dcebff)}.navbox-subgroup .navbox-group,.navbox-subgroup .navbox-abovebelow{background:var(--background-color-progressive-subtle,#eaf3ff)}.navbox-even{background:#f3f5f7}.navbox-odd{background:transparent}@media screen{html.skin-theme-clientpref-night .navbox,html.skin-theme-clientpref-night .navbox-subgroup{background:#171819}html.skin-theme-clientpref-night .navbox-list{border-color:#171819}html.skin-theme-clientpref-night tr + tr > .navbox-abovebelow,html.skin-theme-clientpref-night tr + tr > .navbox-group,html.skin-theme-clientpref-night tr + tr > .navbox-image,html.skin-theme-clientpref-night tr + tr > .navbox-list{border-top-color:#171819}html.skin-theme-clientpref-night .navbox-even{background:#202122}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .navbox,html.skin-theme-clientpref-os .navbox-subgroup{background:#171819}html.skin-theme-clientpref-os .navbox-list{border-color:#171819}html.skin-theme-clientpref-os tr + tr > .navbox-abovebelow,html.skin-theme-clientpref-os tr + tr > .navbox-group,html.skin-theme-clientpref-os tr + tr > .navbox-image,html.skin-theme-clientpref-os tr + tr > .navbox-list{border-top-color:#171819}html.skin-theme-clientpref-os .navbox-even{background:#202122}}.navbox .hlist td dl,.navbox .hlist td ol,.navbox .hlist td ul,.navbox td.hlist dl,.navbox td.hlist ol,.navbox td.hlist ul{padding:1px 0 0}.navbox .navbox{margin-top:0}.navbox + .navbox{margin-top:-1px}#mw-indicator-0-coord + .mw-indicator{border-left:1px solid #A7D7F9;margin-left:0.25em;padding-left:0.5em}body.page-Заглавная_страница #ca-current,body.page-Заглавная_страница #ca-delete,body.page-Заглавная_страница #t-cite,body.page-Заглавная_страница #catlinks,body.page-Заглавная_страница #lastmod,body.page-Заглавная_страница #footer-info-lastmod,body.page-Заглавная_страница.action-view .mw-indicators,body.page-Заглавная_страница.action-view #siteSub,body.page-Заглавная_страница.action-view #contentSub,body.page-Заглавная_страница.action-view #contentSub2,body.page-Заглавная_страница.action-view #mw-data-after-content{display:none !important}#siteSub{display:block}.uls-language-action a[href*="campaign=ulsaddlanguages"]{display:none}@media print{.ns-0 .navbox,.ns-0 .metadata,.hatnote,.navbar,#catlinks,.collapseRefs,#mw-fr-reviewnotice,.wikidata-snak a.external.text:after{display:none}.toccolours{border:1px solid #aaa}.mw-parser-output .mw-collapsed,.mw-parser-output .mw-collapsed > li,.mw-parser-output .mw-collapsed tr{display:initial !important;display:revert !important;position:static !important;height:auto !important;width:auto !important}.mw-parser-output .mw-collapsed .mw-collapsible-content{display:initial !important;position:static !important;height:auto !important;width:auto !important}a.NavToggle,span.collapseButton,button.mw-collapsible-toggle{display:none}.printonly{display:inline}.mw-kartographer-maplink{padding-left:0 !important}}
|
app/static/assets/load4.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
.rt-overlay{position:absolute;width:100%;font-size:calc(var(--font-size-medium,1rem) * (13 / 14));line-height:1.5em;z-index:800;top:0}.skin-vector-legacy .rt-overlay{font-size:13px}.skin-monobook .rt-overlay{font-size:12.7px}.rt-tooltip{position:absolute;max-width:27em;background:var(--background-color-base,#fff);color:var(--color-base,#202122);border:1px solid var(--border-color-subtle,#c8ccd1);border-radius:2px;box-shadow:0 20px 48px 0 rgba(0,0,0,0.2)}html.skin-theme-clientpref-night .rt-tooltip{box-shadow:0 20px 48px 0 rgba(0,0,0,1)}.rt-tooltip-above .rt-hoverArea{margin-bottom:-0.6em;padding-bottom:0.6em}.rt-tooltip-below .rt-hoverArea{margin-top:-0.7em;padding-top:0.7em}.rt-scroll{overflow-x:auto}.rt-content{padding:0.7em 0.9em;overflow-wrap:break-word}.rt-tail{background:linear-gradient(to top right,var(--border-color-subtle,#c8ccd1) 48%,rgba(0,0,0,0) 48%);--tail-left:19px;--tail-side-width:13px}.rt-tail,.rt-tail:after{position:absolute;z-index:-1;width:var(--tail-side-width);height:var(--tail-side-width)}.rt-tail:after{content:'';background:var(--background-color-base,#fff);bottom:1px;left:1px}.rt-tooltip-above .rt-tail{transform:rotate(-45deg);transform-origin:100% 100%;bottom:0;left:var(--tail-left)}.rt-tooltip-below .rt-tail{transform:rotate(135deg);transform-origin:0 0;top:0;left:calc(var(--tail-left) + var(--tail-side-width))}.rt-settingsLink{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%0D%0A%20%20%20%20%3Cpath%20fill%3D%22%2354595d%22%20d%3D%22M20%2014.5v-2.9l-1.8-.3c-.1-.4-.3-.8-.6-1.4l1.1-1.5-2.1-2.1-1.5%201.1c-.5-.3-1-.5-1.4-.6L13.5%205h-2.9l-.3%201.8c-.5.1-.9.3-1.4.6L7.4%206.3%205.3%208.4l1%201.5c-.3.5-.4.9-.6%201.4l-1.7.2v2.9l1.8.3c.1.5.3.9.6%201.4l-1%201.5%202.1%202.1%201.5-1c.4.2.9.4%201.4.6l.3%201.8h3l.3-1.8c.5-.1.9-.3%201.4-.6l1.5%201.1%202.1-2.1-1.1-1.5c.3-.5.5-1%20.6-1.4l1.5-.3zM12%2016c-1.7%200-3-1.3-3-3s1.3-3%203-3%203%201.3%203%203-1.3%203-3%203z%22%2F%3E%0D%0A%3C%2Fsvg%3E);float:right;margin:-0.5em -0.5em 0 0.5em;box-sizing:border-box;height:32px;width:32px;border:1px solid transparent;border-radius:2px;background-position:center center;background-repeat:no-repeat;background-size:24px 24px}html.skin-theme-clientpref-night .rt-settingsLink{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%0D%0A%20%20%20%20%3Cpath%20fill%3D%22%23c8ccd1%22%20d%3D%22M20%2014.5v-2.9l-1.8-.3c-.1-.4-.3-.8-.6-1.4l1.1-1.5-2.1-2.1-1.5%201.1c-.5-.3-1-.5-1.4-.6L13.5%205h-2.9l-.3%201.8c-.5.1-.9.3-1.4.6L7.4%206.3%205.3%208.4l1%201.5c-.3.5-.4.9-.6%201.4l-1.7.2v2.9l1.8.3c.1.5.3.9.6%201.4l-1%201.5%202.1%202.1%201.5-1c.4.2.9.4%201.4.6l.3%201.8h3l.3-1.8c.5-.1.9-.3%201.4-.6l1.5%201.1%202.1-2.1-1.1-1.5c.3-.5.5-1%20.6-1.4l1.5-.3zM12%2016c-1.7%200-3-1.3-3-3s1.3-3%203-3%203%201.3%203%203-1.3%203-3%203z%22%2F%3E%0D%0A%3C%2Fsvg%3E)}.rt-settingsLink:hover,.rt-settingsLink:active{background-color:var(--background-color-interactive,#eaecf0)}.rt-settingsLink:active{border-color:var(--border-color-interactive,#72777d)}.rt-settingsLink:focus{outline:1px solid transparent}.rt-settingsLink:focus:not(:active){border-color:var(--border-color-progressive--focus,#36c);box-shadow:inset 0 0 0 1px var(--box-shadow-color-progressive--focus,#36c)}.rt-target{background-color:var(--background-color-progressive-subtle,#eaf3ff)}.rt-enableField{font-weight:bold;margin-bottom:1.25em}.rt-numberInput.rt-numberInput{width:10em}.rt-tooltipsForCommentsField.rt-tooltipsForCommentsField.rt-tooltipsForCommentsField{margin-top:1.25em}.rt-disabledHelp{border-collapse:collapse}.rt-disabledHelp td{padding:0}.rt-disabledNote.rt-disabledNote{vertical-align:bottom;padding-left:0.36em;font-weight:bold}@keyframes rt-fade-in-up{0%{opacity:0;transform:translate(0,20px)}100%{opacity:1;transform:translate(0,0)}}@keyframes rt-fade-in-down{0%{opacity:0;transform:translate(0,-20px)}100%{opacity:1;transform:translate(0,0)}}@keyframes rt-fade-out-down{0%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(0,20px)}}@keyframes rt-fade-out-up{0%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(0,-20px)}}.rt-fade-in-up{animation:rt-fade-in-up 0.2s ease forwards}.rt-fade-in-down{animation:rt-fade-in-down 0.2s ease forwards}.rt-fade-out-down{animation:rt-fade-out-down 0.2s ease forwards}.rt-fade-out-up{animation:rt-fade-out-up 0.2s ease forwards}
|
app/static/assets/mediawiki_compact.svg
ADDED
|
|
app/static/assets/wikimedia.svg
ADDED
|
|
app/static/assets/wikipedia-tagline-ru.svg
ADDED
|
|
app/static/assets/wikipedia-wordmark-ru.svg
ADDED
|
|
app/static/assets/wikipedia.png
ADDED
|
Git LFS Details
|
app/static/assets/Начало_ул._Мнёвники_(площадь_Маршала_Бабаджаняна,_перекрёсток_с_проспектом_Маршала_Жукова.jpg
ADDED
|
Git LFS Details
|
app/templates/index.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
app/templates/search.html
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="ru">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-width=1.0">
|
| 6 |
+
<title>Найди себя в Википедии</title>
|
| 7 |
+
<link rel="icon" href="https://ru.wikipedia.org/static/favicon/wikipedia.ico">
|
| 8 |
+
<style>
|
| 9 |
+
body {
|
| 10 |
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Lato, Helvetica, Arial, sans-serif;
|
| 11 |
+
background-color: #f8f9fa;
|
| 12 |
+
margin: 0;
|
| 13 |
+
padding: 0;
|
| 14 |
+
display: flex;
|
| 15 |
+
flex-direction: column;
|
| 16 |
+
align-items: center;
|
| 17 |
+
justify-content: center;
|
| 18 |
+
min-height: 100vh;
|
| 19 |
+
color: #202122;
|
| 20 |
+
}
|
| 21 |
+
.container {
|
| 22 |
+
text-align: center;
|
| 23 |
+
background: white;
|
| 24 |
+
padding: 40px;
|
| 25 |
+
border-radius: 10px;
|
| 26 |
+
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
|
| 27 |
+
max-width: 500px;
|
| 28 |
+
width: 90%;
|
| 29 |
+
}
|
| 30 |
+
.logo {
|
| 31 |
+
width: 150px;
|
| 32 |
+
margin-bottom: 20px;
|
| 33 |
+
}
|
| 34 |
+
h1 {
|
| 35 |
+
font-size: 24px;
|
| 36 |
+
margin-bottom: 10px;
|
| 37 |
+
font-weight: normal;
|
| 38 |
+
}
|
| 39 |
+
.subtitle {
|
| 40 |
+
color: #72777d;
|
| 41 |
+
margin-bottom: 30px;
|
| 42 |
+
font-size: 14px;
|
| 43 |
+
}
|
| 44 |
+
.upload-area {
|
| 45 |
+
border: 2px dashed #a2a9b1;
|
| 46 |
+
border-radius: 8px;
|
| 47 |
+
padding: 40px 20px;
|
| 48 |
+
cursor: pointer;
|
| 49 |
+
transition: background 0.3s;
|
| 50 |
+
margin-bottom: 20px;
|
| 51 |
+
position: relative;
|
| 52 |
+
}
|
| 53 |
+
.upload-area:hover {
|
| 54 |
+
background: #f8f9fa;
|
| 55 |
+
}
|
| 56 |
+
.upload-area input[type="file"] {
|
| 57 |
+
position: absolute;
|
| 58 |
+
top: 0;
|
| 59 |
+
left: 0;
|
| 60 |
+
width: 100%;
|
| 61 |
+
height: 100%;
|
| 62 |
+
opacity: 0;
|
| 63 |
+
cursor: pointer;
|
| 64 |
+
}
|
| 65 |
+
.upload-icon {
|
| 66 |
+
font-size: 40px;
|
| 67 |
+
color: #36c;
|
| 68 |
+
margin-bottom: 10px;
|
| 69 |
+
}
|
| 70 |
+
.btn-submit {
|
| 71 |
+
background-color: #36c;
|
| 72 |
+
color: white;
|
| 73 |
+
border: none;
|
| 74 |
+
padding: 12px 24px;
|
| 75 |
+
font-size: 16px;
|
| 76 |
+
border-radius: 4px;
|
| 77 |
+
cursor: pointer;
|
| 78 |
+
font-weight: bold;
|
| 79 |
+
transition: background 0.3s;
|
| 80 |
+
width: 100%;
|
| 81 |
+
}
|
| 82 |
+
.btn-submit:hover {
|
| 83 |
+
background-color: #2a4b8d;
|
| 84 |
+
}
|
| 85 |
+
.btn-submit:disabled {
|
| 86 |
+
background-color: #a2a9b1;
|
| 87 |
+
cursor: not-allowed;
|
| 88 |
+
}
|
| 89 |
+
.note {
|
| 90 |
+
margin-top: 15px;
|
| 91 |
+
font-size: 13px;
|
| 92 |
+
color: #d33;
|
| 93 |
+
font-weight: bold;
|
| 94 |
+
}
|
| 95 |
+
.disclaimer {
|
| 96 |
+
position: fixed;
|
| 97 |
+
bottom: 10px;
|
| 98 |
+
right: 10px;
|
| 99 |
+
font-size: 11px;
|
| 100 |
+
color: #a2a9b1;
|
| 101 |
+
max-width: 250px;
|
| 102 |
+
text-align: right;
|
| 103 |
+
}
|
| 104 |
+
#preview {
|
| 105 |
+
max-width: 100%;
|
| 106 |
+
max-height: 200px;
|
| 107 |
+
margin-top: 15px;
|
| 108 |
+
display: none;
|
| 109 |
+
border-radius: 4px;
|
| 110 |
+
}
|
| 111 |
+
.loading-overlay {
|
| 112 |
+
display: none;
|
| 113 |
+
position: fixed;
|
| 114 |
+
top: 0;
|
| 115 |
+
left: 0;
|
| 116 |
+
width: 100%;
|
| 117 |
+
height: 100%;
|
| 118 |
+
background: rgba(255, 255, 255, 0.9);
|
| 119 |
+
z-index: 1000;
|
| 120 |
+
flex-direction: column;
|
| 121 |
+
align-items: center;
|
| 122 |
+
justify-content: center;
|
| 123 |
+
}
|
| 124 |
+
.spinner {
|
| 125 |
+
border: 4px solid #f3f3f3;
|
| 126 |
+
border-top: 4px solid #36c;
|
| 127 |
+
border-radius: 50%;
|
| 128 |
+
width: 50px;
|
| 129 |
+
height: 50px;
|
| 130 |
+
animation: spin 1s linear infinite;
|
| 131 |
+
margin-bottom: 20px;
|
| 132 |
+
}
|
| 133 |
+
@keyframes spin {
|
| 134 |
+
0% { transform: rotate(0deg); }
|
| 135 |
+
100% { transform: rotate(360deg); }
|
| 136 |
+
}
|
| 137 |
+
.loading-text {
|
| 138 |
+
font-size: 18px;
|
| 139 |
+
font-weight: bold;
|
| 140 |
+
color: #202122;
|
| 141 |
+
margin-bottom: 10px;
|
| 142 |
+
}
|
| 143 |
+
.loading-subtext {
|
| 144 |
+
color: #72777d;
|
| 145 |
+
font-size: 14px;
|
| 146 |
+
}
|
| 147 |
+
</style>
|
| 148 |
+
</head>
|
| 149 |
+
<body>
|
| 150 |
+
|
| 151 |
+
<div class="container">
|
| 152 |
+
<img src="https://ru.wikipedia.org/static/images/icons/wikipedia.png" alt="Wikipedia" class="logo">
|
| 153 |
+
<h1>Найди себя в Википедии</h1>
|
| 154 |
+
<div class="subtitle">Загрузите фотографию, чтобы узнать, что о вас написано в свободной энциклопедии</div>
|
| 155 |
+
|
| 156 |
+
<form id="uploadForm" action="/generate" method="post" enctype="multipart/form-data">
|
| 157 |
+
<div class="upload-area" id="dropZone">
|
| 158 |
+
<div class="upload-icon">📷</div>
|
| 159 |
+
<div id="uploadText">Нажмите или перетащите фото сюда</div>
|
| 160 |
+
<input type="file" name="image" id="imageInput" accept="image/*" required>
|
| 161 |
+
<img id="preview" alt="Предпр��смотр">
|
| 162 |
+
</div>
|
| 163 |
+
|
| 164 |
+
<button type="submit" class="btn-submit" id="submitBtn" disabled>Найти статью</button>
|
| 165 |
+
|
| 166 |
+
<div class="note">
|
| 167 |
+
⚠️ Внимание: создание статьи занимает около 3 минут. Пожалуйста, не закрывайте страницу.
|
| 168 |
+
</div>
|
| 169 |
+
</form>
|
| 170 |
+
</div>
|
| 171 |
+
|
| 172 |
+
<div class="disclaimer">
|
| 173 |
+
* Данный инструмент не ищет реальные статьи на Википедии, а генерирует шуточные статьи с помощью нейросети на основе загруженной фотографии.
|
| 174 |
+
</div>
|
| 175 |
+
|
| 176 |
+
<div class="loading-overlay" id="loadingOverlay">
|
| 177 |
+
<div class="spinner"></div>
|
| 178 |
+
<div class="loading-text">Нейросеть пишет статью...</div>
|
| 179 |
+
<div class="loading-subtext">Это займет около 3 минут. Пожалуйста, подождите.</div>
|
| 180 |
+
</div>
|
| 181 |
+
|
| 182 |
+
<script>
|
| 183 |
+
const imageInput = document.getElementById('imageInput');
|
| 184 |
+
const preview = document.getElementById('preview');
|
| 185 |
+
const uploadText = document.getElementById('uploadText');
|
| 186 |
+
const submitBtn = document.getElementById('submitBtn');
|
| 187 |
+
const uploadForm = document.getElementById('uploadForm');
|
| 188 |
+
const loadingOverlay = document.getElementById('loadingOverlay');
|
| 189 |
+
|
| 190 |
+
imageInput.addEventListener('change', function() {
|
| 191 |
+
if (this.files && this.files[0]) {
|
| 192 |
+
const reader = new FileReader();
|
| 193 |
+
reader.onload = function(e) {
|
| 194 |
+
preview.src = e.target.result;
|
| 195 |
+
preview.style.display = 'block';
|
| 196 |
+
uploadText.style.display = 'none';
|
| 197 |
+
submitBtn.disabled = false;
|
| 198 |
+
}
|
| 199 |
+
reader.readAsDataURL(this.files[0]);
|
| 200 |
+
} else {
|
| 201 |
+
preview.style.display = 'none';
|
| 202 |
+
uploadText.style.display = 'block';
|
| 203 |
+
submitBtn.disabled = true;
|
| 204 |
+
}
|
| 205 |
+
});
|
| 206 |
+
|
| 207 |
+
uploadForm.addEventListener('submit', function() {
|
| 208 |
+
loadingOverlay.style.display = 'flex';
|
| 209 |
+
});
|
| 210 |
+
</script>
|
| 211 |
+
</body>
|
| 212 |
+
</html>
|