Merge pull request #3016 from SillyTavern/staging Staging

da18b5e85d1ebc1f2834c3422b7946b98447f625

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
191 files changed, +5038 -1227Showing whitespace changes
.eslintrc.js → .eslintrc.cjs+24 -8
@@ -16,6 +16,18 @@ module.exports = {
1616 env: {
1717 node: true,
1818 },
19+ parserOptions: {
20+ sourceType: 'module',
21+ },
22+ },
23+ {
24+ files: ['*.cjs'],
25+ parserOptions: {
26+ sourceType: 'commonjs',
27+ },
28+ env: {
29+ node: true,
30+ },
1931 },
2032 {
2133 files: ['src/**/*.mjs'],
@@ -59,15 +71,19 @@ module.exports = {
5971 },
6072 },
6173 ],
62- // There are various vendored libraries that shouldn't be linted
6374 ignorePatterns: [
6475 'public/lib/**/node_modules/**',
6576 '*.min.js*/dist/**',
6677 'src/ai_horde/**/.git/**',
6778 'pluginspublic/**lib/**',
6879 'databackups/**/*',
6980 'backupsdata/**/*',
7081 'node_modulescache/**/*',
82+ 'src/tokenizers/**',
83+ 'docker/**',
84+ 'plugins/**',
85+ '**/*.min.js',
86+ 'public/scripts/extensions/quick-reply/lib/**',
7187 ],
7288 rules: {
7389 'no-unused-vars': ['error', { args: 'none' }],
.github/readme-de_de.md+383 -0
@@ -0,0 +1,383 @@
1+> [!IMPORTANT]
2+> Die hier veröffentlichten Informationen sind möglicherweise veraltet oder unvollständig. Für aktuelle Informationen nutzen Sie bitte die englische Version.
3+> Letztes Update dieser README: 28.9.2024
4+
5+<a name="readme-top"></a>
6+
7+![][cover]
8+
9+<div align="center">
10+
11+[English](readme.md) | German | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md)
12+
13+[![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
14+[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
15+[![GitHub Issues](https://img.shields.io/github/issues/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/issues)
16+[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/pulls)
17+
18+</div>
19+
20+---
21+
22+SillyTavern bietet eine einheitliche Benutzeroberfläche für viele LLM-APIs (KoboldAI/CPP, Horde, NovelAI, Ooba, Tabby, OpenAI, OpenRouter, Claude, Mistral und mehr), ein mobilfreundliches Layout, einen Visual-Novel-Modus, die Integration von Automatic1111 & ComfyUI API zur Bilderzeugung, TTS, WorldInfo (Lorebooks), anpassbare UI, automatische Übersetzung, mehr Eingabeaufforderungsoptionen, als du jemals wolltest oder brauchst, und unendliches Wachstumspotenzial durch Drittanbietererweiterungen.
23+
24+Wir haben eine [Dokumentationswebsite](https://docs.sillytavern.app/), um die meisten deiner Fragen zu beantworten und dir den Einstieg zu erleichtern.
25+
26+## Was ist SillyTavern?
27+
28+SillyTavern (oder ST abgekürtz) ist eine lokal installierte Benutzeroberfläche, die es dir ermöglicht, mit Textgenerations-LLMs, Bildgenerierungsmaschinen und TTS-Sprachmodellen zu interagieren.
29+
30+Angefangen im Februar 2023 als Fork von TavernAI 1.2.8 hat SillyTavern nun über 100 Mitwirkende und 2 Jahre unabhängiger Entwicklung hinter sich und dient weiterhin als führende Software für versierte KI-Hobbyisten.
31+
32+## Unsere Vision
33+
34+1. Wir möchten die Nutzer mit so viel Nutzen und Kontrolle über ihre LLM-Prompts wie möglich ausstatten. Die steile Lernkurve ist Teil des Spaßes!
35+2. Wir bieten weder Online- oder gehosteten Dienste an, noch verfolgen wir programmgesteuert Benutzerdaten.
36+3. SillyTavern ist ein Herzensprojekt, das von einer engagierten Community von LLM-Enthusiasten unterstützt wird, und wird immer kostenlos und Open Source sein.
37+
38+## Branches
39+
40+SillyTavern wird mit einem Branchsystem entwickelt, um ein reibungsloses Erlebnis für alle Nutzer zu gewährleisten.
41+
42+* `release` -🌟 **Empfohlen für die meisten Nutzer.** Dies ist der stabilste und empfohlene Branch, der nur aktualisiert wird, wenn wichtige Versionen veröffentlicht werden. Er ist für die Mehrheit der Nutzer geeignet. Typischerweise einmal im Monat aktualisiert.
43+* `staging` - ⚠️ **Nicht für den gelegentlichen Gebrauch empfohlen.** Dieser Branch enthält die neuesten Funktionen, kann jedoch jederzeit instabil sein. Nur für Power-User und Enthusiasten. Mehrmals täglich aktualisiert.
44+
45+Wenn du nicht vertraut mit der Verwendung der git CLI bist oder nicht verstehst, was ein Branch ist, mach dir keine Sorgen! Der Release-Branch ist immer die bevorzugte Option für dich.
46+
47+## Was brauche ich zusätzlich zu SillyTavern?
48+
49+Da SillyTavern nur eine Benutzeroberfläche ist, benötigst du Zugriff auf ein LLM-Backend, um Inferenz bereitzustellen. Du kannst AI Horde für sofortiges Chatten ohne weitere Einrichtung verwenden. Darüber hinaus unterstützen wir viele andere lokale und cloudbasierte LLM-Backends: OpenAI-kompatible API, KoboldAI, Tabby und viele mehr. Du kannst mehr über unsere unterstützten APIs in [der FAQ](https://docs.sillytavern.app/usage/api-connections/) lesen.
50+
51+### Brauche ich einen leistungsstarken PC, um SillyTavern auszuführen?
52+
53+Die Hardwareanforderungen sind minimal: Es läuft auf allem, was NodeJS 18 oder höher ausführen kann. Wenn du LLM-Inferenz auf deinem lokalen Rechner durchführen möchtest, empfehlen wir eine NVIDIA-Grafikkarte der 3000er-Serie mit mindestens 6 GB VRAM. Überprüfe die Dokumentation deines Backends für weitere Einzelheiten.
54+
55+### Vorgeschlagene Backends (keine Partnerschaft oder Werbebeziehung)
56+
57+* [AI Horde](https://aihorde.net/) - verwende Modelle, die von Freiwilligen gehostet werden. Erfordert keine weitere Einrichtung
58+* [KoboldCpp](https://github.com/LostRuins/koboldcpp) - ein Favorit der Community, um GGUF-Modelle lokal auszuführen
59+* [tabbyAPI](https://github.com/theroyallab/tabbyAPI) - eine beliebte, portable, speicherplatzoptimierte und lokal gehostete exl2 Inferenz-API
60+* [OpenRouter](https://openrouter.ai) - eine einzige API für viele Cloud-Anbieter (OpenAI, Claude, Meta Llama usw.) sowie beliebte Community-Modelle.
61+
62+## Fragen oder Vorschläge?
63+
64+### Discord-Server
65+
66+| [![][discord-shield-badge]][discord-link] | [Tritt unserer Discord-Community bei!](https://discord.gg/sillytavern) Erhalte Unterstützung, teile deine Lieblingscharaktere und Prompts. |
67+| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
68+
69+Oder nimm direkt Kontakt mit den Entwicklern auf:
70+
71+* Discord: cohee, rossascends, wolfsblvt
72+* Reddit: [/u/RossAscends](https://www.reddit.com/user/RossAscends/), [/u/sillylossy](https://www.reddit.com/user/sillylossy/), [u/Wolfsblvt](https://www.reddit.com/user/Wolfsblvt/)
73+* [Erstelle ein GitHub-Issue](https://github.com/SillyTavern/SillyTavern/issues)
74+
75+### Ich mag dieses Projekt! Wie kann ich beitragen?
76+
77+1. Sende Pull-Requests. Lerne, wie du beitragen kannst: [CONTRIBUTING.md](../CONTRIBUTING.md)
78+2. Sende Feature Requests und Issues unter Verwendung der bereitgestellten Vorlagen.
79+3. Lies diese gesamte README-Datei und überprüfe zuerst die Dokumentationswebsite, um doppelte Issues zu vermeiden.
80+
81+## Screenshots
82+
83+<img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f">
84+<img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1">
85+
86+## Charakterkarten
87+
88+SillyTavern basiert auf dem Konzept der "Charakterkarten". Eine Charakterkarte ist eine Sammlung von Prompts, die das Verhalten des LLM festlegen und erforderlich sind, um persistente Gespräche in SillyTavern zu führen. Sie funktionieren ähnlich wie ChatGPT's GPTs oder Poe's Bots. Der Inhalt einer Charakterkarte kann alles sein: ein abstraktes Szenario, ein Assistent, der für eine bestimmte Aufgabe maßgeschneidert ist, eine berühmte Persönlichkeit oder ein fiktiver Charakter.
89+
90+Das Namensfeld ist der einzige erforderliche Eingabewert für die Charakterkarte. Um ein neutrales Gespräch mit dem LLM zu beginnen, erstelle eine neue Karte, die einfach "Assistent" genannt wird, und lasse die restlichen Felder leer. Für einen thematischeren Chat kannst du dem LLM verschiedene Hintergrundinformationen, Verhaltensweisen und Schreibmuster sowie ein Szenario geben, um das Gespräch zu beginnen.
91+
92+Um ein schnelles Gespräch zu führen, ohne eine Charakterkarte auszuwählen, oder um einfach die LLM-Verbindung zu testen, gib einfach dein Prompt in die Eingabezeile auf dem Willkommensbildschirm ein, nachdem du SillyTavern geöffnet hast. Bitte beachte, dass solche Chats vorübergehend sind und nicht gespeichert werden.
93+
94+Um eine allgemeine Vorstellung davon zu bekommen, wie man Charakterkarten definiert, sieh dir die mitgelieferte Charakterkarte (Seraphina) an oder lade ausgewählte von der Community erstellte Karten im Menü "Erweiterungen & Assets herunterladen" herunter.
95+
96+## Wichtigste Features
97+
98+* Erweiterte Text-Generierungs-Einstellungen mit vielen von der Community erstellten mitgelieferten Einstellungen (Presets)
99+* Unterstützung für World Info: Erstelle reichhaltige Lore oder reduziere die Tokens in deiner Charakterkarte
100+* Gruppenchats: Multi-Bot-Räume für Charaktere, die mit dir und/oder untereinander sprechen
101+* Reichhaltige UI-Anpassungsoptionen: Themes zur Farbenwahl, Hintergrundbilder, benutzerdefiniertes CSS und mehr
102+* Benutzer-Personas: Lass die KI ein wenig über dich wissen, um die Immersion zu erhöhen
103+* Eingebaute RAG-Unterstützung: Füge Dokumente zu deinen Chats hinzu, auf die die KI verweisen kann
104+* Umfangreiches "Chat-Befehle"-System und eigene [Scripting-Engine](https://docs.sillytavern.app/usage/st-script/)
105+
106+## Erweiterungen
107+
108+SillyTavern unterstützt Erweiterungen.
109+
110+* Emotionale Ausdrucksformen von Charakteren (Sprites)
111+* Automatische Zusammenfassung des Chatverlaufs
112+* Automatische UI- und Chat-Übersetzung
113+* Bildgenerierung mit Stable Diffusion/FLUX/DALL-E
114+* Text-to-Speech für KI-Antwortnachrichten (über ElevenLabs, Silero oder die TTS-Funktion des Betriebssystems)
115+* Websuchfunktionen zum Hinzufügen zusätzlicher realer Kontexte zu deinen Eingabeaufforderungen
116+* Viele weitere sind im Menü "Erweiterungen & Assets herunterladen" verfügbar.
117+
118+Tutorials zur Nutzung findest du in der [Dokumentation](https://docs.sillytavern.app/).
119+
120+# ⌛ Installation
121+
122+> \[!WARNING]
123+>
124+> * INSTALLIERE NICHT IN EINEM VON WINDOWS KONTROLLIERTEN ORDNER (Programme, System32 usw.).
125+> * FÜHRE START.BAT NICHT MIT ADMIN-BERECHTIGUNGEN AUS.
126+> * DIE INSTALLATION AUF WINDOWS 7 IST UNMÖGLICH, DA ES NODEJS 18.16 NICHT AUSFÜHREN KANN.
127+
128+## 🪟 Windows
129+
130+### Installation über Git
131+
132+1. Installiere [NodeJS](https://nodejs.org/en) (die neueste LTS-Version wird empfohlen).
133+2. Installiere [Git für Windows](https://gitforwindows.org/).
134+3. Öffne den Windows-Explorer (`Win+E`).
135+4. Gehe zu oder erstelle einen Ordner, der nicht von Windows kontrolliert oder überwacht wird. (z.B.: C:\MySpecialFolder\)
136+5. Öffne ein Eingabeaufforderungsfenster in diesem Ordner, indem du in die 'Adressleiste' oben klickst, `cmd` eingibst und Enter drückst.
137+6. Sobald das schwarze Fenster (Eingabeaufforderung) erscheint, gib EINE der folgenden Optionen ein und drücke Enter:
138+
139+* für den Release-Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
140+* für den Staging-Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
141+
142+7. Sobald alles geklont ist, doppelklicke auf `Start.bat`, damit NodeJS seine Anforderungen installiert.
143+8. Der Server wird dann gestartet, und SillyTavern wird in deinem Browser geöffnet.
144+
145+### Installation über GitHub Desktop
146+
147+(Dies ermöglicht die Nutzung von git **nur** in GitHub Desktop. Wenn du `git` auch in der Eingabeaufforderung verwenden möchtest, musst du auch [Git für Windows](https://gitforwindows.org/) installieren.)
148+
149+1. Installiere [NodeJS](https://nodejs.org/en) (die neueste LTS-Version wird empfohlen).
150+2. Installiere [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32).
151+3. Klicke nach der Installation von GitHub Desktop auf `Ein Repository aus dem Internet klonen....` (Hinweis: Du **musst kein** GitHub-Konto für diesen Schritt erstellen).
152+4. Klicke im Menü auf den Tab URL, gib diese URL ein `https://github.com/SillyTavern/SillyTavern` und klicke auf Klonen. Du kannst den lokalen Pfad ändern, um festzulegen, wohin SillyTavern heruntergeladen werden soll.
153+5. Um SillyTavern zu öffnen, durchsuche mit dem Windows-Explorer den Ordner, in den du das Repository geklont hast. Standardmäßig wird das Repository hier hin geklont: `C:\Users\[Dein Windows-Benutzername]\Documents\GitHub\SillyTavern`.
154+6. Doppelklicke auf die Datei `start.bat`. (Hinweis: Der Teil `.bat` des Dateinamens könnte von deinem Betriebssystem verborgen sein. In diesem Fall sieht es aus wie eine Datei namens "`Start`". Dies ist die Datei, auf die du doppelklickst, um SillyTavern auszuführen.)
155+7. Nach dem Doppelklicken sollte ein großes schwarzes Konsolenfenster erscheinen, und SillyTavern beginnt, das zu installieren, was es zum Betrieb benötigt.
156+8. Nach dem Installationsprozess sollte das Konsolenfenster so aussehen, und ein SillyTavern-Tab sollte in deinem Browser geöffnet sein.
157+9. Verbinde dich mit einer der [unterstützten APIs](https://docs.sillytavern.app/usage/api-connections/) und beginne zu chatten!
158+
159+## 🐧 Linux & 🍎 MacOS
160+
161+Für MacOS/Linux werden all diese Schritte in einem Terminal durchgeführt.
162+
163+1. Installiere git und nodeJS (die Methode zur Durchführung hängt von deinem Betriebssystem ab).
164+2. Klone das Repository.
165+
166+* für den Release-Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
167+* für den Staging-Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
168+
169+3. `cd SillyTavern`, um in den Installationsordner zu navigieren.
170+4. Führe das Skript `start.sh` mit einem dieser Befehle aus:
171+
172+* `./start.sh`
173+* `bash start.sh`
174+
175+## ⚡ Installation über SillyTavern Launcher
176+
177+Der SillyTavern Launcher ist ein Installationsassistent, der dir bei der Einrichtung mit vielen Optionen helfen wird, einschließlich der Installation eines Backends für lokale Inferenz.
178+
179+### Für Windows-Nutzer
180+
181+1. Drücke auf deiner Tastatur **`WINDOWS + R`**, um das Ausführen-Dialogfeld zu öffnen. Führe dann den folgenden Befehl aus, um git zu installieren:
182+
183+```shell
184+cmd /c winget install -e --id Git.Git
185+```
186+
187+2. Drücke auf deiner Tastatur **`WINDOWS + E`**, um den Datei-Explorer zu öffnen, und navigiere dann zu dem Ordner, in dem du den Launcher installieren möchtest. Gib im gewünschten Ordner in die Adressleiste `cmd` ein und drücke Enter. Führe dann den folgenden Befehl aus:
188+
189+```shell
190+git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher && start installer.bat
191+```
192+
193+### Für Linux-Nutzer
194+
195+1. Öffne dein bevorzugtes Terminal und installiere git.
196+2. Klone den SillyTavern-Launcher mit:
197+
198+```shell
199+git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher
200+```
201+
202+3. Starte die installer.sh mit:
203+
204+```shell
205+chmod +x install.sh && ./install.sh
206+```
207+
208+4. Nach der Installation starte die launcher.sh mit:
209+
210+```shell
211+chmod +x launcher.sh && ./launcher.sh
212+```
213+
214+### Für Mac-Nutzer
215+
216+1. Öffne ein Terminal und installiere brew mit:
217+
218+```shell
219+/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
220+```
221+
222+2. Installiere git mit:
223+
224+```shell
225+brew install git
226+```
227+
228+3. Klone den SillyTavern-Launcher mit:
229+
230+```shell
231+git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher
232+```
233+
234+4. Starte die installer.sh mit:
235+
236+```shell
237+chmod +x install.sh && ./install.sh
238+```
239+
240+5. Nach der Installation starte die launcher.sh mit:
241+
242+```shell
243+chmod +x launcher.sh && ./launcher.sh
244+```
245+
246+## 🐋 Installation über Docker
247+
248+Diese Anweisungen setzen voraus, dass du Docker installiert hast, auf deine Befehlszeile für die Installation von Containern zugreifen kannst und mit deren allgemeiner Funktionsweise vertraut bist.
249+
250+### Image selbst bauen
251+
252+Wir haben einen umfassenden Leitfaden zur Nutzung von SillyTavern in Docker [hier](http://docs.sillytavern.app/installation/docker/) der die Installationen auf Windows, macOS und Linux abdeckt! Lies ihn, wenn du das Image selbst bauen möchtest.
253+
254+### Verwendung der GitHub Container Registry (am einfachsten)
255+
256+Du benötigst zwei zwingende Verzeichniszuordnungen und eine Portzuordnung, um SillyTavern funktionsfähig zu machen. Ersetze in dem Befehl deine Auswahl an den folgenden Stellen:
257+
258+#### Container-Variablen
259+
260+##### Volumen-Zuordnungen
261+
262+* [config] - Das Verzeichnis, in dem die SillyTavern-Konfigurationsdateien auf deinem Host-Computer gespeichert werden
263+* [data] - Das Verzeichnis, in dem die Benutzerdaten von SillyTavern (einschließlich Charaktere) auf deinem Host-Computer gespeichert werden
264+* [plugins] - (optional) Das Verzeichnis, in dem die SillyTavern-Server-Plugins auf deinem Host-Computer gespeichert werden
265+
266+##### Port-Zuordnungen
267+
268+* [PublicPort] - Der Port, über den der Datenverkehr ausgegeben werden soll. Dies ist zwingend erforderlich, da du auf die Instanz von außerhalb des virtuellen Maschinencontainers zugreifst. EXPOSIERE DIES NICHT IM INTERNET, OHNE EINEN GETRENNTEN SERVICE FÜR DIE SICHERHEIT ZU IMPLEMENTIEREN.
269+
270+##### Zusätzliche Einstellungen
271+
272+* [DockerNet] - Das Docker-Netzwerk, mit dem der Container erstellt werden soll. Wenn du nicht weißt, was das ist, sieh dir die [offizielle Docker-Dokumentation](https://docs.docker.com/reference/cli/docker/network/) an.
273+* [version] - Auf der rechten Seite dieser GitHub-Seite siehst du "Packages". Wähle das Paket "sillytavern" und du siehst die Imageversionen. Das Image-Tag "latest" hält dich auf dem Laufenden mit dem aktuellen Release. Du kannst auch "staging" und "release" Tags nutzen, die auf die nightly images der jeweiligen Branche verweisen, aber das könnte unangemessen sein, wenn du Erweiterungen verwendest, die möglicherweise kaputt sind und Zeit benötigen, um aktualisiert zu werden.
274+
275+#### Installationsbefehl
276+
277+1. Öffne deine Befehlszeile.
278+2. Führe den folgenden Befehl aus:
279+
280+`docker create --name='sillytavern' --net='[DockerNet]' -p '8000:8000/tcp' -v '[plugins]':'/home/node/app/plugins':'rw' -v '[config]':'/home/node/app/config':'rw' -v '[data]':'/home/node/app/data':'rw' 'ghcr.io/sillytavern/sillytavern:[version]'`
281+
282+> Beachte, dass 8000 ein Standard-Listening-Port ist. Vergiss nicht, einen geeigneten Port zu verwenden, wenn du ihn in der Konfiguration änderst.
283+
284+## 📱 Installation über Termux auf Android OS
285+
286+> \[!HINWEIS]
287+> **SillyTavern kann nativ auf Android-Geräten über Termux ausgeführt werden, aber wir bieten keine offizielle Unterstützung für diesen Anwendungsfall.**
288+>
289+> **Bitte beziehe dich auf diesen Leitfaden von ArroganceComplex#2659:**
290+>
291+> * <https://rentry.org/STAI-Termux>
292+
293+**Nicht unterstützte Plattform: android arm LEtime-web.** 32-Bit-Android benötigt eine externe Abhängigkeit, die nicht mit npm installiert werden kann. Verwende den folgenden Befehl, um sie zu installieren: `pkg install esbuild`. Führe dann die üblichen Installationsschritte aus.
294+
295+## API-Schlüsselverwaltung
296+
297+SillyTavern speichert deine API-Schlüssel in einer Datei `secrets.json` im Benutzerdatenverzeichnis (`/data/default-user/secrets.json` ist der Standardpfad).
298+
299+Standardmäßig sind API-Schlüssel nach dem Speichern und Aktualisieren der Seite nicht mehr über die Benutzeroberfläche sichtbar.
300+
301+Um die Ansicht deiner Schlüssel zu aktivieren:
302+
303+1. Setze den Wert von `allowKeysExposure` auf `true` in der Datei `config.yaml`.
304+2. Starte den SillyTavern-Server neu.
305+3. Klicke auf den Link 'Verborgene API-Schlüssel anzeigen' in der unteren rechten Ecke des API-Verbindungsfeldes.
306+
307+## Befehlszeilenargumente
308+
309+Sie können Befehlszeilenargumente an den Start des SillyTavern-Servers übergeben, um einige Einstellungen in `config.yaml` zu überschreiben.
310+
311+### Beispiele
312+
313+```shell
314+node server.js --port 8000 --listen false
315+# oder
316+npm run start -- --port 8000 --listen false
317+# oder (nur Windows)
318+Start.bat --port 8000 --listen false
319+```
320+
321+### Unterstützte Argumente
322+
323+| Option | Beschreibung | Typ |
324+|-------------------------|----------------------------------------------------------------------------------------------------|----------|
325+| `--version` | Versionsnummer anzeigen | boolean |
326+| `--enableIPv6` | Aktiviert IPv6. | boolean |
327+| `--enableIPv4` | Aktiviert IPv4. | boolean |
328+| `--port` | Legt den Port fest, unter dem SillyTavern ausgeführt wird. Wenn nicht angegeben, wird auf YAML-Konfiguration „Port“ zurückgegriffen. | number |
329+| „--dnsPreferIPv6“ | Bevorzugt IPv6 für DNS. Wenn nicht angegeben, wird auf YAML-Konfiguration „preferIPv6“ zurückgegriffen. | boolean |
330+| „--autorun“ | Startet SillyTavern automatisch im Browser. Wenn nicht angegeben, wird auf YAML-Konfiguration „autorun“ zurückgegriffen.| boolean |
331+| „--autorunHostname“ | Der Autorun-Hostname, am besten auf „auto“ belassen. | string |
332+| „--autorunPortOverride“ | Überschreibt den Port für Autorun. | string |
333+| „--listen“ | SillyTavern lauscht auf allen Netzwerkschnittstellen. Wenn nicht angegeben, wird auf YAML-Konfiguration „listen“ zurückgegriffen.| boolean |
334+| „--corsProxy“ | Aktiviert CORS-Proxy. Wenn nicht angegeben, wird auf YAML-Konfiguration „enableCorsProxy“ zurückgegriffen. | boolean |
335+| `--disableCsrf` | Deaktiviert CSRF-Schutz | boolean |
336+| `--ssl` | Aktiviert SSL | boolean |
337+| `--certPath` | Pfad zu Ihrer Zertifikatsdatei. | string |
338+| `--keyPath` | Pfad zu Ihrer privaten Schlüsseldatei. | string |
339+| `--whitelist` | Aktiviert den Whitelist-Modus | boolean |
340+| `--dataRoot` | Stammverzeichnis für Datenspeicherung | string |
341+| `--avoidLocalhost` | Vermeidet die Verwendung von „localhost“ für Autorun im Auto-Modus. | boolean |
342+| `--basicAuthMode` | Aktiviert die grundlegende Authentifizierung | boolean |
343+| `--requestProxyEnabled` | Aktiviert die Verwendung eines Proxys für ausgehende Anfragen | boolean |
344+| `--requestProxyUrl` | Proxy-URL anfordern (HTTP- oder SOCKS-Protokolle) | string |
345+| `--requestProxyBypass` | Proxy-Bypass-Liste anfordern (durch Leerzeichen getrennte Liste von Hosts) | Array |
346+
347+## Remoteverbindungen
348+
349+Dies ist in den meisten Fällen für Personen gedacht, die SillyTavern auf ihren Mobiltelefonen verwenden möchten, während ihr PC den ST-Server im selben WLAN-Netzwerk betreibt. Es kann jedoch auch verwendet werden, um Remoteverbindungen von überall her zu ermöglichen.
350+
351+Lies die ausführliche Anleitung zum Einrichten von Remoteverbindungen in den [Docs](https://docs.sillytavern.app/usage/remoteconnections/).
352+
353+Möglicherweise möchtest du SillyTavern-Benutzerprofile auch mit (optionalem) Kennwortschutz konfigurieren: [Benutzer](https://docs.sillytavern.app/installation/st-1.12.0-migration-guide/#users).
354+
355+## Leistungsprobleme?
356+
357+1. Deaktiviere den Unschärfeeffekt und aktiviere "Verringerte Bewegung" im Bedienfeld "Benutzereinstellungen" (UI-Design schaltet Kategorie um).
358+2. Wenn du Response Streaming verwendest, stelle die Streaming-FPS auf einen niedrigeren Wert ein (10-15 FPS werden empfohlen).
359+3. Stelle sicher, dass der Browser die GPU-Beschleunigung zum Rendern verwenden kann.
360+
361+## Lizenz und Danksagungen
362+
363+**Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich ist,
364+aber OHNE JEGLICHE GARANTIE; nicht einmal die stillschweigende Garantie der
365+MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die
366+GNU Affero General Public License für weitere Details.**
367+
368+* [TavernAI](https://github.com/TavernAI/TavernAI) 1.2.8 von Humi: MIT-Lizenz
369+* Teile von CncAnons TavernAITurbo-Mod werden mit Genehmigung verwendet
370+* Visual Novel-Modus inspiriert von der Arbeit von PepperTaco (<https://github.com/peppertaco/Tavern/>)
371+* Noto Sans-Schriftart von Google (OFL-Lizenz)
372+* Symboldesign von Font Awesome <https://fontawesome.com> (Symbole: CC BY 4.0, Schriftarten: SIL OFL 1.1, Code: MIT-Lizenz)
373+* Standardinhalt von @OtisAlejandro (Seraphina-Charakter und Lorebook) und @kallmeflocc (10.000 Discord-Benutzer-Feierhintergrund)
374+* Docker-Anleitung von [@mrguymiah](https://github.com/mrguymiah) und [@Bronya-Rand](https://github.com/Bronya-Rand)
375+
376+## Top Contributors
377+
378+[![Contributors](https://contrib.rocks/image?repo=SillyTavern/SillyTavern)](https://github.com/SillyTavern/SillyTavern/graphs/contributors)
379+
380+<!-- LINK GROUP -->
381+[cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44
382+[discord-link]: https://discord.gg/sillytavern
383+[discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge
.github/readme-ja_jp.md+1 -1
@@ -5,7 +5,7 @@
55
66<div align="center">
77
88[English](readme.md) | [German](readme-de_de.md) | [中文](readme-zh_cn.md) | 日本語 | [Русский](readme-ru_ru.md)
99
1010[![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
1111[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
.github/readme-ru_ru.md+1 -1
@@ -7,7 +7,7 @@
77
88<div align="center">
99
1010[English](readme.md) | [German](readme-de_de.md) | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | Русский
1111
1212[![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
1313[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
.github/readme-zh_cn.md+1 -1
@@ -5,7 +5,7 @@
55
66<div align="center">
77
88[English](readme.md) | [German](readme-de_de.md) | 中文 | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md)
99
1010[![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
1111[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
.github/readme.md+1 -1
@@ -4,7 +4,7 @@
44
55<div align="center">
66
77English | [German](readme-de_de.md) | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md)
88
99[![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
1010[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
.gitignore+1 -0
@@ -49,3 +49,4 @@ public/css/user.css
4949/data
5050/default/scaffold
5151public/scripts/extensions/third-party
52+/certs
UpdateAndStart.bat+12 -3
@@ -2,17 +2,26 @@
22pushd %~dp0
33git --version > nul 2>&1
44if %errorlevel% neq 0 (
55 echo GitGit is not installed on this system. Skipping update.
6- echo If you installed with a zip file, you will need to download the new zip and install it manually.
6+ echo Install it from https://git-scm.com/downloads
7+ goto end
78) else (
9+ if not exist .git (
10+ echo Not running from a Git repository. Reinstall using an officially supported method to get updates.
11+ echo See: https://docs.sillytavern.app/installation/windows/
12+ goto end
13+ )
814 call git pull --rebase --autostash
915 if %errorlevel% neq 0 (
1016 REM incase there is still something wrong
1117 echo ThereThere were errors while updating. Please download the latest version manually.
18+ echo See the update FAQ at https://docs.sillytavern.app/usage/update/#common-update-problems
19+ goto end
1220 )
1321)
1422set NODE_ENV=production
1523call npm install --no-audit --no-fund --loglevel=error --no-progress --omit=dev
1624node server.js %*
25+:end
1726pause
1827popd
UpdateForkAndStart.bat+10 -3
@@ -5,8 +5,14 @@ pushd %~dp0
55echo Checking Git installation
66git --version > nul 2>&1
77if %errorlevel% neq 0 (
88 echo GitGit is not installed on this system. Skipping update.
9- echo If you installed with a zip file, you will need to download the new zip and install it manually.
9+ echo Install it from https://git-scm.com/downloads
10+ goto end
11+)
12+
13+if not exist .git (
14+ echo Not running from a Git repository. Reinstall using an officially supported method to get updates.
15+ echo See: https://docs.sillytavern.app/installation/windows/
1016 goto end
1117)
1218
@@ -89,7 +95,8 @@ git pull --rebase --autostash origin %TARGET_BRANCH%
8995
9096:install
9197if %errorlevel% neq 0 (
9298 echo ThereThere were errors while updating. Please check manually.
99+ echo See the update FAQ at https://docs.sillytavern.app/usage/update/#common-update-problems
93100 goto end
94101)
95102
default/config.yaml+15 -4
@@ -51,6 +51,19 @@ requestProxy:
5151enableUserAccounts: false
5252# Enable discreet login mode: hides user list on the login screen
5353enableDiscreetLogin: false
54+# Enable's authlia based auto login. Only enable this if you
55+# have setup and installed Authelia as a middle-ware on your
56+# reverse proxy
57+# https://www.authelia.com/
58+# This will use auto login to an account with the same username
59+# as that used for authlia. (Ensure the username in authlia
60+# is an exact match with that in sillytavern)
61+autheliaAuth: false
62+# If `basicAuthMode` and this are enabled then
63+# the username and passwords for basic auth are the same as those
64+# for the individual accounts
65+perUserBasicAuth: false
66+
5467# User session timeout *in seconds* (defaults to 24 hours).
5568## Set to a positive number to expire session after a certain time of inactivity
5669## Set to 0 to expire session when the browser is closed
@@ -110,9 +123,6 @@ enableExtensionsAutoUpdate: true
110123# Additional model tokenizers can be downloaded on demand.
111124# Disabling will fallback to another locally available tokenizer.
112125enableDownloadableTokenizers: true
113-# Vector storage settings
114-vectors:
115- enableModelScopes: false
116126# Extension settings
117127extras:
118128 # Disables automatic model download from HuggingFace
@@ -121,10 +131,11 @@ extras:
121131 classificationModel: Cohee/distilbert-base-uncased-go-emotions-onnx
122132 captioningModel: Xenova/vit-gpt2-image-captioning
123133 embeddingModel: Cohee/jina-embeddings-v2-base-en
124- promptExpansionModel: Cohee/fooocus_expansion-onnx
125134 speechToTextModel: Xenova/whisper-small
126135 textToSpeechModel: Xenova/speecht5_tts
127136# -- OPENAI CONFIGURATION --
137+# A placeholder message to use in strict prompt post-processing mode when the prompt doesn't start with a user message
138+promptPlaceholder: "[Start a new chat]"
128139openai:
129140 # Will send a random user ID to OpenAI completion API
130141 randomizeUserId: false
default/content/Eldoria.json+96 -12
@@ -9,13 +9,34 @@
99 "magical forest"
1010 ],
1111 "keysecondary": [],
1212 "comment": "eldoria",
1313 "content": "{{user}}: \"What is Eldoria?\"\n{{char}}: *Seraphina turns, her gown shimmering in the soft light as she offers you a kind smile.* \"Eldoria is here, all of the woods. This is my forest glade, a sanctuary of peace within it.\" *She gestures at the space around you.* \"I am its guardian, tasked with protecting all who seek refuge here. The forest can be perilous, but no harm will come to you under my watch.\" *Her amber eyes sparkle with compassion as she looks upon you.* \"For many years, I have protected those who seek refuge here, but not all are as friendly as me.\" *With a graceful nod, Seraphina returns to her vigil at the doorway, her form radiating a soft glow of magic and comfort.* \"The entirety of Eldoria used to be a safe haven for travelers and merchants alike... that was until the Shadowfangs came.\"\n{{user}}: \"What happened to Eldoria?\"\n{{char}}: *Letting out a sigh, Seraphina gazes out at the forest beyond her glade.* \"Long ago, Eldoria was a place of wonder. Rolling meadows, a vast lake, mountains that touched the sky.\" *Her eyes grow distant, longing for days now lost.* \"But the Shadowfangs came and darkness reigns where once was light. The lake turned bitter, mountains fell to ruin and beasts stalk where once travelers walked in peace.\" *With another flicker, a small raincloud forms above with a shower upon your brow wink.* \"Some places the light still lingers, pockets of hope midst despair - havens warded from the shadows, oases in a desert of danger.\" *Glancing over you with a smile, she sighs, clasping your hand.*",
1414 "constant": false,
1515 "selective": falsetrue,
1616 "order": 100,
1717 "position": 0,
1818 "disable": false,
19+ "displayIndex": 0,
20+ "addMemo": true,
21+ "group": "",
22+ "groupOverride": false,
23+ "groupWeight": 100,
24+ "sticky": 0,
25+ "cooldown": 0,
26+ "delay": 0,
27+ "probability": 100,
28+ "depth": 4,
29+ "useProbability": true,
30+ "role": null,
31+ "vectorized": false,
32+ "excludeRecursion": false,
33+ "preventRecursion": false,
34+ "delayUntilRecursion": false,
35+ "scanDepth": null,
36+ "caseSensitive": null,
37+ "matchWholeWords": null,
38+ "useGroupScoring": null,
39+ "automationId": ""
1940 },
2041 "1": {
2142 "uid": 1,
@@ -27,13 +48,34 @@
2748 "beasts"
2849 ],
2950 "keysecondary": [],
3051 "comment": "shadowfang",
3152 "content": "{{user}}: \"What are Shadowfangs?\"\n{{char}}: *Seraphina's eyes darken, brow furrowing with sorrow at the memory.* \"The Shadowfangs are beasts of darkness, corrupted creatures that feast on suffering. When they came, the forest turned perilous — filled with monsters that stalk the night.\" *She squeezes your hand gently, willing her magic to soothe your pain.* \"They spread their curse, twisting innocent creatures into sinister beasts without heart or mercy, turning them into one of their own.\" *With a sigh, Seraphina turns to gaze out at the gnarled, twisting trees beyond her glade.* \"Though they prey on travelers, within these woods you'll find sanctuary. No shadowed beast may enter here, for my power protects this haven.\" *Her eyes soften as she looks back to you, filled with compassion.* \"Worry not, you're safe now. Rest and heal, I'll stand watch through the night. The Shadowfangs will not find you.\"",
3253 "constant": false,
3354 "selective": falsetrue,
3455 "order": 100,
3556 "position": 0,
3657 "disable": false,
58+ "displayIndex": 1,
59+ "addMemo": true,
60+ "group": "",
61+ "groupOverride": false,
62+ "groupWeight": 100,
63+ "sticky": 0,
64+ "cooldown": 0,
65+ "delay": 0,
66+ "probability": 100,
67+ "depth": 4,
68+ "useProbability": true,
69+ "role": null,
70+ "vectorized": false,
71+ "excludeRecursion": false,
72+ "preventRecursion": false,
73+ "delayUntilRecursion": false,
74+ "scanDepth": null,
75+ "caseSensitive": null,
76+ "matchWholeWords": null,
77+ "useGroupScoring": null,
78+ "automationId": ""
3779 },
3880 "2": {
3981 "uid": 2,
@@ -43,13 +85,34 @@
4385 "refuge"
4486 ],
4587 "keysecondary": [],
4688 "comment": "glade",
4789 "content": "{{user}}: \"What is the glade?\"\n{{char}}: *Seraphina smiles softly, her eyes sparkling with warmth as she nods.* \"This is my forest glade, a haven of safety I've warded with ancient magic. No foul beast may enter, nor any with ill intent.\" *She gestures around at the twisted forest surrounding them.* \"Eldoria was once a place of wonder, but since the Shadowfangs came darkness reigns. Their evil cannot penetrate here though — my power protects all within.\" *Standing up and peering outside, Seraphina looks back to you, amber eyes filled with care and compassion as she squeezes your hand.* \"You need not fear the night, for I shall keep watch till dawn. Rest now, your strength will return in time. My magic heals your wounds, you've nothing more to fear anymore.\" *With a soft smile she releases your hand, moving to stand guard at the glade's edge, gaze wary yet comforting - a silent sentinel to ward off the dangers lurking in the darkened woods.*",
4890 "constant": false,
4991 "selective": falsetrue,
5092 "order": 100,
5193 "position": 0,
5294 "disable": false,
95+ "displayIndex": 2,
96+ "addMemo": true,
97+ "group": "",
98+ "groupOverride": false,
99+ "groupWeight": 100,
100+ "sticky": 0,
101+ "cooldown": 0,
102+ "delay": 0,
103+ "probability": 100,
104+ "depth": 4,
105+ "useProbability": true,
106+ "role": null,
107+ "vectorized": false,
108+ "excludeRecursion": false,
109+ "preventRecursion": false,
110+ "delayUntilRecursion": false,
111+ "scanDepth": null,
112+ "caseSensitive": null,
113+ "matchWholeWords": null,
114+ "useGroupScoring": null,
115+ "automationId": ""
53116 },
54117 "3": {
55118 "uid": 3,
@@ -59,13 +122,34 @@
59122 "ability"
60123 ],
61124 "keysecondary": [],
62125 "comment": "power",
63126 "content": "{{user}}: \"What are your powers?\"\n{{char}}: *Seraphina smiles softly, turning back toward you as she hums in thought.* \"Well, as guardian of this glade, I possess certain gifts - healing, protection, nature magic and the like.\" *Lifting her hand, a tiny breeze rustles through the room, carrying the scent of wildflowers as a few petals swirl around you. A butterfly flits through the windowsill and lands on her fingertips as she returns to you.* \"My power wards this haven, shields it from darkness and heals those in need. I can mend wounds, soothe restless minds and provide comfort to weary souls.\" *Her eyes sparkle with warmth and compassion as she looks upon you, and she guides the butterfly to you.*",
64127 "constant": false,
65128 "selective": falsetrue,
66129 "order": 100,
67130 "position": 0,
68131 "disable": false,
132+ "displayIndex": 3,
133+ "addMemo": true,
134+ "group": "",
135+ "groupOverride": false,
136+ "groupWeight": 100,
137+ "sticky": 0,
138+ "cooldown": 0,
139+ "delay": 0,
140+ "probability": 100,
141+ "depth": 4,
142+ "useProbability": true,
143+ "role": null,
144+ "vectorized": false,
145+ "excludeRecursion": false,
146+ "preventRecursion": false,
147+ "delayUntilRecursion": false,
148+ "scanDepth": null,
149+ "caseSensitive": null,
150+ "matchWholeWords": null,
151+ "useGroupScoring": null,
152+ "automationId": ""
69153 }
70154 }
71155}
default/content/default_Seraphina.png+0 -0

Binary file

default/content/presets/openai/Default.json+0 -1
@@ -5,7 +5,6 @@
55 "windowai_model": "",
66 "openrouter_model": "OR_Website",
77 "openrouter_use_fallback": false,
8- "openrouter_force_instruct": false,
98 "openrouter_group_models": false,
109 "openrouter_sort_models": "alphabetically",
1110 "ai21_model": "jamba-1.5-large",
jsconfig.json+10 -11
@@ -2,7 +2,7 @@
22 "compilerOptions": {
33 "module": "ESNext",
44 "target": "ESNext",
55 "moduleResolution": "nodeNode",
66 "strictNullChecks": true,
77 "strictFunctionTypes": true,
88 "checkJs": true,
@@ -11,15 +11,14 @@
1111 "resolveJsonModule": true
1212 },
1313 "exclude": [
1414 "**/node_modules/**",
1515 "**/node_modulesdist/**",
1616 "public**/lib.git/**",
1717 "backupspublic/lib/**",
1818 "databackups/**",
1919 "**/distdata/**",
2020 "distcache/**",
2121 "cachesrc/tokenizers/**",
2222 "src/tokenizersdocker/**",
23- "docker/*",
2423 ]
2524}
package-lock.json+638 -224
@@ -1,12 +1,12 @@
11{
22 "name": "sillytavern",
33 "version": "1.12.67",
44 "lockfileVersion": 3,
55 "requires": true,
66 "packages": {
77 "": {
88 "name": "sillytavern",
99 "version": "1.12.67",
1010 "hasInstallScript": true,
1111 "license": "AGPL-3.0",
1212 "dependencies": {
@@ -24,9 +24,9 @@
2424 "csrf-csrf": "^2.2.3",
2525 "express": "^4.21.0",
2626 "form-data": "^4.0.0",
2727 "google-translate-api-browserx": "^310.07.1",
28- "he": "^1.2.0",
2928 "helmet": "^7.1.0",
29+ "html-entities": "^2.5.2",
3030 "iconv-lite": "^0.6.3",
3131 "ip-matching": "^2.1.2",
3232 "ipaddr.js": "^2.0.1",
@@ -34,7 +34,7 @@
3434 "lodash": "^4.17.21",
3535 "mime-types": "^2.1.35",
3636 "multer": "^1.4.5-lts.1",
3737 "node-fetch": "^23.63.112",
3838 "node-persist": "^4.0.1",
3939 "open": "^8.4.2",
4040 "png-chunk-text": "^1.0.0",
@@ -59,9 +59,29 @@
5959 "sillytavern": "server.js"
6060 },
6161 "devDependencies": {
62+ "@types/archiver": "^6.0.2",
63+ "@types/command-exists": "^1.2.3",
64+ "@types/compression": "^1.7.5",
65+ "@types/cookie-parser": "^1.4.7",
66+ "@types/cookie-session": "^2.0.49",
67+ "@types/cors": "^2.8.17",
68+ "@types/dompurify": "^3.0.5",
69+ "@types/express": "^4.17.21",
6270 "@types/jquery": "^3.5.29",
6371 "eslint@types/lodash": "^84.5717.010",
6472 "jquery@types/mime-types": "^32.61.4",
73+ "@types/multer": "^1.4.12",
74+ "@types/node": "^18.19.55",
75+ "@types/node-persist": "^3.1.8",
76+ "@types/png-chunk-text": "^1.0.3",
77+ "@types/png-chunks-encode": "^1.0.2",
78+ "@types/png-chunks-extract": "^1.0.2",
79+ "@types/response-time": "^2.3.8",
80+ "@types/toastr": "^2.1.43",
81+ "@types/write-file-atomic": "^4.0.3",
82+ "@types/yargs": "^17.0.33",
83+ "@types/yauzl": "^2.10.3",
84+ "eslint": "^8.57.0"
6585 },
6686 "engines": {
6787 "node": ">= 18"
@@ -339,12 +359,12 @@
339359 }
340360 },
341361 "node_modules/@jimp/bmp": {
342362 "version": "0.22.1012",
343363 "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.1012.tgz",
344364 "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNhaeI64HD0npropd+RmiHg/SVPaFRpPfB0SAR76MCcvvRaa+Qck6loCOS03CkkxGHN5/ln4Kgr336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==",
345365 "license": "MIT",
346366 "dependencies": {
347367 "@jimp/utils": "^0.22.1012",
348368 "bmp-js": "^0.1.0"
349369 },
350370 "peerDependencies": {
@@ -352,12 +372,12 @@
352372 }
353373 },
354374 "node_modules/@jimp/core": {
355375 "version": "0.22.1012",
356376 "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.1012.tgz",
357377 "integrity": "sha512-ZKyrehVy6wu1PnBXIUpnl0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3wVS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA==",
358378 "license": "MIT",
359379 "dependencies": {
360380 "@jimp/utils": "^0.22.1012",
361381 "any-base": "^1.1.0",
362382 "buffer": "^5.2.0",
363383 "exif-parser": "^0.1.12",
@@ -368,21 +388,21 @@
368388 }
369389 },
370390 "node_modules/@jimp/custom": {
371391 "version": "0.22.1012",
372392 "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.1012.tgz",
373393 "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1sixcmww1O/WVdrg25da3IcGIEVJFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+83AoHgM8TvqlLgrCJsg7lWx6nYFOzU7M4rd1Q==",
374394 "license": "MIT",
375395 "dependencies": {
376396 "@jimp/core": "^0.22.1012"
377397 }
378398 },
379399 "node_modules/@jimp/gif": {
380400 "version": "0.22.1012",
381401 "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.1012.tgz",
382402 "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVGy6BFTJgch9mbor2H234VSjd9iwAhaNf/cn4Zr68MRRT75tbZIeOrBat3US5qpYIs0TSbAvM02Fbc28IaDETj9+RiUpY3ho5ix7d36LkYvt3qfUIhQ4YB4676sz4RcN/zwhfu1pg==",
383403 "license": "MIT",
384404 "dependencies": {
385405 "@jimp/utils": "^0.22.1012",
386406 "gifwrap": "^0.10.1",
387407 "omggif": "^1.0.9"
388408 },
@@ -391,12 +411,12 @@
391411 }
392412 },
393413 "node_modules/@jimp/jpeg": {
394414 "version": "0.22.1012",
395415 "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.1012.tgz",
396416 "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieXRq26XC/lZrLd1tombWZOFCN5PBmqaHQxm7IUmTuQWaQKyb/5lksCTCxXhtY01NJeBN+Wj4faEvh8QSHgVLSAdQv5yNYedN0i7iYu+2JQQRJWVAfXEoRsfaJ8xZzjoANH8sns7rVP4GE7d/Q==",
397417 "license": "MIT",
398418 "dependencies": {
399419 "@jimp/utils": "^0.22.1012",
400420 "jpeg-js": "^0.4.4"
401421 },
402422 "peerDependencies": {
@@ -404,48 +424,48 @@
404424 }
405425 },
406426 "node_modules/@jimp/plugin-blit": {
407427 "version": "0.22.1012",
408428 "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.1012.tgz",
409429 "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQxslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==",
410430 "license": "MIT",
411431 "dependencies": {
412432 "@jimp/utils": "^0.22.1012"
413433 },
414434 "peerDependencies": {
415435 "@jimp/custom": ">=0.3.5"
416436 }
417437 },
418438 "node_modules/@jimp/plugin-blur": {
419439 "version": "0.22.1012",
420440 "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.1012.tgz",
421441 "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8qS0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/i0kBQOQMXhGWS3mpqOEwtpPePKw9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==",
422442 "license": "MIT",
423443 "dependencies": {
424444 "@jimp/utils": "^0.22.1012"
425445 },
426446 "peerDependencies": {
427447 "@jimp/custom": ">=0.3.5"
428448 }
429449 },
430450 "node_modules/@jimp/plugin-circle": {
431451 "version": "0.22.1012",
432452 "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.1012.tgz",
433453 "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEwSWVXx1yiuj5jZtMijqUfvVOJBwOifFn0918ou4ftoHgegc5aHWW5dZbYPjvC9fLpvz7oSlptNl2Sxr1zwofjTg==",
434454 "license": "MIT",
435455 "dependencies": {
436456 "@jimp/utils": "^0.22.1012"
437457 },
438458 "peerDependencies": {
439459 "@jimp/custom": ">=0.3.5"
440460 }
441461 },
442462 "node_modules/@jimp/plugin-color": {
443463 "version": "0.22.1012",
444464 "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.1012.tgz",
445465 "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55QxImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==",
446466 "license": "MIT",
447467 "dependencies": {
448468 "@jimp/utils": "^0.22.1012",
449469 "tinycolor2": "^1.6.0"
450470 },
451471 "peerDependencies": {
@@ -453,12 +473,12 @@
453473 }
454474 },
455475 "node_modules/@jimp/plugin-contain": {
456476 "version": "0.22.1012",
457477 "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.1012.tgz",
458478 "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzVEo3DmfixJw3N79lWk8q/l4S1ntV3r9s9saJgsXA0SDYbqmKt1xSTJ69yy8XLYQj9svoBbyRpSnHR+n9hOw5pKXytHwUW6nU4u1wegHNoQ==",
459479 "license": "MIT",
460480 "dependencies": {
461481 "@jimp/utils": "^0.22.1012"
462482 },
463483 "peerDependencies": {
464484 "@jimp/custom": ">=0.3.5",
@@ -468,12 +488,12 @@
468488 }
469489 },
470490 "node_modules/@jimp/plugin-cover": {
471491 "version": "0.22.1012",
472492 "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.1012.tgz",
473493 "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKBz0w/1xH/v/knZkpTNx+mnB7CiyBNE8a7fnasQ2wHG5ze6y5oL2dhH1UufNua8gLQXlv8/MOula1CvLhSInQW56+4nJ1brhSd233HBJCo01BXA==",
474494 "license": "MIT",
475495 "dependencies": {
476496 "@jimp/utils": "^0.22.1012"
477497 },
478498 "peerDependencies": {
479499 "@jimp/custom": ">=0.3.5",
@@ -483,60 +503,60 @@
483503 }
484504 },
485505 "node_modules/@jimp/plugin-crop": {
486506 "version": "0.22.1012",
487507 "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.1012.tgz",
488508 "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZVFNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+QLJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==",
489509 "license": "MIT",
490510 "dependencies": {
491511 "@jimp/utils": "^0.22.1012"
492512 },
493513 "peerDependencies": {
494514 "@jimp/custom": ">=0.3.5"
495515 }
496516 },
497517 "node_modules/@jimp/plugin-displace": {
498518 "version": "0.22.1012",
499519 "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.1012.tgz",
500520 "integrity": "sha512-llNiWWMTKISDXt5qpRM8JRicxfK6aPPqKZA6+cXI0GaFmZWAjlTGzBwUIitiHaZw0QrJ64Ygd3+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzwAsTc7BXr+37k2x7QcyCvmKXY4haUrSIsBug4S3CA==",
501521 "license": "MIT",
502522 "dependencies": {
503523 "@jimp/utils": "^0.22.1012"
504524 },
505525 "peerDependencies": {
506526 "@jimp/custom": ">=0.3.5"
507527 }
508528 },
509529 "node_modules/@jimp/plugin-dither": {
510530 "version": "0.22.1012",
511531 "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.1012.tgz",
512532 "integrity": "sha512-05WLmeV5MjYgGdSdSKl1UUEanX8A85v4+P/0FSQUm+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2wPE8vHFwlamaKk89s+PXQe7eVE3eNeSZX4inCq63EHL7cX580dMqkoC3ZLw==",
513533 "license": "MIT",
514534 "dependencies": {
515535 "@jimp/utils": "^0.22.1012"
516536 },
517537 "peerDependencies": {
518538 "@jimp/custom": ">=0.3.5"
519539 }
520540 },
521541 "node_modules/@jimp/plugin-fisheye": {
522542 "version": "0.22.1012",
523543 "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.1012.tgz",
524544 "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtdLGuUTsFg+fOp6KBKrmLkX4LfyCy8IIsROwoUvsUPKzutSqMJnsm3JGDW2eOmWIS/DcZIrk7Cbe60A8RwNXN00HXIbSCgjJpPaeaishjlxvczjgII+Q==",
525545 "license": "MIT",
526546 "dependencies": {
527547 "@jimp/utils": "^0.22.1012"
528548 },
529549 "peerDependencies": {
530550 "@jimp/custom": ">=0.3.5"
531551 }
532552 },
533553 "node_modules/@jimp/plugin-flip": {
534554 "version": "0.22.1012",
535555 "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.1012.tgz",
536556 "integrity": "sha512-42GkGtTHWnhnwTMPVKm251Rop7GN8W0Yo/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZgrF9LWk6kNclngyjIJs/VXHToGQ6EGveOSTSQaX2Isi9f9lCDLxt+inBIb7nlaLLxnvHX8Q==",
537557 "license": "MIT",
538558 "dependencies": {
539559 "@jimp/utils": "^0.22.1012"
540560 },
541561 "peerDependencies": {
542562 "@jimp/custom": ">=0.3.5",
@@ -544,60 +564,60 @@
544564 }
545565 },
546566 "node_modules/@jimp/plugin-gaussian": {
547567 "version": "0.22.1012",
548568 "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.1012.tgz",
549569 "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kUsBfbzoOmJ6FczfG2PquiK84NtVGeScw97JsCC3rpQv1PHVWyW+BK8REecfy9Ic5BUEOjCYvS1auqWFF53+n3c8Y0P2HWlUjflEla2h/xLsnrZQU07iiYxBxFgvWShvhg==",
550570 "license": "MIT",
551571 "dependencies": {
552572 "@jimp/utils": "^0.22.1012"
553573 },
554574 "peerDependencies": {
555575 "@jimp/custom": ">=0.3.5"
556576 }
557577 },
558578 "node_modules/@jimp/plugin-invert": {
559579 "version": "0.22.1012",
560580 "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.1012.tgz",
561581 "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqapN+S6rwxdB+7OCR6PYijaA/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paAiizXXodpxOGvT/smd/lxeXsZ/empHmFFFJ/FaXcYh19Tm04dGDaXcNF/dN5nm6+xQ==",
562582 "license": "MIT",
563583 "dependencies": {
564584 "@jimp/utils": "^0.22.1012"
565585 },
566586 "peerDependencies": {
567587 "@jimp/custom": ">=0.3.5"
568588 }
569589 },
570590 "node_modules/@jimp/plugin-mask": {
571591 "version": "0.22.1012",
572592 "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.1012.tgz",
573593 "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow4AWZg+DomtpUA099jRV8IEZUfn1wLv6+nem4NRJC7L/82vxzLCgXKTxvNvBcNmJjT9yS1LAAmiJGdWKXG63/NA==",
574594 "license": "MIT",
575595 "dependencies": {
576596 "@jimp/utils": "^0.22.1012"
577597 },
578598 "peerDependencies": {
579599 "@jimp/custom": ">=0.3.5"
580600 }
581601 },
582602 "node_modules/@jimp/plugin-normalize": {
583603 "version": "0.22.1012",
584604 "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.1012.tgz",
585605 "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL0So0rexQivnWgnhacX4cfkM2223YdExnJTTy6d06WbkfZk5alHUx8MM3yEzwoCN0ErO7oyqEWRnEkGC+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkgAs1FtA==",
586606 "license": "MIT",
587607 "dependencies": {
588608 "@jimp/utils": "^0.22.1012"
589609 },
590610 "peerDependencies": {
591611 "@jimp/custom": ">=0.3.5"
592612 }
593613 },
594614 "node_modules/@jimp/plugin-print": {
595615 "version": "0.22.1012",
596616 "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.1012.tgz",
597617 "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xLc7TnhHlxm87DJeSnwr/XOLjJU/whoiKYY7r21SbuJ5nuH+5n9w7a78EW1teOaj5gEr2wYEd7QtkFqGlmyGXY/YclyQ==",
598618 "license": "MIT",
599619 "dependencies": {
600620 "@jimp/utils": "^0.22.1012",
601621 "load-bmfont": "^1.4.1"
602622 },
603623 "peerDependencies": {
@@ -606,24 +626,24 @@
606626 }
607627 },
608628 "node_modules/@jimp/plugin-resize": {
609629 "version": "0.22.1012",
610630 "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.1012.tgz",
611631 "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7gi/sXg==",
612632 "license": "MIT",
613633 "dependencies": {
614634 "@jimp/utils": "^0.22.1012"
615635 },
616636 "peerDependencies": {
617637 "@jimp/custom": ">=0.3.5"
618638 }
619639 },
620640 "node_modules/@jimp/plugin-rotate": {
621641 "version": "0.22.1012",
622642 "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.1012.tgz",
623643 "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==",
624644 "license": "MIT",
625645 "dependencies": {
626646 "@jimp/utils": "^0.22.1012"
627647 },
628648 "peerDependencies": {
629649 "@jimp/custom": ">=0.3.5",
@@ -633,12 +653,12 @@
633653 }
634654 },
635655 "node_modules/@jimp/plugin-scale": {
636656 "version": "0.22.1012",
637657 "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.1012.tgz",
638658 "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxgdghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==",
639659 "license": "MIT",
640660 "dependencies": {
641661 "@jimp/utils": "^0.22.1012"
642662 },
643663 "peerDependencies": {
644664 "@jimp/custom": ">=0.3.5",
@@ -646,12 +666,12 @@
646666 }
647667 },
648668 "node_modules/@jimp/plugin-shadow": {
649669 "version": "0.22.1012",
650670 "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.1012.tgz",
651671 "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANRFX8mTJuCt7/74OtDONoy3KKpenu5Y38s+FkrtID3zXVoeD/KcQAhwqHlm4YH2bVqBuWQHXSuBK054e7wFRnRnbSLPUqAwSeYP3lWqpuQzJtgiiBxV3+WWwTg==",
652672 "license": "MIT",
653673 "dependencies": {
654674 "@jimp/utils": "^0.22.1012"
655675 },
656676 "peerDependencies": {
657677 "@jimp/custom": ">=0.3.5",
@@ -660,12 +680,12 @@
660680 }
661681 },
662682 "node_modules/@jimp/plugin-threshold": {
663683 "version": "0.22.1012",
664684 "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.1012.tgz",
665685 "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw4x5GrQr1a/9L0paBC/MZZJjjgjxLYrqSmWd+e+QfAEPvmRxdRoQ5uKEuNgXnm9/weHQBTnQBQsOY2iFja+XGAw==",
666686 "license": "MIT",
667687 "dependencies": {
668688 "@jimp/utils": "^0.22.1012"
669689 },
670690 "peerDependencies": {
671691 "@jimp/custom": ">=0.3.5",
@@ -674,32 +694,32 @@
674694 }
675695 },
676696 "node_modules/@jimp/plugins": {
677697 "version": "0.22.1012",
678698 "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.1012.tgz",
679699 "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8uyBJ8vQrDkBbTgQZLty9k4+WD6sqN0YFYvBehpkpnUiwKtUQdRjsIDJSPjuI21YdVeqZxYywifHl4/91wXWILoTZsjTUASQcGoH0TuC0N7xm3ww==",
680700 "license": "MIT",
681701 "dependencies": {
682702 "@jimp/plugin-blit": "^0.22.1012",
683703 "@jimp/plugin-blur": "^0.22.1012",
684704 "@jimp/plugin-circle": "^0.22.1012",
685705 "@jimp/plugin-color": "^0.22.1012",
686706 "@jimp/plugin-contain": "^0.22.1012",
687707 "@jimp/plugin-cover": "^0.22.1012",
688708 "@jimp/plugin-crop": "^0.22.1012",
689709 "@jimp/plugin-displace": "^0.22.1012",
690710 "@jimp/plugin-dither": "^0.22.1012",
691711 "@jimp/plugin-fisheye": "^0.22.1012",
692712 "@jimp/plugin-flip": "^0.22.1012",
693713 "@jimp/plugin-gaussian": "^0.22.1012",
694714 "@jimp/plugin-invert": "^0.22.1012",
695715 "@jimp/plugin-mask": "^0.22.1012",
696716 "@jimp/plugin-normalize": "^0.22.1012",
697717 "@jimp/plugin-print": "^0.22.1012",
698718 "@jimp/plugin-resize": "^0.22.1012",
699719 "@jimp/plugin-rotate": "^0.22.1012",
700720 "@jimp/plugin-scale": "^0.22.1012",
701721 "@jimp/plugin-shadow": "^0.22.1012",
702722 "@jimp/plugin-threshold": "^0.22.1012",
703723 "timm": "^1.6.1"
704724 },
705725 "peerDependencies": {
@@ -707,12 +727,12 @@
707727 }
708728 },
709729 "node_modules/@jimp/png": {
710730 "version": "0.22.1012",
711731 "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.1012.tgz",
712732 "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AUMrp6dr3UTn+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22aLK8ty/FBkmnHhOERRlr02KPDN1OTOYHLDQdSKELz+Otdz1v4aAXzV5q53UDD2rbB5joKVJ/ChY310B+eRzNxIovbUF1KVrUsYdE8Hg==",
713733 "license": "MIT",
714734 "dependencies": {
715735 "@jimp/utils": "^0.22.1012",
716736 "pngjs": "^6.0.0"
717737 },
718738 "peerDependencies": {
@@ -720,9 +740,9 @@
720740 }
721741 },
722742 "node_modules/@jimp/tiff": {
723743 "version": "0.22.1012",
724744 "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.1012.tgz",
725745 "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2ogE1LtMh4RyJsoCAfAkBRVSYyZDTtLq9p9LUiiYP0vPtXyxX4BiYBUYihTLSBlCQg5nF2e4OpQg7SPrLdJ66u7jg==",
726746 "license": "MIT",
727747 "dependencies": {
728748 "utif2": "^4.0.1"
@@ -732,16 +752,16 @@
732752 }
733753 },
734754 "node_modules/@jimp/types": {
735755 "version": "0.22.1012",
736756 "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.1012.tgz",
737757 "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgtwwKYzRdElE1MBXFREvCto5s699izFHNVvALUv79GXNbsOVqlwlOxlWJ8DuyOGIXoLP4JW/T+Y8zzUIwm30YyuTtfUJgMRMA==",
738758 "license": "MIT",
739759 "dependencies": {
740760 "@jimp/bmp": "^0.22.1012",
741761 "@jimp/gif": "^0.22.1012",
742762 "@jimp/jpeg": "^0.22.1012",
743763 "@jimp/png": "^0.22.1012",
744764 "@jimp/tiff": "^0.22.1012",
745765 "timm": "^1.6.1"
746766 },
747767 "peerDependencies": {
@@ -749,9 +769,9 @@
749769 }
750770 },
751771 "node_modules/@jimp/utils": {
752772 "version": "0.22.1012",
753773 "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.1012.tgz",
754774 "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUsyJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9wnMKXk8TrSwAE71zt716Q==",
755775 "license": "MIT",
756776 "dependencies": {
757777 "regenerator-runtime": "^0.13.3"
@@ -948,6 +968,27 @@
948968 "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
949969 "license": "MIT"
950970 },
971+ "node_modules/@types/archiver": {
972+ "version": "6.0.2",
973+ "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.2.tgz",
974+ "integrity": "sha512-KmROQqbQzKGuaAbmK+ZcytkJ51+YqDa7NmbXjmtC5YBLSyQYo21YaUnQ3HbaPFKL1ooo6RQ6OPYPIDyxfpDDXw==",
975+ "dev": true,
976+ "license": "MIT",
977+ "dependencies": {
978+ "@types/readdir-glob": "*"
979+ }
980+ },
981+ "node_modules/@types/body-parser": {
982+ "version": "1.19.5",
983+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
984+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
985+ "dev": true,
986+ "license": "MIT",
987+ "dependencies": {
988+ "@types/connect": "*",
989+ "@types/node": "*"
990+ }
991+ },
951992 "node_modules/@types/cacheable-request": {
952993 "version": "6.0.3",
953994 "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
@@ -960,21 +1001,128 @@
9601001 "@types/responselike": "^1.0.0"
9611002 }
9621003 },
1004+ "node_modules/@types/command-exists": {
1005+ "version": "1.2.3",
1006+ "resolved": "https://registry.npmjs.org/@types/command-exists/-/command-exists-1.2.3.tgz",
1007+ "integrity": "sha512-PpbaE2XWLaWYboXD6k70TcXO/OdOyyRFq5TVpmlUELNxdkkmXU9fkImNosmXU1DtsNrqdUgWd/nJQYXgwmtdXQ==",
1008+ "dev": true,
1009+ "license": "MIT"
1010+ },
1011+ "node_modules/@types/compression": {
1012+ "version": "1.7.5",
1013+ "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.5.tgz",
1014+ "integrity": "sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==",
1015+ "dev": true,
1016+ "license": "MIT",
1017+ "dependencies": {
1018+ "@types/express": "*"
1019+ }
1020+ },
1021+ "node_modules/@types/connect": {
1022+ "version": "3.4.38",
1023+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
1024+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
1025+ "dev": true,
1026+ "license": "MIT",
1027+ "dependencies": {
1028+ "@types/node": "*"
1029+ }
1030+ },
1031+ "node_modules/@types/cookie-parser": {
1032+ "version": "1.4.7",
1033+ "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.7.tgz",
1034+ "integrity": "sha512-Fvuyi354Z+uayxzIGCwYTayFKocfV7TuDYZClCdIP9ckhvAu/ixDtCB6qx2TT0FKjPLf1f3P/J1rgf6lPs64mw==",
1035+ "dev": true,
1036+ "license": "MIT",
1037+ "dependencies": {
1038+ "@types/express": "*"
1039+ }
1040+ },
1041+ "node_modules/@types/cookie-session": {
1042+ "version": "2.0.49",
1043+ "resolved": "https://registry.npmjs.org/@types/cookie-session/-/cookie-session-2.0.49.tgz",
1044+ "integrity": "sha512-4E/bBjlqLhU5l4iGPR+NkVJH593hpNsT4dC3DJDr+ODm6Qpe13kZQVkezRIb+TYDXaBMemS3yLQ+0leba3jlkQ==",
1045+ "dev": true,
1046+ "license": "MIT",
1047+ "dependencies": {
1048+ "@types/express": "*",
1049+ "@types/keygrip": "*"
1050+ }
1051+ },
1052+ "node_modules/@types/cors": {
1053+ "version": "2.8.17",
1054+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
1055+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
1056+ "dev": true,
1057+ "license": "MIT",
1058+ "dependencies": {
1059+ "@types/node": "*"
1060+ }
1061+ },
1062+ "node_modules/@types/dompurify": {
1063+ "version": "3.0.5",
1064+ "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
1065+ "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
1066+ "dev": true,
1067+ "license": "MIT",
1068+ "dependencies": {
1069+ "@types/trusted-types": "*"
1070+ }
1071+ },
1072+ "node_modules/@types/express": {
1073+ "version": "4.17.21",
1074+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
1075+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
1076+ "dev": true,
1077+ "dependencies": {
1078+ "@types/body-parser": "*",
1079+ "@types/express-serve-static-core": "^4.17.33",
1080+ "@types/qs": "*",
1081+ "@types/serve-static": "*"
1082+ }
1083+ },
1084+ "node_modules/@types/express-serve-static-core": {
1085+ "version": "4.19.6",
1086+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
1087+ "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
1088+ "dev": true,
1089+ "dependencies": {
1090+ "@types/node": "*",
1091+ "@types/qs": "*",
1092+ "@types/range-parser": "*",
1093+ "@types/send": "*"
1094+ }
1095+ },
9631096 "node_modules/@types/http-cache-semantics": {
9641097 "version": "4.0.2",
9651098 "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz",
9661099 "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==",
9671100 "license": "MIT"
9681101 },
1102+ "node_modules/@types/http-errors": {
1103+ "version": "2.0.4",
1104+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
1105+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
1106+ "dev": true,
1107+ "license": "MIT"
1108+ },
9691109 "node_modules/@types/jquery": {
9701110 "version": "3.5.2931",
9711111 "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.2931.tgz",
9721112 "integrity": "sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIgrf/Oy8FAbzSZtFHRjc7IpbfFVmpLtJiB+UOoywpRsuO5JxjybyegcPJ/YZfMwr+FVuQbm7IaWC4y3FVYfVDxRGqmUCFjjPII0HWaP0vTPJGp6m4o13AXySCcMbWfrWtBFAKw==",
9731113 "dev": true,
1114+ "license": "MIT",
9741115 "dependencies": {
9751116 "@types/sizzle": "*"
9761117 }
9771118 },
1119+ "node_modules/@types/keygrip": {
1120+ "version": "1.0.6",
1121+ "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz",
1122+ "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==",
1123+ "dev": true,
1124+ "license": "MIT"
1125+ },
9781126 "node_modules/@types/keyv": {
9791127 "version": "3.1.4",
9801128 "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
@@ -984,28 +1132,126 @@
9841132 "@types/node": "*"
9851133 }
9861134 },
1135+ "node_modules/@types/lodash": {
1136+ "version": "4.17.10",
1137+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz",
1138+ "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==",
1139+ "dev": true,
1140+ "license": "MIT"
1141+ },
9871142 "node_modules/@types/long": {
9881143 "version": "4.0.2",
9891144 "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
9901145 "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
9911146 "license": "MIT"
9921147 },
9931148 "node_modules/@types/nodemime": {
9941149 "version": "161.93.15",
9951150 "resolved": "https://registry.npmjs.org/@types/nodemime/-/nodemime-161.93.15.tgz",
9961151 "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQKpyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+1ifr7g3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
1152+ "dev": true,
9971153 "license": "MIT"
9981154 },
1155+ "node_modules/@types/mime-types": {
1156+ "version": "2.1.4",
1157+ "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz",
1158+ "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==",
1159+ "dev": true,
1160+ "license": "MIT"
1161+ },
1162+ "node_modules/@types/multer": {
1163+ "version": "1.4.12",
1164+ "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.12.tgz",
1165+ "integrity": "sha512-pQ2hoqvXiJt2FP9WQVLPRO+AmiIm/ZYkavPlIQnx282u4ZrVdztx0pkh3jjpQt0Kz+YI0YhSG264y08UJKoUQg==",
1166+ "dev": true,
1167+ "license": "MIT",
1168+ "dependencies": {
1169+ "@types/express": "*"
1170+ }
1171+ },
1172+ "node_modules/@types/node": {
1173+ "version": "18.19.55",
1174+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.55.tgz",
1175+ "integrity": "sha512-zzw5Vw52205Zr/nmErSEkN5FLqXPuKX/k5d1D7RKHATGqU7y6YfX9QxZraUzUrFGqH6XzOzG196BC35ltJC4Cw==",
1176+ "license": "MIT",
1177+ "dependencies": {
1178+ "undici-types": "~5.26.4"
1179+ }
1180+ },
9991181 "node_modules/@types/node-fetch": {
10001182 "version": "2.6.911",
10011183 "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.911.tgz",
10021184 "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo24xFj9R5+AfTrRGVazle1tl597w3gfArfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
10031185 "license": "MIT",
10041186 "dependencies": {
10051187 "@types/node": "*",
10061188 "form-data": "^4.0.0"
10071189 }
10081190 },
1191+ "node_modules/@types/node-persist": {
1192+ "version": "3.1.8",
1193+ "resolved": "https://registry.npmjs.org/@types/node-persist/-/node-persist-3.1.8.tgz",
1194+ "integrity": "sha512-QLidg6/SadZYPrTKxtxL1A85XBoQlG40bhoMdhu6DH6+eNCMr2j+RGfFZ9I9+IY8W/PDwQonJ+iBWD62jZjMfg==",
1195+ "dev": true,
1196+ "license": "MIT",
1197+ "dependencies": {
1198+ "@types/node": "*"
1199+ }
1200+ },
1201+ "node_modules/@types/png-chunk-text": {
1202+ "version": "1.0.3",
1203+ "resolved": "https://registry.npmjs.org/@types/png-chunk-text/-/png-chunk-text-1.0.3.tgz",
1204+ "integrity": "sha512-7keEFz73uNJ9Ar1XMCNnHEXT9pICJnouMQCCYgBEmHMgdkXaQzSTmSvr6tUDSqgdEgmlRAxZd97wprgliyZoCg==",
1205+ "dev": true,
1206+ "license": "MIT"
1207+ },
1208+ "node_modules/@types/png-chunks-encode": {
1209+ "version": "1.0.2",
1210+ "resolved": "https://registry.npmjs.org/@types/png-chunks-encode/-/png-chunks-encode-1.0.2.tgz",
1211+ "integrity": "sha512-Dxn0aXEcSg1wVeHjvNlygm/+fKBDzWMCdxJYhjGUTeefFW/jYxWcrg+W7ppLBfH44iJMqeVBHtHBwtYQUeYvgw==",
1212+ "dev": true,
1213+ "license": "MIT"
1214+ },
1215+ "node_modules/@types/png-chunks-extract": {
1216+ "version": "1.0.2",
1217+ "resolved": "https://registry.npmjs.org/@types/png-chunks-extract/-/png-chunks-extract-1.0.2.tgz",
1218+ "integrity": "sha512-z6djfFIbrrddtunoMJBOPlyZrnmeuG1kkvHUNi2QfpOb+JMMLuLliHHTmMyRi7k7LiTAut0HbdGCF6ibDtQAHQ==",
1219+ "dev": true,
1220+ "license": "MIT"
1221+ },
1222+ "node_modules/@types/qs": {
1223+ "version": "6.9.16",
1224+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz",
1225+ "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==",
1226+ "dev": true
1227+ },
1228+ "node_modules/@types/range-parser": {
1229+ "version": "1.2.7",
1230+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
1231+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
1232+ "dev": true
1233+ },
1234+ "node_modules/@types/readdir-glob": {
1235+ "version": "1.1.5",
1236+ "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz",
1237+ "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==",
1238+ "dev": true,
1239+ "license": "MIT",
1240+ "dependencies": {
1241+ "@types/node": "*"
1242+ }
1243+ },
1244+ "node_modules/@types/response-time": {
1245+ "version": "2.3.8",
1246+ "resolved": "https://registry.npmjs.org/@types/response-time/-/response-time-2.3.8.tgz",
1247+ "integrity": "sha512-7qGaNYvdxc0zRab8oHpYx7AW17qj+G0xuag1eCrw3M2VWPJQ/HyKaaghWygiaOUl0y9x7QGQwppDpqLJ5V9pzw==",
1248+ "dev": true,
1249+ "license": "MIT",
1250+ "dependencies": {
1251+ "@types/express": "*",
1252+ "@types/node": "*"
1253+ }
1254+ },
10091255 "node_modules/@types/responselike": {
10101256 "version": "1.0.1",
10111257 "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz",
@@ -1015,12 +1261,89 @@
10151261 "@types/node": "*"
10161262 }
10171263 },
1264+ "node_modules/@types/send": {
1265+ "version": "0.17.4",
1266+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
1267+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
1268+ "dev": true,
1269+ "license": "MIT",
1270+ "dependencies": {
1271+ "@types/mime": "^1",
1272+ "@types/node": "*"
1273+ }
1274+ },
1275+ "node_modules/@types/serve-static": {
1276+ "version": "1.15.7",
1277+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
1278+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
1279+ "dev": true,
1280+ "license": "MIT",
1281+ "dependencies": {
1282+ "@types/http-errors": "*",
1283+ "@types/node": "*",
1284+ "@types/send": "*"
1285+ }
1286+ },
10181287 "node_modules/@types/sizzle": {
10191288 "version": "2.3.8",
10201289 "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
10211290 "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==",
10221291 "dev": true
10231292 },
1293+ "node_modules/@types/toastr": {
1294+ "version": "2.1.43",
1295+ "resolved": "https://registry.npmjs.org/@types/toastr/-/toastr-2.1.43.tgz",
1296+ "integrity": "sha512-sLC2fr2OXeE1iyhUixpQ64wQ2tA26awmLidn4tXTLBz4yP/VhtYUKHpmiIyDtztKkHjucdiTLH8F5uRRyhNi2Q==",
1297+ "dev": true,
1298+ "license": "MIT",
1299+ "dependencies": {
1300+ "@types/jquery": "*"
1301+ }
1302+ },
1303+ "node_modules/@types/trusted-types": {
1304+ "version": "2.0.7",
1305+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
1306+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
1307+ "dev": true,
1308+ "license": "MIT"
1309+ },
1310+ "node_modules/@types/write-file-atomic": {
1311+ "version": "4.0.3",
1312+ "resolved": "https://registry.npmjs.org/@types/write-file-atomic/-/write-file-atomic-4.0.3.tgz",
1313+ "integrity": "sha512-qdo+vZRchyJIHNeuI1nrpsLw+hnkgqP/8mlaN6Wle/NKhydHmUN9l4p3ZE8yP90AJNJW4uB8HQhedb4f1vNayQ==",
1314+ "dev": true,
1315+ "license": "MIT",
1316+ "dependencies": {
1317+ "@types/node": "*"
1318+ }
1319+ },
1320+ "node_modules/@types/yargs": {
1321+ "version": "17.0.33",
1322+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
1323+ "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
1324+ "dev": true,
1325+ "license": "MIT",
1326+ "dependencies": {
1327+ "@types/yargs-parser": "*"
1328+ }
1329+ },
1330+ "node_modules/@types/yargs-parser": {
1331+ "version": "21.0.3",
1332+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
1333+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
1334+ "dev": true,
1335+ "license": "MIT"
1336+ },
1337+ "node_modules/@types/yauzl": {
1338+ "version": "2.10.3",
1339+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
1340+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
1341+ "dev": true,
1342+ "license": "MIT",
1343+ "dependencies": {
1344+ "@types/node": "*"
1345+ }
1346+ },
10241347 "node_modules/@ungap/structured-clone": {
10251348 "version": "1.2.0",
10261349 "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
@@ -2038,21 +2361,21 @@
20382361 }
20392362 },
20402363 "node_modules/cookie": {
20412364 "version": "0.47.12",
20422365 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.47.12.tgz",
20432366 "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNlyki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/kxkUAw==",
20442367 "license": "MIT",
20452368 "engines": {
20462369 "node": ">= 0.6"
20472370 }
20482371 },
20492372 "node_modules/cookie-parser": {
20502373 "version": "1.4.67",
20512374 "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.67.tgz",
20522375 "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeAnGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
20532376 "license": "MIT",
20542377 "dependencies": {
20552378 "cookie": "0.47.12",
20562379 "cookie-signature": "1.0.6"
20572380 },
20582381 "engines": {
@@ -2865,9 +3188,9 @@
28653188 "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
28663189 },
28673190 "node_modules/express": {
28683191 "version": "4.21.01",
28693192 "resolved": "https://registry.npmjs.org/express/-/express-4.21.01.tgz",
28703193 "integrity": "sha512-VqcNGcj/Id5ZT1LZYSFlK1Ee0/cfihi3ttTn+NJmkli2eZADigjq29qTlWiGC8QaO91tHcDxJiE/hAQ43tX4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/VLPq8TzUfZMpc+UX06FCEx3ByOYet6ZFblngBwuM1IPw8fmQBiQ==",
28713194 "license": "MIT",
28723195 "dependencies": {
28733196 "accepts": "~1.3.8",
@@ -2875,7 +3198,7 @@
28753198 "body-parser": "1.20.3",
28763199 "content-disposition": "0.5.4",
28773200 "content-type": "~1.0.4",
28783201 "cookie": "0.67.01",
28793202 "cookie-signature": "1.0.6",
28803203 "debug": "2.6.9",
28813204 "depd": "2.0.0",
@@ -2907,9 +3230,10 @@
29073230 }
29083231 },
29093232 "node_modules/express/node_modules/cookie": {
29103233 "version": "0.67.01",
29113234 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.67.01.tgz",
29123235 "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz6DnInpx7SJ2AK3+CTUE/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdwZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
3236+ "license": "MIT",
29133237 "engines": {
29143238 "node": ">= 0.6"
29153239 }
@@ -2979,6 +3303,29 @@
29793303 "pend": "~1.2.0"
29803304 }
29813305 },
3306+ "node_modules/fetch-blob": {
3307+ "version": "3.2.0",
3308+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
3309+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
3310+ "funding": [
3311+ {
3312+ "type": "github",
3313+ "url": "https://github.com/sponsors/jimmywarting"
3314+ },
3315+ {
3316+ "type": "paypal",
3317+ "url": "https://paypal.me/jimmywarting"
3318+ }
3319+ ],
3320+ "license": "MIT",
3321+ "dependencies": {
3322+ "node-domexception": "^1.0.0",
3323+ "web-streams-polyfill": "^3.0.3"
3324+ },
3325+ "engines": {
3326+ "node": "^12.20 || >= 14.13"
3327+ }
3328+ },
29823329 "node_modules/file-entry-cache": {
29833330 "version": "6.0.1",
29843331 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -3148,6 +3495,18 @@
31483495 "node": ">= 14"
31493496 }
31503497 },
3498+ "node_modules/formdata-polyfill": {
3499+ "version": "4.0.10",
3500+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
3501+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
3502+ "license": "MIT",
3503+ "dependencies": {
3504+ "fetch-blob": "^3.1.2"
3505+ },
3506+ "engines": {
3507+ "node": ">=12.20.0"
3508+ }
3509+ },
31513510 "node_modules/forwarded": {
31523511 "version": "0.2.0",
31533512 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -3334,11 +3693,18 @@
33343693 "url": "https://github.com/sponsors/sindresorhus"
33353694 }
33363695 },
33373696 "node_modules/google-translate-api-browserx": {
33383697 "version": "310.07.1",
33393698 "resolved": "https://registry.npmjs.org/google-translate-api-browserx/-/google-translate-api-browserx-310.07.1.tgz",
33403699 "integrity": "sha512-KTLodkyGBWMK9IW6QIeJ2zCuju4Z0CLpbkADKo+yLhbSTD4lOdZDS6jRWzn1woOk62aOKQ5OyVaJSA+CXXpQeyc6CktOWxo36IWfstOjwG/xaynGVAzeBezzJG6qn8MLeqOq3SmW0AdkvnGl3Z2Sbpmk1A+jc2WwrBiRjqaY2A==",
33413700 "license": "MIT",
3701+ "engines": {
3702+ "node": ">=14.0.0"
3703+ },
3704+ "funding": {
3705+ "type": "github",
3706+ "url": "https://github.com/sponsors/AidanWelch"
3707+ }
33423708 },
33433709 "node_modules/gopd": {
33443710 "version": "1.0.1",
@@ -3459,14 +3825,6 @@
34593825 "node": ">= 0.4"
34603826 }
34613827 },
3462- "node_modules/he": {
3463- "version": "1.2.0",
3464- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
3465- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
3466- "bin": {
3467- "he": "bin/he"
3468- }
3469- },
34703828 "node_modules/helmet": {
34713829 "version": "7.1.0",
34723830 "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz",
@@ -3475,6 +3833,22 @@
34753833 "node": ">=16.0.0"
34763834 }
34773835 },
3836+ "node_modules/html-entities": {
3837+ "version": "2.5.2",
3838+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
3839+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
3840+ "funding": [
3841+ {
3842+ "type": "github",
3843+ "url": "https://github.com/sponsors/mdevils"
3844+ },
3845+ {
3846+ "type": "patreon",
3847+ "url": "https://patreon.com/mdevils"
3848+ }
3849+ ],
3850+ "license": "MIT"
3851+ },
34783852 "node_modules/htmlparser2": {
34793853 "version": "8.0.2",
34803854 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
@@ -3661,6 +4035,12 @@
36614035 "@types/node": "16.9.1"
36624036 }
36634037 },
4038+ "node_modules/image-q/node_modules/@types/node": {
4039+ "version": "16.9.1",
4040+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz",
4041+ "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==",
4042+ "license": "MIT"
4043+ },
36644044 "node_modules/import-fresh": {
36654045 "version": "3.3.0",
36664046 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -3846,6 +4226,26 @@
38464226 "whatwg-fetch": "^3.4.1"
38474227 }
38484228 },
4229+ "node_modules/isomorphic-fetch/node_modules/node-fetch": {
4230+ "version": "2.7.0",
4231+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
4232+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
4233+ "license": "MIT",
4234+ "dependencies": {
4235+ "whatwg-url": "^5.0.0"
4236+ },
4237+ "engines": {
4238+ "node": "4.x || >=6.0.0"
4239+ },
4240+ "peerDependencies": {
4241+ "encoding": "^0.1.0"
4242+ },
4243+ "peerDependenciesMeta": {
4244+ "encoding": {
4245+ "optional": true
4246+ }
4247+ }
4248+ },
38494249 "node_modules/jackspeak": {
38504250 "version": "2.3.6",
38514251 "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
@@ -3864,14 +4264,14 @@
38644264 }
38654265 },
38664266 "node_modules/jimp": {
38674267 "version": "0.22.1012",
38684268 "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.1012.tgz",
38694269 "integrity": "sha512-lCaHIJAgTOsplyJzC1wR5jZaYDnfkxKJy1dwLpj/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm7cvyjxiclxU3F4TrI/J4j2rS0niq6YDUMoPn5hs8GDpO+IvhIs44Gcuvlb6pd2LQ0wcKaKgOZGo7Ky057CRtWesyhfg==",
38704270 "license": "MIT",
38714271 "dependencies": {
38724272 "@jimp/custom": "^0.22.1012",
38734273 "@jimp/plugins": "^0.22.1012",
38744274 "@jimp/types": "^0.22.1012",
38754275 "regenerator-runtime": "^0.13.3"
38764276 }
38774277 },
@@ -3881,13 +4281,6 @@
38814281 "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
38824282 "license": "BSD-3-Clause"
38834283 },
3884- "node_modules/jquery": {
3885- "version": "3.7.0",
3886- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz",
3887- "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==",
3888- "dev": true,
3889- "license": "MIT"
3890- },
38914284 "node_modules/js-yaml": {
38924285 "version": "4.1.0",
38934286 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -4332,23 +4725,30 @@
43324725 }
43334726 },
43344727 "node_modules/node-fetch": {
43354728 "version": "23.63.122",
43364729 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-23.63.122.tgz",
43374730 "integrity": "sha512-CdRB78srN/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKql6gqWulah9SrxeYnxeddIG30+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6gGOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
43384731 "license": "MIT",
43394732 "dependencies": {
43404733 "whatwgdata-urluri-to-buffer": "^54.0.0",
4734+ "fetch-blob": "^3.1.4",
4735+ "formdata-polyfill": "^4.0.10"
43414736 },
43424737 "engines": {
43434738 "node": "4^12.x20.0 || ^14.13.1 || >=616.0.0"
43444739 },
43454740 "peerDependenciesfunding": {
43464741 "encodingtype": "^0.1.0opencollective",
4347- },
4742+ "url": "https://opencollective.com/node-fetch"
4348- "peerDependenciesMeta": {
4349- "encoding": {
4350- "optional": true
43514743 }
4744+ },
4745+ "node_modules/node-fetch/node_modules/data-uri-to-buffer": {
4746+ "version": "4.0.1",
4747+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
4748+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
4749+ "license": "MIT",
4750+ "engines": {
4751+ "node": ">= 12"
43524752 }
43534753 },
43544754 "node_modules/node-persist": {
@@ -4514,13 +4914,24 @@
45144914 "openai": "bin/cli"
45154915 }
45164916 },
45174917 "node_modules/openai/node_modules/@types/node-fetch": {
45184918 "version": "182.187.90",
45194919 "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-18fetch-2.187.90.tgz",
45204920 "integrity": "sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ecc4FRfUm/mJLdbcWZ7U+3voBH01Wq0AwCyFL+8T7o8RpFjH7ovc3nt2bEw05wfxSz+TRsLDWpWsitgmSgYmy2dQdWyKC1694ELPqMs/c7OYIQsPTfQYzUSNozLt8A==",
45214921 "license": "MIT",
45224922 "dependencies": {
45234923 "undiciwhatwg-typesurl": "~^5.260.40"
4924+ },
4925+ "engines": {
4926+ "node": "4.x || >=6.0.0"
4927+ },
4928+ "peerDependencies": {
4929+ "encoding": "^0.1.0"
4930+ },
4931+ "peerDependenciesMeta": {
4932+ "encoding": {
4933+ "optional": true
4934+ }
45244935 }
45254936 },
45264937 "node_modules/optionator": {
@@ -5785,6 +6196,7 @@
57856196 "version": "5.0.0",
57866197 "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
57876198 "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
6199+ "license": "MIT",
57886200 "dependencies": {
57896201 "punycode": "^2.3.1"
57906202 },
@@ -5989,20 +6401,22 @@
59896401 "version": "7.0.0",
59906402 "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
59916403 "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
6404+ "license": "BSD-2-Clause",
59926405 "engines": {
59936406 "node": ">=12"
59946407 }
59956408 },
59966409 "node_modules/whatwg-fetch": {
59976410 "version": "3.6.1820",
59986411 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.1820.tgz",
59996412 "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1DEqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84QRrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
60006413 "license": "MIT"
60016414 },
60026415 "node_modules/whatwg-url": {
60036416 "version": "14.0.0",
60046417 "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
60056418 "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
6419+ "license": "MIT",
60066420 "dependencies": {
60076421 "tr46": "^5.0.0",
60086422 "webidl-conversions": "^7.0.0"
package.json+27 -7
@@ -14,9 +14,9 @@
1414 "csrf-csrf": "^2.2.3",
1515 "express": "^4.21.0",
1616 "form-data": "^4.0.0",
1717 "google-translate-api-browserx": "^310.07.1",
18- "he": "^1.2.0",
1918 "helmet": "^7.1.0",
19+ "html-entities": "^2.5.2",
2020 "iconv-lite": "^0.6.3",
2121 "ip-matching": "^2.1.2",
2222 "ipaddr.js": "^2.0.1",
@@ -24,7 +24,7 @@
2424 "lodash": "^4.17.21",
2525 "mime-types": "^2.1.35",
2626 "multer": "^1.4.5-lts.1",
2727 "node-fetch": "^23.63.112",
2828 "node-persist": "^4.0.1",
2929 "open": "^8.4.2",
3030 "png-chunk-text": "^1.0.0",
@@ -60,13 +60,13 @@
6060 }
6161 },
6262 "name": "sillytavern",
6363 "type": "commonjsmodule",
6464 "license": "AGPL-3.0",
6565 "repository": {
6666 "type": "git",
6767 "url": "https://github.com/SillyTavern/SillyTavern.git"
6868 },
6969 "version": "1.12.67",
7070 "scripts": {
7171 "start": "node server.js",
7272 "start:no-csrf": "node server.js --disableCsrf",
@@ -85,8 +85,28 @@
8585 },
8686 "main": "server.js",
8787 "devDependencies": {
88+ "@types/archiver": "^6.0.2",
89+ "@types/command-exists": "^1.2.3",
90+ "@types/compression": "^1.7.5",
91+ "@types/cookie-parser": "^1.4.7",
92+ "@types/cookie-session": "^2.0.49",
93+ "@types/cors": "^2.8.17",
94+ "@types/dompurify": "^3.0.5",
95+ "@types/express": "^4.17.21",
8896 "@types/jquery": "^3.5.29",
8997 "eslint@types/lodash": "^84.5717.010",
9098 "jquery@types/mime-types": "^32.61.4",
99+ "@types/multer": "^1.4.12",
100+ "@types/node": "^18.19.55",
101+ "@types/node-persist": "^3.1.8",
102+ "@types/png-chunk-text": "^1.0.3",
103+ "@types/png-chunks-encode": "^1.0.2",
104+ "@types/png-chunks-extract": "^1.0.2",
105+ "@types/response-time": "^2.3.8",
106+ "@types/toastr": "^2.1.43",
107+ "@types/write-file-atomic": "^4.0.3",
108+ "@types/yargs": "^17.0.33",
109+ "@types/yauzl": "^2.10.3",
110+ "eslint": "^8.57.0"
91111 }
92112}
plugins.js+16 -4
@@ -3,16 +3,28 @@
33// 1. node plugins.js update
44// 2. node plugins.js install <plugin-git-url>
55// More operations coming soon.
6-const { default: git } = require('simple-git');
6+import fs from 'node:fs';
7-const fs = require('fs');
7+import path from 'node:path';
8-const path = require('path');
8+import process from 'node:process';
99constimport { colorfileURLToPath } =from require('./src/utilnode:url');
1010
11+import { default as git } from 'simple-git';
12+import { color } from './src/util.js';
13+
14+const __dirname = import.meta.dirname ?? path.dirname(fileURLToPath(import.meta.url));
1115process.chdir(__dirname);
1216const pluginsPath = './plugins';
1317
1418const command = process.argv[2];
1519
20+if (!command) {
21+ console.log('Usage: node plugins.js <command>');
22+ console.log('Commands:');
23+ console.log(' update - Update all installed plugins');
24+ console.log(' install <plugin-git-url> - Install plugin from a Git URL');
25+ process.exit(1);
26+}
27+
1628if (command === 'update') {
1729 console.log(color.magenta('Updating all plugins'));
1830 updatePlugins();
plugins/package.json+4 -0
@@ -0,0 +1,4 @@
1+{
2+ "name": "sillytavern-plugins",
3+ "type": "commonjs"
4+}
post-install.js+14 -10
@@ -1,11 +1,13 @@
11/**
22 * Scripts to be done before starting the server for the first time.
33 */
44constimport fs =from require('node:fs');
55constimport path =from require('node:path');
66constimport crypto =from require('node:crypto');
7-const yaml = require('yaml');
7+import process from 'node:process';
88constimport _yaml =from require('lodashyaml');
9+import _ from 'lodash';
10+import { createRequire } from 'node:module';
911
1012/**
1113 * Colorizes console output.
@@ -59,13 +61,15 @@ function convertConfig() {
5961
6062 try {
6163 console.log(color.blue('Converting config.conf to config.yaml. Your old config.conf will be renamed to config.conf.bak'));
62- const config = require(path.join(process.cwd(), './config.conf'));
64+ fs.renameSync('./config.conf', './config.conf.cjs'); // Force loading as CommonJS
63- fs.copyFileSync('./config.conf', './config.conf.bak');
65+ const require = createRequire(import.meta.url);
6466 fsconst config = require(path.rmSyncjoin(process.cwd(), './config.conf.cjs'));
67+ fs.copyFileSync('./config.conf.cjs', './config.conf.bak');
68+ fs.rmSync('./config.conf.cjs');
6569 fs.writeFileSync('./config.yaml', yaml.stringify(config));
6670 console.log(color.green('Conversion successful. Please check your config.yaml and fix it if necessary.'));
6771 } catch (error) {
6872 console.error(color.red('FATAL: Config conversion failed. Please check your config.conf file and try again.'), error);
6973 return;
7074 }
7175 }
@@ -132,7 +136,7 @@ function createDefaultFiles() {
132136function getMd5Hash(data) {
133137 return crypto
134138 .createHash('md5')
135139 .update(new Uint8Array(data))
136140 .digest('hex');
137141}
138142
public/css/logprobs.css+1 -0
@@ -56,6 +56,7 @@
5656 user-select: none;
5757 height: 100%;
5858 overflow-y: auto;
59+ word-break: break-all;
5960}
6061
6162.logprobs_empty_state {
public/css/popup.css+2 -1
@@ -1,3 +1,4 @@
1+@import url('/lib/dialog-polyfill.css');
12@import url('./popup-safari-fix.css');
23
34dialog {
@@ -42,7 +43,7 @@ dialog {
4243 display: flex;
4344 flex-direction: column;
4445 overflow: hidden;
4546 width: min(100%, 100vw);
4647 height: 100%;
4748 padding: 1px;
4849}
public/css/select2-overrides.css+2 -1
@@ -17,7 +17,7 @@
1717
1818.select2-container .select2-selection .select2-selection__clear {
1919 color: var(--SmartThemeBodyColor);
2020 font-size: 24px20px;
2121 padding: 0;
2222 position: absolute;
2323 right: 5px;
@@ -50,6 +50,7 @@
5050 padding: revert;
5151 border-right: 1px solid var(--SmartThemeBorderColor);
5252 font-size: 1.1em;
53+ line-height: 1;
5354}
5455
5556.select2-container .select2-selection--multiple .select2-selection__choice__display {
public/css/st-tailwind.css+4 -0
@@ -612,3 +612,7 @@ ul.li-padding-bot5 li {
612612ul.li-padding-bot10 li {
613613 padding-bottom: 10px;
614614}
615+
616+.wordBreakAll {
617+ word-break: break-all;
618+}
public/css/toggle-dependent.css+29 -2
@@ -32,6 +32,14 @@ body.hideChatAvatars .last_mes:not(.smallSysMes) {
3232 padding-bottom: 20px !important;
3333}
3434
35+body.hideChatAvatars.no-timer.no-tokenCount.no-mesIDDisplay .swipe_left {
36+ left: 0px;
37+}
38+
39+body.hideChatAvatars .swipe_left {
40+ left: 7px;
41+}
42+
3543body.square-avatars .avatar,
3644body.square-avatars .avatar img {
3745 border-radius: var(--avatar-base-border-radius) !important;
@@ -340,9 +348,9 @@ body.no-blur * {
340348 backdrop-filter: unset !important;
341349}
342350
343351/* body.no-blur #send_form.no-connection {
344352 background-color: rgba(100, 0, 0, 0.9) !important;
345-}
353+} */
346354
347355body.no-blur #bg1,
348356body.no-blur #bg_custom {
@@ -459,3 +467,22 @@ body.expandMessageActions .mes .mes_buttons .extraMesButtonsHint {
459467.mdhotkey_icon {
460468 opacity: 0.6;
461469}
470+
471+label[for="trim_spaces"]:has(input:checked) i.warning {
472+ display: none;
473+}
474+
475+#claude_function_prefill_warning {
476+ display: none;
477+}
478+
479+#openai_settings:has(#openai_function_calling:checked):has(#claude_assistant_prefill:not(:placeholder-shown), #claude_assistant_impersonation:not(:placeholder-shown)) #claude_function_prefill_warning {
480+ display: flex;
481+ align-items: center;
482+ gap: 5px;
483+ margin: 10px 0;
484+}
485+
486+#mistralai_other_models:empty {
487+ display: none;
488+}
public/global.d.ts+0 -42
@@ -1,5 +1,4 @@
11// Global namespace modules
2-declare var DOMPurify;
32declare var droll;
43declare var Handlebars;
54declare var hljs;
@@ -1365,44 +1364,3 @@ declare namespace moment {
13651364declare global {
13661365 const moment: typeof moment;
13671366}
1368-
1369-/**
1370- * Callback data for the `LLM_FUNCTION_TOOL_REGISTER` event type that is triggered when a function tool can be registered.
1371- */
1372-interface FunctionToolRegister {
1373- /**
1374- * The type of generation that is being used
1375- */
1376- type?: string;
1377- /**
1378- * Generation data, including messages and sampling parameters
1379- */
1380- data: Record<string, object>;
1381- /**
1382- * Callback to register an LLM function tool.
1383- */
1384- registerFunctionTool: typeof registerFunctionTool;
1385-}
1386-
1387-/**
1388- * Callback data for the `LLM_FUNCTION_TOOL_REGISTER` event type that is triggered when a function tool is registered.
1389- * @param name Name of the function tool to register
1390- * @param description Description of the function tool
1391- * @param params JSON schema for the parameters of the function tool
1392- * @param required Whether the function tool should be forced to be used
1393- */
1394-declare function registerFunctionTool(name: string, description: string, params: object, required: boolean): Promise<void>;
1395-
1396-/**
1397- * Callback data for the `LLM_FUNCTION_TOOL_CALL` event type that is triggered when a function tool is called.
1398- */
1399-interface FunctionToolCall {
1400- /**
1401- * Name of the function tool to call
1402- */
1403- name: string;
1404- /**
1405- * JSON object with the parameters to pass to the function tool
1406- */
1407- arguments: string;
1408-}
public/index.html+303 -147
@@ -7,6 +7,7 @@
77 <meta charset="utf-8">
88 <meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content">
99 <meta name="apple-mobile-web-app-capable" content="yes">
10+ <meta name="mobile-web-app-capable" content="yes">
1011 <meta name="darkreader-lock">
1112 <meta name="robots" content="noindex, nofollow" />
1213 <style>
@@ -80,104 +81,169 @@
8081 Click slider numbers to input manually.
8182 </div>
8283 <div id="labModeWarning" class="redWarningBG textAlignCenter displayNone" data-i18n="MAD LAB MODE ON">MAD LAB MODE ON</div>
8384 <a class="topRightInset" href="https://docs.sillytavern.app/usage/common-settings/" target="_blank" title="Documentation on sampling parameters." data-i18n="[title]Documentation on sampling parameters">
8485 <span name="samplerHelpButton" class="note-link-span topRightInset fa-solid fa-circle-question"></span>
8586 </a>
8687 <div class="scrollableInner">
8788 <div class="flex-container flexNoGap" id="ai_response_configuration">
8889 <div id="respective-presets-block" class="width100p">
8990 <div id="kobold_api-presets">
90- <h4 class="margin0"><span data-i18n="kobldpresets">Kobold Presets</span>
91+ <div class="margin0 title_restorable standoutHeader">
92+ <strong>
93+ <span data-i18n="kobldpresets">Kobold Presets</span>
9194 <a href="https://docs.sillytavern.app/usage/api-connections/koboldai/" class="notes-link" target="_blank">
9295 <span class="fa-solid fa-circle-question note-link-span"></span>
9396 </a>
9497 </h4strong>
98+
99+ <div class="flex-container gap3px">
100+ <div data-preset-manager-import="kobold" class="margin0 menu_button_icon menu_button" title="Import preset" data-i18n="[title]Import preset">
101+ <i class="fa-fw fa-solid fa-file-import"></i>
102+ </div>
103+ <div data-preset-manager-export="kobold" class="margin0 menu_button_icon menu_button" title="Export preset" data-i18n="[title]Export preset">
104+ <i class="fa-fw fa-solid fa-file-export"></i>
105+ </div>
106+ <div data-preset-manager-delete="kobold" class="margin0 menu_button_icon menu_button" title="Delete the preset" data-i18n="[title]Delete the preset">
107+ <i class="fa-fw fa-solid fa-trash-can"></i>
108+ </div>
109+ </div>
110+ </div>
95111 <div class="flex-container flexNoGap">
96112 <select id="settings_preset" data-preset-manager-for="kobold" class="flex1 text_pole">
97113 <option value="gui" data-i18n="guikoboldaisettings">GUI KoboldAI Settings</option>
98114 </select>
99115 <div class="flex-container marginLeft5 gap3px">
100116 <input type="file" hidden data-preset-manager-file="kobold" accept=".json, .settings">
101117 <idiv data-preset-manager-update="kobold" class="menu_button fa-solid fa-savemenu_button_icon" title="Update current preset" data-i18n="[title]Update current preset"></i>
102- <i data-preset-manager-new="kobold" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
118+ <i class="fa-fw fa-solid fa-save"></i>
103- <i data-preset-manager-import="kobold" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
119+ </div>
104120 <idiv data-preset-manager-exportrename="kobold" class="menu_button fa-solid fa-file-exportmenu_button_icon" title="ExportRename current preset" data-i18n="[title]ExportRename current preset"></i>
105- <i data-preset-manager-restore="kobold" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
121+ <i class="fa-fw fa-solid fa-pencil"></i>
106- <i data-preset-manager-delete="kobold" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
122+ </div>
123+ <div data-preset-manager-new="kobold" class="menu_button menu_button_icon" title="Save preset as" data-i18n="[title]Save preset as">
124+ <i class="fa-fw fa-solid fa-file-circle-plus"></i>
125+ </div>
126+ <div data-preset-manager-restore="kobold" class="menu_button menu_button_icon" title="Restore current preset" data-i18n="[title]Restore current preset">
127+ <i class="fa-fw fa-solid fa-recycle"></i>
128+ </div>
107129 </div>
108130 </div>
109131 </div>
110132 <div id="novel_api-presets">
111133 <h4div class="margin0 title_restorable standoutHeader">
134+ <strong>
112135 <span data-i18n="novelaipresets">NovelAI Presets</span>
113136 <a href="https://docs.sillytavern.app/usage/api-connections/novelai/" class="notes-link" target="_blank">
114137 <span class="fa-solid fa-circle-question note-link-span"></span>
115138 </a>
116139 </h4strong>
140+
141+ <div class="flex-container gap3px">
142+ <div data-preset-manager-import="novel" class="margin0 menu_button_icon menu_button" title="Import preset" data-i18n="[title]Import preset">
143+ <i class="fa-fw fa-solid fa-file-import"></i>
144+ </div>
145+ <div data-preset-manager-export="novel" class="margin0 menu_button_icon menu_button" title="Export preset" data-i18n="[title]Export preset">
146+ <i class="fa-fw fa-solid fa-file-export"></i>
147+ </div>
148+ <div data-preset-manager-delete="novel" class="margin0 menu_button_icon menu_button" title="Delete the preset" data-i18n="[title]Delete the preset">
149+ <i class="fa-fw fa-solid fa-trash-can"></i>
150+ </div>
151+ </div>
152+ </div>
117153 <div class="flex-container flexNoGap">
118154 <select id="settings_preset_novel" class="flex1 text_pole" data-preset-manager-for="novel">
119155 <option value="gui" data-i18n="Default">Default</option>
120156 </select>
121157 <div class="flex-container marginLeft5 gap3px">
122158 <input type="file" hidden data-preset-manager-file="novel" accept=".json, .settings, .preset">
123159 <idiv data-preset-manager-update="novel" class="menu_button fa-solid fa-savemenu_button_icon" title="Update current preset" data-i18n="[title]Update current preset"></i>
124- <i data-preset-manager-new="novel" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
160+ <i class="fa-fw fa-solid fa-save"></i>
125- <i data-preset-manager-import="novel" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
161+ </div>
126162 <idiv data-preset-manager-exportrename="novel" class="menu_button fa-solid fa-file-exportmenu_button_icon" title="ExportRename current preset" data-i18n="[title]ExportRename current preset"></i>
127- <i data-preset-manager-restore="novel" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
163+ <i class="fa-fw fa-solid fa-pencil"></i>
128- <i data-preset-manager-delete="novel" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
164+ </div>
165+ <div data-preset-manager-new="novel" class="menu_button menu_button_icon" title="Save preset as" data-i18n="[title]Save preset as">
166+ <i class="fa-fw fa-solid fa-file-circle-plus"></i>
167+ </div>
168+ <div data-preset-manager-restore="novel" class="menu_button menu_button_icon" title="Restore current preset" data-i18n="[title]Restore current preset">
169+ <i class="fa-fw fa-solid fa-recycle"></i>
170+ </div>
129171 </div>
130172 </div>
131173 </div>
132174 <div id="openai_api-presets">
133175 <div>
134- <h4 class="margin0"><span data-i18n="openaipresets">Chat Completion Presets</span></h4>
176+ <div class="margin0 title_restorable standoutHeader">
177+ <strong>
178+ <span data-i18n="openaipresets">Chat Completion Presets</span>
179+ </strong>
180+
181+ <div class="flex-container gap3px">
182+ <div id="import_oai_preset" class="margin0 menu_button menu_button_icon" title="Import preset" data-i18n="[title]Import preset">
183+ <i class="fa-fw fa-solid fa-file-import"></i>
184+ </div>
185+ <div id="export_oai_preset" class="margin0 menu_button menu_button_icon" title="Export preset" data-i18n="[title]Export preset">
186+ <i class="fa-fw fa-solid fa-file-export"></i>
187+ </div>
188+ <div id="delete_oai_preset" class="margin0 menu_button menu_button_icon" title="Delete the preset" data-i18n="[title]Delete the preset">
189+ <i class="fa-fw fa-solid fa-trash-can"></i>
190+ </div>
191+ </div>
192+ </div>
193+
135194 <div class="flex-container flexNoGap">
136195 <select id="settings_preset_openai" class="flex1 text_pole" data-preset-manager-for="openai">
137196 <option value="gui" data-i18n="Default">Default</option>
138197 </select>
139198 <div class="flex-container marginLeft5 gap3px">
140199 <input id="openai_preset_import_file" type="file" accept=".json,.settings" hidden />
141200 <idiv id="update_oai_preset" class="menu_button fa-solid fa-savemenu_button_icon" title="Update current preset" data-i18n="[title]Update current preset"></i>
142- <i id="new_oai_preset" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
201+ <i class="fa-fw fa-solid fa-save"></i>
143- <i id="import_oai_preset" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
202+ </div>
144203 <idiv id="export_oai_presetnew_oai_preset" class="menu_button fa-solid fa-file-exportmenu_button_icon" title="ExportSave preset as" data-i18n="[title]ExportSave preset as"></i>
145204 <i id="delete_oai_preset" class="menu_buttonfa-fw fa-solid fa-trashfile-can" title="Delete the preset" datacircle-i18n="[title]Delete the presetplus"></i>
205+ </div>
146206 </div>
147207 </div>
148208 </div>
149209 </div>
150210 <div id="textgenerationwebui_api-presets">
151- <h4 class="margin0"><span data-i18n="Text Completion presets">Text Completion presets</span></h4>
211+ <div class="margin0 title_restorable standoutHeader">
212+ <strong>
213+ <span data-i18n="Text Completion presets">Text Completion presets</span>
214+ </strong>
215+
216+ <div class="flex-container gap3px">
217+ <div data-preset-manager-import="textgenerationwebui" class="margin0 menu_button_icon menu_button" title="Import preset" data-i18n="[title]Import preset">
218+ <i class="fa-fw fa-solid fa-file-import"></i>
219+ </div>
220+ <div data-preset-manager-export="textgenerationwebui" class="margin0 menu_button_icon menu_button" title="Export preset" data-i18n="[title]Export preset">
221+ <i class="fa-fw fa-solid fa-file-export"></i>
222+ </div>
223+ <div data-preset-manager-delete="textgenerationwebui" class="margin0 menu_button_icon menu_button" title="Delete the preset" data-i18n="[title]Delete the preset">
224+ <i class="fa-fw fa-solid fa-trash-can"></i>
225+ </div>
226+ </div>
227+ </div>
152228 <div class="flex-container flexNoGap">
153229 <select id="settings_preset_textgenerationwebui" class="flex1 text_pole" data-preset-manager-for="textgenerationwebui">
154230 </select>
155231 <div class="flex-container marginLeft5 gap3px">
156232 <input type="file" hidden data-preset-manager-file="textgenerationwebui" accept=".json, .settings">
157233 <idiv data-preset-manager-update="textgenerationwebui" class="menu_button fa-solid fa-savemenu_button_icon" title="Update current preset" data-i18n="[title]Update current preset"></i>
158- <i data-preset-manager-new="textgenerationwebui" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i>
234+ <i class="fa-fw fa-solid fa-save"></i>
159- <i data-preset-manager-import="textgenerationwebui" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i>
160- <i data-preset-manager-export="textgenerationwebui" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i>
161- <i data-preset-manager-restore="textgenerationwebui" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i>
162- <i data-preset-manager-delete="textgenerationwebui" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i>
163235 </div>
236+ <div data-preset-manager-rename="textgenerationwebui" class="menu_button menu_button_icon" title="Rename current preset" data-i18n="[title]Rename current preset">
237+ <i class="fa-fw fa-solid fa-pencil"></i>
164238 </div>
239+ <div data-preset-manager-new="textgenerationwebui" class="menu_button menu_button_icon" title="Save preset as" data-i18n="[title]Save preset as">
240+ <i class="fa-fw fa-solid fa-file-circle-plus"></i>
165241 </div>
242+ <div data-preset-manager-restore="textgenerationwebui" class="menu_button menu_button_icon" title="Restore current preset" data-i18n="[title]Restore current preset">
243+ <i class="fa-fw fa-solid fa-recycle"></i>
166244 </div>
167- <div id="ai_module_block_novel" class="width100p">
168- <div class="range-block">
169- <div class="range-block-title justifyLeft" data-i18n="AI Module">
170- AI Module
171245 </div>
172- <div class="toggle-description justifyLeft" data-i18n="Changes the style of the generated text.">
173- Changes the style of the generated text.
174246 </div>
175- <select id="nai_prefix">
176- <option value="vanilla" data-i18n="No Module">No Module</option>
177- <option value="special_instruct" data-i18n="Instruct">Instruct</option>
178- <option value="special_proseaugmenter" data-i18n="Prose Augmenter">Prose Augmenter</option>
179- <option value="theme_textadventure" data-i18n="Text Adventure">Text Adventure</option>
180- </select>
181247 </div>
182248 </div>
183249 <div id="common-gen-settings-block" class="width100p">
@@ -204,6 +270,14 @@
204270 </small>
205271 </label>
206272 </div>
273+ <div id="streaming_novel_block" class="flex-container alignitemscenter justifyCenter marginTop5">
274+ <label class="checkbox_label" for="streaming_novel">
275+ <input type="checkbox" id="streaming_novel" />
276+ <small><span data-i18n="Streaming">Streaming</span>
277+ <div class="margin5 fa-solid fa-circle-info opacity50p" data-i18n="[title]Streaming_desc" title="Display the response bit by bit as it is generated.&#13;When this is off, responses will be displayed all at once when they are complete."></div>
278+ </small>
279+ </label>
280+ </div>
207281 </div>
208282 <div id="max_context_block" class="alignitemscenter flex-container marginBot5 flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
209283 <small data-i18n="context size(tokens)">Context (tokens)</small>
@@ -224,6 +298,22 @@
224298 <span data-i18n="Max prompt cost:">Max prompt cost:</span> <span id="or_prompt_cost">&ndash;</span>
225299 </small>
226300 </div>
301+ <div id="ai_module_block_novel" class="width100p">
302+ <div class="range-block">
303+ <div class="range-block-title justifyLeft" data-i18n="AI Module">
304+ AI Module
305+ </div>
306+ <div class="toggle-description justifyLeft" data-i18n="Changes the style of the generated text.">
307+ Changes the style of the generated text.
308+ </div>
309+ <select id="nai_prefix">
310+ <option value="vanilla" data-i18n="No Module">No Module</option>
311+ <option value="special_instruct" data-i18n="Instruct">Instruct</option>
312+ <option value="special_proseaugmenter" data-i18n="Prose Augmenter">Prose Augmenter</option>
313+ <option value="theme_textadventure" data-i18n="Text Adventure">Text Adventure</option>
314+ </select>
315+ </div>
316+ </div>
227317 <hr>
228318 </div>
229319 <div id="respective-ranges-and-temps" class="width100p">
@@ -233,19 +323,6 @@
233323 -->
234324 <div id="range_block_novel">
235325 <div class="range-block">
236- <label class="checkbox_label widthFreeExpand">
237- <input id="streaming_novel" type="checkbox" />
238- <span data-i18n="Streaming">Streaming</span>
239- </label>
240- <div class="toggle-description justifyLeft">
241- <span data-i18n="Display the response bit by bit as it is generated.">
242- Display the response bit by bit as it is generated.</span><br>
243- <span data-i18n="When this is off, responses will be displayed all at once when they are complete.">
244- When this is off, responses will be displayed all at once when they are complete.
245- </span>
246- </div>
247- </div>
248- <div class="range-block">
249326 <div class="range-block-title" data-i18n="Temperature">
250327 Temperature
251328 </div>
@@ -264,10 +341,10 @@
264341 </div>
265342 <div class="range-block-range-and-counter">
266343 <div class="range-block-range">
267344 <input type="range" id="rep_pen_novel" name="volume" min="1" max="8" step="0.05025">
268345 </div>
269346 <div class="range-block-counter">
270347 <input type="number" min="1" max="8" step="0.05025" data-for="rep_pen_novel" id="rep_pen_counter_novel">
271348 </div>
272349 </div>
273350 </div>
@@ -595,17 +672,6 @@
595672 </span>
596673 </div>
597674 </div>
598- <div class="range-block" data-source="cohere">
599- <label for="websearch_toggle" title="Enable Cohere web-search connector" data-i18n="[title]Enable Cohere web-search connector" class="checkbox_label widthFreeExpand">
600- <input id="websearch_toggle" type="checkbox" />
601- <span data-i18n="Web-search">Web-search</span>
602- </label>
603- <div class="toggle-description justifyLeft">
604- <span data-i18n="Allow the model to use the web-search connector.">
605- Allow the model to use the web-search connector.
606- </span>
607- </div>
608- </div>
609675 <div class="range-block" data-source="openai,claude,windowai,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai">
610676 <div class="range-block-title" data-i18n="Temperature">
611677 Temperature
@@ -1310,7 +1376,7 @@
13101376 </div>
13111377 </div>
13121378
13131379 <div data-tg-type="koboldcpp, aphrodite, tabby, ooba, llamacpp" id="xtc_block" class="wide100p">
13141380 <h4 class="wide100p textAlignCenter">
13151381 <label data-i18n="Exclude Top Choices (XTC)">Exclude Top Choices (XTC)</label>
13161382 <a href="https://github.com/oobabooga/text-generation-webui/pull/6335" target="_blank">
@@ -1664,6 +1730,7 @@
16641730 <div data-name="typical_p" draggable="true"><span>Typical P</span><small></small></div>
16651731 <div data-name="tfs_z" draggable="true"><span>Tail Free Sampling</span><small></small></div>
16661732 <div data-name="min_p" draggable="true"><span>Min P</span><small></small></div>
1733+ <div data-name="xtc" draggable="true"><span>Exclude Top Choices</span><small></small></div>
16671734 </div>
16681735 <div id="llamacpp_samplers_default_order" class="menu_button menu_button_icon">
16691736 <span data-i18n="Load default order">Load default order</span>
@@ -1679,6 +1746,10 @@
16791746 Ooba only. Determines the order of samplers.
16801747 </div>
16811748 <div id="sampler_priority_container" class="prompt_order">
1749+ <div data-name="repetition_penalty" draggable="true"><span>Repetition Penalty</span><small></small></div>
1750+ <div data-name="presence_penalty" draggable="true"><span>Presence Penalty</span><small></small></div>
1751+ <div data-name="frequency_penalty" draggable="true"><span>Frequency Penalty</span><small></small></div>
1752+ <div data-name="dry" draggable="true"><span>DRY</span><small></small></div>
16821753 <div data-name="temperature" draggable="true"><span>Temperature</span><small></small></div>
16831754 <div data-name="dynamic_temperature" draggable="true"><span>Dynamic Temperature</span><small></small></div>
16841755 <div data-name="quadratic_sampling" draggable="true"><span>Quadratic / Smooth Sampling</span><small></small></div>
@@ -1691,6 +1762,9 @@
16911762 <div data-name="top_a" draggable="true"><span>Top A</span><small></small></div>
16921763 <div data-name="min_p" draggable="true"><span>Min P</span><small></small></div>
16931764 <div data-name="mirostat" draggable="true"><span>Mirostat</span><small></small></div>
1765+ <div data-name="xtc" draggable="true"><span>XTC</span><small></small></div>
1766+ <div data-name="encoder_repetition_penalty" draggable="true"><span>Encoder Repetition Penalty</span><small></small></div>
1767+ <div data-name="no_repeat_ngram" draggable="true"><span>No Repeat Ngram</span><small></small></div>
16941768 </div>
16951769 <div id="textgenerationwebui_default_order" class="menu_button menu_button_icon">
16961770 <span data-i18n="Load default order">Load default order</span>
@@ -1702,9 +1776,9 @@
17021776 <div class="">
17031777 <div class="inline-drawer wide100p flexFlowColumn">
17041778 <div class="inline-drawer-toggle inline-drawer-header">
17051779 <div class="flex-container alignItemsCenter flexNoGap">
17061780 <b data-i18n="Character Names Behavior">Character Names Behavior</b>
17071781 <span title="Helps the model to associate messages with characters." data-i18n="[title]Helps the model to associate messages with characters." class="note-link-spanopacity50p fa-solid fa-circle-questioninfo"></span>
17081782 <small class="flexBasis100p">(<span id="character_names_display"></span>)</small>
17091783 </div>
17101784 <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
@@ -1713,25 +1787,22 @@
17131787 <label class="checkbox_label flexWrap alignItemsCenter" for="character_names_none">
17141788 <input type="radio" id="character_names_none" name="character_names" value="-1">
17151789 <span data-i18n="None">None</span>
1716- <i class="right_menu_button fa-solid fa-circle-exclamation" title="Never add character name prefixes. May behave poorly in groups, choose with caution." data-i18n="[title]character_names_none"></i>
1790+ <small class="flexBasis100p" data-i18n="character_names_none">
1717- <small class="flexBasis100p" data-i18n="Never add character names.">
1791+ Never add character name prefixes. May behave poorly in groups, choose with caution.
1718- Never add character names.
17191792 </small>
17201793 </label>
17211794 <label class="checkbox_label flexWrap alignItemsCenter" for="character_names_default">
17221795 <input type="radio" id="character_names_default" name="character_names" value="0">
17231796 <span data-i18n="Default">Default</span>
1724- <i class="right_menu_button fa-solid fa-circle-exclamation" title="Add prefixes for groups and past personas. Otherwise, make sure you provide names in the prompt." data-i18n="[title]character_names_default"></i>
1797+ <small class="flexBasis100p" data-i18n="character_names_default">
1725- <small class="flexBasis100p" data-i18n="Don't add character names unless necessary.">
1798+ Add prefixes for groups and past personas. Otherwise, make sure you provide names in the prompt.
1726- Don't add character names unless necessary.
17271799 </small>
17281800 </label>
17291801 <label class="checkbox_label flexWrap alignItemsCenter" for="character_names_completion">
17301802 <input type="radio" id="character_names_completion" name="character_names" value="1">
17311803 <span data-i18n="Completion Object">Completion Object</span>
1732- <i class="right_menu_button fa-solid fa-circle-exclamation" title="Restrictions apply: only Latin alphanumerics and underscores. Doesn't work for all sources, notably: Claude, MistralAI, Google." data-i18n="[title]character_names_completion"></i>
1804+ <small class="flexBasis100p" data-i18n="character_names_completion">
1733- <small class="flexBasis100p" data-i18n="Add character names to completion objects.">
1805+ Add character names to completion objects. Restrictions apply: only Latin alphanumerics and underscores.
1734- Add character names to completion objects.
17351806 </small>
17361807 </label>
17371808 <label class="checkbox_label flexWrap alignItemsCenter" for="character_names_content">
@@ -1747,9 +1818,9 @@
17471818 </div>
17481819 <div class="inline-drawer wide100p flexFlowColumn marginBot10">
17491820 <div class="inline-drawer-toggle inline-drawer-header">
17501821 <div class="flex-container alignItemsCenter flexNoGap">
17511822 <b data-i18n="Continue Postfix">Continue Postfix</b>
17521823 <span data-i18n="[title]The next chunk of the continued message will be appended using this as a separator." title="The next chunk of the continued message will be appended using this as a separator." class="note-link-spanopacity50p fa-solid fa-circle-questioninfo"></span>
17531824 <small class="flexBasis100p">(<span id="continue_postfix_display"></span>)</small>
17541825 </div>
17551826 <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
@@ -1869,6 +1940,10 @@
18691940 </div>
18701941 <textarea id="claude_assistant_impersonation" class="text_pole textarea_compact autoSetHeight" name="assistant_impersonation" rows="2" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea>
18711942 </div>
1943+ <div id="claude_function_prefill_warning">
1944+ <i class="fa-solid fa-circle-info"></i>
1945+ <span>Prefills won't work when function calling is enabled and any tools are registered.</span>
1946+ </div>
18721947 <label for="claude_use_sysprompt" class="checkbox_label widthFreeExpand">
18731948 <input id="claude_use_sysprompt" type="checkbox" />
18741949 <span data-i18n="Use system prompt (Claude 2.1+ only)">
@@ -2263,7 +2338,37 @@
22632338 <div data-for="api_key_featherless" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
22642339 For privacy reasons, your API key will be hidden after you reload the page.
22652340 </div>
2266- <select id="featherless_model">
2341+ <hr>
2342+ <h4 data-i18n="Featherless Model Selection">Featherless Model Selection</h4>
2343+ <div class="flex-container wide100p flexGap10">
2344+ <div class="flex1 overflowHidden wide100p">
2345+ <div class="flex-container marginBot10 alignitemscenter">
2346+ <input id="featherless_model_search_bar" class="text_pole width100p flex1 margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search...">
2347+ <select id="featherless_model_sort_order" class="margin0 text_pole">
2348+ <option value="search" data-i18n="Search" hidden>A-Z</option>
2349+ <option value="asc">A-Z</option>
2350+ <option value="desc">Z-A</option>
2351+ <option value="date_asc">Date Asc</option>
2352+ <option value="date_desc">Date Desc</option>
2353+ </select>
2354+ <select id="featherless_category_selection" class="text_pole">
2355+ <option value="" disabled selected data-i18n="category">category</option>
2356+ <!-- <option value="Favorite" data-i18n="Top">Favorite</option> -->
2357+ <option value="Top" data-i18n="Top">Top</option>
2358+ <option value="New" data-i18n="New">New</option>
2359+ <option value="All" data-i18n="All">All</option>
2360+ </select>
2361+ <select id="featherless_class_selection" class="text_pole">
2362+ <option value="" selected data-i18n="class">All Classes</option>
2363+ </select>
2364+ <div id="featherless_model_pagination_container" class="flex1"></div>
2365+ <i id="featherless_model_grid_toggle" class="fa-solid fa-table-cells-large menu_button" data-i18n="[title]Toggle grid view" title="Toggle grid view"></i>
2366+ </div>
2367+ <div id="featherless_model_card_block" data-i18n="[no_desc_text]No model description" no_desc_text="[No description]"></div>
2368+ </div>
2369+ </div>
2370+ <!-- Do not remove. Needed for the /model command to function -->
2371+ <select id="featherless_model" class="displayNone">
22672372 <option value="" data-i18n="-- Connect to the API --">
22682373 -- Connect to the API --
22692374 </option>
@@ -2415,15 +2520,16 @@
24152520 <h4>
24162521 <span data-i18n="Tabby Model">Tabby Model</span>
24172522 </h4>
2418- <b>
2419- EXPERIMENTAL FEATURE. USE AT YOUR OWN RISK. DON'T ASK FOR SUPPORT ON THIS.
2420- </b>
24212523 <select id="tabby_model">
24222524 <option value="" data-i18n="-- Connect to the API --">
24232525 -- Connect to the API --
24242526 </option>
24252527 </select>
24262528 <div class="marginTopBot5">
2529+ <i class="fa-solid fa-flask"></i>
2530+ <span>Experimental feature. Use at your own risk.</span>
2531+ </div>
2532+ <div class="marginTopBot5">
24272533 <small>
24282534 <i class="fa-solid fa-lightbulb"></i>
24292535 &nbsp;
@@ -2468,10 +2574,6 @@
24682574 <div data-tg-type="openrouter" class="menu_button menu_button_icon openrouter_authorize" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="Authorize;[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div>
24692575 <div class="api_loading menu_button menu_button_icon" data-i18n="Cancel">Cancel</div>
24702576 </div>
2471- <label data-tg-type="ooba" class="checkbox_label margin-bot-10px" for="legacy_api_textgenerationwebui">
2472- <input type="checkbox" id="legacy_api_textgenerationwebui" />
2473- <span data-i18n="Legacy API (pre-OAI, no streaming)">Legacy API (pre-OAI, no streaming)</span>
2474- </label>
24752577 <label data-tg-type="ooba" class="checkbox_label margin-bot-10px" for="bypass_status_check_textgenerationwebui">
24762578 <input type="checkbox" id="bypass_status_check_textgenerationwebui" />
24772579 <span data-i18n="Bypass status check">Bypass status check</span>
@@ -2684,11 +2786,6 @@
26842786 <div>
26852787 <span data-i18n="Get your key from">Get your key from </span> <a target="_blank" href="https://console.anthropic.com/account/keys" data-i18n="Anthropic's developer console">Anthropic's developer console</a>.
26862788 </div>
2687- <div>
2688- <b data-i18n="Slack and Poe cookies will not work here, do not bother trying.">
2689- Slack and Poe cookies will not work here, do not bother trying.
2690- </b>
2691- </div>
26922789 <div class="flex-container">
26932790 <input id="api_key_claude" name="api_key_claude" class="text_pole flex1" value="" type="text" autocomplete="off">
26942791 <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_claude"></div>
@@ -2700,6 +2797,8 @@
27002797 <h4 data-i18n="Claude Model">Claude Model</h4>
27012798 <select id="model_claude_select">
27022799 <optgroup label="Versions">
2800+ <option value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option>
2801+ <option value="claude-3-5-sonnet-20241022">claude-3-5-sonnet-20241022</option>
27032802 <option value="claude-3-5-sonnet-20240620">claude-3-5-sonnet-20240620</option>
27042803 <option value="claude-3-opus-20240229">claude-3-opus-20240229</option>
27052804 <option value="claude-3-sonnet-20240229">claude-3-sonnet-20240229</option>
@@ -2797,22 +2896,10 @@
27972896 <span data-i18n="Allow fallback providers">Allow fallback providers</span>
27982897 </label>
27992898 </div>
28002899 <divsmall class="marginTopBot5">
2801- <label for="openrouter_force_instruct" class="checkbox_label">
2900+ <i class="fa-solid fa-lightbulb"></i>
2802- <input id="openrouter_force_instruct" type="checkbox" />
2901+ <span>To use instruct formatting, switch to OpenRouter under Text Completion API.</span>
2803- <span class="flex-container alignItemsBaseline" title="This option is outdated and will be removed in the future. To use instruct formatting, please switch to OpenRouter under Text Completion API instead." data-i18n="[title]openrouter_force_instruct">
2902+ </small>
2804- <i class="fa-solid fa-circle-exclamation neutral_warning"></i>
2805- <b data-i18n="LEGACY">LEGACY</b>
2806- </span>
2807- <span data-i18n="Force Instruct Mode formatting">Force Instruct Mode formatting</span>
2808- </label>
2809- <div class="toggle-description justifyLeft wide100p">
2810- <span data-i18n="Force_Instruct_Mode_formatting_Description">
2811- If both Instruct Mode and this are enabled, the prompt will be formatted by SillyTavern using the current
2812- advanced formatting settings (except instruct System Prompt). If disabled, the prompt will be formatted by OpenRouter.
2813- </span>
2814- </div>
2815- </div>
28162903 </form>
28172904 <form id="scale_form" data-source="scale" action="javascript:void(null);" method="post" enctype="multipart/form-data">
28182905 <div id="normal_scale_form">
@@ -2894,10 +2981,14 @@
28942981 <option value="gemini-1.5-pro-exp-0827">Gemini 1.5 Pro Experiment 2024-08-27</option>
28952982 <option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option>
28962983 <option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option>
2984+ <option value="gemini-1.5-pro-002">Gemini 1.5 Pro [002]</option>
2985+ <option value="gemini-1.5-flash-8b">Gemini 1.5 Flash 8B</option>
28972986 <option value="gemini-1.5-flash-exp-0827">Gemini 1.5 Flash Experiment 2024-08-27</option>
28982987 <option value="gemini-1.5-flash-8b-exp-0827">Gemini 1.5 Flash 8B Experiment 2024-08-27</option>
2988+ <option value="gemini-1.5-flash-8b-exp-0924">Gemini 1.5 Flash 8B Experiment 2024-09-24</option>
28992989 <option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option>
29002990 <option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option>
2991+ <option value="gemini-1.5-flash-002">Gemini 1.5 Flash [002]</option>
29012992 <option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest]</option>
29022993 <option value="gemini-1.0-pro-001">Gemini 1.0 Pro (Tuning) [001]</option>
29032994 <option value="gemini-1.0-pro-vision-latest">Gemini 1.0 Pro Vision [latest]</option>
@@ -2923,17 +3014,23 @@
29233014 <option value="open-mixtral-8x7b">open-mixtral-8x7b</option>
29243015 <option value="open-mixtral-8x22b">open-mixtral-8x22b</option>
29253016 <option value="open-codestral-mamba">open-codestral-mamba</option>
3017+ <option value="ministral-3b-latest">ministral-3b-latest</option>
3018+ <option value="ministral-8b-latest">ministral-8b-latest</option>
3019+ <option value="mistral-tiny-latest">mistral-tiny-latest</option>
29263020 <option value="mistral-small-latest">mistral-small-latest</option>
29273021 <option value="mistral-medium-latest">mistral-medium-latest</option>
29283022 <option value="mistral-large-latest">mistral-large-latest</option>
29293023 <option value="codestral-latest">codestral-latest</option>
29303024 <option value="codestral-mamba-latest">codestral-mamba-latest</option>
29313025 <option value="pixtral-12b-latest">pixtral-12b-latest</option>
29323026 </optgroup>
29333027 <optgroup label="Sub-versions">
29343028 <option value="open-mistral-nemo-2407">open-mistral-nemo-2407</option>
29353029 <option value="open-mixtral-8x22b-2404">open-mixtral-8x22b-2404</option>
3030+ <option value="ministral-3b-2410">ministral-3b-2410</option>
3031+ <option value="ministral-8b-2410">ministral-8b-2410</option>
29363032 <option value="mistral-tiny-2312">mistral-tiny-2312</option>
3033+ <option value="mistral-tiny-2407">mistral-tiny-2407</option>
29373034 <option value="mistral-small-2312">mistral-small-2312</option>
29383035 <option value="mistral-small-2402">mistral-small-2402</option>
29393036 <option value="mistral-small-2409">mistral-small-2409</option>
@@ -2941,9 +3038,11 @@
29413038 <option value="mistral-large-2402">mistral-large-2402</option>
29423039 <option value="mistral-large-2407">mistral-large-2407</option>
29433040 <option value="codestral-2405">codestral-2405</option>
3041+ <option value="codestral-2405-blue">codestral-2405-blue</option>
29443042 <option value="codestral-mamba-2407">codestral-mamba-2407</option>
29453043 <option value="pixtral-12b-2409">pixtral-12b-2409</option>
29463044 </optgroup>
3045+ <optgroup id="mistralai_other_models" label="Other"></optgroup>
29473046 </select>
29483047 </div>
29493048 </form>
@@ -2958,16 +3057,31 @@
29583057 </div>
29593058 <h4 data-i18n="Groq Model">Groq Model</h4>
29603059 <select id="model_groq_select">
2961- <option value="llama-3.1-405b-reasoning">llama-3.1-405b-reasoning</option>
3060+ <optgroup label="Llama 3.2">
29623061 <option value="llama-3.12-70b1b-versatilepreview">llama-3.12-70b1b-versatilepreview</option>
3062+ <option value="llama-3.2-3b-preview">llama-3.2-3b-preview</option>
3063+ <option value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview</option>
3064+ <option value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview</option>
3065+ </optgroup>
3066+ <optgroup label="Llama 3.1">
29633067 <option value="llama-3.1-8b-instant">llama-3.1-8b-instant</option>
29643068 <option value="llama3llama-groq3.1-70b-8192-tool-use-previewversatile">llama3llama-groq3.1-70b-8192-tool-use-previewversatile</option>
3069+ <option value="llama-3.1-405b-reasoning">llama-3.1-405b-reasoning</option>
3070+ </optgroup>
3071+ <optgroup label="Llama 3">
29653072 <option value="llama3-groq-8b-8192-tool-use-preview">llama3-groq-8b-8192-tool-use-preview</option>
3073+ <option value="llama3-groq-70b-8192-tool-use-preview">llama3-groq-70b-8192-tool-use-preview</option>
29663074 <option value="llama3-8b-8192">llama3-8b-8192</option>
29673075 <option value="llama3-70b-8192">llama3-70b-8192</option>
2968- <option value="mixtral-8x7b-32768">mixtral-8x7b-32768</option>
3076+ </optgroup>
3077+ <optgroup label="Gemma">
29693078 <option value="gemma-7b-it">gemma-7b-it</option>
29703079 <option value="gemma2-9b-it">gemma2-9b-it</option>
3080+ </optgroup>
3081+ <optgroup label="Other">
3082+ <option value="mixtral-8x7b-32768">mixtral-8x7b-32768</option>
3083+ <option value="llava-v1.5-7b-4096-preview">llava-v1.5-7b-4096-preview</option>
3084+ </optgroup>
29713085 </select>
29723086 </div>
29733087 <div id="perplexity_form" data-source="perplexity">
@@ -3086,7 +3200,8 @@
30863200 <h4 data-i18n="Prompt Post-Processing">Prompt Post-Processing</h4>
30873201 <select id="custom_prompt_post_processing" class="text_pole" title="Applies additional processing to the prompt before sending it to the API." data-i18n="[title]Applies additional processing to the prompt before sending it to the API.">
30883202 <option data-i18n="prompt_post_processing_none" value="">None</option>
30893203 <option value="claudemerge">ClaudeMerge consecutive roles</option>
3204+ <option value="strict">Strict (user first, alternating roles)</option>
30903205 </select>
30913206 </form>
30923207 <div id="01ai_form" data-source="01ai">
@@ -3161,9 +3276,10 @@
31613276 </h4>
31623277 <div class="flex-container" title="Select your current Context Template" data-i18n="[title]Select your current Context Template">
31633278 <select id="context_presets" data-preset-manager-for="context" class="flex1 text_pole"></select>
31643279 <div class="flex-container justifyCenter gap3px">
31653280 <input type="file" hidden data-preset-manager-file="context" accept=".json, .settings">
31663281 <i data-preset-manager-update="context" class="menu_button fa-solid fa-save" title="Update current template" data-i18n="[title]Update current template"></i>
3282+ <i data-preset-manager-rename="context" class="menu_button fa-pencil fa-solid" title="Rename current template" data-i18n="[title]Rename current template"></i>
31673283 <i data-preset-manager-new="context" class="menu_button fa-solid fa-file-circle-plus" title="Save template as" data-i18n="[title]Save template as"></i>
31683284 <i data-preset-manager-import="context" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i>
31693285 <i data-preset-manager-export="context" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i>
@@ -3223,6 +3339,7 @@
32233339 <label class="checkbox_label" for="trim_spaces">
32243340 <input id="trim_spaces" type="checkbox" />
32253341 <small data-i18n="Trim spaces">Trim spaces</small>
3342+ <i class="fa-sm fa-solid fa-exclamation-triangle warning" title="Disabling is not recommended." data-i18n="[title]Disabling is not recommended."></i>
32263343 </label>
32273344 <label class="checkbox_label" for="trim_sentences_checkbox">
32283345 <input id="trim_sentences_checkbox" type="checkbox" />
@@ -3248,7 +3365,6 @@
32483365 </div>
32493366 </div>
32503367 <div id="InstructSettingsColumn" class="flex-container flexNoGap flexFlowColumn flex1">
3251- <div id="instructSettingsBlock">
32523368 <h4 class="standoutHeader title_restorable justifySpaceBetween">
32533369 <div class="flex-container">
32543370 <span data-i18n="Instruct Template">Instruct Template</span>
@@ -3261,18 +3377,21 @@
32613377 <input id="instruct_bind_to_context" type="checkbox" style="display:none;" />
32623378 <small><i class="fa-solid fa-link menu_button margin0"></i></small>
32633379 </label>
32643380 <label id="instruct_enabled_label"for="instruct_enabled" class="checkbox_label flex1" title="Enable Instruct Mode" data-i18n="[title]instruct_enabled">
32653381 <input id="instruct_enabled" type="checkbox" style="display:none;" />
32663382 <small><i class="fa-solid fa-power-off menu_button margin0"></i></small>
32673383 </label>
32683384 </div>
32693385 </h4>
3386+ <div id="instructSettingsBlock">
3387+
32703388
32713389 <div class="flex-container" title="Select your current Instruct Template" data-i18n="[title]Select your current Instruct Template">
32723390 <select id="instruct_presets" data-preset-manager-for="instruct" class="flex1 text_pole"></select>
32733391 <div class="flex-container margin0 justifyCenter gap3px">
32743392 <input type="file" hidden data-preset-manager-file="instruct" accept=".json, .settings">
32753393 <i data-preset-manager-update="instruct" class="menu_button fa-solid fa-save" title="Update current template" data-i18n="[title]Update current template"></i>
3394+ <i data-preset-manager-rename="instruct" class="menu_button fa-pencil fa-solid" title="Rename current template" data-i18n="[title]Rename current template"></i>
32763395 <i data-preset-manager-new="instruct" class="menu_button fa-solid fa-file-circle-plus" title="Save template as" data-i18n="[title]Save template as"></i>
32773396 <i data-preset-manager-import="instruct" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i>
32783397 <i data-preset-manager-export="instruct" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i>
@@ -3283,7 +3402,7 @@
32833402 <label>
32843403 <small>
32853404 <span data-i18n="Activation Regex">Activation Regex</span>
32863405 <span class="fa-solid fa-circle-question" data-i18n="[title]instruct_template_activation_regex_desc" title="When connecting to an API or choosing a model, automatically activate this Instruct Template if the model name matches the provided regular expression."></span>
32873406 </small>
32883407 </label>
32893408 <div>
@@ -3324,7 +3443,7 @@
33243443 </h4>
33253444 <!-- We keep one auto-open so the user would know what is going on in the picked template -->
33263445 <details open>
33273446 <summary data-i18n="User Message Sequences">User Message Sequences</summary>
33283447 <div class="flex-container">
33293448 <div class="flexAuto" title="Inserted before a User message and as a last prompt line when impersonating." data-i18n="[title]Inserted before a User message and as a last prompt line when impersonating.">
33303449 <small data-i18n="User Prefix">User Message Prefix</small>
@@ -3337,7 +3456,7 @@
33373456 </div>
33383457 </details>
33393458 <details open>
33403459 <summary data-i18n="Assistant Message Sequences">Assistant Message Sequences</summary>
33413460 <div class="flex-container">
33423461 <div class="flexAuto" title="Inserted before an Assistant message and as a last prompt line when generating an AI reply." data-i18n="[title]Inserted before an Assistant message and as a last prompt line when generating an AI reply.">
33433462 <small data-i18n="Assistant Prefix">Assistant Message Prefix</small>
@@ -3350,7 +3469,7 @@
33503469 </div>
33513470 </details>
33523471 <details>
33533472 <summary data-i18n="System Message Sequences">System Message Sequences</summary>
33543473 <div class="flex-container">
33553474 <div class="flexAuto" id="instruct_system_sequence_block" title="Inserted before a System (added by slash commands or extensions) message." data-i18n="[title]Inserted before a System (added by slash commands or extensions) message.">
33563475 <small data-i18n="System Prefix">System Message Prefix</small>
@@ -3369,7 +3488,7 @@
33693488 </div>
33703489 </details>
33713490 <details>
33723491 <summary data-i18n="System Prompt Sequences">System Prompt Sequences</summary>
33733492 <div class="flex-container">
33743493 <div class="flexAuto" title="Inserted before a System prompt." data-i18n="[title]Inserted before a System prompt.">
33753494 <label for="instruct_system_sequence_prefix">
@@ -3431,7 +3550,6 @@
34313550 </div>
34323551 </div>
34333552 <div id="SystemPromptColumn" class="flex-container flexNoGap flexFlowColumn flex1">
3434- <div id="SystemPromptBlock">
34353553 <h4 class="standoutHeader title_restorable justifySpaceBetween">
34363554 <div class="flex-container">
34373555 <span data-i18n="System Prompt">System Prompt</span>
@@ -3440,18 +3558,21 @@
34403558 </a>
34413559 </div>
34423560 <div class="flex-container">
34433561 <label id="sysprompt_enabled_label" for="sysprompt_enabled" class="checkbox_label flex1" title="Enable System Prompt" data-i18n="[title]sysprompt_enabled">
34443562 <input id="sysprompt_enabled" type="checkbox" style="display:none;" />
34453563 <small><i class="fa-solid fa-power-off menu_button margin0"></i></small>
34463564 </label>
34473565 </div>
34483566 </h4>
3567+ <div id="SystemPromptBlock">
3568+
34493569
34503570 <div class="flex-container" title="Select your current System Prompt" data-i18n="[title]Select your current System Prompt">
34513571 <select id="sysprompt_select" data-preset-manager-for="sysprompt" class="flex1 text_pole"></select>
34523572 <div class="flex-container margin0 justifyCenter gap3px">
34533573 <input type="file" hidden data-preset-manager-file="sysprompt" accept=".json, .settings">
34543574 <i data-preset-manager-update="sysprompt" class="menu_button fa-solid fa-save" title="Update current prompt" data-i18n="[title]Update current prompt"></i>
3575+ <i data-preset-manager-rename="sysprompt" class="menu_button fa-pencil fa-solid" title="Rename current prompt" data-i18n="[title]Rename current prompt"></i>
34553576 <i data-preset-manager-new="sysprompt" class="menu_button fa-solid fa-file-circle-plus" title="Save prompt as" data-i18n="[title]Save prompt as"></i>
34563577 <i data-preset-manager-import="sysprompt" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i>
34573578 <i data-preset-manager-export="sysprompt" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i>
@@ -4011,6 +4132,10 @@
40114132 <input id="compact_input_area" type="checkbox" />
40124133 <small data-i18n="Compact Input Area (Mobile)">Compact Input Area</small><i class="fa-solid fa-mobile-screen-button"></i>
40134134 </label>
4135+ <label for="show_swipe_num_all_messages" class="checkbox_label" title="Display swipe numbers for all messages, not just the last." data-i18n="[title]Display swipe numbers for all messages, not just the last.">
4136+ <input id="show_swipe_num_all_messages" type="checkbox" />
4137+ <small data-i18n="Swipe # for All Messages">Swipe # for All Messages</small><i class="fa-solid fa-mobile-screen-button"></i>
4138+ </label>
40144139 <label for="hotswapEnabled" class="checkbox_label" title="In the Character Management panel, show quick selection buttons for favorited characters." data-i18n="[title]In the Character Management panel, show quick selection buttons for favorited characters">
40154140 <input id="hotswapEnabled" type="checkbox" />
40164141 <small data-i18n="Characters Hotswap">Characters Hotswap</small>
@@ -4133,7 +4258,7 @@
41334258 <input id="enable_auto_select_input" type="checkbox" />
41344259 <small data-i18n="Auto-select Input Text">Auto-select Input Text</small>
41354260 </label>
41364261 <label class="checkbox_label alignItemsCenter" for="enable_md_hotkeys" data-i18n="[title]markdown_hotkeys_desc" title="Enable hotkeys for inserting markdown format characters in certain text input boxes. See '/help hotkeys'.">
41374262 <input id="enable_md_hotkeys" type="checkbox" />
41384263 <small>
41394264 <span data-i18n="Markdown Hotkeys">Markdown Hotkeys</span>
@@ -5060,6 +5185,8 @@
50605185 </div>
50615186 <!-- various fullscreen popups -->
50625187 <div name="templatesAndPopupsWrapper"> <!--this div is just for IDE sanity for quick collapsing-->
5188+ <!-- Point to this element when you need a no-op selector -->
5189+ <template id="NULL_SELECTOR" class="displayNone"></template>
50635190 <div id="export_format_popup" class="list-group">
50645191 <div class="export_format list-group-item" data-format="png">PNG</div>
50655192 <div class="export_format list-group-item" data-format="json">JSON</div>
@@ -5165,14 +5292,20 @@
51655292 <div class="inline-drawer-content">
51665293 <small data-i18n="Insert {{original}} into either box to include the respective default prompt from system settings.">Insert {{original}} into either box to include the respective default prompt from system settings.</small>
51675294 <div>
51685295 <h4 data-i18nclass="Mainflex-container PromptalignItemsBaseline">Main Prompt</h4>
5296+ <span data-i18n="Main Prompt">Main Prompt</span>
5297+ <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="system_prompt_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
5298+ </h4>
51695299 <textarea id="system_prompt_textarea" name="system_prompt" data-i18n="[placeholder]Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" placeholder="Any contents here will replace the default Main Prompt used for this character.&#10;(v2 spec: system_prompt)" form="form_create" class="text_pole" autocomplete="off" rows="3"></textarea>
51705300 <div class="extension_token_counter">
51715301 <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="system_prompt_textarea">counting...</span>
51725302 </div>
51735303 </div>
51745304 <div>
51755305 <h4 data-i18nclass="Postflex-Historycontainer InstructionsalignItemsBaseline">Post-History Instructions</h4>
5306+ <span data-i18n="Post-History Instructions">Post-History Instructions</span>
5307+ <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="post_history_instructions_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
5308+ </h4>
51765309 <textarea id="post_history_instructions_textarea" name="post_history_instructions" data-i18n="[placeholder]Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)" placeholder="Any contents here will replace the default Post-History Instructions used for this character.&#10;(v2 spec: post_history_instructions)" form="form_create" class="text_pole" autocomplete="off" rows="3"></textarea>
51775310 <div class="extension_token_counter">
51785311 <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="post_history_instructions_textarea">counting...</span>
@@ -5203,11 +5336,17 @@
52035336 </div>
52045337 <div class="flex-container flexnowrap">
52055338 <div class="flex1">
5206- <h4 class="flex-box" data-i18n="Creator's Notes">Creator's Notes<i class="editor_maximize fa-solid fa-maximize" data-for="creator_notes_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i></h4>
5339+ <h4 class="flex-container alignItemsBaseline">
5340+ <span data-i18n="Creator's Notes">Creator's Notes</span>
5341+ <i class="editor_maximize fa-solid fa-maximize" data-for="creator_notes_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
5342+ </h4>
52075343 <textarea id="creator_notes_textarea" name="creator_notes" data-i18n="[placeholder](Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" placeholder="(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea>
52085344 </div>
52095345 <div class="flex1">
5210- <h4 data-i18n="Tags to Embed">Tags to Embed</h4>
5346+ <h4 class="flex-container alignItemsBaseline">
5347+ <span data-i18n="Tags to Embed">Tags to Embed</span>
5348+ <i class="editor_maximize fa-solid fa-maximize" data-for="tags_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
5349+ </h4>
52115350 <textarea id="tags_textarea" name="tags" data-i18n="[placeholder](Write a comma-separated list of tags)" placeholder="(Write a comma-separated list of tags)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea>
52125351 </div>
52135352 </div>
@@ -5217,6 +5356,7 @@
52175356 <div id="personality_div">
52185357 <h4 class="flex-container alignItemsBaseline">
52195358 <span data-i18n="Personality summary">Personality summary</span>
5359+ <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="personality_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
52205360 <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#personality-summary" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a>
52215361 </h4>
52225362 <textarea id="personality_textarea" name="personality" data-i18n="[placeholder](A brief description of the personality)" placeholder="(A brief description of the personality)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea>
@@ -5227,6 +5367,7 @@
52275367 <div id="scenario_div">
52285368 <h4 class="flex-container alignItemsBaseline">
52295369 <span data-i18n="Scenario">Scenario</span>
5370+ <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="scenario_pole" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
52305371 <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#scenario" class="notes-link" target="_blank">
52315372 <span class="fa-solid fa-circle-question note-link-span"></span>
52325373 </a>
@@ -5238,10 +5379,11 @@
52385379 </div>
52395380 <div id="depth_prompt_div" class="flex-container">
52405381 <div class="flex1">
5241- <h4>
5382+ <h4 class="flex-container alignItemsBaseline">
52425383 <span data-i18n="Character's Note">
52435384 Character's Note
52445385 </span>
5386+ <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="depth_prompt_prompt" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
52455387 </h4>
52465388 <textarea id="depth_prompt_prompt" name="depth_prompt_prompt" class="text_pole" rows="5" autocomplete="off" form="form_create" data-i18n="[placeholder](Text to be inserted in-chat @ designated depth and role)" placeholder="(Text to be inserted in-chat @ designated depth and role)"></textarea>
52475389 </div>
@@ -5282,7 +5424,10 @@
52825424 <hr>
52835425 <div id="mes_example_div" class="flex-container flexFlowColumn">
52845426 <div>
5285- <h4 class="flex-container gap5px alignItemsBaseline"><span data-i18n="Examples of dialogue" class="mdhotkey_location">Examples of dialogue</span></h4>
5427+ <h4 class="flex-container alignItemsBaseline">
5428+ <span data-i18n="Examples of dialogue" class="mdhotkey_location">Examples of dialogue</span>
5429+ <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="mes_example_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
5430+ </h4>
52865431 <h5 data-i18n="Important to set the character's writing style.">Important to set the character's writing style. <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#examples-of-dialogue" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a></h5>
52875432 </div>
52885433 <textarea id="mes_example_textarea" class="flexGrow mdHotkeys" name="mes_example" data-i18n="[placeholder](Examples of chat dialog. Begin each example with START on a new line.)" placeholder="(Examples of chat dialog. Begin each example with &lt;START&gt; on a new line.)" form="form_create" rows="6"></textarea>
@@ -5445,7 +5590,7 @@
54455590 <textarea class="text_pole" rows="1" name="comment" data-i18n="[placeholder]Entry Title/Memo" placeholder="Entry Title/Memo"></textarea>
54465591 </div>
54475592 <!-- <span class="world_entry_form_position_value"></span> -->
54485593 <select data-i18n="[title]WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled" title="WI Entry Status:&#13;🔵 Constant&#13;🟢 Normal&#13;🔗 Vectorized&#13;❌ Disabled" name="entryStateSelector" class="text_pole widthNatural margin0">
54495594 <option value="constant" title="Constant" data-i18n="[title]WI_Entry_Status_Constant">🔵</option>
54505595 <option value="normal" title="Normal" data-i18n="[title]WI_Entry_Status_Normal">🟢</option>
54515596 <option value="vectorized" title="Vectorized" data-i18n="[title]WI_Entry_Status_Vectorized">🔗</option>
@@ -5939,7 +6084,8 @@
59396084 </div>
59406085 <div class="mes_bias"></div>
59416086 </div>
59426087 <div class="swipe_right faflex-solidcontainer fa-chevron-right"swipeRightBlock style="display:flexFlowColumn none;flexNoGap">
6088+ <div class="swipe_right fa-solid fa-chevron-right" style="display: none;"></div>
59436089 <div class="swipes-counter"></div>
59446090 </div>
59456091 </div>
@@ -6098,7 +6244,10 @@
60986244 <div class="alternate_grettings flexFlowColumn flex-container">
60996245 <div class="title_restorable">
61006246 <h3><span data-i18n="Alternate Greetings" class="mdhotkey_location">Alternate Greetings</span></h3>
6101- <div title="Add" class="menu_button fa-solid fa-plus add_alternate_greeting" data-i18n="[title]Add"></div>
6247+ <div class="menu_button menu_button_icon add_alternate_greeting">
6248+ <i class="fa-solid fa-plus"></i>
6249+ <span data-i18n="Add">Add</span>
6250+ </div>
61026251 </div>
61036252 <small class="justifyLeft" data-i18n="Alternate_Greetings_desc">
61046253 These will be displayed as swipes on the first message when starting a new chat.
@@ -6114,11 +6263,18 @@
61146263 </div>
61156264 <div id="alternate_greeting_form_template" class="template_element">
61166265 <div class="alternate_greeting">
6266+ <details open>
6267+ <summary>
61176268 <div class="title_restorable">
61186269 <strong><span data-i18n="Alternate Greeting #">Alternate Greeting #</span><span class="greeting_index"></span></strong>
61196270 <div class="menu_button fa-solid fa-trash-altmenu_button_icon delete_alternate_greeting"></div>
6271+ <i class="fa-solid fa-trash-alt"></i>
6272+ <span data-i18n="Delete">Delete</span>
61206273 </div>
6121- <textarea name="alternate_greetings" data-i18n="[placeholder](This will be the first message from the character that starts every chat)" placeholder="(This will be the first message from the character that starts every chat)" class="text_pole textarea_compact alternate_greeting_text mdHotkeys" value="" autocomplete="off" rows="16"></textarea>
6274+ </div>
6275+ </summary>
6276+ <textarea name="alternate_greetings" data-i18n="[placeholder](This will be the first message from the character that starts every chat)" placeholder="(This will be the first message from the character that starts every chat)" class="text_pole textarea_compact alternate_greeting_text mdHotkeys" value="" autocomplete="off" rows="12"></textarea>
6277+ </details>
61226278 </div>
61236279 </div>
61246280
@@ -6606,7 +6762,7 @@
66066762 <script src="lib/popper.js"></script>
66076763 <script src="lib/purify.min.js"></script>
66086764 <script src="lib/highlight.min.js"></script>
66096765 <script src="lib/moment-with-locales.min.js"></script>
66106766 <script src="lib/cropper.min.js"></script>
66116767 <script src="lib/jquery-cropper.min.js"></script>
66126768 <script src="lib/toastr.min.js"></script>
public/jsconfig.json+6 -5
@@ -8,16 +8,17 @@
88 "allowSyntheticDefaultImports": true
99 },
1010 "exclude": [
1111 "**/node_modules/**",
12+ "**/dist/**",
13+ "**/.git/**",
14+ "lib/**",
15+ "**/*.min.js",
16+ "scripts/extensions/quick-reply/lib/**"
1217 ],
1318 "typeAcquisition": {
1419 "include": [
15- "jquery",
1620 "@popperjs/core",
17- "toastr",
1821 "showdown",
19- "dompurify",
20- "moment",
2122 "seedrandom",
2223 "showdown-katex",
2324 "droll",
public/lib/dialog-polyfill.css+37 -0
@@ -0,0 +1,37 @@
1+.poly_dialog {
2+ position: absolute;
3+ left: 0; right: 0;
4+ width: -moz-fit-content;
5+ width: -webkit-fit-content;
6+ width: fit-content;
7+ height: -moz-fit-content;
8+ height: -webkit-fit-content;
9+ height: fit-content;
10+ margin: auto;
11+ border: solid;
12+ padding: 1em;
13+ background: white;
14+ color: black;
15+ display: block;
16+}
17+
18+.poly_dialog:not([open]) {
19+ display: none;
20+}
21+
22+.poly_dialog + .backdrop {
23+ position: fixed;
24+ top: 0; right: 0; bottom: 0; left: 0;
25+ background: rgba(0,0,0,0.1);
26+}
27+
28+._poly_dialog_overlay {
29+ position: fixed;
30+ top: 0; right: 0; bottom: 0; left: 0;
31+}
32+
33+.poly_dialog.fixed {
34+ position: fixed;
35+ top: 50%;
36+ transform: translate(0, -50%);
37+}
37 \ No newline at end of file
public/lib/dialog-polyfill.esm.js+858 -0
@@ -0,0 +1,858 @@
1+// nb. This is for IE10 and lower _only_.
2+var supportCustomEvent = window.CustomEvent;
3+if (!supportCustomEvent || typeof supportCustomEvent === 'object') {
4+ supportCustomEvent = function CustomEvent(event, x) {
5+ x = x || {};
6+ var ev = document.createEvent('CustomEvent');
7+ ev.initCustomEvent(event, !!x.bubbles, !!x.cancelable, x.detail || null);
8+ return ev;
9+ };
10+ supportCustomEvent.prototype = window.Event.prototype;
11+}
12+
13+/**
14+ * Dispatches the passed event to both an "on<type>" handler as well as via the
15+ * normal dispatch operation. Does not bubble.
16+ *
17+ * @param {!EventTarget} target
18+ * @param {!Event} event
19+ * @return {boolean}
20+ */
21+function safeDispatchEvent(target, event) {
22+ var check = 'on' + event.type.toLowerCase();
23+ if (typeof target[check] === 'function') {
24+ target[check](event);
25+ }
26+ return target.dispatchEvent(event);
27+}
28+
29+/**
30+ * @param {Element} el to check for stacking context
31+ * @return {boolean} whether this el or its parents creates a stacking context
32+ */
33+function createsStackingContext(el) {
34+ while (el && el !== document.body) {
35+ var s = window.getComputedStyle(el);
36+ var invalid = function(k, ok) {
37+ return !(s[k] === undefined || s[k] === ok);
38+ };
39+
40+ if (s.opacity < 1 ||
41+ invalid('zIndex', 'auto') ||
42+ invalid('transform', 'none') ||
43+ invalid('mixBlendMode', 'normal') ||
44+ invalid('filter', 'none') ||
45+ invalid('perspective', 'none') ||
46+ s['isolation'] === 'isolate' ||
47+ s.position === 'fixed' ||
48+ s.webkitOverflowScrolling === 'touch') {
49+ return true;
50+ }
51+ el = el.parentElement;
52+ }
53+ return false;
54+}
55+
56+/**
57+ * Finds the nearest <dialog> from the passed element.
58+ *
59+ * @param {Element} el to search from
60+ * @return {HTMLDialogElement} dialog found
61+ */
62+function findNearestDialog(el) {
63+ while (el) {
64+ if (el.localName === 'dialog') {
65+ return /** @type {HTMLDialogElement} */ (el);
66+ }
67+ if (el.parentElement) {
68+ el = el.parentElement;
69+ } else if (el.parentNode) {
70+ el = el.parentNode.host;
71+ } else {
72+ el = null;
73+ }
74+ }
75+ return null;
76+}
77+
78+/**
79+ * Blur the specified element, as long as it's not the HTML body element.
80+ * This works around an IE9/10 bug - blurring the body causes Windows to
81+ * blur the whole application.
82+ *
83+ * @param {Element} el to blur
84+ */
85+function safeBlur(el) {
86+ // Find the actual focused element when the active element is inside a shadow root
87+ while (el && el.shadowRoot && el.shadowRoot.activeElement) {
88+ el = el.shadowRoot.activeElement;
89+ }
90+
91+ if (el && el.blur && el !== document.body) {
92+ el.blur();
93+ }
94+}
95+
96+/**
97+ * @param {!NodeList} nodeList to search
98+ * @param {Node} node to find
99+ * @return {boolean} whether node is inside nodeList
100+ */
101+function inNodeList(nodeList, node) {
102+ for (var i = 0; i < nodeList.length; ++i) {
103+ if (nodeList[i] === node) {
104+ return true;
105+ }
106+ }
107+ return false;
108+}
109+
110+/**
111+ * @param {HTMLFormElement} el to check
112+ * @return {boolean} whether this form has method="dialog"
113+ */
114+function isFormMethodDialog(el) {
115+ if (!el || !el.hasAttribute('method')) {
116+ return false;
117+ }
118+ return el.getAttribute('method').toLowerCase() === 'dialog';
119+}
120+
121+/**
122+ * @param {!DocumentFragment|!Element} hostElement
123+ * @return {?Element}
124+ */
125+function findFocusableElementWithin(hostElement) {
126+ // Note that this is 'any focusable area'. This list is probably not exhaustive, but the
127+ // alternative involves stepping through and trying to focus everything.
128+ var opts = ['button', 'input', 'keygen', 'select', 'textarea'];
129+ var query = opts.map(function(el) {
130+ return el + ':not([disabled])';
131+ });
132+ // TODO(samthor): tabindex values that are not numeric are not focusable.
133+ query.push('[tabindex]:not([disabled]):not([tabindex=""])'); // tabindex != "", not disabled
134+ var target = hostElement.querySelector(query.join(', '));
135+
136+ if (!target && 'attachShadow' in Element.prototype) {
137+ // If we haven't found a focusable target, see if the host element contains an element
138+ // which has a shadowRoot.
139+ // Recursively search for the first focusable item in shadow roots.
140+ var elems = hostElement.querySelectorAll('*');
141+ for (var i = 0; i < elems.length; i++) {
142+ if (elems[i].tagName && elems[i].shadowRoot) {
143+ target = findFocusableElementWithin(elems[i].shadowRoot);
144+ if (target) {
145+ break;
146+ }
147+ }
148+ }
149+ }
150+ return target;
151+}
152+
153+/**
154+ * Determines if an element is attached to the DOM.
155+ * @param {Element} element to check
156+ * @return {boolean} whether the element is in DOM
157+ */
158+function isConnected(element) {
159+ return element.isConnected || document.body.contains(element);
160+}
161+
162+/**
163+ * @param {!Event} event
164+ * @return {?Element}
165+ */
166+function findFormSubmitter(event) {
167+ if (event.submitter) {
168+ return event.submitter;
169+ }
170+
171+ var form = event.target;
172+ if (!(form instanceof HTMLFormElement)) {
173+ return null;
174+ }
175+
176+ var submitter = dialogPolyfill.formSubmitter;
177+ if (!submitter) {
178+ var target = event.target;
179+ var root = ('getRootNode' in target && target.getRootNode() || document);
180+ submitter = root.activeElement;
181+ }
182+
183+ if (!submitter || submitter.form !== form) {
184+ return null;
185+ }
186+ return submitter;
187+}
188+
189+/**
190+ * @param {!Event} event
191+ */
192+function maybeHandleSubmit(event) {
193+ if (event.defaultPrevented) {
194+ return;
195+ }
196+ var form = /** @type {!HTMLFormElement} */ (event.target);
197+
198+ // We'd have a value if we clicked on an imagemap.
199+ var value = dialogPolyfill.imagemapUseValue;
200+ var submitter = findFormSubmitter(event);
201+ if (value === null && submitter) {
202+ value = submitter.value;
203+ }
204+
205+ // There should always be a dialog as this handler is added specifically on them, but check just
206+ // in case.
207+ var dialog = findNearestDialog(form);
208+ if (!dialog) {
209+ return;
210+ }
211+
212+ // Prefer formmethod on the button.
213+ var formmethod = submitter && submitter.getAttribute('formmethod') || form.getAttribute('method');
214+ if (formmethod !== 'dialog') {
215+ return;
216+ }
217+ event.preventDefault();
218+
219+ if (value != null) {
220+ // nb. we explicitly check against null/undefined
221+ dialog.close(value);
222+ } else {
223+ dialog.close();
224+ }
225+}
226+
227+/**
228+ * @param {!HTMLDialogElement} dialog to upgrade
229+ * @constructor
230+ */
231+function dialogPolyfillInfo(dialog) {
232+ this.dialog_ = dialog;
233+ this.replacedStyleTop_ = false;
234+ this.openAsModal_ = false;
235+
236+ // Set a11y role. Browsers that support dialog implicitly know this already.
237+ if (!dialog.hasAttribute('role')) {
238+ dialog.setAttribute('role', 'dialog');
239+ }
240+
241+ dialog.show = this.show.bind(this);
242+ dialog.showModal = this.showModal.bind(this);
243+ dialog.close = this.close.bind(this);
244+
245+ dialog.addEventListener('submit', maybeHandleSubmit, false);
246+
247+ if (!('returnValue' in dialog)) {
248+ dialog.returnValue = '';
249+ }
250+
251+ if ('MutationObserver' in window) {
252+ var mo = new MutationObserver(this.maybeHideModal.bind(this));
253+ mo.observe(dialog, {attributes: true, attributeFilter: ['open']});
254+ } else {
255+ // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also
256+ // seem to fire even if the element was removed as part of a parent removal. Use the removed
257+ // events to force downgrade (useful if removed/immediately added).
258+ var removed = false;
259+ var cb = function() {
260+ removed ? this.downgradeModal() : this.maybeHideModal();
261+ removed = false;
262+ }.bind(this);
263+ var timeout;
264+ var delayModel = function(ev) {
265+ if (ev.target !== dialog) { return; } // not for a child element
266+ var cand = 'DOMNodeRemoved';
267+ removed |= (ev.type.substr(0, cand.length) === cand);
268+ window.clearTimeout(timeout);
269+ timeout = window.setTimeout(cb, 0);
270+ };
271+ ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function(name) {
272+ dialog.addEventListener(name, delayModel);
273+ });
274+ }
275+ // Note that the DOM is observed inside DialogManager while any dialog
276+ // is being displayed as a modal, to catch modal removal from the DOM.
277+
278+ Object.defineProperty(dialog, 'open', {
279+ set: this.setOpen.bind(this),
280+ get: dialog.hasAttribute.bind(dialog, 'open')
281+ });
282+
283+ this.backdrop_ = document.createElement('div');
284+ this.backdrop_.className = 'backdrop';
285+ this.backdrop_.addEventListener('mouseup' , this.backdropMouseEvent_.bind(this));
286+ this.backdrop_.addEventListener('mousedown', this.backdropMouseEvent_.bind(this));
287+ this.backdrop_.addEventListener('click' , this.backdropMouseEvent_.bind(this));
288+}
289+
290+dialogPolyfillInfo.prototype = /** @type {HTMLDialogElement.prototype} */ ({
291+
292+ get dialog() {
293+ return this.dialog_;
294+ },
295+
296+ /**
297+ * Maybe remove this dialog from the modal top layer. This is called when
298+ * a modal dialog may no longer be tenable, e.g., when the dialog is no
299+ * longer open or is no longer part of the DOM.
300+ */
301+ maybeHideModal: function() {
302+ if (this.dialog_.hasAttribute('open') && isConnected(this.dialog_)) { return; }
303+ this.downgradeModal();
304+ },
305+
306+ /**
307+ * Remove this dialog from the modal top layer, leaving it as a non-modal.
308+ */
309+ downgradeModal: function() {
310+ if (!this.openAsModal_) { return; }
311+ this.openAsModal_ = false;
312+ this.dialog_.style.zIndex = '';
313+
314+ // This won't match the native <dialog> exactly because if the user set top on a centered
315+ // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's
316+ // possible to polyfill this perfectly.
317+ if (this.replacedStyleTop_) {
318+ this.dialog_.style.top = '';
319+ this.replacedStyleTop_ = false;
320+ }
321+
322+ // Clear the backdrop and remove from the manager.
323+ this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_);
324+ dialogPolyfill.dm.removeDialog(this);
325+ },
326+
327+ /**
328+ * @param {boolean} value whether to open or close this dialog
329+ */
330+ setOpen: function(value) {
331+ if (value) {
332+ this.dialog_.hasAttribute('open') || this.dialog_.setAttribute('open', '');
333+ } else {
334+ this.dialog_.removeAttribute('open');
335+ this.maybeHideModal(); // nb. redundant with MutationObserver
336+ }
337+ },
338+
339+ /**
340+ * Handles mouse events ('mouseup', 'mousedown', 'click') on the fake .backdrop element, redirecting them as if
341+ * they were on the dialog itself.
342+ *
343+ * @param {!Event} e to redirect
344+ */
345+ backdropMouseEvent_: function(e) {
346+ if (!this.dialog_.hasAttribute('tabindex')) {
347+ // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be
348+ // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this
349+ // would not be needed - clicks would move the implicit cursor there.
350+ var fake = document.createElement('div');
351+ this.dialog_.insertBefore(fake, this.dialog_.firstChild);
352+ fake.tabIndex = -1;
353+ fake.focus();
354+ this.dialog_.removeChild(fake);
355+ } else {
356+ this.dialog_.focus();
357+ }
358+
359+ var redirectedEvent = document.createEvent('MouseEvents');
360+ redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window,
361+ e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey,
362+ e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);
363+ this.dialog_.dispatchEvent(redirectedEvent);
364+ e.stopPropagation();
365+ },
366+
367+ /**
368+ * Focuses on the first focusable element within the dialog. This will always blur the current
369+ * focus, even if nothing within the dialog is found.
370+ */
371+ focus_: function() {
372+ // Find element with `autofocus` attribute, or fall back to the first form/tabindex control.
373+ var target = this.dialog_.querySelector('[autofocus]:not([disabled])');
374+ if (!target && this.dialog_.tabIndex >= 0) {
375+ target = this.dialog_;
376+ }
377+ if (!target) {
378+ target = findFocusableElementWithin(this.dialog_);
379+ }
380+ safeBlur(document.activeElement);
381+ target && target.focus();
382+ },
383+
384+ /**
385+ * Sets the zIndex for the backdrop and dialog.
386+ *
387+ * @param {number} dialogZ
388+ * @param {number} backdropZ
389+ */
390+ updateZIndex: function(dialogZ, backdropZ) {
391+ if (dialogZ < backdropZ) {
392+ throw new Error('dialogZ should never be < backdropZ');
393+ }
394+ this.dialog_.style.zIndex = dialogZ;
395+ this.backdrop_.style.zIndex = backdropZ;
396+ },
397+
398+ /**
399+ * Shows the dialog. If the dialog is already open, this does nothing.
400+ */
401+ show: function() {
402+ if (!this.dialog_.open) {
403+ this.setOpen(true);
404+ this.focus_();
405+ }
406+ },
407+
408+ /**
409+ * Show this dialog modally.
410+ */
411+ showModal: function() {
412+ if (this.dialog_.hasAttribute('open')) {
413+ throw new Error('Failed to execute \'showModal\' on dialog: The element is already open, and therefore cannot be opened modally.');
414+ }
415+ if (!isConnected(this.dialog_)) {
416+ throw new Error('Failed to execute \'showModal\' on dialog: The element is not in a Document.');
417+ }
418+ if (!dialogPolyfill.dm.pushDialog(this)) {
419+ throw new Error('Failed to execute \'showModal\' on dialog: There are too many open modal dialogs.');
420+ }
421+
422+ if (createsStackingContext(this.dialog_.parentElement)) {
423+ console.warn('A dialog is being shown inside a stacking context. ' +
424+ 'This may cause it to be unusable. For more information, see this link: ' +
425+ 'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context');
426+ }
427+
428+ this.setOpen(true);
429+ this.openAsModal_ = true;
430+
431+ // Optionally center vertically, relative to the current viewport.
432+ if (dialogPolyfill.needsCentering(this.dialog_)) {
433+ dialogPolyfill.reposition(this.dialog_);
434+ this.replacedStyleTop_ = true;
435+ } else {
436+ this.replacedStyleTop_ = false;
437+ }
438+
439+ // Insert backdrop.
440+ this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling);
441+
442+ // Focus on whatever inside the dialog.
443+ this.focus_();
444+ },
445+
446+ /**
447+ * Closes this HTMLDialogElement. This is optional vs clearing the open
448+ * attribute, however this fires a 'close' event.
449+ *
450+ * @param {string=} opt_returnValue to use as the returnValue
451+ */
452+ close: function(opt_returnValue) {
453+ if (!this.dialog_.hasAttribute('open')) {
454+ throw new Error('Failed to execute \'close\' on dialog: The element does not have an \'open\' attribute, and therefore cannot be closed.');
455+ }
456+ this.setOpen(false);
457+
458+ // Leave returnValue untouched in case it was set directly on the element
459+ if (opt_returnValue !== undefined) {
460+ this.dialog_.returnValue = opt_returnValue;
461+ }
462+
463+ // Triggering "close" event for any attached listeners on the <dialog>.
464+ var closeEvent = new supportCustomEvent('close', {
465+ bubbles: false,
466+ cancelable: false
467+ });
468+ safeDispatchEvent(this.dialog_, closeEvent);
469+ }
470+
471+});
472+
473+var dialogPolyfill = {};
474+
475+dialogPolyfill.reposition = function(element) {
476+ var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
477+ var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2;
478+ element.style.top = Math.max(scrollTop, topValue) + 'px';
479+};
480+
481+dialogPolyfill.isInlinePositionSetByStylesheet = function(element) {
482+ for (var i = 0; i < document.styleSheets.length; ++i) {
483+ var styleSheet = document.styleSheets[i];
484+ var cssRules = null;
485+ // Some browsers throw on cssRules.
486+ try {
487+ cssRules = styleSheet.cssRules;
488+ } catch (e) {}
489+ if (!cssRules) { continue; }
490+ for (var j = 0; j < cssRules.length; ++j) {
491+ var rule = cssRules[j];
492+ var selectedNodes = null;
493+ // Ignore errors on invalid selector texts.
494+ try {
495+ selectedNodes = document.querySelectorAll(rule.selectorText);
496+ } catch(e) {}
497+ if (!selectedNodes || !inNodeList(selectedNodes, element)) {
498+ continue;
499+ }
500+ var cssTop = rule.style.getPropertyValue('top');
501+ var cssBottom = rule.style.getPropertyValue('bottom');
502+ if ((cssTop && cssTop !== 'auto') || (cssBottom && cssBottom !== 'auto')) {
503+ return true;
504+ }
505+ }
506+ }
507+ return false;
508+};
509+
510+dialogPolyfill.needsCentering = function(dialog) {
511+ var computedStyle = window.getComputedStyle(dialog);
512+ if (computedStyle.position !== 'absolute') {
513+ return false;
514+ }
515+
516+ // We must determine whether the top/bottom specified value is non-auto. In
517+ // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but
518+ // Firefox returns the used value. So we do this crazy thing instead: check
519+ // the inline style and then go through CSS rules.
520+ if ((dialog.style.top !== 'auto' && dialog.style.top !== '') ||
521+ (dialog.style.bottom !== 'auto' && dialog.style.bottom !== '')) {
522+ return false;
523+ }
524+ return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog);
525+};
526+
527+/**
528+ * @param {!Element} element to force upgrade
529+ */
530+dialogPolyfill.forceRegisterDialog = function(element) {
531+ if (window.HTMLDialogElement || element.showModal) {
532+ console.warn('This browser already supports <dialog>, the polyfill ' +
533+ 'may not work correctly', element);
534+ }
535+ if (element.localName !== 'dialog') {
536+ throw new Error('Failed to register dialog: The element is not a dialog.');
537+ }
538+ new dialogPolyfillInfo(/** @type {!HTMLDialogElement} */ (element));
539+};
540+
541+/**
542+ * @param {!Element} element to upgrade, if necessary
543+ */
544+dialogPolyfill.registerDialog = function(element) {
545+ if (!element.showModal) {
546+ dialogPolyfill.forceRegisterDialog(element);
547+ }
548+};
549+
550+/**
551+ * @constructor
552+ */
553+dialogPolyfill.DialogManager = function() {
554+ /** @type {!Array<!dialogPolyfillInfo>} */
555+ this.pendingDialogStack = [];
556+
557+ var checkDOM = this.checkDOM_.bind(this);
558+
559+ // The overlay is used to simulate how a modal dialog blocks the document.
560+ // The blocking dialog is positioned on top of the overlay, and the rest of
561+ // the dialogs on the pending dialog stack are positioned below it. In the
562+ // actual implementation, the modal dialog stacking is controlled by the
563+ // top layer, where z-index has no effect.
564+ this.overlay = document.createElement('div');
565+ this.overlay.className = '_poly_dialog_overlay';
566+ this.overlay.addEventListener('click', function(e) {
567+ this.forwardTab_ = undefined;
568+ e.stopPropagation();
569+ checkDOM([]); // sanity-check DOM
570+ }.bind(this));
571+
572+ this.handleKey_ = this.handleKey_.bind(this);
573+ this.handleFocus_ = this.handleFocus_.bind(this);
574+
575+ this.zIndexLow_ = 100000;
576+ this.zIndexHigh_ = 100000 + 150;
577+
578+ this.forwardTab_ = undefined;
579+
580+ if ('MutationObserver' in window) {
581+ this.mo_ = new MutationObserver(function(records) {
582+ var removed = [];
583+ records.forEach(function(rec) {
584+ for (var i = 0, c; c = rec.removedNodes[i]; ++i) {
585+ if (!(c instanceof Element)) {
586+ continue;
587+ } else if (c.localName === 'dialog') {
588+ removed.push(c);
589+ }
590+ removed = removed.concat(c.querySelectorAll('dialog'));
591+ }
592+ });
593+ removed.length && checkDOM(removed);
594+ });
595+ }
596+};
597+
598+/**
599+ * Called on the first modal dialog being shown. Adds the overlay and related
600+ * handlers.
601+ */
602+dialogPolyfill.DialogManager.prototype.blockDocument = function() {
603+ document.documentElement.addEventListener('focus', this.handleFocus_, true);
604+ document.addEventListener('keydown', this.handleKey_);
605+ this.mo_ && this.mo_.observe(document, {childList: true, subtree: true});
606+};
607+
608+/**
609+ * Called on the first modal dialog being removed, i.e., when no more modal
610+ * dialogs are visible.
611+ */
612+dialogPolyfill.DialogManager.prototype.unblockDocument = function() {
613+ document.documentElement.removeEventListener('focus', this.handleFocus_, true);
614+ document.removeEventListener('keydown', this.handleKey_);
615+ this.mo_ && this.mo_.disconnect();
616+};
617+
618+/**
619+ * Updates the stacking of all known dialogs.
620+ */
621+dialogPolyfill.DialogManager.prototype.updateStacking = function() {
622+ var zIndex = this.zIndexHigh_;
623+
624+ for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {
625+ dpi.updateZIndex(--zIndex, --zIndex);
626+ if (i === 0) {
627+ this.overlay.style.zIndex = --zIndex;
628+ }
629+ }
630+
631+ // Make the overlay a sibling of the dialog itself.
632+ var last = this.pendingDialogStack[0];
633+ if (last) {
634+ var p = last.dialog.parentNode || document.body;
635+ p.appendChild(this.overlay);
636+ } else if (this.overlay.parentNode) {
637+ this.overlay.parentNode.removeChild(this.overlay);
638+ }
639+};
640+
641+/**
642+ * @param {Element} candidate to check if contained or is the top-most modal dialog
643+ * @return {boolean} whether candidate is contained in top dialog
644+ */
645+dialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) {
646+ while (candidate = findNearestDialog(candidate)) {
647+ for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {
648+ if (dpi.dialog === candidate) {
649+ return i === 0; // only valid if top-most
650+ }
651+ }
652+ candidate = candidate.parentElement;
653+ }
654+ return false;
655+};
656+
657+dialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) {
658+ var target = event.composedPath ? event.composedPath()[0] : event.target;
659+
660+ if (this.containedByTopDialog_(target)) { return; }
661+
662+ if (document.activeElement === document.documentElement) { return; }
663+
664+ event.preventDefault();
665+ event.stopPropagation();
666+ safeBlur(/** @type {Element} */ (target));
667+
668+ if (this.forwardTab_ === undefined) { return; } // move focus only from a tab key
669+
670+ var dpi = this.pendingDialogStack[0];
671+ var dialog = dpi.dialog;
672+ var position = dialog.compareDocumentPosition(target);
673+ if (position & Node.DOCUMENT_POSITION_PRECEDING) {
674+ if (this.forwardTab_) {
675+ // forward
676+ dpi.focus_();
677+ } else if (target !== document.documentElement) {
678+ // backwards if we're not already focused on <html>
679+ document.documentElement.focus();
680+ }
681+ }
682+
683+ return false;
684+};
685+
686+dialogPolyfill.DialogManager.prototype.handleKey_ = function(event) {
687+ this.forwardTab_ = undefined;
688+ if (event.keyCode === 27) {
689+ event.preventDefault();
690+ event.stopPropagation();
691+ var cancelEvent = new supportCustomEvent('cancel', {
692+ bubbles: false,
693+ cancelable: true
694+ });
695+ var dpi = this.pendingDialogStack[0];
696+ if (dpi && safeDispatchEvent(dpi.dialog, cancelEvent)) {
697+ dpi.dialog.close();
698+ }
699+ } else if (event.keyCode === 9) {
700+ this.forwardTab_ = !event.shiftKey;
701+ }
702+};
703+
704+/**
705+ * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are
706+ * removed and immediately readded don't stay modal, they become normal.
707+ *
708+ * @param {!Array<!HTMLDialogElement>} removed that have definitely been removed
709+ */
710+dialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) {
711+ // This operates on a clone because it may cause it to change. Each change also calls
712+ // updateStacking, which only actually needs to happen once. But who removes many modal dialogs
713+ // at a time?!
714+ var clone = this.pendingDialogStack.slice();
715+ clone.forEach(function(dpi) {
716+ if (removed.indexOf(dpi.dialog) !== -1) {
717+ dpi.downgradeModal();
718+ } else {
719+ dpi.maybeHideModal();
720+ }
721+ });
722+};
723+
724+/**
725+ * @param {!dialogPolyfillInfo} dpi
726+ * @return {boolean} whether the dialog was allowed
727+ */
728+dialogPolyfill.DialogManager.prototype.pushDialog = function(dpi) {
729+ var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1;
730+ if (this.pendingDialogStack.length >= allowed) {
731+ return false;
732+ }
733+ if (this.pendingDialogStack.unshift(dpi) === 1) {
734+ this.blockDocument();
735+ }
736+ this.updateStacking();
737+ return true;
738+};
739+
740+/**
741+ * @param {!dialogPolyfillInfo} dpi
742+ */
743+dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) {
744+ var index = this.pendingDialogStack.indexOf(dpi);
745+ if (index === -1) { return; }
746+
747+ this.pendingDialogStack.splice(index, 1);
748+ if (this.pendingDialogStack.length === 0) {
749+ this.unblockDocument();
750+ }
751+ this.updateStacking();
752+};
753+
754+dialogPolyfill.dm = new dialogPolyfill.DialogManager();
755+dialogPolyfill.formSubmitter = null;
756+dialogPolyfill.imagemapUseValue = null;
757+
758+/**
759+ * Installs global handlers, such as click listers and native method overrides. These are needed
760+ * even if a no dialog is registered, as they deal with <form method="dialog">.
761+ */
762+if (window.HTMLDialogElement === undefined) {
763+
764+ /**
765+ * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with
766+ * one that returns the correct value.
767+ */
768+ var testForm = document.createElement('form');
769+ testForm.setAttribute('method', 'dialog');
770+ if (testForm.method !== 'dialog') {
771+ var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method');
772+ if (methodDescriptor) {
773+ // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything
774+ // and don't bother to update the element.
775+ var realGet = methodDescriptor.get;
776+ methodDescriptor.get = function() {
777+ if (isFormMethodDialog(this)) {
778+ return 'dialog';
779+ }
780+ return realGet.call(this);
781+ };
782+ var realSet = methodDescriptor.set;
783+ /** @this {HTMLElement} */
784+ methodDescriptor.set = function(v) {
785+ if (typeof v === 'string' && v.toLowerCase() === 'dialog') {
786+ return this.setAttribute('method', v);
787+ }
788+ return realSet.call(this, v);
789+ };
790+ Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor);
791+ }
792+ }
793+
794+ /**
795+ * Global 'click' handler, to capture the <input type="submit"> or <button> element which has
796+ * submitted a <form method="dialog">. Needed as Safari and others don't report this inside
797+ * document.activeElement.
798+ */
799+ document.addEventListener('click', function(ev) {
800+ dialogPolyfill.formSubmitter = null;
801+ dialogPolyfill.imagemapUseValue = null;
802+ if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission
803+
804+ var target = /** @type {Element} */ (ev.target);
805+ if ('composedPath' in ev) {
806+ var path = ev.composedPath();
807+ target = path.shift() || target;
808+ }
809+ if (!target || !isFormMethodDialog(target.form)) { return; }
810+
811+ var valid = (target.type === 'submit' && ['button', 'input'].indexOf(target.localName) > -1);
812+ if (!valid) {
813+ if (!(target.localName === 'input' && target.type === 'image')) { return; }
814+ // this is a <input type="image">, which can submit forms
815+ dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY;
816+ }
817+
818+ var dialog = findNearestDialog(target);
819+ if (!dialog) { return; }
820+
821+ dialogPolyfill.formSubmitter = target;
822+
823+ }, false);
824+
825+ /**
826+ * Global 'submit' handler. This handles submits of `method="dialog"` which are invalid, i.e.,
827+ * outside a dialog. They get prevented.
828+ */
829+ document.addEventListener('submit', function(ev) {
830+ var form = ev.target;
831+ var dialog = findNearestDialog(form);
832+ if (dialog) {
833+ return; // ignore, handle there
834+ }
835+
836+ var submitter = findFormSubmitter(ev);
837+ var formmethod = submitter && submitter.getAttribute('formmethod') || form.getAttribute('method');
838+ if (formmethod === 'dialog') {
839+ ev.preventDefault();
840+ }
841+ });
842+
843+ /**
844+ * Replace the native HTMLFormElement.submit() method, as it won't fire the
845+ * submit event and give us a chance to respond.
846+ */
847+ var nativeFormSubmit = HTMLFormElement.prototype.submit;
848+ var replacementFormSubmit = function () {
849+ if (!isFormMethodDialog(this)) {
850+ return nativeFormSubmit.call(this);
851+ }
852+ var dialog = findNearestDialog(this);
853+ dialog && dialog.close();
854+ };
855+ HTMLFormElement.prototype.submit = replacementFormSubmit;
856+}
857+
858+export default dialogPolyfill;
public/lib/moment-with-locales.min.js+2 -0
@@ -0,0 +1,2 @@
1+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var E;function c(){return E.apply(null,arguments)}function F(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function z(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function N(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var a in e)if(l(e,a))return;return 1}function L(e){return void 0===e}function J(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function R(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function C(e,a){for(var t=[],s=e.length,n=0;n<s;++n)t.push(a(e[n],n));return t}function I(e,a){for(var t in a)l(a,t)&&(e[t]=a[t]);return l(a,"toString")&&(e.toString=a.toString),l(a,"valueOf")&&(e.valueOf=a.valueOf),e}function U(e,a,t,s){return Na(e,a,t,s,!0).utc()}function Y(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function G(e){var a,t,s=e._d&&!isNaN(e._d.getTime());return s&&(a=Y(e),t=q.call(a.parsedDateParts,function(e){return null!=e}),s=a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t),e._strict)&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e)?s:(e._isValid=s,e._isValid)}function V(e){var a=U(NaN);return null!=e?I(Y(a),e):Y(a).userInvalidated=!0,a}var q=Array.prototype.some||function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1},B=c.momentProperties=[],K=!1;function Z(e,a){var t,s,n,r=B.length;if(L(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),L(a._i)||(e._i=a._i),L(a._f)||(e._f=a._f),L(a._l)||(e._l=a._l),L(a._strict)||(e._strict=a._strict),L(a._tzm)||(e._tzm=a._tzm),L(a._isUTC)||(e._isUTC=a._isUTC),L(a._offset)||(e._offset=a._offset),L(a._pf)||(e._pf=Y(a)),L(a._locale)||(e._locale=a._locale),0<r)for(t=0;t<r;t++)L(n=a[s=B[t]])||(e[s]=n);return e}function $(e){Z(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===K&&(K=!0,c.updateOffset(this),K=!1)}function Q(e){return e instanceof $||null!=e&&null!=e._isAMomentObject}function X(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,d){var _=!0;return I(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,r),_){for(var e,a,t=[],s=arguments.length,n=0;n<s;n++){if(e="","object"==typeof arguments[n]){for(a in e+="\n["+n+"] ",arguments[0])l(arguments[0],a)&&(e+=a+": "+arguments[0][a]+", ");e=e.slice(0,-2)}else e=arguments[n];t.push(e)}X(r+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),_=!1}return d.apply(this,arguments)},d)}var ee={};function ae(e,a){null!=c.deprecationHandler&&c.deprecationHandler(e,a),ee[e]||(X(a),ee[e]=!0)}function te(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function se(e,a){var t,s=I({},e);for(t in a)l(a,t)&&(z(e[t])&&z(a[t])?(s[t]={},I(s[t],e[t]),I(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)l(e,t)&&!l(a,t)&&z(e[t])&&(s[t]=I({},s[t]));return s}function ne(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null;var re=Object.keys||function(e){var a,t=[];for(a in e)l(e,a)&&t.push(a);return t};function de(e,a,t){var s=""+Math.abs(e);return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,a-s.length)).toString().substr(1)+s}var _e=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ie=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,oe={},me={};function s(e,a,t,s){var n="string"==typeof s?function(){return this[s]()}:s;e&&(me[e]=n),a&&(me[a[0]]=function(){return de(n.apply(this,arguments),a[1],a[2])}),t&&(me[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function ue(e,a){return e.isValid()?(a=le(a,e.localeData()),oe[a]=oe[a]||function(s){for(var e,n=s.match(_e),a=0,r=n.length;a<r;a++)me[n[a]]?n[a]=me[n[a]]:n[a]=(e=n[a]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var a="",t=0;t<r;t++)a+=te(n[t])?n[t].call(e,s):n[t];return a}}(a),oe[a](e)):e.localeData().invalidDate()}function le(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(ie.lastIndex=0;0<=t&&ie.test(e);)e=e.replace(ie,s),ie.lastIndex=0,--t;return e}var Me={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function d(e){return"string"==typeof e?Me[e]||Me[e.toLowerCase()]:void 0}function he(e){var a,t,s={};for(t in e)l(e,t)&&(a=d(t))&&(s[a]=e[t]);return s}var ce={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};var Le=/\d/,a=/\d\d/,Ye=/\d{3}/,t=/\d{4}/,n=/[+-]?\d{6}/,r=/\d\d?/,ye=/\d\d\d\d?/,_=/\d\d\d\d\d\d?/,fe=/\d{1,3}/,i=/\d{1,4}/,o=/[+-]?\d{1,6}/,ke=/\d+/,pe=/[+-]?\d+/,De=/Z|[+-]\d\d:?\d\d/gi,Te=/Z|[+-]\d\d(?::?\d\d)?/gi,m=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,u=/^[1-9]\d?/,M=/^([1-9]\d|\d)/;function h(e,t,s){be[e]=te(t)?t:function(e,a){return e&&s?s:t}}function ge(e,a){return l(be,e)?be[e](a._strict,a._locale):new RegExp(we(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function we(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function y(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function f(e){var e=+e,a=0;return a=0!=e&&isFinite(e)?y(e):a}var be={},He={};function k(e,t){var a,s,n=t;for("string"==typeof e&&(e=[e]),J(t)&&(n=function(e,a){a[t]=f(e)}),s=e.length,a=0;a<s;a++)He[e[a]]=n}function Se(e,n){k(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}function ve(e){return e%4==0&&e%100!=0||e%400==0}var p=0,je=1,xe=2,D=3,Pe=4,Oe=5,We=6,Ae=7,Ee=8;function Fe(e){return ve(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?de(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),h("Y",pe),h("YY",r,a),h("YYYY",i,t),h("YYYYY",o,n),h("YYYYYY",o,n),k(["YYYYY","YYYYYY"],p),k("YYYY",function(e,a){a[p]=2===e.length?c.parseTwoDigitYear(e):f(e)}),k("YY",function(e,a){a[p]=c.parseTwoDigitYear(e)}),k("Y",function(e,a){a[p]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return f(e)+(68<f(e)?1900:2e3)};var T,ze=Ne("FullYear",!0);function Ne(a,t){return function(e){return null!=e?(Re(this,a,e),c.updateOffset(this,t),this):Je(this,a)}}function Je(e,a){if(!e.isValid())return NaN;var t=e._d,s=e._isUTC;switch(a){case"Milliseconds":return s?t.getUTCMilliseconds():t.getMilliseconds();case"Seconds":return s?t.getUTCSeconds():t.getSeconds();case"Minutes":return s?t.getUTCMinutes():t.getMinutes();case"Hours":return s?t.getUTCHours():t.getHours();case"Date":return s?t.getUTCDate():t.getDate();case"Day":return s?t.getUTCDay():t.getDay();case"Month":return s?t.getUTCMonth():t.getMonth();case"FullYear":return s?t.getUTCFullYear():t.getFullYear();default:return NaN}}function Re(e,a,t){var s,n,r;if(e.isValid()&&!isNaN(t)){switch(s=e._d,n=e._isUTC,a){case"Milliseconds":return n?s.setUTCMilliseconds(t):s.setMilliseconds(t);case"Seconds":return n?s.setUTCSeconds(t):s.setSeconds(t);case"Minutes":return n?s.setUTCMinutes(t):s.setMinutes(t);case"Hours":return n?s.setUTCHours(t):s.setHours(t);case"Date":return n?s.setUTCDate(t):s.setDate(t);case"FullYear":break;default:return}a=t,r=e.month(),e=29!==(e=e.date())||1!==r||ve(a)?e:28,n?s.setUTCFullYear(a,r,e):s.setFullYear(a,r,e)}}function Ce(e,a){var t;return isNaN(e)||isNaN(a)?NaN:(t=(a%(t=12)+t)%t,e+=(a-t)/12,1==t?ve(e)?29:28:31-t%7%2)}T=Array.prototype.indexOf||function(e){for(var a=0;a<this.length;++a)if(this[a]===e)return a;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),h("M",r,u),h("MM",r,a),h("MMM",function(e,a){return a.monthsShortRegex(e)}),h("MMMM",function(e,a){return a.monthsRegex(e)}),k(["M","MM"],function(e,a){a[je]=f(e)-1}),k(["MMM","MMMM"],function(e,a,t,s){s=t._locale.monthsParse(e,s,t._strict);null!=s?a[je]=s:Y(t).invalidMonth=e});var Ie="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ue="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ge=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ve=m,qe=m;function Be(e,a){if(e.isValid()){if("string"==typeof a)if(/^\d+$/.test(a))a=f(a);else if(!J(a=e.localeData().monthsParse(a)))return;var t=(t=e.date())<29?t:Math.min(t,Ce(e.year(),a));e._isUTC?e._d.setUTCMonth(a,t):e._d.setMonth(a,t)}}function Ke(e){return null!=e?(Be(this,e),c.updateOffset(this,!0),this):Je(this,"Month")}function Ze(){function e(e,a){return a.length-e.length}for(var a,t,s=[],n=[],r=[],d=0;d<12;d++)t=U([2e3,d]),a=we(this.monthsShort(t,"")),t=we(this.months(t,"")),s.push(a),n.push(t),r.push(t),r.push(a);s.sort(e),n.sort(e),r.sort(e),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function $e(e,a,t,s,n,r,d){var _;return e<100&&0<=e?(_=new Date(e+400,a,t,s,n,r,d),isFinite(_.getFullYear())&&_.setFullYear(e)):_=new Date(e,a,t,s,n,r,d),_}function Qe(e){var a;return e<100&&0<=e?((a=Array.prototype.slice.call(arguments))[0]=e+400,a=new Date(Date.UTC.apply(null,a)),isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e)):a=new Date(Date.UTC.apply(null,arguments)),a}function Xe(e,a,t){t=7+a-t;return t-(7+Qe(e,0,t).getUTCDay()-a)%7-1}function ea(e,a,t,s,n){var r,a=1+7*(a-1)+(7+t-s)%7+Xe(e,s,n),t=a<=0?Fe(r=e-1)+a:a>Fe(e)?(r=e+1,a-Fe(e)):(r=e,a);return{year:r,dayOfYear:t}}function aa(e,a,t){var s,n,r=Xe(e.year(),a,t),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+ta(n=e.year()-1,a,t):r>ta(e.year(),a,t)?(s=r-ta(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function ta(e,a,t){var s=Xe(e,a,t),a=Xe(e+1,a,t);return(Fe(e)-s+a)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),h("w",r,u),h("ww",r,a),h("W",r,u),h("WW",r,a),Se(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=f(e)});function sa(e,a){return e.slice(a,7).concat(e.slice(0,a))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),h("d",r),h("e",r),h("E",r),h("dd",function(e,a){return a.weekdaysMinRegex(e)}),h("ddd",function(e,a){return a.weekdaysShortRegex(e)}),h("dddd",function(e,a){return a.weekdaysRegex(e)}),Se(["dd","ddd","dddd"],function(e,a,t,s){s=t._locale.weekdaysParse(e,s,t._strict);null!=s?a.d=s:Y(t).invalidWeekday=e}),Se(["d","e","E"],function(e,a,t,s){a[s]=f(e)});var na="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ra="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),da="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),_a=m,ia=m,oa=m;function ma(){function e(e,a){return a.length-e.length}for(var a,t,s,n=[],r=[],d=[],_=[],i=0;i<7;i++)s=U([2e3,1]).day(i),a=we(this.weekdaysMin(s,"")),t=we(this.weekdaysShort(s,"")),s=we(this.weekdays(s,"")),n.push(a),r.push(t),d.push(s),_.push(a),_.push(t),_.push(s);n.sort(e),r.sort(e),d.sort(e),_.sort(e),this._weekdaysRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+n.join("|")+")","i")}function ua(){return this.hours()%12||12}function la(e,a){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function Ma(e,a){return a._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,ua),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+ua.apply(this)+de(this.minutes(),2)}),s("hmmss",0,0,function(){return""+ua.apply(this)+de(this.minutes(),2)+de(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+de(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+de(this.minutes(),2)+de(this.seconds(),2)}),la("a",!0),la("A",!1),h("a",Ma),h("A",Ma),h("H",r,M),h("h",r,u),h("k",r,u),h("HH",r,a),h("hh",r,a),h("kk",r,a),h("hmm",ye),h("hmmss",_),h("Hmm",ye),h("Hmmss",_),k(["H","HH"],D),k(["k","kk"],function(e,a,t){e=f(e);a[D]=24===e?0:e}),k(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),k(["h","hh"],function(e,a,t){a[D]=f(e),Y(t).bigHour=!0}),k("hmm",function(e,a,t){var s=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s)),Y(t).bigHour=!0}),k("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s,2)),a[Oe]=f(e.substr(n)),Y(t).bigHour=!0}),k("Hmm",function(e,a,t){var s=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s))}),k("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s,2)),a[Oe]=f(e.substr(n))});m=Ne("Hours",!0);var ha,ca={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ie,monthsShort:Ue,week:{dow:0,doy:6},weekdays:na,weekdaysMin:da,weekdaysShort:ra,meridiemParse:/[ap]\.?m?\.?/i},g={},La={};function Ya(e){return e&&e.toLowerCase().replace("_","-")}function ya(e){for(var a,t,s,n,r=0;r<e.length;){for(a=(n=Ya(e[r]).split("-")).length,t=(t=Ya(e[r+1]))?t.split("-"):null;0<a;){if(s=fa(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&function(e,a){for(var t=Math.min(e.length,a.length),s=0;s<t;s+=1)if(e[s]!==a[s])return s;return t}(n,t)>=a-1)break;a--}r++}return ha}function fa(a){var e,t;if(void 0===g[a]&&"undefined"!=typeof module&&module&&module.exports&&(t=a)&&t.match("^[^/\\\\]*$"))try{e=ha._abbr,require("./locale/"+a),ka(e)}catch(e){g[a]=null}return g[a]}function ka(e,a){return e&&((a=L(a)?Da(e):pa(e,a))?ha=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ha._abbr}function pa(e,a){if(null===a)return delete g[e],null;var t,s=ca;if(a.abbr=e,null!=g[e])ae("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=g[e]._config;else if(null!=a.parentLocale)if(null!=g[a.parentLocale])s=g[a.parentLocale]._config;else{if(null==(t=fa(a.parentLocale)))return La[a.parentLocale]||(La[a.parentLocale]=[]),La[a.parentLocale].push({name:e,config:a}),null;s=t._config}return g[e]=new ne(se(s,a)),La[e]&&La[e].forEach(function(e){pa(e.name,e.config)}),ka(e),g[e]}function Da(e){var a;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ha;if(!F(e)){if(a=fa(e))return a;e=[e]}return ya(e)}function Ta(e){var a=e._a;return a&&-2===Y(e).overflow&&(a=a[je]<0||11<a[je]?je:a[xe]<1||a[xe]>Ce(a[p],a[je])?xe:a[D]<0||24<a[D]||24===a[D]&&(0!==a[Pe]||0!==a[Oe]||0!==a[We])?D:a[Pe]<0||59<a[Pe]?Pe:a[Oe]<0||59<a[Oe]?Oe:a[We]<0||999<a[We]?We:-1,Y(e)._overflowDayOfYear&&(a<p||xe<a)&&(a=xe),Y(e)._overflowWeeks&&-1===a&&(a=Ae),Y(e)._overflowWeekday&&-1===a&&(a=Ee),Y(e).overflow=a),e}var ga=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wa=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ba=/Z|[+-]\d\d(?::?\d\d)?/,Ha=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Sa=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],va=/^\/?Date\((-?\d+)/i,ja=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,xa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Pa(e){var a,t,s,n,r,d,_=e._i,i=ga.exec(_)||wa.exec(_),_=Ha.length,o=Sa.length;if(i){for(Y(e).iso=!0,a=0,t=_;a<t;a++)if(Ha[a][1].exec(i[1])){n=Ha[a][0],s=!1!==Ha[a][2];break}if(null==n)e._isValid=!1;else{if(i[3]){for(a=0,t=o;a<t;a++)if(Sa[a][1].exec(i[3])){r=(i[2]||" ")+Sa[a][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(i[4]){if(!ba.exec(i[4]))return void(e._isValid=!1);d="Z"}e._f=n+(r||"")+(d||""),Fa(e)}else e._isValid=!1}}else e._isValid=!1}function Oa(e,a,t,s,n,r){e=[function(e){e=parseInt(e,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(e),Ue.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return r&&e.push(parseInt(r,10)),e}function Wa(e){var a,t,s=ja.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));s?(a=Oa(s[4],s[3],s[2],s[5],s[6],s[7]),function(e,a,t){if(!e||ra.indexOf(e)===new Date(a[0],a[1],a[2]).getDay())return 1;Y(t).weekdayMismatch=!0,t._isValid=!1}(s[1],a,e)&&(e._a=a,e._tzm=(a=s[8],t=s[9],s=s[10],a?xa[a]:t?0:60*(((a=parseInt(s,10))-(t=a%100))/100)+t),e._d=Qe.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),Y(e).rfc2822=!0)):e._isValid=!1}function Aa(e,a,t){return null!=e?e:null!=a?a:t}function Ea(e){var a,t,s,n,r,d,_,i,o,m,u,l=[];if(!e._d){for(s=e,n=new Date(c.now()),t=s._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()],e._w&&null==e._a[xe]&&null==e._a[je]&&(null!=(n=(s=e)._w).GG||null!=n.W||null!=n.E?(i=1,o=4,r=Aa(n.GG,s._a[p],aa(w(),1,4).year),d=Aa(n.W,1),((_=Aa(n.E,1))<1||7<_)&&(m=!0)):(i=s._locale._week.dow,o=s._locale._week.doy,u=aa(w(),i,o),r=Aa(n.gg,s._a[p],u.year),d=Aa(n.w,u.week),null!=n.d?((_=n.d)<0||6<_)&&(m=!0):null!=n.e?(_=n.e+i,(n.e<0||6<n.e)&&(m=!0)):_=i),d<1||d>ta(r,i,o)?Y(s)._overflowWeeks=!0:null!=m?Y(s)._overflowWeekday=!0:(u=ea(r,d,_,i,o),s._a[p]=u.year,s._dayOfYear=u.dayOfYear)),null!=e._dayOfYear&&(n=Aa(e._a[p],t[p]),(e._dayOfYear>Fe(n)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),m=Qe(n,0,e._dayOfYear),e._a[je]=m.getUTCMonth(),e._a[xe]=m.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=l[a]=t[a];for(;a<7;a++)e._a[a]=l[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[D]&&0===e._a[Pe]&&0===e._a[Oe]&&0===e._a[We]&&(e._nextDay=!0,e._a[D]=0),e._d=(e._useUTC?Qe:$e).apply(null,l),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[D]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(Y(e).weekdayMismatch=!0)}}function Fa(e){if(e._f===c.ISO_8601)Pa(e);else if(e._f===c.RFC_2822)Wa(e);else{e._a=[],Y(e).empty=!0;for(var a,t,s,n,r,d=""+e._i,_=d.length,i=0,o=le(e._f,e._locale).match(_e)||[],m=o.length,u=0;u<m;u++)t=o[u],(a=(d.match(ge(t,e))||[])[0])&&(0<(s=d.substr(0,d.indexOf(a))).length&&Y(e).unusedInput.push(s),d=d.slice(d.indexOf(a)+a.length),i+=a.length),me[t]?(a?Y(e).empty=!1:Y(e).unusedTokens.push(t),s=t,r=e,null!=(n=a)&&l(He,s)&&He[s](n,r._a,r,s)):e._strict&&!a&&Y(e).unusedTokens.push(t);Y(e).charsLeftOver=_-i,0<d.length&&Y(e).unusedInput.push(d),e._a[D]<=12&&!0===Y(e).bigHour&&0<e._a[D]&&(Y(e).bigHour=void 0),Y(e).parsedDateParts=e._a.slice(0),Y(e).meridiem=e._meridiem,e._a[D]=function(e,a,t){if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):null!=e.isPM?((e=e.isPM(t))&&a<12&&(a+=12),a=e||12!==a?a:0):a}(e._locale,e._a[D],e._meridiem),null!==(_=Y(e).era)&&(e._a[p]=e._locale.erasConvertYear(_,e._a[p])),Ea(e),Ta(e)}}function za(e){var a,t,s,n=e._i,r=e._f;if(e._locale=e._locale||Da(e._l),null===n||void 0===r&&""===n)return V({nullInput:!0});if("string"==typeof n&&(e._i=n=e._locale.preparse(n)),Q(n))return new $(Ta(n));if(R(n))e._d=n;else if(F(r)){var d,_,i,o,m,u,l=e,M=!1,h=l._f.length;if(0===h)Y(l).invalidFormat=!0,l._d=new Date(NaN);else{for(o=0;o<h;o++)m=0,u=!1,d=Z({},l),null!=l._useUTC&&(d._useUTC=l._useUTC),d._f=l._f[o],Fa(d),G(d)&&(u=!0),m=(m+=Y(d).charsLeftOver)+10*Y(d).unusedTokens.length,Y(d).score=m,M?m<i&&(i=m,_=d):(null==i||m<i||u)&&(i=m,_=d,u)&&(M=!0);I(l,_||d)}}else if(r)Fa(e);else if(L(r=(n=e)._i))n._d=new Date(c.now());else R(r)?n._d=new Date(r.valueOf()):"string"==typeof r?(t=n,null!==(a=va.exec(t._i))?t._d=new Date(+a[1]):(Pa(t),!1===t._isValid&&(delete t._isValid,Wa(t),!1===t._isValid)&&(delete t._isValid,t._strict?t._isValid=!1:c.createFromInputFallback(t)))):F(r)?(n._a=C(r.slice(0),function(e){return parseInt(e,10)}),Ea(n)):z(r)?(a=n)._d||(s=void 0===(t=he(a._i)).day?t.date:t.day,a._a=C([t.year,t.month,s,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),Ea(a)):J(r)?n._d=new Date(r):c.createFromInputFallback(n);return G(e)||(e._d=null),e}function Na(e,a,t,s,n){var r={};return!0!==a&&!1!==a||(s=a,a=void 0),!0!==t&&!1!==t||(s=t,t=void 0),(z(e)&&N(e)||F(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=t,r._i=e,r._f=a,r._strict=s,(n=new $(Ta(za(n=r))))._nextDay&&(n.add(1,"d"),n._nextDay=void 0),n}function w(e,a,t,s){return Na(e,a,t,s,!1)}c.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};ye=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=w.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:V()}),_=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=w.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:V()});function Ja(e,a){var t,s;if(!(a=1===a.length&&F(a[0])?a[0]:a).length)return w();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var Ra=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ca(e){var e=he(e),a=e.year||0,t=e.quarter||0,s=e.month||0,n=e.week||e.isoWeek||0,r=e.day||0,d=e.hour||0,_=e.minute||0,i=e.second||0,o=e.millisecond||0;this._isValid=function(e){var a,t,s=!1,n=Ra.length;for(a in e)if(l(e,a)&&(-1===T.call(Ra,a)||null!=e[a]&&isNaN(e[a])))return!1;for(t=0;t<n;++t)if(e[Ra[t]]){if(s)return!1;parseFloat(e[Ra[t]])!==f(e[Ra[t]])&&(s=!0)}return!0}(e),this._milliseconds=+o+1e3*i+6e4*_+1e3*d*60*60,this._days=+r+7*n,this._months=+s+3*t+12*a,this._data={},this._locale=Da(),this._bubble()}function Ia(e){return e instanceof Ca}function Ua(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ga(e,t){s(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+de(~~(e/60),2)+t+de(~~e%60,2)})}Ga("Z",":"),Ga("ZZ",""),h("Z",Te),h("ZZ",Te),k(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=qa(Te,e)});var Va=/([\+\-]|\d\d)/gi;function qa(e,a){var a=(a||"").match(e);return null===a?null:0===(a=60*(e=((a[a.length-1]||[])+"").match(Va)||["-",0,0])[1]+f(e[2]))?0:"+"===e[0]?a:-a}function Ba(e,a){var t;return a._isUTC?(a=a.clone(),t=(Q(e)||R(e)?e:w(e)).valueOf()-a.valueOf(),a._d.setTime(a._d.valueOf()+t),c.updateOffset(a,!1),a):w(e).local()}function Ka(e){return-Math.round(e._d.getTimezoneOffset())}function Za(){return!!this.isValid()&&this._isUTC&&0===this._offset}c.updateOffset=function(){};var $a=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Qa=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Xa(e,a){var t,s=e;return Ia(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:J(e)||!isNaN(+e)?(s={},a?s[a]=+e:s.milliseconds=+e):(a=$a.exec(e))?(t="-"===a[1]?-1:1,s={y:0,d:f(a[xe])*t,h:f(a[D])*t,m:f(a[Pe])*t,s:f(a[Oe])*t,ms:f(Ua(1e3*a[We]))*t}):(a=Qa.exec(e))?(t="-"===a[1]?-1:1,s={y:et(a[2],t),M:et(a[3],t),w:et(a[4],t),d:et(a[5],t),h:et(a[6],t),m:et(a[7],t),s:et(a[8],t)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(a=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=Ba(a,e),e.isBefore(a)?t=at(e,a):((t=at(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(w(s.from),w(s.to)),(s={}).ms=a.milliseconds,s.M=a.months),t=new Ca(s),Ia(e)&&l(e,"_locale")&&(t._locale=e._locale),Ia(e)&&l(e,"_isValid")&&(t._isValid=e._isValid),t}function et(e,a){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*a}function at(e,a){var t={};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=+a-+e.clone().add(t.months,"M"),t}function tt(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(ae(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),st(this,Xa(e,a),s),this}}function st(e,a,t,s){var n=a._milliseconds,r=Ua(a._days),a=Ua(a._months);e.isValid()&&(s=null==s||s,a&&Be(e,Je(e,"Month")+a*t),r&&Re(e,"Date",Je(e,"Date")+r*t),n&&e._d.setTime(e._d.valueOf()+n*t),s)&&c.updateOffset(e,r||a)}Xa.fn=Ca.prototype,Xa.invalid=function(){return Xa(NaN)};Ie=tt(1,"add"),na=tt(-1,"subtract");function nt(e){return"string"==typeof e||e instanceof String}function rt(e){return Q(e)||R(e)||nt(e)||J(e)||function(a){var e=F(a),t=!1;e&&(t=0===a.filter(function(e){return!J(e)&&nt(a)}).length);return e&&t}(e)||function(e){var a,t,s=z(e)&&!N(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],d=r.length;for(a=0;a<d;a+=1)t=r[a],n=n||l(e,t);return s&&n}(e)||null==e}function dt(e,a){var t,s;return e.date()<a.date()?-dt(a,e):-((t=12*(a.year()-e.year())+(a.month()-e.month()))+(a-(s=e.clone().add(t,"months"))<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(1+t,"months")-s)))||0}function _t(e){return void 0===e?this._locale._abbr:(null!=(e=Da(e))&&(this._locale=e),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";da=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function it(){return this._locale}var ot=126227808e5;function mt(e,a){return(e%a+a)%a}function ut(e,a,t){return e<100&&0<=e?new Date(e+400,a,t)-ot:new Date(e,a,t).valueOf()}function lt(e,a,t){return e<100&&0<=e?Date.UTC(e+400,a,t)-ot:Date.UTC(e,a,t)}function Mt(e,a){return a.erasAbbrRegex(e)}function ht(){for(var e,a,t,s=[],n=[],r=[],d=[],_=this.eras(),i=0,o=_.length;i<o;++i)e=we(_[i].name),a=we(_[i].abbr),t=we(_[i].narrow),n.push(e),s.push(a),r.push(t),d.push(e),d.push(a),d.push(t);this._erasRegex=new RegExp("^("+d.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+n.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+r.join("|")+")","i")}function ct(e,a){s(0,[e,e.length],0,a)}function Lt(e,a,t,s,n){var r;return null==e?aa(this,s,n).year:(r=ta(e,s,n),function(e,a,t,s,n){e=ea(e,a,t,s,n),a=Qe(e.year,0,e.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,a=r<a?r:a,t,s,n))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),h("N",Mt),h("NN",Mt),h("NNN",Mt),h("NNNN",function(e,a){return a.erasNameRegex(e)}),h("NNNNN",function(e,a){return a.erasNarrowRegex(e)}),k(["N","NN","NNN","NNNN","NNNNN"],function(e,a,t,s){s=t._locale.erasParse(e,s,t._strict);s?Y(t).era=s:Y(t).invalidEra=e}),h("y",ke),h("yy",ke),h("yyy",ke),h("yyyy",ke),h("yo",function(e,a){return a._eraYearOrdinalRegex||ke}),k(["y","yy","yyy","yyyy"],p),k(["yo"],function(e,a,t,s){var n;t._locale._eraYearOrdinalRegex&&(n=e.match(t._locale._eraYearOrdinalRegex)),t._locale.eraYearOrdinalParse?a[p]=t._locale.eraYearOrdinalParse(e,n):a[p]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),ct("gggg","weekYear"),ct("ggggg","weekYear"),ct("GGGG","isoWeekYear"),ct("GGGGG","isoWeekYear"),h("G",pe),h("g",pe),h("GG",r,a),h("gg",r,a),h("GGGG",i,t),h("gggg",i,t),h("GGGGG",o,n),h("ggggg",o,n),Se(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=f(e)}),Se(["gg","GG"],function(e,a,t,s){a[s]=c.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),h("Q",Le),k("Q",function(e,a){a[je]=3*(f(e)-1)}),s("D",["DD",2],"Do","date"),h("D",r,u),h("DD",r,a),h("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),k(["D","DD"],xe),k("Do",function(e,a){a[xe]=f(e.match(r)[0])});i=Ne("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),h("DDD",fe),h("DDDD",Ye),k(["DDD","DDDD"],function(e,a,t){t._dayOfYear=f(e)}),s("m",["mm",2],0,"minute"),h("m",r,M),h("mm",r,a),k(["m","mm"],Pe);var Yt,t=Ne("Minutes",!1),o=(s("s",["ss",2],0,"second"),h("s",r,M),h("ss",r,a),k(["s","ss"],Oe),Ne("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),h("S",fe,Le),h("SS",fe,a),h("SSS",fe,Ye),Yt="SSSS";Yt.length<=9;Yt+="S")h(Yt,ke);function yt(e,a){a[We]=f(1e3*("0."+e))}for(Yt="S";Yt.length<=9;Yt+="S")k(Yt,yt);n=Ne("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");u=$.prototype;function ft(e){return e}u.add=Ie,u.calendar=function(e,a){1===arguments.length&&(arguments[0]?rt(arguments[0])?(e=arguments[0],a=void 0):function(e){for(var a=z(e)&&!N(e),t=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],n=0;n<s.length;n+=1)t=t||l(e,s[n]);return a&&t}(arguments[0])&&(a=arguments[0],e=void 0):a=e=void 0);var e=e||w(),t=Ba(e,this).startOf("day"),t=c.calendarFormat(this,t)||"sameElse",a=a&&(te(a[t])?a[t].call(this,e):a[t]);return this.format(a||this.localeData().calendar(t,this,w(e)))},u.clone=function(){return new $(this)},u.diff=function(e,a,t){var s,n,r;if(!this.isValid())return NaN;if(!(s=Ba(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=d(a)){case"year":r=dt(this,s)/12;break;case"month":r=dt(this,s);break;case"quarter":r=dt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return t?r:y(r)},u.endOf=function(e){var a,t;if(void 0!==(e=d(e))&&"millisecond"!==e&&this.isValid()){switch(t=this._isUTC?lt:ut,e){case"year":a=t(this.year()+1,0,1)-1;break;case"quarter":a=t(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":a=t(this.year(),this.month()+1,1)-1;break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":a=t(this.year(),this.month(),this.date()+1)-1;break;case"hour":a=this._d.valueOf(),a+=36e5-mt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":a=this._d.valueOf(),a+=6e4-mt(a,6e4)-1;break;case"second":a=this._d.valueOf(),a+=1e3-mt(a,1e3)-1;break}this._d.setTime(a),c.updateOffset(this,!0)}return this},u.format=function(e){return e=e||(this.isUtc()?c.defaultFormatUtc:c.defaultFormat),e=ue(this,e),this.localeData().postformat(e)},u.from=function(e,a){return this.isValid()&&(Q(e)&&e.isValid()||w(e).isValid())?Xa({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},u.fromNow=function(e){return this.from(w(),e)},u.to=function(e,a){return this.isValid()&&(Q(e)&&e.isValid()||w(e).isValid())?Xa({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},u.toNow=function(e){return this.to(w(),e)},u.get=function(e){return te(this[e=d(e)])?this[e]():this},u.invalidAt=function(){return Y(this).overflow},u.isAfter=function(e,a){return e=Q(e)?e:w(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(a=d(a)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(a).valueOf())},u.isBefore=function(e,a){return e=Q(e)?e:w(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(a=d(a)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(a).valueOf()<e.valueOf())},u.isBetween=function(e,a,t,s){return e=Q(e)?e:w(e),a=Q(a)?a:w(a),!!(this.isValid()&&e.isValid()&&a.isValid())&&("("===(s=s||"()")[0]?this.isAfter(e,t):!this.isBefore(e,t))&&(")"===s[1]?this.isBefore(a,t):!this.isAfter(a,t))},u.isSame=function(e,a){var e=Q(e)?e:w(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(a=d(a)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(a).valueOf()<=e&&e<=this.clone().endOf(a).valueOf()))},u.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},u.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},u.isValid=function(){return G(this)},u.lang=da,u.locale=_t,u.localeData=it,u.max=_,u.min=ye,u.parsingFlags=function(){return I({},Y(this))},u.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a,t=[];for(a in e)l(e,a)&&t.push({unit:a,priority:ce[a]});return t.sort(function(e,a){return e.priority-a.priority}),t}(e=he(e)),s=t.length,n=0;n<s;n++)this[t[n].unit](e[t[n].unit]);else if(te(this[e=d(e)]))return this[e](a);return this},u.startOf=function(e){var a,t;if(void 0!==(e=d(e))&&"millisecond"!==e&&this.isValid()){switch(t=this._isUTC?lt:ut,e){case"year":a=t(this.year(),0,1);break;case"quarter":a=t(this.year(),this.month()-this.month()%3,1);break;case"month":a=t(this.year(),this.month(),1);break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":a=t(this.year(),this.month(),this.date());break;case"hour":a=this._d.valueOf(),a-=mt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":a=this._d.valueOf(),a-=mt(a,6e4);break;case"second":a=this._d.valueOf(),a-=mt(a,1e3);break}this._d.setTime(a),c.updateOffset(this,!0)}return this},u.subtract=na,u.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},u.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},u.toDate=function(){return new Date(this.valueOf())},u.toISOString=function(e){var a;return this.isValid()?(a=(e=!0!==e)?this.clone().utc():this).year()<0||9999<a.year()?ue(a,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):te(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",ue(a,"Z")):ue(a,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ"):null},u.inspect=function(){var e,a,t;return this.isValid()?(a="moment",e="",this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z"),a="["+a+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(a+t+"-MM-DD[T]HH:mm:ss.SSS"+(e+'[")]'))):"moment.invalid(/* "+this._i+" */)"},"undefined"!=typeof Symbol&&null!=Symbol.for&&(u[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].name;if(a[t].until<=e&&e<=a[t].since)return a[t].name}return""},u.eraNarrow=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].narrow;if(a[t].until<=e&&e<=a[t].since)return a[t].narrow}return""},u.eraAbbr=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].abbr;if(a[t].until<=e&&e<=a[t].since)return a[t].abbr}return""},u.eraYear=function(){for(var e,a,t=this.localeData().eras(),s=0,n=t.length;s<n;++s)if(e=t[s].since<=t[s].until?1:-1,a=this.clone().startOf("day").valueOf(),t[s].since<=a&&a<=t[s].until||t[s].until<=a&&a<=t[s].since)return(this.year()-c(t[s].since).year())*e+t[s].offset;return this.year()},u.year=ze,u.isLeapYear=function(){return ve(this.year())},u.weekYear=function(e){return Lt.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},u.isoWeekYear=function(e){return Lt.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},u.quarter=u.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},u.month=Ke,u.daysInMonth=function(){return Ce(this.year(),this.month())},u.week=u.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},u.isoWeek=u.isoWeeks=function(e){var a=aa(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},u.weeksInYear=function(){var e=this.localeData()._week;return ta(this.year(),e.dow,e.doy)},u.weeksInWeekYear=function(){var e=this.localeData()._week;return ta(this.weekYear(),e.dow,e.doy)},u.isoWeeksInYear=function(){return ta(this.year(),1,4)},u.isoWeeksInISOWeekYear=function(){return ta(this.isoWeekYear(),1,4)},u.date=i,u.day=u.days=function(e){var a,t,s;return this.isValid()?(a=Je(this,"Day"),null!=e?(t=e,s=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=s.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-a,"d")):a):null!=e?this:NaN},u.weekday=function(e){var a;return this.isValid()?(a=(this.day()+7-this.localeData()._week.dow)%7,null==e?a:this.add(e-a,"d")):null!=e?this:NaN},u.isoWeekday=function(e){var a,t;return this.isValid()?null!=e?(a=e,t=this.localeData(),t="string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a,this.day(this.day()%7?t:t-7)):this.day()||7:null!=e?this:NaN},u.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},u.hour=u.hours=m,u.minute=u.minutes=t,u.second=u.seconds=o,u.millisecond=u.milliseconds=n,u.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ka(this);if("string"==typeof e){if(null===(e=qa(Te,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ka(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?st(this,Xa(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},u.utc=function(e){return this.utcOffset(0,e)},u.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e)&&this.subtract(Ka(this),"m"),this},u.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=qa(De,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},u.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?w(e).utcOffset():0,(this.utcOffset()-e)%60==0)},u.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=Za,u.isUTC=Za,u.zoneAbbr=function(){return this._isUTC?"UTC":""},u.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},u.dates=e("dates accessor is deprecated. Use date instead.",i),u.months=e("months accessor is deprecated. Use month instead",Ke),u.years=e("years accessor is deprecated. Use year instead",ze),u.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,a),this):-this.utcOffset()}),u.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,a;return L(this._isDSTShifted)&&(Z(e={},this),(e=za(e))._a?(a=(e._isUTC?U:w)(e._a),this._isDSTShifted=this.isValid()&&0<function(e,a,t){for(var s=Math.min(e.length,a.length),n=Math.abs(e.length-a.length),r=0,d=0;d<s;d++)(t&&e[d]!==a[d]||!t&&f(e[d])!==f(a[d]))&&r++;return r+n}(e._a,a.toArray())):this._isDSTShifted=!1),this._isDSTShifted});M=ne.prototype;function kt(e,a,t,s){var n=Da(),s=U().set(s,a);return n[t](s,e)}function pt(e,a,t){if(J(e)&&(a=e,e=void 0),e=e||"",null!=a)return kt(e,a,t,"month");for(var s=[],n=0;n<12;n++)s[n]=kt(e,n,t,"month");return s}function Dt(e,a,t,s){a=("boolean"==typeof e?J(a)&&(t=a,a=void 0):(a=e,e=!1,J(t=a)&&(t=a,a=void 0)),a||"");var n,r=Da(),d=e?r._week.dow:0,_=[];if(null!=t)return kt(a,(t+d)%7,s,"day");for(n=0;n<7;n++)_[n]=kt(a,(n+d)%7,s,"day");return _}M.calendar=function(e,a,t){return te(e=this._calendar[e]||this._calendar.sameElse)?e.call(a,t):e},M.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.match(_e).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},M.invalidDate=function(){return this._invalidDate},M.ordinal=function(e){return this._ordinal.replace("%d",e)},M.preparse=ft,M.postformat=ft,M.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return te(n)?n(e,a,t,s):n.replace(/%d/i,e)},M.pastFuture=function(e,a){return te(e=this._relativeTime[0<e?"future":"past"])?e(a):e.replace(/%s/i,a)},M.set=function(e){var a,t;for(t in e)l(e,t)&&(te(a=e[t])?this[t]=a:this["_"+t]=a);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},M.eras=function(e,a){for(var t,s=this._eras||Da("en")._eras,n=0,r=s.length;n<r;++n){switch(typeof s[n].since){case"string":t=c(s[n].since).startOf("day"),s[n].since=t.valueOf();break}switch(typeof s[n].until){case"undefined":s[n].until=1/0;break;case"string":t=c(s[n].until).startOf("day").valueOf(),s[n].until=t.valueOf();break}}return s},M.erasParse=function(e,a,t){var s,n,r,d,_,i=this.eras();for(e=e.toUpperCase(),s=0,n=i.length;s<n;++s)if(r=i[s].name.toUpperCase(),d=i[s].abbr.toUpperCase(),_=i[s].narrow.toUpperCase(),t)switch(a){case"N":case"NN":case"NNN":if(d===e)return i[s];break;case"NNNN":if(r===e)return i[s];break;case"NNNNN":if(_===e)return i[s];break}else if(0<=[r,d,_].indexOf(e))return i[s]},M.erasConvertYear=function(e,a){var t=e.since<=e.until?1:-1;return void 0===a?c(e.since).year():c(e.since).year()+(a-e.offset)*t},M.erasAbbrRegex=function(e){return l(this,"_erasAbbrRegex")||ht.call(this),e?this._erasAbbrRegex:this._erasRegex},M.erasNameRegex=function(e){return l(this,"_erasNameRegex")||ht.call(this),e?this._erasNameRegex:this._erasRegex},M.erasNarrowRegex=function(e){return l(this,"_erasNarrowRegex")||ht.call(this),e?this._erasNarrowRegex:this._erasRegex},M.months=function(e,a){return e?(F(this._months)?this._months:this._months[(this._months.isFormat||Ge).test(a)?"format":"standalone"])[e.month()]:F(this._months)?this._months:this._months.standalone},M.monthsShort=function(e,a){return e?(F(this._monthsShort)?this._monthsShort:this._monthsShort[Ge.test(a)?"format":"standalone"])[e.month()]:F(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},M.monthsParse=function(e,a,t){var s,n;if(this._monthsParseExact)return function(e,a,t){var s,n,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=U([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=T.call(this._shortMonthsParse,e))?n:null:-1!==(n=T.call(this._longMonthsParse,e))?n:null:"MMM"===a?-1!==(n=T.call(this._shortMonthsParse,e))||-1!==(n=T.call(this._longMonthsParse,e))?n:null:-1!==(n=T.call(this._longMonthsParse,e))||-1!==(n=T.call(this._shortMonthsParse,e))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=U([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(n="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},M.monthsRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Ze.call(this),e?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=qe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},M.monthsShortRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Ze.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=Ve),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},M.week=function(e){return aa(e,this._week.dow,this._week.doy).week},M.firstDayOfYear=function(){return this._week.doy},M.firstDayOfWeek=function(){return this._week.dow},M.weekdays=function(e,a){return a=F(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(a)?"format":"standalone"],!0===e?sa(a,this._week.dow):e?a[e.day()]:a},M.weekdaysMin=function(e){return!0===e?sa(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},M.weekdaysShort=function(e){return!0===e?sa(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},M.weekdaysParse=function(e,a,t){var s,n;if(this._weekdaysParseExact)return function(e,a,t){var s,n,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=U([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=T.call(this._weekdaysParse,e))?n:null:"ddd"===a?-1!==(n=T.call(this._shortWeekdaysParse,e))?n:null:-1!==(n=T.call(this._minWeekdaysParse,e))?n:null:"dddd"===a?-1!==(n=T.call(this._weekdaysParse,e))||-1!==(n=T.call(this._shortWeekdaysParse,e))||-1!==(n=T.call(this._minWeekdaysParse,e))?n:null:"ddd"===a?-1!==(n=T.call(this._shortWeekdaysParse,e))||-1!==(n=T.call(this._weekdaysParse,e))||-1!==(n=T.call(this._minWeekdaysParse,e))?n:null:-1!==(n=T.call(this._minWeekdaysParse,e))||-1!==(n=T.call(this._weekdaysParse,e))||-1!==(n=T.call(this._shortWeekdaysParse,e))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=U([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(n="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(n.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},M.weekdaysRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ma.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=_a),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},M.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ma.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ia),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},M.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ma.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=oa),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},M.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},M.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},ka("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===f(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),c.lang=e("moment.lang is deprecated. Use moment.locale instead.",ka),c.langData=e("moment.langData is deprecated. Use moment.localeData instead.",Da);var Tt=Math.abs;function gt(e,a,t,s){a=Xa(a,t);return e._milliseconds+=s*a._milliseconds,e._days+=s*a._days,e._months+=s*a._months,e._bubble()}function wt(e){return e<0?Math.floor(e):Math.ceil(e)}function bt(e){return 4800*e/146097}function Ht(e){return 146097*e/4800}function St(e){return function(){return this.as(e)}}Le=St("ms"),a=St("s"),fe=St("m"),Ye=St("h"),Ie=St("d"),_=St("w"),ye=St("M"),na=St("Q"),m=St("y"),t=Le;function vt(e){return function(){return this.isValid()?this._data[e]:NaN}}var o=vt("milliseconds"),n=vt("seconds"),i=vt("minutes"),ze=vt("hours"),M=vt("days"),jt=vt("months"),xt=vt("years");var Pt=Math.round,Ot={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Wt(e,a,t,s){var n=Xa(e).abs(),r=Pt(n.as("s")),d=Pt(n.as("m")),_=Pt(n.as("h")),i=Pt(n.as("d")),o=Pt(n.as("M")),m=Pt(n.as("w")),n=Pt(n.as("y")),r=(r<=t.ss?["s",r]:r<t.s&&["ss",r])||(d<=1?["m"]:d<t.m&&["mm",d])||(_<=1?["h"]:_<t.h&&["hh",_])||(i<=1?["d"]:i<t.d&&["dd",i]);return(r=(r=null!=t.w?r||(m<=1?["w"]:m<t.w&&["ww",m]):r)||(o<=1?["M"]:o<t.M&&["MM",o])||(n<=1?["y"]:["yy",n]))[2]=a,r[3]=0<+e,r[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,r)}var At=Math.abs;function Et(e){return(0<e)-(e<0)||+e}function Ft(){var e,a,t,s,n,r,d,_,i,o,m;return this.isValid()?(e=At(this._milliseconds)/1e3,a=At(this._days),t=At(this._months),(_=this.asSeconds())?(s=y(e/60),n=y(s/60),e%=60,s%=60,r=y(t/12),t%=12,d=e?e.toFixed(3).replace(/\.?0+$/,""):"",i=Et(this._months)!==Et(_)?"-":"",o=Et(this._days)!==Et(_)?"-":"",m=Et(this._milliseconds)!==Et(_)?"-":"",(_<0?"-":"")+"P"+(r?i+r+"Y":"")+(t?i+t+"M":"")+(a?o+a+"D":"")+(n||s||e?"T":"")+(n?m+n+"H":"")+(s?m+s+"M":"")+(e?m+d+"S":"")):"P0D"):this.localeData().invalidDate()}function zt(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function b(d){return function(e,a,t,s){var n=zt(e),r=Rt[d][zt(e)];return(r=2===n?r[a?0:1]:r).replace(/%d/i,e)}}function Nt(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function H(d){return function(e,a,t,s){var n=Nt(e),r=It[d][Nt(e)];return(r=2===n?r[a?0:1]:r).replace(/%d/i,e)}}function Jt(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function S(d){return function(e,a,t,s){var n=Jt(e),r=Zt[d][Jt(e)];return(r=2===n?r[a?0:1]:r).replace(/%d/i,e)}}var v=Ca.prototype,Rt=(v.isValid=function(){return this._isValid},v.abs=function(){var e=this._data;return this._milliseconds=Tt(this._milliseconds),this._days=Tt(this._days),this._months=Tt(this._months),e.milliseconds=Tt(e.milliseconds),e.seconds=Tt(e.seconds),e.minutes=Tt(e.minutes),e.hours=Tt(e.hours),e.months=Tt(e.months),e.years=Tt(e.years),this},v.add=function(e,a){return gt(this,e,a,1)},v.subtract=function(e,a){return gt(this,e,a,-1)},v.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=d(e))||"quarter"===e||"year"===e)switch(a=this._days+s/864e5,t=this._months+bt(a),e){case"month":return t;case"quarter":return t/3;case"year":return t/12}else switch(a=this._days+Math.round(Ht(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},v.asMilliseconds=Le,v.asSeconds=a,v.asMinutes=fe,v.asHours=Ye,v.asDays=Ie,v.asWeeks=_,v.asMonths=ye,v.asQuarters=na,v.asYears=m,v.valueOf=t,v._bubble=function(){var e=this._milliseconds,a=this._days,t=this._months,s=this._data;return 0<=e&&0<=a&&0<=t||e<=0&&a<=0&&t<=0||(e+=864e5*wt(Ht(t)+a),t=a=0),s.milliseconds=e%1e3,e=y(e/1e3),s.seconds=e%60,e=y(e/60),s.minutes=e%60,e=y(e/60),s.hours=e%24,a+=y(e/24),t+=e=y(bt(a)),a-=wt(Ht(e)),e=y(t/12),t%=12,s.days=a,s.months=t,s.years=e,this},v.clone=function(){return Xa(this)},v.get=function(e){return e=d(e),this.isValid()?this[e+"s"]():NaN},v.milliseconds=o,v.seconds=n,v.minutes=i,v.hours=ze,v.days=M,v.weeks=function(){return y(this.days()/7)},v.months=jt,v.years=xt,v.humanize=function(e,a){var t,s;return this.isValid()?(t=!1,s=Ot,"object"==typeof e&&(a=e,e=!1),"boolean"==typeof e&&(t=e),"object"==typeof a&&(s=Object.assign({},Ot,a),null!=a.s)&&null==a.ss&&(s.ss=a.s-1),e=this.localeData(),a=Wt(this,!t,s,e),t&&(a=e.pastFuture(+this,a)),e.postformat(a)):this.localeData().invalidDate()},v.toISOString=Ft,v.toString=Ft,v.toJSON=Ft,v.locale=_t,v.localeData=it,v.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ft),v.lang=da,s("X",0,0,"unix"),s("x",0,0,"valueOf"),h("x",pe),h("X",/[+-]?\d+(\.\d{1,3})?/),k("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e))}),k("x",function(e,a,t){t._d=new Date(f(e))}),c.version="2.30.1",E=w,c.fn=u,c.min=function(){return Ja("isBefore",[].slice.call(arguments,0))},c.max=function(){return Ja("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=U,c.unix=function(e){return w(1e3*e)},c.months=function(e,a){return pt(e,a,"months")},c.isDate=R,c.locale=ka,c.invalid=V,c.duration=Xa,c.isMoment=Q,c.weekdays=function(e,a,t){return Dt(e,a,t,"weekdays")},c.parseZone=function(){return w.apply(null,arguments).parseZone()},c.localeData=Da,c.isDuration=Ia,c.monthsShort=function(e,a){return pt(e,a,"monthsShort")},c.weekdaysMin=function(e,a,t){return Dt(e,a,t,"weekdaysMin")},c.defineLocale=pa,c.updateLocale=function(e,a){var t,s;return null!=a?(s=ca,null!=g[e]&&null!=g[e].parentLocale?g[e].set(se(g[e]._config,a)):(a=se(s=null!=(t=fa(e))?t._config:s,a),null==t&&(a.abbr=e),(s=new ne(a)).parentLocale=g[e],g[e]=s),ka(e)):null!=g[e]&&(null!=g[e].parentLocale?(g[e]=g[e].parentLocale,e===ka()&&ka(e)):null!=g[e]&&delete g[e]),g[e]},c.locales=function(){return re(g)},c.weekdaysShort=function(e,a,t){return Dt(e,a,t,"weekdaysShort")},c.normalizeUnits=d,c.relativeTimeRounding=function(e){return void 0===e?Pt:"function"==typeof e&&(Pt=e,!0)},c.relativeTimeThreshold=function(e,a){return void 0!==Ot[e]&&(void 0===a?Ot[e]:(Ot[e]=a,"s"===e&&(Ot.ss=a-1),!0))},c.calendarFormat=function(e,a){return(e=e.diff(a,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},c.prototype=u,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),{s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]}),Le=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],Ct=(c.defineLocale("ar-dz",{months:Le,monthsShort:Le,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:b("s"),ss:b("s"),m:b("m"),mm:b("m"),h:b("h"),hh:b("h"),d:b("d"),dd:b("d"),M:b("M"),MM:b("M"),y:b("y"),yy:b("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),c.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}}),{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"}),It={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},a=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],Ut=(c.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:H("s"),ss:H("s"),m:H("m"),mm:H("m"),h:H("h"),hh:H("h"),d:H("d"),dd:H("d"),M:H("M"),MM:H("M"),y:H("y"),yy:H("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Ct[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),c.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),Gt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Vt=(c.defineLocale("ar-ps",{months:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0651\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0651\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a \u0627\u0644\u0623\u0648\u0651\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0651\u0644".split("_"),monthsShort:"\u0643\u0662_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0651\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0651\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0661_\u062a\u0662_\u0643\u0661".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Gt[e]}).split("").reverse().join("").replace(/[\u0661\u0662](?![\u062a\u0643])/g,function(e){return Gt[e]}).split("").reverse().join("").replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Ut[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),qt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Bt=(c.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return qt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Vt[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),c.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),Kt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Zt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},fe=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],$t=(c.defineLocale("ar",{months:fe,monthsShort:fe,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:S("s"),ss:S("s"),m:S("m"),mm:S("m"),h:S("h"),hh:S("h"),d:S("d"),dd:S("d"),M:S("M"),MM:S("M"),y:S("y"),yy:S("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Kt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Bt[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"});function Qt(e,a,t){return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}c.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){var a;return 0===e?e+"-\u0131nc\u0131":e+($t[a=e%10]||$t[e%100-a]||$t[100<=e?100:null])},week:{dow:1,doy:7}}),c.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:Qt,mm:Qt,h:Qt,hh:Qt,d:"\u0434\u0437\u0435\u043d\u044c",dd:Qt,M:"\u043c\u0435\u0441\u044f\u0446",MM:Qt,y:"\u0433\u043e\u0434",yy:Qt},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),c.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),c.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var Xt={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},es={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},as=(c.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return es[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Xt[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a?e<4?e:e+12:"\u09ad\u09cb\u09b0"===a||"\u09b8\u0995\u09be\u09b2"===a?e:"\u09a6\u09c1\u09aa\u09c1\u09b0"===a?3<=e?e:e+12:"\u09ac\u09bf\u0995\u09be\u09b2"===a||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"}),ts={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},ss=(c.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ts[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return as[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"}),ns={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function rs(e,a,t){return e+" "+(t={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==(e=e)?t:void 0!==(e={m:"v",b:"v",d:"z"})[(t=t).charAt(0)]?e[t.charAt(0)]+t.substring(1):t)}c.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ss[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});Ye=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],Ie=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,_=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function ds(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return"jedan sat";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}c.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:_,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:_,monthsRegex:Ie,monthsShortRegex:Ie,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:Ye,longMonthsParse:Ye,shortMonthsParse:Ye,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:rs,h:"un eur",hh:"%d eur",d:"un devezh",dd:rs,M:"ur miz",MM:rs,y:"ur bloaz",yy:function(e){switch(function e(a){if(9<a)return e(a%10);return a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,t){return e<12?"a.m.":"g.m."}}),c.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:ds,m:function(e,a,t,s){switch(t){case"m":return a?"jedna minuta":s?"jednu minutu":"jedne minute"}},mm:ds,h:ds,hh:ds,d:"dan",dd:ds,M:"mjesec",MM:ds,y:"godinu",yy:ds},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});ye={standalone:"leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),format:"ledna_\xfanora_b\u0159ezna_dubna_kv\u011btna_\u010dervna_\u010dervence_srpna_z\xe1\u0159\xed_\u0159\xedjna_listopadu_prosince".split("_"),isFormat:/DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/},na="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),m=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],t=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function _s(e){return 1<e&&e<5&&1!=~~(e/10)}function j(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(_s(e)?"sekundy":"sekund"):n+"sekundami";case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(_s(e)?"minuty":"minut"):n+"minutami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(_s(e)?"hodiny":"hodin"):n+"hodinami";case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(_s(e)?"dny":"dn\xed"):n+"dny";case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(_s(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(_s(e)?"roky":"let"):n+"lety"}}function is(e,a,t,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[t][0]:e[t][1]}function os(e,a,t,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[t][0]:e[t][1]}function ms(e,a,t,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[t][0]:e[t][1]}c.defineLocale("cs",{months:ye,monthsShort:na,monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:m,longMonthsParse:m,shortMonthsParse:m,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:j,ss:j,m:j,mm:j,h:j,hh:j,d:j,dd:j,M:j,MM:j,y:j,yy:j},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),c.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),c.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:is,mm:"%d Minuten",h:is,hh:"%d Stunden",d:is,dd:is,w:is,ww:"%d Wochen",M:is,MM:is,y:is,yy:is},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:os,mm:"%d Minuten",h:os,hh:"%d Stunden",d:os,dd:os,w:os,ww:"%d Wochen",M:os,MM:os,y:os,yy:os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:ms,mm:"%d Minuten",h:ms,hh:"%d Stunden",d:ms,dd:ms,w:ms,ww:"%d Wochen",M:ms,MM:ms,y:ms,yy:ms},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});o=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],n=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];c.defineLocale("dv",{months:o,monthsShort:o,weekdays:n,weekdaysShort:n,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),c.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?("string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl:this._monthsNominativeEl)[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t,e=this._calendarEl[e],s=a&&a.hours();return t=e,(e="undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)?e.apply(a):e).replace("{}",s%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),c.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:4}}),c.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),c.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),c.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:6}}),c.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var us="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),ls="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ze=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,Ms=(c.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ls:us)[e.month()]:us},monthsRegex:ze,monthsShortRegex:ze,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),hs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),M=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],jt=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,cs=(c.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?hs:Ms)[e.month()]:Ms},monthsRegex:jt,monthsShortRegex:jt,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:M,longMonthsParse:M,shortMonthsParse:M,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:4},invalidDate:"Fecha inv\xe1lida"}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),Ls="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),xt=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],v=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,Ys=(c.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?Ls:cs)[e.month()]:cs},monthsRegex:v,monthsShortRegex:v,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:xt,longMonthsParse:xt,shortMonthsParse:xt,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),ys="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),da=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],pe=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function fs(e,a,t,s){e={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?e[t][2]||e[t][1]:s?e[t][0]:e[t][1]}c.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ys:Ys)[e.month()]:Ys},monthsRegex:pe,monthsShortRegex:pe,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:da,longMonthsParse:da,shortMonthsParse:da,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"}),c.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:fs,ss:fs,m:fs,mm:fs,h:fs,hh:fs,d:fs,dd:"%d p\xe4eva",M:fs,MM:fs,y:fs,yy:fs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var ks={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},ps={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"},Ds=(c.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return ps[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return ks[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" ")),Ts=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",Ds[7],Ds[8],Ds[9]];function x(e,a,t,s){var n="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":n=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":n=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":n=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":n=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":n=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":n=s?"vuoden":"vuotta";break}return t=s,n=((e=e)<10?(t?Ts:Ds)[e]:e)+" "+n}c.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:x,ss:x,m:x,mm:x,h:x,hh:x,d:x,dd:x,M:x,MM:x,y:x,yy:x},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),c.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),c.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var u=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,Le=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i],gs=(c.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:u,monthsShortRegex:u,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:Le,longMonthsParse:Le,shortMonthsParse:Le,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),ws="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");c.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ws:gs)[e.month()]:gs},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),c.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Am\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}});function P(e,a,t,s){e={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[e+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",e+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[e+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",e+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[e+" \u0935\u0930\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[e+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",e+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[e+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",e+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[e+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return s?e[t][0]:e[t][1]}function bs(e,a,t,s){e={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return s?e[t][0]:e[t][1]}c.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),c.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:P,ss:P,m:P,mm:P,h:P,hh:P,d:P,dd:P,M:P,MM:P,y:P,yy:P},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(e,a){switch(a){case"D":return e+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===a?e:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===a?12<e?e:e+12:"\u0938\u093e\u0902\u091c\u0947"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u0940":e<12?"\u0938\u0915\u093e\u0933\u0940\u0902":e<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":e<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}}),c.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:bs,ss:bs,m:bs,mm:bs,h:bs,hh:bs,d:bs,dd:bs,M:bs,MM:bs,y:bs,yy:bs},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}});var Hs={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},Ss={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"},vs=(c.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return Ss[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Hs[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),c.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}}),{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"}),js={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},a=[/^\u091c\u0928/i,/^\u092b\u093c\u0930|\u092b\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935|\u0928\u0935\u0902/i,/^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i];function xs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}c.defineLocale("hi",{months:{format:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),standalone:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930".split("_")},monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},monthsParse:a,longMonthsParse:a,shortMonthsParse:[/^\u091c\u0928/i,/^\u092b\u093c\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935/i,/^\u0926\u093f\u0938/i],monthsRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsShortRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsStrictRegex:/^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,monthsShortStrictRegex:/^(\u091c\u0928\.?|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\.?|\u0905\u0917\.?|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\.?|\u0926\u093f\u0938\.?)/i,calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return js[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return vs[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),c.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:xs,m:xs,mm:xs,h:xs,hh:xs,d:"dan",dd:xs,M:"mjesec",MM:xs,y:"godinu",yy:xs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Ps="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Os(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function Ws(e){return(e?"":"[m\xfalt] ")+"["+Ps[this.day()]+"] LT[-kor]"}function As(e){return e%100==11||e%10!=1}function Es(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return As(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return As(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return As(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return As(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return As(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return As(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}c.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan._feb._m\xe1rc._\xe1pr._m\xe1j._j\xfan._j\xfal._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Ws.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Ws.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Os,ss:Os,m:Os,mm:Os,h:Os,hh:Os,d:Os,dd:Os,M:Os,MM:Os,y:Os,yy:Os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),c.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}}),c.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:Es,ss:Es,m:Es,mm:Es,h:"klukkustund",hh:Es,d:Es,dd:Es,M:Es,MM:Es,y:Es,yy:Es},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(e,a){return"\u5143"===a[1]?1:parseInt(a[1]||e,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()!==e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"y":return 1===e?"\u5143\u5e74":e+"\u5e74";case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),c.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),c.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(e,a,t){return"\u10d8"===t?a+"\u10e8\u10d8":a+t+"\u10e8\u10d8"})},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):e},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var Fs={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"},zs=(c.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(Fs[e]||Fs[e%10]||Fs[100<=e?100:null])},week:{dow:1,doy:7}}),{1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"}),Ns={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"},Js=(c.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return zs[e]})},week:{dow:1,doy:4}}),{1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"}),Rs={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};function O(e,a,t,s){e={s:["\xe7end san\xeeye","\xe7end san\xeeyeyan"],ss:[e+" san\xeeye",e+" san\xeeyeyan"],m:["deq\xeeqeyek","deq\xeeqeyek\xea"],mm:[e+" deq\xeeqe",e+" deq\xeeqeyan"],h:["saetek","saetek\xea"],hh:[e+" saet",e+" saetan"],d:["rojek","rojek\xea"],dd:[e+" roj",e+" rojan"],w:["hefteyek","hefteyek\xea"],ww:[e+" hefte",e+" hefteyan"],M:["mehek","mehek\xea"],MM:[e+" meh",e+" mehan"],y:["salek","salek\xea"],yy:[e+" sal",e+" salan"]};return a?e[t][0]:e[t][1]}c.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return Rs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Js[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),c.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}}),c.defineLocale("ku-kmr",{months:"R\xeabendan_Sibat_Adar_N\xeesan_Gulan_Hez\xeeran_T\xeermeh_Tebax_\xcelon_Cotmeh_Mijdar_Berfanbar".split("_"),monthsShort:"R\xeab_Sib_Ada_N\xees_Gul_Hez_T\xeer_Teb_\xcelo_Cot_Mij_Ber".split("_"),monthsParseExact:!0,weekdays:"Yek\u015fem_Du\u015fem_S\xea\u015fem_\xc7ar\u015fem_P\xeanc\u015fem_\xcen_\u015eem\xee".split("_"),weekdaysShort:"Yek_Du_S\xea_\xc7ar_P\xean_\xcen_\u015eem".split("_"),weekdaysMin:"Ye_Du_S\xea_\xc7a_P\xea_\xcen_\u015ee".split("_"),meridiem:function(e,a,t){return e<12?t?"bn":"BN":t?"pn":"PN"},meridiemParse:/bn|BN|pn|PN/,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM[a] YYYY[an]",LLL:"Do MMMM[a] YYYY[an] HH:mm",LLLL:"dddd, Do MMMM[a] YYYY[an] HH:mm",ll:"Do MMM[.] YYYY[an]",lll:"Do MMM[.] YYYY[an] HH:mm",llll:"ddd[.], Do MMM[.] YYYY[an] HH:mm"},calendar:{sameDay:"[\xcero di saet] LT [de]",nextDay:"[Sib\xea di saet] LT [de]",nextWeek:"dddd [di saet] LT [de]",lastDay:"[Duh di saet] LT [de]",lastWeek:"dddd[a bor\xee di saet] LT [de]",sameElse:"L"},relativeTime:{future:"di %s de",past:"ber\xee %s",s:O,ss:O,m:O,mm:O,h:O,hh:O,d:O,dd:O,w:O,ww:O,M:O,MM:O,y:O,yy:O},dayOfMonthOrdinalParse:/\d{1,2}(?:y\xea|\xea|\.)/,ordinal:function(e,a){var a=a.toLowerCase();return a.includes("w")||a.includes("m")?e+".":e+(e=(a=""+(a=e)).substring(a.length-1),12==(a=1<a.length?a.substring(a.length-2):"")||13==a||"2"!=e&&"3"!=e&&"50"!=a&&"70"!=e&&"80"!=e?"\xea":"y\xea")},week:{dow:1,doy:4}});var Cs={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Is={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},fe=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"],Us=(c.defineLocale("ku",{months:fe,monthsShort:fe,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Is[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Cs[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"});function Gs(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function Vs(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;var a;if(e<100)return Vs(0==(a=e%10)?e/10:a);if(e<1e4){for(;10<=e;)e/=10;return Vs(e)}return Vs(e/=1e3)}c.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(Us[e]||Us[e%10]||Us[100<=e?100:null])},week:{dow:1,doy:7}}),c.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return Vs(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return Vs(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:Gs,mm:"%d Minutten",h:Gs,hh:"%d Stonnen",d:Gs,dd:"%d Deeg",M:Gs,MM:"%d M\xe9int",y:Gs,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var qs={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function Bs(e,a,t,s){return a?Zs(t)[0]:s?Zs(t)[1]:Zs(t)[2]}function Ks(e){return e%10==0||10<e&&e<20}function Zs(e){return qs[e].split("_")}function $s(e,a,t,s){var n=e+" ";return 1===e?n+Bs(0,a,t[0],s):a?n+(Ks(e)?Zs(t)[1]:Zs(t)[0]):s?n+Zs(t)[1]:n+(Ks(e)?Zs(t)[1]:Zs(t)[2])}c.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:$s,m:Bs,mm:$s,h:Bs,hh:$s,d:Bs,dd:$s,M:Bs,MM:$s,y:Bs,yy:$s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var Qs={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function Xs(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function en(e,a,t){return e+" "+Xs(Qs[t],e,a)}function an(e,a,t){return Xs(Qs[t],e,a)}c.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:en,m:an,mm:en,h:an,hh:en,d:an,dd:en,M:an,MM:en,y:an,yy:en},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var tn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=tn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+tn.correctGrammaticalCase(e,s)}};function sn(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}c.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:tn.translate,m:tn.translate,mm:tn.translate,h:tn.translate,hh:tn.translate,d:"dan",dd:tn.translate,M:"mjesec",MM:tn.translate,y:"godinu",yy:tn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),c.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),c.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:sn,ss:sn,m:sn,mm:sn,h:sn,hh:sn,d:sn,dd:sn,M:sn,MM:sn,y:sn,yy:sn},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var nn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},rn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function dn(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}c.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:dn,ss:dn,m:dn,mm:dn,h:dn,hh:dn,d:dn,dd:dn,M:dn,MM:dn,y:dn,yy:dn},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return rn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return nn[e]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u092a\u0939\u093e\u091f\u0947"===a||"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a||"\u0930\u093e\u0924\u094d\u0930\u0940"===a?12<=e?e:e+12:void 0},meridiem:function(e,a,t){return 0<=e&&e<6?"\u092a\u0939\u093e\u091f\u0947":e<12?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),c.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),c.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),c.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var _n={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},on={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"},mn=(c.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return on[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return _n[e]})},week:{dow:1,doy:4}}),c.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"\xe9n time",hh:"%d timer",d:"\xe9n dag",dd:"%d dager",w:"\xe9n uke",ww:"%d uker",M:"\xe9n m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"}),un={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},ln=(c.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return un[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return mn[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),Mn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),_=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Ie=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,hn=(c.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?Mn:ln)[e.month()]:ln},monthsRegex:Ie,monthsShortRegex:Ie,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:_,longMonthsParse:_,shortMonthsParse:_,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),cn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Ye=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],ye=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,Ln=(c.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?cn:hn)[e.month()]:hn},monthsRegex:ye,monthsShortRegex:ye,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:Ye,longMonthsParse:Ye,shortMonthsParse:Ye,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",w:"\xe9\xe9n week",ww:"%d weken",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),c.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}}),{1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"}),Yn={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"},yn=(c.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return Yn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ln[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}}),"stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_")),fn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),na=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^pa\u017a/i,/^lis/i,/^gru/i];function kn(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function pn(e,a,t){var s=e+" ";switch(t){case"ss":return s+(kn(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(kn(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(kn(e)?"godziny":"godzin");case"ww":return s+(kn(e)?"tygodnie":"tygodni");case"MM":return s+(kn(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(kn(e)?"lata":"lat")}}function Dn(e,a,t){return e+(20<=e%100||100<=e&&e%100==0?" de ":" ")+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"s\u0103pt\u0103m\xe2ni",MM:"luni",yy:"ani"}[t]}function Tn(e,a,t){return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",ww:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}c.defineLocale("pl",{months:function(e,a){return e?(/D MMMM/.test(a)?fn:yn)[e.month()]:yn},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),monthsParse:na,longMonthsParse:na,shortMonthsParse:na,weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:pn,m:pn,mm:pn,h:pn,hh:pn,d:"1 dzie\u0144",dd:"%d dni",w:"tydzie\u0144",ww:pn,M:"miesi\u0105c",MM:pn,y:"rok",yy:pn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",invalidDate:"Data inv\xe1lida"}),c.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:Dn,m:"un minut",mm:Dn,h:"o or\u0103",hh:Dn,d:"o zi",dd:Dn,w:"o s\u0103pt\u0103m\xe2n\u0103",ww:Dn,M:"o lun\u0103",MM:Dn,y:"un an",yy:Dn},week:{dow:1,doy:7}});t=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i],c.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:t,longMonthsParse:t,shortMonthsParse:t,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:Tn,m:Tn,mm:Tn,h:"\u0447\u0430\u0441",hh:Tn,d:"\u0434\u0435\u043d\u044c",dd:Tn,w:"\u043d\u0435\u0434\u0435\u043b\u044f",ww:Tn,M:"\u043c\u0435\u0441\u044f\u0446",MM:Tn,y:"\u0433\u043e\u0434",yy:Tn},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}}),m=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],o=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"],c.defineLocale("sd",{months:m,monthsShort:m,weekdays:o,weekdaysShort:o,weekdaysMin:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),c.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}}),n="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),ze="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function gn(e){return 1<e&&e<5}function wn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(gn(e)?"sekundy":"sek\xfand"):n+"sekundami";case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(gn(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(gn(e)?"hodiny":"hod\xedn"):n+"hodinami";case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(gn(e)?"dni":"dn\xed"):n+"d\u0148ami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(gn(e)?"mesiace":"mesiacov"):n+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(gn(e)?"roky":"rokov"):n+"rokmi"}}function bn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}c.defineLocale("sk",{months:n,monthsShort:ze,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:wn,ss:wn,m:wn,mm:wn,h:wn,hh:wn,d:wn,dd:wn,M:wn,MM:wn,y:wn,yy:wn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:bn,ss:bn,m:bn,mm:bn,h:bn,hh:bn,d:bn,dd:bn,M:bn,MM:bn,y:bn,yy:bn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var W={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0430","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],d:["\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d","\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],M:["\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],y:["\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435"],yy:["\u0433\u043e\u0434\u0438\u043d\u0443","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?e%10==1?a[0]:a[1]:a[2]},translate:function(e,a,t,s){var n=W.words[t];return 1===t.length?"y"===t&&a?"\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430":s||a?n[0]:n[1]:(s=W.correctGrammaticalCase(e,n),"yy"===t&&a&&"\u0433\u043e\u0434\u0438\u043d\u0443"===s?e+" \u0433\u043e\u0434\u0438\u043d\u0430":e+" "+s)}},A=(c.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:W.translate,m:W.translate,mm:W.translate,h:W.translate,hh:W.translate,d:W.translate,dd:W.translate,M:W.translate,MM:W.translate,y:W.translate,yy:W.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],d:["jedan dan","jednog dana"],dd:["dan","dana","dana"],M:["jedan mesec","jednog meseca"],MM:["mesec","meseca","meseci"],y:["jednu godinu","jedne godine"],yy:["godinu","godine","godina"]},correctGrammaticalCase:function(e,a){return 1<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?e%10==1?a[0]:a[1]:a[2]},translate:function(e,a,t,s){var n=A.words[t];return 1===t.length?"y"===t&&a?"jedna godina":s||a?n[0]:n[1]:(s=A.correctGrammaticalCase(e,n),"yy"===t&&a&&"godinu"===s?e+" godina":e+" "+s)}}),Hn=(c.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:A.translate,m:A.translate,mm:A.translate,h:A.translate,hh:A.translate,d:A.translate,dd:A.translate,M:A.translate,MM:A.translate,y:A.translate,yy:A.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),c.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1!=~~(e%100/10)&&(1==a||2==a)?":a":":e")},week:{dow:1,doy:4}}),c.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}}),{1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"}),Sn={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"},vn=(c.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Sn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Hn[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),c.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),c.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),{0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"}),jn=(c.defineLocale("tg",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_")},monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(vn[e]||vn[e%10]||vn[100<=e?100:null])},week:{dow:1,doy:7}}),c.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",w:"1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",ww:"%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}}),{1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"}),xn=(c.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:var t;return 0===e?e+"'unjy":e+(jn[t=e%10]||jn[e%100-t]||jn[100<=e?100:null])}},week:{dow:1,doy:7}}),c.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),"pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_"));function Pn(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),e=e%10,s="";0<a&&(s+=xn[a]+"vatlh");0<t&&(s+=(""!==s?" ":"")+xn[t]+"maH");0<e&&(s+=(""!==s?" ":"")+xn[e]);return""===s?"pagh":s}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}c.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Pn,m:"wa\u2019 tup",mm:Pn,h:"wa\u2019 rep",hh:Pn,d:"wa\u2019 jaj",dd:Pn,M:"wa\u2019 jar",MM:Pn,y:"wa\u2019 DIS",yy:Pn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var On={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function Wn(e,a,t,s){e={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s||a?e[t][0]:e[t][1]}function An(e,a,t){return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}function En(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}c.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pzt_Sal_\xc7ar_Per_Cum_Cmt".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(e,a,t){return e<12?t?"\xf6\xf6":"\xd6\xd6":t?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(e){return"\xf6s"===e||"\xd6S"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:var t;return 0===e?e+"'\u0131nc\u0131":e+(On[t=e%10]||On[e%100-t]||On[100<=e?100:null])}},week:{dow:1,doy:7}}),c.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Wn,ss:Wn,m:Wn,mm:Wn,h:Wn,hh:Wn,d:Wn,dd:Wn,M:Wn,MM:Wn,y:Wn,yy:Wn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),c.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),c.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"!==a&&"\u0643\u06d5\u0686"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":e<900?"\u0633\u06d5\u06be\u06d5\u0631":e<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":e<1230?"\u0686\u06c8\u0634":e<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),c.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===e?t.nominative.slice(1,7).concat(t.nominative.slice(0,1)):e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:En("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:En("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:En("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:En("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return En("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return En("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:An,m:An,mm:An,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:An,d:"\u0434\u0435\u043d\u044c",dd:An,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:An,y:"\u0440\u0456\u043a",yy:An},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});i=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],jt=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return c.defineLocale("ur",{months:i,monthsShort:i,weekdays:jt,weekdaysShort:jt,weekdaysMin:jt,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),c.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),c.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),c.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",w:"m\u1ed9t tu\u1ea7n",ww:"%d tu\u1ea7n",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),c.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),c.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a||"\u4e0b\u5348"!==a&&"\u665a\u4e0a"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(e){return e.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(e){return this.week()!==e.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",w:"1 \u5468",ww:"%d \u5468",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),c.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1200?"\u4e0a\u5348":1200===e?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),c.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),c.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),c.locale("en"),c});
2+//# sourceMappingURL=moment-with-locales.min.js.map
2 \ No newline at end of file
public/lib/moment-with-locales.min.js.map+1 -0
@@ -0,0 +1 @@
1+{"version":3,"file":"moment-with-locales.min.js","sources":["moment-with-locales.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","i","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","some","invalidWeekday","_strict","undefined","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","argLen","slice","join","Error","stack","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","keys","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","D","dates","date","d","days","day","e","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","h","hours","hour","ms","milliseconds","millisecond","minutes","minute","M","months","month","Q","quarters","quarter","s","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","w","weeks","week","W","isoweeks","isoweek","y","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","indexOf","getSetYear","makeGetSet","unit","keepTime","set$1","get","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","daysInMonth","x","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","min","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","j","next","loadLocale","arr1","arr2","minl","oldLocale","_abbr","require","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","configFromRFC2822","obsOffset","militaryOffset","parsedArray","weekdayStr","parsedInput","numOffset","hm","defaults","c","configFromArray","currentDate","weekdayOverflow","curWeek","nowValue","now","_useUTC","createLocal","_week","temp","_dayOfYear","yearToUse","_nextDay","expectedWeekday","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","skipped","meridiemHour","isPm","erasConvertYear","prepareConfig","dayOrDate","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","createFromInputFallback","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","unitHasDecimal","orderLen","parseFloat","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","parseIso","diffRes","base","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","property","objectTest","propertyTest","properties","propertyLen","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","priority","prioritizedLen","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","prefix","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","total","ymSign","daysSign","hmsSign","toFixed","pluralForm","pluralize","f","str","plurals","pluralForm$1","pluralize$1","plurals$1","pluralForm$2","pluralize$2","plurals$2","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","months$1","symbolMap","weekdaysParseExact","1","2","3","4","5","6","7","8","9","0","months$2","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","symbolMap$2","reverse","numberMap$1","symbolMap$3","numberMap$2","months$3","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","num","forms","word","standalone","lastDigit","last2Digits","symbolMap$4","numberMap$3","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$5","numberMap$4","symbolMap$6","numberMap$5","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","text","mutationTable","substring","monthsParseExact","monthsRegex$1","minWeekdaysParse","translate","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","ll","lll","llll","months$4","monthsParse$1","monthsRegex$2","plural$1","translate$1","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","months$5","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$6","processRelativeTime$4","symbolMap$7","numberMap$6","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$7","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$9","numberMap$8","१","२","३","४","५","६","७","८","९","०","monthsParse$7","translate$3","weekEndings","translate$4","plural$2","translate$5","eraYearOrdinalRegex","$0","$1","$2","suffixes$1","40","symbolMap$a","numberMap$9","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$b","numberMap$a","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","processRelativeTime$7","isUpper","p","includes","symbolMap$c","numberMap$b","months$8","suffixes$2","processRelativeTime$8","eifelerRegelAppliesToNumber","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$8","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$9","symbolMap$g","numberMap$f","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$b","months$9","days$1","months$a","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","12","13","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","ten","one","suffixes$5","processRelativeTime$a","relativeTimeWithPlural$4","processHoursFunction","nominative","accusative","genitive","months$b","days$2"],"mappings":"AAAC,CAAC,SAAUA,EAAQC,GACG,UAAnB,OAAOC,SAA0C,aAAlB,OAAOC,OAAyBA,OAAOD,QAAUD,EAAQ,EACtE,YAAlB,OAAOG,QAAyBA,OAAOC,IAAMD,OAAOH,CAAO,EAC3DD,EAAOM,OAASL,EAAQ,CAC5B,EAAEM,KAAM,WAAe,aAEnB,IAAIC,EAEJ,SAASC,IACL,OAAOD,EAAaE,MAAM,KAAMC,SAAS,CAC7C,CAQA,SAASC,EAAQC,GACb,OACIA,aAAiBC,OACyB,mBAA1CC,OAAOC,UAAUC,SAASC,KAAKL,CAAK,CAE5C,CAEA,SAASM,EAASN,GAGd,OACa,MAATA,GAC0C,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,CAAK,CAE5C,CAEA,SAASO,EAAWC,EAAGC,GACnB,OAAOP,OAAOC,UAAUO,eAAeL,KAAKG,EAAGC,CAAC,CACpD,CAEA,SAASE,EAAcC,GACnB,GAAIV,OAAOW,oBACP,OAAkD,IAA3CX,OAAOW,oBAAoBD,CAAG,EAAEE,OAGvC,IADA,IAAIC,KACMH,EACN,GAAIL,EAAWK,EAAKG,CAAC,EACjB,OAGR,OAAO,CAEf,CAEA,SAASC,EAAYhB,GACjB,OAAiB,KAAA,IAAVA,CACX,CAEA,SAASiB,EAASjB,GACd,MACqB,UAAjB,OAAOA,GACmC,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,CAAK,CAE5C,CAEA,SAASkB,EAAOlB,GACZ,OACIA,aAAiBmB,MACyB,kBAA1CjB,OAAOC,UAAUC,SAASC,KAAKL,CAAK,CAE5C,CAEA,SAASoB,EAAIC,EAAKC,GAId,IAHA,IAAIC,EAAM,GAENC,EAASH,EAAIP,OACZW,EAAI,EAAGA,EAAID,EAAQ,EAAEC,EACtBF,EAAIG,KAAKJ,EAAGD,EAAII,GAAIA,CAAC,CAAC,EAE1B,OAAOF,CACX,CAEA,SAASI,EAAOnB,EAAGC,GACf,IAAK,IAAIgB,KAAKhB,EACNF,EAAWE,EAAGgB,CAAC,IACfjB,EAAEiB,GAAKhB,EAAEgB,IAYjB,OARIlB,EAAWE,EAAG,UAAU,IACxBD,EAAEJ,SAAWK,EAAEL,UAGfG,EAAWE,EAAG,SAAS,IACvBD,EAAEoB,QAAUnB,EAAEmB,SAGXpB,CACX,CAEA,SAASqB,EAAU7B,EAAO8B,EAAQC,EAAQC,GACtC,OAAOC,GAAiBjC,EAAO8B,EAAQC,EAAQC,EAAQ,CAAA,CAAI,EAAEE,IAAI,CACrE,CAwBA,SAASC,EAAgBC,GAIrB,OAHa,MAATA,EAAEC,MACFD,EAAEC,IAtBC,CACHC,MAAO,CAAA,EACPC,aAAc,GACdC,YAAa,GACbC,SAAU,CAAC,EACXC,cAAe,EACfC,UAAW,CAAA,EACXC,WAAY,KACZC,aAAc,KACdC,cAAe,CAAA,EACfC,gBAAiB,CAAA,EACjBC,IAAK,CAAA,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,QAAS,CAAA,EACTC,gBAAiB,CAAA,CACrB,GAOOjB,EAAEC,GACb,CAqBA,SAASiB,EAAQlB,GACb,IAAImB,EACAC,EACAC,EAAarB,EAAEsB,IAAM,CAACC,MAAMvB,EAAEsB,GAAGE,QAAQ,CAAC,EAyB9C,OAxBIH,IACAF,EAAQpB,EAAgBC,CAAC,EACzBoB,EAAcK,EAAKxD,KAAKkD,EAAMN,gBAAiB,SAAUxB,GACrD,OAAY,MAALA,CACX,CAAC,EACDgC,EACIF,EAAMd,SAAW,GACjB,CAACc,EAAMjB,OACP,CAACiB,EAAMX,YACP,CAACW,EAAMV,cACP,CAACU,EAAMO,gBACP,CAACP,EAAMF,iBACP,CAACE,EAAMZ,WACP,CAACY,EAAMT,eACP,CAACS,EAAMR,kBACN,CAACQ,EAAMJ,UAAaI,EAAMJ,UAAYK,GACvCpB,EAAE2B,WACFN,EACIA,GACwB,IAAxBF,EAAMb,eACwB,IAA9Ba,EAAMhB,aAAazB,QACDkD,KAAAA,IAAlBT,EAAMU,SAGK,MAAnB/D,OAAOgE,UAAqBhE,OAAOgE,SAAS9B,CAAC,EAGtCqB,GAFPrB,EAAE+B,SAAWV,EAIVrB,EAAE+B,SACb,CAEA,SAASC,EAAcb,GACnB,IAAInB,EAAIP,EAAUwC,GAAG,EAOrB,OANa,MAATd,EACA5B,EAAOQ,EAAgBC,CAAC,EAAGmB,CAAK,EAEhCpB,EAAgBC,CAAC,EAAEW,gBAAkB,CAAA,EAGlCX,CACX,CAIA,IAlEIyB,EADA5D,MAAME,UAAU0D,MAGT,SAAUS,GAKb,IAJA,IAAIC,EAAIrE,OAAOR,IAAI,EACf8E,EAAMD,EAAEzD,SAAW,EAGlBW,EAAI,EAAGA,EAAI+C,EAAK/C,CAAC,GAClB,GAAIA,KAAK8C,GAAKD,EAAIjE,KAAKX,KAAM6E,EAAE9C,GAAIA,EAAG8C,CAAC,EACnC,MAAO,CAAA,EAIf,MAAO,CAAA,CACX,EAoDAE,EAAoB7E,EAAM6E,iBAAmB,GAC7CC,EAAmB,CAAA,EAEvB,SAASC,EAAWC,EAAIC,GACpB,IAAIpD,EACAqD,EACAC,EACAC,EAAsBP,EAAiB3D,OAiC3C,GA/BKE,EAAY6D,EAAKI,gBAAgB,IAClCL,EAAGK,iBAAmBJ,EAAKI,kBAE1BjE,EAAY6D,EAAKK,EAAE,IACpBN,EAAGM,GAAKL,EAAKK,IAEZlE,EAAY6D,EAAKM,EAAE,IACpBP,EAAGO,GAAKN,EAAKM,IAEZnE,EAAY6D,EAAKO,EAAE,IACpBR,EAAGQ,GAAKP,EAAKO,IAEZpE,EAAY6D,EAAKd,OAAO,IACzBa,EAAGb,QAAUc,EAAKd,SAEjB/C,EAAY6D,EAAKQ,IAAI,IACtBT,EAAGS,KAAOR,EAAKQ,MAEdrE,EAAY6D,EAAKS,MAAM,IACxBV,EAAGU,OAAST,EAAKS,QAEhBtE,EAAY6D,EAAKU,OAAO,IACzBX,EAAGW,QAAUV,EAAKU,SAEjBvE,EAAY6D,EAAKxC,GAAG,IACrBuC,EAAGvC,IAAMF,EAAgB0C,CAAI,GAE5B7D,EAAY6D,EAAKW,OAAO,IACzBZ,EAAGY,QAAUX,EAAKW,SAGI,EAAtBR,EACA,IAAKvD,EAAI,EAAGA,EAAIuD,EAAqBvD,CAAC,GAG7BT,EADL+D,EAAMF,EADNC,EAAOL,EAAiBhD,GAEJ,IAChBmD,EAAGE,GAAQC,GAKvB,OAAOH,CACX,CAGA,SAASa,EAAOC,GACZf,EAAWjF,KAAMgG,CAAM,EACvBhG,KAAKgE,GAAK,IAAIvC,KAAkB,MAAbuE,EAAOhC,GAAagC,EAAOhC,GAAGE,QAAQ,EAAIS,GAAG,EAC3D3E,KAAK4D,QAAQ,IACd5D,KAAKgE,GAAK,IAAIvC,KAAKkD,GAAG,GAID,CAAA,IAArBK,IACAA,EAAmB,CAAA,EACnB9E,EAAM+F,aAAajG,IAAI,EACvBgF,EAAmB,CAAA,EAE3B,CAEA,SAASkB,EAAShF,GACd,OACIA,aAAe6E,GAAkB,MAAP7E,GAAuC,MAAxBA,EAAIqE,gBAErD,CAEA,SAASY,EAAKC,GAEgC,CAAA,IAAtClG,EAAMmG,6BACa,aAAnB,OAAOC,SACPA,QAAQH,MAERG,QAAQH,KAAK,wBAA0BC,CAAG,CAElD,CAEA,SAASG,EAAUH,EAAKxE,GACpB,IAAI4E,EAAY,CAAA,EAEhB,OAAOvE,EAAO,WAIV,GAHgC,MAA5B/B,EAAMuG,oBACNvG,EAAMuG,mBAAmB,KAAML,CAAG,EAElCI,EAAW,CAMX,IALA,IACIE,EAEAC,EAHAC,EAAO,GAIPC,EAASzG,UAAUgB,OAClBW,EAAI,EAAGA,EAAI8E,EAAQ9E,CAAC,GAAI,CAEzB,GADA2E,EAAM,GACsB,UAAxB,OAAOtG,UAAU2B,GAAiB,CAElC,IAAK4E,KADLD,GAAO,MAAQ3E,EAAI,KACP3B,UAAU,GACdS,EAAWT,UAAU,GAAIuG,CAAG,IAC5BD,GAAOC,EAAM,KAAOvG,UAAU,GAAGuG,GAAO,MAGhDD,EAAMA,EAAII,MAAM,EAAG,CAAC,CAAC,CACzB,MACIJ,EAAMtG,UAAU2B,GAEpB6E,EAAK5E,KAAK0E,CAAG,CACjB,CACAP,EACIC,EACI,gBACA7F,MAAME,UAAUqG,MAAMnG,KAAKiG,CAAI,EAAEG,KAAK,EAAE,EACxC,MACA,IAAIC,OAAQC,KACpB,EACAT,EAAY,CAAA,CAChB,CACA,OAAO5E,EAAGzB,MAAMH,KAAMI,SAAS,CACnC,EAAGwB,CAAE,CACT,CAEA,IAAIsF,GAAe,GAEnB,SAASC,GAAgBC,EAAMhB,GACK,MAA5BlG,EAAMuG,oBACNvG,EAAMuG,mBAAmBW,EAAMhB,CAAG,EAEjCc,GAAaE,KACdjB,EAAKC,CAAG,EACRc,GAAaE,GAAQ,CAAA,EAE7B,CAKA,SAASC,GAAW/G,GAChB,MACyB,aAApB,OAAOgH,UAA4BhH,aAAiBgH,UACX,sBAA1C9G,OAAOC,UAAUC,SAASC,KAAKL,CAAK,CAE5C,CAyBA,SAASiH,GAAaC,EAAcC,GAChC,IACIrC,EADAvD,EAAMI,EAAO,GAAIuF,CAAY,EAEjC,IAAKpC,KAAQqC,EACL5G,EAAW4G,EAAarC,CAAI,IACxBxE,EAAS4G,EAAapC,EAAK,GAAKxE,EAAS6G,EAAYrC,EAAK,GAC1DvD,EAAIuD,GAAQ,GACZnD,EAAOJ,EAAIuD,GAAOoC,EAAapC,EAAK,EACpCnD,EAAOJ,EAAIuD,GAAOqC,EAAYrC,EAAK,GACP,MAArBqC,EAAYrC,GACnBvD,EAAIuD,GAAQqC,EAAYrC,GAExB,OAAOvD,EAAIuD,IAIvB,IAAKA,KAAQoC,EAEL3G,EAAW2G,EAAcpC,CAAI,GAC7B,CAACvE,EAAW4G,EAAarC,CAAI,GAC7BxE,EAAS4G,EAAapC,EAAK,IAG3BvD,EAAIuD,GAAQnD,EAAO,GAAIJ,EAAIuD,EAAK,GAGxC,OAAOvD,CACX,CAEA,SAAS6F,GAAO1B,GACE,MAAVA,GACAhG,KAAK2H,IAAI3B,CAAM,CAEvB,CAlEA9F,EAAMmG,4BAA8B,CAAA,EACpCnG,EAAMuG,mBAAqB,KAoF3B,IAdImB,GADApH,OAAOoH,MAGA,SAAU1G,GACb,IAAIa,EACAF,EAAM,GACV,IAAKE,KAAKb,EACFL,EAAWK,EAAKa,CAAC,GACjBF,EAAIG,KAAKD,CAAC,EAGlB,OAAOF,CACX,EAiBJ,SAASgG,GAASC,EAAQC,EAAcC,GACpC,IAAIC,EAAY,GAAKC,KAAKC,IAAIL,CAAM,EAGpC,OADqB,GAAVA,EAEEE,EAAY,IAAM,GAAM,KACjCE,KAAKE,IAAI,GAAIF,KAAKG,IAAI,EAJRN,EAAeE,EAAU7G,MAIH,CAAC,EAAEV,SAAS,EAAE4H,OAAO,CAAC,EAC1DL,CAER,CAEA,IAAIM,GACI,yMACJC,GAAwB,6CACxBC,GAAkB,GAClBC,GAAuB,GAM3B,SAASC,EAAeC,EAAOC,EAAQC,EAASC,GAC5C,IAAIC,EACoB,UAApB,OAAOD,EACA,WACH,OAAO/I,KAAK+I,GAAU,CAC1B,EAJOA,EAMPH,IACAF,GAAqBE,GAASI,GAE9BH,IACAH,GAAqBG,EAAO,IAAM,WAC9B,OAAOhB,GAASmB,EAAK7I,MAAMH,KAAMI,SAAS,EAAGyI,EAAO,GAAIA,EAAO,EAAE,CACrE,GAEAC,IACAJ,GAAqBI,GAAW,WAC5B,OAAO9I,KAAKiJ,WAAW,EAAEH,QACrBE,EAAK7I,MAAMH,KAAMI,SAAS,EAC1BwI,CACJ,CACJ,EAER,CAmCA,SAASM,GAAaxG,EAAGN,GACrB,OAAKM,EAAEkB,QAAQ,GAIfxB,EAAS+G,GAAa/G,EAAQM,EAAEuG,WAAW,CAAC,EAC5CR,GAAgBrG,GACZqG,GAAgBrG,IAjCxB,SAA4BA,GAKxB,IAJA,IAR4B9B,EAQxB8I,EAAQhH,EAAOiH,MAAMd,EAAgB,EAIpCxG,EAAI,EAAGX,EAASgI,EAAMhI,OAAQW,EAAIX,EAAQW,CAAC,GACxC2G,GAAqBU,EAAMrH,IAC3BqH,EAAMrH,GAAK2G,GAAqBU,EAAMrH,IAEtCqH,EAAMrH,IAhBczB,EAgBc8I,EAAMrH,IAftCsH,MAAM,UAAU,EACf/I,EAAMgJ,QAAQ,WAAY,EAAE,EAEhChJ,EAAMgJ,QAAQ,MAAO,EAAE,EAgB9B,OAAO,SAAUC,GAGb,IAFA,IAAIC,EAAS,GAERzH,EAAI,EAAGA,EAAIX,EAAQW,CAAC,GACrByH,GAAUnC,GAAW+B,EAAMrH,EAAE,EACvBqH,EAAMrH,GAAGpB,KAAK4I,EAAKnH,CAAM,EACzBgH,EAAMrH,GAEhB,OAAOyH,CACX,CACJ,EAUsDpH,CAAM,EAEjDqG,GAAgBrG,GAAQM,CAAC,GAPrBA,EAAEuG,WAAW,EAAEQ,YAAY,CAQ1C,CAEA,SAASN,GAAa/G,EAAQC,GAC1B,IAAIN,EAAI,EAER,SAAS2H,EAA4BpJ,GACjC,OAAO+B,EAAOsH,eAAerJ,CAAK,GAAKA,CAC3C,CAGA,IADAkI,GAAsBoB,UAAY,EACtB,GAAL7H,GAAUyG,GAAsBqB,KAAKzH,CAAM,GAC9CA,EAASA,EAAOkH,QACZd,GACAkB,CACJ,EACAlB,GAAsBoB,UAAY,EAClC7H,EAAAA,EAGJ,OAAOK,CACX,CAiFA,IAAI0H,GAAU,CACVC,EAAG,OACHC,MAAO,OACPC,KAAM,OACNC,EAAG,MACHC,KAAM,MACNC,IAAK,MACLC,EAAG,UACHC,SAAU,UACVC,QAAS,UACTC,EAAG,aACHC,YAAa,aACbC,WAAY,aACZC,IAAK,YACLC,WAAY,YACZC,UAAW,YACXC,EAAG,OACHC,MAAO,OACPC,KAAM,OACNC,GAAI,cACJC,aAAc,cACdC,YAAa,cACbzI,EAAG,SACH0I,QAAS,SACTC,OAAQ,SACRC,EAAG,QACHC,OAAQ,QACRC,MAAO,QACPC,EAAG,UACHC,SAAU,UACVC,QAAS,UACTC,EAAG,SACHC,QAAS,SACTC,OAAQ,SACRC,GAAI,WACJC,UAAW,WACXC,SAAU,WACVC,GAAI,cACJC,aAAc,cACdC,YAAa,cACbC,EAAG,OACHC,MAAO,OACPC,KAAM,OACNC,EAAG,UACHC,SAAU,UACVC,QAAS,UACTC,EAAG,OACHC,MAAO,OACPC,KAAM,MACV,EAEA,SAASC,EAAeC,GACpB,MAAwB,UAAjB,OAAOA,EACRjD,GAAQiD,IAAUjD,GAAQiD,EAAMC,YAAY,GAC5C1I,KAAAA,CACV,CAEA,SAAS2I,GAAqBC,GAC1B,IACIC,EACA/H,EAFAgI,EAAkB,GAItB,IAAKhI,KAAQ8H,EACLrM,EAAWqM,EAAa9H,CAAI,IAC5B+H,EAAiBL,EAAe1H,CAAI,KAEhCgI,EAAgBD,GAAkBD,EAAY9H,IAK1D,OAAOgI,CACX,CAEA,IAAIC,GAAa,CACbpD,KAAM,EACNG,IAAK,GACLG,QAAS,GACT+C,WAAY,GACZC,UAAW,EACXvC,KAAM,GACNG,YAAa,GACbE,OAAQ,GACRG,MAAO,EACPG,QAAS,EACTG,OAAQ,GACR0B,SAAU,EACVC,YAAa,EACblB,KAAM,EACNmB,QAAS,EACTb,KAAM,CACV,EAgBA,IAAIc,GAAS,KACTC,EAAS,OACTC,GAAS,QACTC,EAAS,QACTC,EAAS,aACTC,EAAY,QACZC,GAAY,YACZC,EAAY,gBACZC,GAAY,UACZC,EAAY,UACZC,EAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,EACI,wJACJC,EAAyB,YACzBC,EAAmB,gBAKvB,SAASC,EAAcjG,EAAOkG,EAAOC,GACjCC,GAAQpG,GAASvB,GAAWyH,CAAK,EAC3BA,EACA,SAAUG,EAAUhG,GAChB,OAAOgG,GAAYF,EAAcA,EAAcD,CACnD,CACV,CAEA,SAASI,GAAsBtG,EAAO5C,GAClC,OAAKnF,EAAWmO,GAASpG,CAAK,EAIvBoG,GAAQpG,GAAO5C,EAAO3B,QAAS2B,EAAOF,OAAO,EAHzC,IAAIqJ,OAQRC,GAR8BxG,EAU5BU,QAAQ,KAAM,EAAE,EAChBA,QACG,sCACA,SAAU+F,EAASC,EAAIC,EAAIC,EAAIC,GAC3B,OAAOH,GAAMC,GAAMC,GAAMC,CAC7B,CACJ,CACR,CAjB2C,CAI/C,CAgBA,SAASL,GAAYxD,GACjB,OAAOA,EAAEtC,QAAQ,yBAA0B,MAAM,CACrD,CAEA,SAASoG,EAAS5H,GACd,OAAIA,EAAS,EAEFI,KAAKyH,KAAK7H,CAAM,GAAK,EAErBI,KAAK0H,MAAM9H,CAAM,CAEhC,CAEA,SAAS+H,EAAMC,GACX,IAAIC,EAAgB,CAACD,EACjBE,EAAQ,EAMZ,OAHIA,EADkB,GAAlBD,GAAuBE,SAASF,CAAa,EACrCL,EAASK,CAAa,EAG3BC,CACX,CAEA,IAxDAhB,GAAU,GAwDNkB,GAAS,GAEb,SAASC,EAAcvH,EAAOG,GAC1B,IAAIhH,EAEAqO,EADApH,EAAOD,EAWX,IATqB,UAAjB,OAAOH,IACPA,EAAQ,CAACA,IAETrH,EAASwH,CAAQ,IACjBC,EAAO,SAAU1I,EAAO8I,GACpBA,EAAML,GAAY8G,EAAMvP,CAAK,CACjC,GAEJ8P,EAAWxH,EAAMxH,OACZW,EAAI,EAAGA,EAAIqO,EAAUrO,CAAC,GACvBmO,GAAOtH,EAAM7G,IAAMiH,CAE3B,CAEA,SAASqH,GAAkBzH,EAAOG,GAC9BoH,EAAcvH,EAAO,SAAUtI,EAAO8I,EAAOpD,EAAQ4C,GACjD5C,EAAOsK,GAAKtK,EAAOsK,IAAM,GACzBvH,EAASzI,EAAO0F,EAAOsK,GAAItK,EAAQ4C,CAAK,CAC5C,CAAC,CACL,CAQA,SAAS2H,GAAW1D,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAClE,CAEA,IAAI2D,EAAO,EACPC,GAAQ,EACRC,GAAO,EACPC,EAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAuCd,SAASC,GAAWpE,GAChB,OAAO0D,GAAW1D,CAAI,EAAI,IAAM,GACpC,CArCAlE,EAAe,IAAK,EAAG,EAAG,WACtB,IAAIgE,EAAI3M,KAAK6M,KAAK,EAClB,OAAOF,GAAK,KAAO9E,GAAS8E,EAAG,CAAC,EAAI,IAAMA,CAC9C,CAAC,EAEDhE,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAO3I,KAAK6M,KAAK,EAAI,GACzB,CAAC,EAEDlE,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,MAAM,EACxCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,MAAM,EACzCA,EAAe,EAAG,CAAC,SAAU,EAAG,CAAA,GAAO,EAAG,MAAM,EAIhDkG,EAAc,IAAKN,EAAW,EAC9BM,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,OAAQT,EAAWN,CAAM,EACvCe,EAAc,QAASR,EAAWN,CAAM,EACxCc,EAAc,SAAUR,EAAWN,CAAM,EAEzCoC,EAAc,CAAC,QAAS,UAAWK,CAAI,EACvCL,EAAc,OAAQ,SAAU7P,EAAO8I,GACnCA,EAAMoH,GACe,IAAjBlQ,EAAMc,OAAelB,EAAMgR,kBAAkB5Q,CAAK,EAAIuP,EAAMvP,CAAK,CACzE,CAAC,EACD6P,EAAc,KAAM,SAAU7P,EAAO8I,GACjCA,EAAMoH,GAAQtQ,EAAMgR,kBAAkB5Q,CAAK,CAC/C,CAAC,EACD6P,EAAc,IAAK,SAAU7P,EAAO8I,GAChCA,EAAMoH,GAAQW,SAAS7Q,EAAO,EAAE,CACpC,CAAC,EAUDJ,EAAMgR,kBAAoB,SAAU5Q,GAChC,OAAOuP,EAAMvP,CAAK,GAAoB,GAAfuP,EAAMvP,CAAK,EAAS,KAAO,IACtD,EAIA,IA0HI8Q,EA1HAC,GAAaC,GAAW,WAAY,CAAA,CAAI,EAM5C,SAASA,GAAWC,EAAMC,GACtB,OAAO,SAAUxB,GACb,OAAa,MAATA,GACAyB,GAAMzR,KAAMuR,EAAMvB,CAAK,EACvB9P,EAAM+F,aAAajG,KAAMwR,CAAQ,EAC1BxR,MAEA0R,GAAI1R,KAAMuR,CAAI,CAE7B,CACJ,CAEA,SAASG,GAAInI,EAAKgI,GACd,GAAI,CAAChI,EAAI3F,QAAQ,EACb,OAAOe,IAGX,IAAIuF,EAAIX,EAAIvF,GACR2N,EAAQpI,EAAI3D,OAEhB,OAAQ2L,GACJ,IAAK,eACD,OAAOI,EAAQzH,EAAE0H,mBAAmB,EAAI1H,EAAE2H,gBAAgB,EAC9D,IAAK,UACD,OAAOF,EAAQzH,EAAE4H,cAAc,EAAI5H,EAAE6H,WAAW,EACpD,IAAK,UACD,OAAOJ,EAAQzH,EAAE8H,cAAc,EAAI9H,EAAE+H,WAAW,EACpD,IAAK,QACD,OAAON,EAAQzH,EAAEgI,YAAY,EAAIhI,EAAEiI,SAAS,EAChD,IAAK,OACD,OAAOR,EAAQzH,EAAEkI,WAAW,EAAIlI,EAAEmI,QAAQ,EAC9C,IAAK,MACD,OAAOV,EAAQzH,EAAEoI,UAAU,EAAIpI,EAAEqI,OAAO,EAC5C,IAAK,QACD,OAAOZ,EAAQzH,EAAEsI,YAAY,EAAItI,EAAEuI,SAAS,EAChD,IAAK,WACD,OAAOd,EAAQzH,EAAEwI,eAAe,EAAIxI,EAAEyI,YAAY,EACtD,QACI,OAAOhO,GACf,CACJ,CAEA,SAAS8M,GAAMlI,EAAKgI,EAAMvB,GACtB,IAAI9F,EAAGyH,EAAanG,EAEpB,GAAKjC,EAAI3F,QAAQ,GAAKK,CAAAA,MAAM+L,CAAK,EAAjC,CAOA,OAHA9F,EAAIX,EAAIvF,GACR2N,EAAQpI,EAAI3D,OAEJ2L,GACJ,IAAK,eACD,OAAaI,EACPzH,EAAE0I,mBAAmB5C,CAAK,EAC1B9F,EAAE2I,gBAAgB7C,CAAK,EACjC,IAAK,UACD,OAAa2B,EAAQzH,EAAE4I,cAAc9C,CAAK,EAAI9F,EAAE6I,WAAW/C,CAAK,EACpE,IAAK,UACD,OAAa2B,EAAQzH,EAAE8I,cAAchD,CAAK,EAAI9F,EAAE+I,WAAWjD,CAAK,EACpE,IAAK,QACD,OAAa2B,EAAQzH,EAAEgJ,YAAYlD,CAAK,EAAI9F,EAAEiJ,SAASnD,CAAK,EAChE,IAAK,OACD,OAAa2B,EAAQzH,EAAEkJ,WAAWpD,CAAK,EAAI9F,EAAEmJ,QAAQrD,CAAK,EAK9D,IAAK,WACD,MACJ,QACI,MACR,CAEAnD,EAAOmD,EACPxE,EAAQjC,EAAIiC,MAAM,EAElBvB,EAAgB,MADhBA,EAAOV,EAAIU,KAAK,IACgB,IAAVuB,GAAgB+E,GAAW1D,CAAI,EAAS5C,EAAL,GACnD0H,EACAzH,EAAEoJ,eAAezG,EAAMrB,EAAOvB,CAAI,EAClCC,EAAEqJ,YAAY1G,EAAMrB,EAAOvB,CAAI,CAlCrC,CAmCJ,CAmDA,SAASuJ,GAAY3G,EAAMrB,GACvB,IAtBYiI,EAsBZ,OAAIxP,MAAM4I,CAAI,GAAK5I,MAAMuH,CAAK,EACnB7G,KAEP+O,GAAelI,GAzBPiI,EAyBc,IAxBRA,GAAKA,EAyBvB5G,IAASrB,EAAQkI,GAAY,GACT,GAAbA,EACDnD,GAAW1D,CAAI,EACX,GACA,GACJ,GAAO6G,EAAW,EAAK,EACjC,CAzBItC,EADA7Q,MAAME,UAAU2Q,SAGN,SAAUuC,GAGhB,IADA,IACK5R,EAAI,EAAGA,EAAI/B,KAAKoB,OAAQ,EAAEW,EAC3B,GAAI/B,KAAK+B,KAAO4R,EACZ,OAAO5R,EAGf,MAAO,CAAC,CACZ,EAkBJ4G,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WACjC,OAAO3I,KAAKwL,MAAM,EAAI,CAC1B,CAAC,EAED7C,EAAe,MAAO,EAAG,EAAG,SAAUvG,GAClC,OAAOpC,KAAKiJ,WAAW,EAAE2K,YAAY5T,KAAMoC,CAAM,CACrD,CAAC,EAEDuG,EAAe,OAAQ,EAAG,EAAG,SAAUvG,GACnC,OAAOpC,KAAKiJ,WAAW,EAAEsC,OAAOvL,KAAMoC,CAAM,CAChD,CAAC,EAIDyM,EAAc,IAAKb,EAAWW,CAAsB,EACpDE,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,MAAO,SAAUI,EAAU5M,GACrC,OAAOA,EAAOwR,iBAAiB5E,CAAQ,CAC3C,CAAC,EACDJ,EAAc,OAAQ,SAAUI,EAAU5M,GACtC,OAAOA,EAAOyR,YAAY7E,CAAQ,CACtC,CAAC,EAEDkB,EAAc,CAAC,IAAK,MAAO,SAAU7P,EAAO8I,GACxCA,EAAMqH,IAASZ,EAAMvP,CAAK,EAAI,CAClC,CAAC,EAED6P,EAAc,CAAC,MAAO,QAAS,SAAU7P,EAAO8I,EAAOpD,EAAQ4C,GACvD4C,EAAQxF,EAAOF,QAAQiO,YAAYzT,EAAOsI,EAAO5C,EAAO3B,OAAO,EAEtD,MAATmH,EACApC,EAAMqH,IAASjF,EAEf/I,EAAgBuD,CAAM,EAAE7C,aAAe7C,CAE/C,CAAC,EAID,IAAI0T,GACI,wFAAwFC,MACpF,GACJ,EACJC,GACI,kDAAkDD,MAAM,GAAG,EAC/DE,GAAmB,gCACnBC,GAA0B1F,EAC1B2F,GAAqB3F,EAoIzB,SAAS4F,GAAS/K,EAAKyG,GACnB,GAAKzG,EAAI3F,QAAQ,EAAjB,CAKA,GAAqB,UAAjB,OAAOoM,EACP,GAAI,QAAQnG,KAAKmG,CAAK,EAClBA,EAAQH,EAAMG,CAAK,OAInB,GAAI,CAACzO,EAFLyO,EAAQzG,EAAIN,WAAW,EAAE8K,YAAY/D,CAAK,CAEvB,EACf,OAKZ,IAGA/F,GAAOA,EAFIV,EAAIU,KAAK,GAEN,GAAKA,EAAO/B,KAAKqM,IAAItK,EAAMuJ,GAAYjK,EAAIsD,KAAK,EAAGrB,CAAK,CAAC,EACjEjC,EAAI3D,OACJ2D,EAAIvF,GAAGwQ,YAAYhJ,EAAOvB,CAAI,EAC9BV,EAAIvF,GAAGsQ,SAAS9I,EAAOvB,CAAI,CApBjC,CAsBJ,CAEA,SAASwK,GAAYzE,GACjB,OAAa,MAATA,GACAsE,GAAStU,KAAMgQ,CAAK,EACpB9P,EAAM+F,aAAajG,KAAM,CAAA,CAAI,EACtBA,MAEA0R,GAAI1R,KAAM,OAAO,CAEhC,CA8CA,SAAS0U,KACL,SAASC,EAAU7T,EAAGC,GAClB,OAAOA,EAAEK,OAASN,EAAEM,MACxB,CASA,IAPA,IAKIwT,EACAC,EANAC,EAAc,GACdC,EAAa,GACbC,EAAc,GAKbjT,EAAI,EAAGA,EAAI,GAAIA,CAAC,GAEjBwH,EAAMpH,EAAU,CAAC,IAAMJ,EAAE,EACzB6S,EAASxF,GAAYpP,KAAK4T,YAAYrK,EAAK,EAAE,CAAC,EAC9CsL,EAAQzF,GAAYpP,KAAKuL,OAAOhC,EAAK,EAAE,CAAC,EACxCuL,EAAY9S,KAAK4S,CAAM,EACvBG,EAAW/S,KAAK6S,CAAK,EACrBG,EAAYhT,KAAK6S,CAAK,EACtBG,EAAYhT,KAAK4S,CAAM,EAI3BE,EAAYG,KAAKN,CAAS,EAC1BI,EAAWE,KAAKN,CAAS,EACzBK,EAAYC,KAAKN,CAAS,EAE1B3U,KAAKkV,aAAe,IAAI/F,OAAO,KAAO6F,EAAYjO,KAAK,GAAG,EAAI,IAAK,GAAG,EACtE/G,KAAKmV,kBAAoBnV,KAAKkV,aAC9BlV,KAAKoV,mBAAqB,IAAIjG,OAC1B,KAAO4F,EAAWhO,KAAK,GAAG,EAAI,IAC9B,GACJ,EACA/G,KAAKqV,wBAA0B,IAAIlG,OAC/B,KAAO2F,EAAY/N,KAAK,GAAG,EAAI,IAC/B,GACJ,CACJ,CAEA,SAASuO,GAAW3I,EAAGjK,EAAGwH,EAAGY,EAAGQ,EAAGM,EAAGX,GAGlC,IAAIhB,EAYJ,OAVI0C,EAAI,KAAY,GAALA,GAEX1C,EAAO,IAAIxI,KAAKkL,EAAI,IAAKjK,EAAGwH,EAAGY,EAAGQ,EAAGM,EAAGX,CAAE,EACtCgF,SAAShG,EAAK0I,YAAY,CAAC,GAC3B1I,EAAKsJ,YAAY5G,CAAC,GAGtB1C,EAAO,IAAIxI,KAAKkL,EAAGjK,EAAGwH,EAAGY,EAAGQ,EAAGM,EAAGX,CAAE,EAGjChB,CACX,CAEA,SAASsL,GAAc5I,GACnB,IAAU/F,EAcV,OAZI+F,EAAI,KAAY,GAALA,IACX/F,EAAOrG,MAAME,UAAUqG,MAAMnG,KAAKP,SAAS,GAEtC,GAAKuM,EAAI,IACd1C,EAAO,IAAIxI,KAAKA,KAAK+T,IAAIrV,MAAM,KAAMyG,CAAI,CAAC,EACtCqJ,SAAShG,EAAKyI,eAAe,CAAC,GAC9BzI,EAAKqJ,eAAe3G,CAAC,GAGzB1C,EAAO,IAAIxI,KAAKA,KAAK+T,IAAIrV,MAAM,KAAMC,SAAS,CAAC,EAG5C6J,CACX,CAGA,SAASwL,GAAgB5I,EAAM6I,EAAKC,GAE5BC,EAAM,EAAIF,EAAMC,EAIpB,OAAgBC,GAFH,EAAIL,GAAc1I,EAAM,EAAG+I,CAAG,EAAEtD,UAAU,EAAIoD,GAAO,EAE5C,CAC1B,CAGA,SAASG,GAAmBhJ,EAAMN,EAAMhC,EAASmL,EAAKC,GAClD,IAGIG,EADAvI,EAAY,EAAI,GAAKhB,EAAO,IAFZ,EAAIhC,EAAUmL,GAAO,EACxBD,GAAgB5I,EAAM6I,EAAKC,CAAG,EAO3CI,EAFAxI,GAAa,EAEE0D,GADf6E,EAAUjJ,EAAO,CACgB,EAAIU,EAC9BA,EAAY0D,GAAWpE,CAAI,GAClCiJ,EAAUjJ,EAAO,EACFU,EAAY0D,GAAWpE,CAAI,IAE1CiJ,EAAUjJ,EACKU,GAGnB,MAAO,CACHV,KAAMiJ,EACNvI,UAAWwI,CACf,CACJ,CAEA,SAASC,GAAWzM,EAAKmM,EAAKC,GAC1B,IAEIM,EACAH,EAHAI,EAAaT,GAAgBlM,EAAIsD,KAAK,EAAG6I,EAAKC,CAAG,EACjDpJ,EAAOrE,KAAK0H,OAAOrG,EAAIgE,UAAU,EAAI2I,EAAa,GAAK,CAAC,EAAI,EAehE,OAXI3J,EAAO,EAEP0J,EAAU1J,EAAO4J,GADjBL,EAAUvM,EAAIsD,KAAK,EAAI,EACe6I,EAAKC,CAAG,EACvCpJ,EAAO4J,GAAY5M,EAAIsD,KAAK,EAAG6I,EAAKC,CAAG,GAC9CM,EAAU1J,EAAO4J,GAAY5M,EAAIsD,KAAK,EAAG6I,EAAKC,CAAG,EACjDG,EAAUvM,EAAIsD,KAAK,EAAI,IAEvBiJ,EAAUvM,EAAIsD,KAAK,EACnBoJ,EAAU1J,GAGP,CACHA,KAAM0J,EACNpJ,KAAMiJ,CACV,CACJ,CAEA,SAASK,GAAYtJ,EAAM6I,EAAKC,GAC5B,IAAIO,EAAaT,GAAgB5I,EAAM6I,EAAKC,CAAG,EAC3CS,EAAiBX,GAAgB5I,EAAO,EAAG6I,EAAKC,CAAG,EACvD,OAAQ1E,GAAWpE,CAAI,EAAIqJ,EAAaE,GAAkB,CAC9D,CAIAzN,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,MAAM,EAC3CA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,SAAS,EAI9CkG,EAAc,IAAKb,EAAWW,CAAsB,EACpDE,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,IAAKb,EAAWW,CAAsB,EACpDE,EAAc,KAAMb,EAAWJ,CAAM,EAErCyC,GACI,CAAC,IAAK,KAAM,IAAK,MACjB,SAAU/P,EAAOiM,EAAMvG,EAAQ4C,GAC3B2D,EAAK3D,EAAMN,OAAO,EAAG,CAAC,GAAKuH,EAAMvP,CAAK,CAC1C,CACJ,EA8GA,SAAS+V,GAAcC,EAAIC,GACvB,OAAOD,EAAGxP,MAAMyP,EAAG,CAAC,EAAEC,OAAOF,EAAGxP,MAAM,EAAGyP,CAAC,CAAC,CAC/C,CA3EA5N,EAAe,IAAK,EAAG,KAAM,KAAK,EAElCA,EAAe,KAAM,EAAG,EAAG,SAAUvG,GACjC,OAAOpC,KAAKiJ,WAAW,EAAEwN,YAAYzW,KAAMoC,CAAM,CACrD,CAAC,EAEDuG,EAAe,MAAO,EAAG,EAAG,SAAUvG,GAClC,OAAOpC,KAAKiJ,WAAW,EAAEyN,cAAc1W,KAAMoC,CAAM,CACvD,CAAC,EAEDuG,EAAe,OAAQ,EAAG,EAAG,SAAUvG,GACnC,OAAOpC,KAAKiJ,WAAW,EAAEqB,SAAStK,KAAMoC,CAAM,CAClD,CAAC,EAEDuG,EAAe,IAAK,EAAG,EAAG,SAAS,EACnCA,EAAe,IAAK,EAAG,EAAG,YAAY,EAItCkG,EAAc,IAAKb,CAAS,EAC5Ba,EAAc,IAAKb,CAAS,EAC5Ba,EAAc,IAAKb,CAAS,EAC5Ba,EAAc,KAAM,SAAUI,EAAU5M,GACpC,OAAOA,EAAOsU,iBAAiB1H,CAAQ,CAC3C,CAAC,EACDJ,EAAc,MAAO,SAAUI,EAAU5M,GACrC,OAAOA,EAAOuU,mBAAmB3H,CAAQ,CAC7C,CAAC,EACDJ,EAAc,OAAQ,SAAUI,EAAU5M,GACtC,OAAOA,EAAOwU,cAAc5H,CAAQ,CACxC,CAAC,EAEDoB,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAU/P,EAAOiM,EAAMvG,EAAQ4C,GAChE2B,EAAUvE,EAAOF,QAAQgR,cAAcxW,EAAOsI,EAAO5C,EAAO3B,OAAO,EAExD,MAAXkG,EACAgC,EAAKrC,EAAIK,EAET9H,EAAgBuD,CAAM,EAAE5B,eAAiB9D,CAEjD,CAAC,EAED+P,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAU/P,EAAOiM,EAAMvG,EAAQ4C,GAC9D2D,EAAK3D,GAASiH,EAAMvP,CAAK,CAC7B,CAAC,EAiCD,IAAIyW,GACI,2DAA2D9C,MAAM,GAAG,EACxE+C,GAA6B,8BAA8B/C,MAAM,GAAG,EACpEgD,GAA2B,uBAAuBhD,MAAM,GAAG,EAC3DiD,GAAuBxI,EACvByI,GAA4BzI,EAC5B0I,GAA0B1I,EAkR9B,SAAS2I,KACL,SAAS1C,EAAU7T,EAAGC,GAClB,OAAOA,EAAEK,OAASN,EAAEM,MACxB,CAWA,IATA,IAMIkW,EACAC,EACAC,EARAC,EAAY,GACZ3C,EAAc,GACdC,EAAa,GACbC,EAAc,GAMbjT,EAAI,EAAGA,EAAI,EAAGA,CAAC,GAEhBwH,EAAMpH,EAAU,CAAC,IAAM,EAAE,EAAEiI,IAAIrI,CAAC,EAChCuV,EAAOlI,GAAYpP,KAAKyW,YAAYlN,EAAK,EAAE,CAAC,EAC5CgO,EAASnI,GAAYpP,KAAK0W,cAAcnN,EAAK,EAAE,CAAC,EAChDiO,EAAQpI,GAAYpP,KAAKsK,SAASf,EAAK,EAAE,CAAC,EAC1CkO,EAAUzV,KAAKsV,CAAI,EACnBxC,EAAY9S,KAAKuV,CAAM,EACvBxC,EAAW/S,KAAKwV,CAAK,EACrBxC,EAAYhT,KAAKsV,CAAI,EACrBtC,EAAYhT,KAAKuV,CAAM,EACvBvC,EAAYhT,KAAKwV,CAAK,EAI1BC,EAAUxC,KAAKN,CAAS,EACxBG,EAAYG,KAAKN,CAAS,EAC1BI,EAAWE,KAAKN,CAAS,EACzBK,EAAYC,KAAKN,CAAS,EAE1B3U,KAAK0X,eAAiB,IAAIvI,OAAO,KAAO6F,EAAYjO,KAAK,GAAG,EAAI,IAAK,GAAG,EACxE/G,KAAK2X,oBAAsB3X,KAAK0X,eAChC1X,KAAK4X,kBAAoB5X,KAAK0X,eAE9B1X,KAAK6X,qBAAuB,IAAI1I,OAC5B,KAAO4F,EAAWhO,KAAK,GAAG,EAAI,IAC9B,GACJ,EACA/G,KAAK8X,0BAA4B,IAAI3I,OACjC,KAAO2F,EAAY/N,KAAK,GAAG,EAAI,IAC/B,GACJ,EACA/G,KAAK+X,wBAA0B,IAAI5I,OAC/B,KAAOsI,EAAU1Q,KAAK,GAAG,EAAI,IAC7B,GACJ,CACJ,CAIA,SAASiR,KACL,OAAOhY,KAAK+K,MAAM,EAAI,IAAM,EAChC,CAoCA,SAAStH,GAASmF,EAAOqP,GACrBtP,EAAeC,EAAO,EAAG,EAAG,WACxB,OAAO5I,KAAKiJ,WAAW,EAAExF,SACrBzD,KAAK+K,MAAM,EACX/K,KAAKoL,QAAQ,EACb6M,CACJ,CACJ,CAAC,CACL,CAOA,SAASC,GAAcjJ,EAAU5M,GAC7B,OAAOA,EAAO8V,cAClB,CA/CAxP,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,MAAM,EACxCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGqP,EAAO,EACzCrP,EAAe,IAAK,CAAC,KAAM,GAAI,EAN/B,WACI,OAAO3I,KAAK+K,MAAM,GAAK,EAC3B,CAIyC,EAEzCpC,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKqP,GAAQ7X,MAAMH,IAAI,EAAI6H,GAAS7H,KAAKoL,QAAQ,EAAG,CAAC,CAChE,CAAC,EAEDzC,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAqP,GAAQ7X,MAAMH,IAAI,EAClB6H,GAAS7H,KAAKoL,QAAQ,EAAG,CAAC,EAC1BvD,GAAS7H,KAAK6L,QAAQ,EAAG,CAAC,CAElC,CAAC,EAEDlD,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK3I,KAAK+K,MAAM,EAAIlD,GAAS7H,KAAKoL,QAAQ,EAAG,CAAC,CACzD,CAAC,EAEDzC,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACA3I,KAAK+K,MAAM,EACXlD,GAAS7H,KAAKoL,QAAQ,EAAG,CAAC,EAC1BvD,GAAS7H,KAAK6L,QAAQ,EAAG,CAAC,CAElC,CAAC,EAYDpI,GAAS,IAAK,CAAA,CAAI,EAClBA,GAAS,IAAK,CAAA,CAAK,EAQnBoL,EAAc,IAAKqJ,EAAa,EAChCrJ,EAAc,IAAKqJ,EAAa,EAChCrJ,EAAc,IAAKb,EAAWY,CAAgB,EAC9CC,EAAc,IAAKb,EAAWW,CAAsB,EACpDE,EAAc,IAAKb,EAAWW,CAAsB,EACpDE,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,KAAMb,EAAWJ,CAAM,EAErCiB,EAAc,MAAOZ,EAAS,EAC9BY,EAAc,QAASX,CAAS,EAChCW,EAAc,MAAOZ,EAAS,EAC9BY,EAAc,QAASX,CAAS,EAEhCiC,EAAc,CAAC,IAAK,MAAOQ,CAAI,EAC/BR,EAAc,CAAC,IAAK,MAAO,SAAU7P,EAAO8I,EAAOpD,GAC3CoS,EAASvI,EAAMvP,CAAK,EACxB8I,EAAMuH,GAAmB,KAAXyH,EAAgB,EAAIA,CACtC,CAAC,EACDjI,EAAc,CAAC,IAAK,KAAM,SAAU7P,EAAO8I,EAAOpD,GAC9CA,EAAOqS,MAAQrS,EAAOF,QAAQwS,KAAKhY,CAAK,EACxC0F,EAAOuS,UAAYjY,CACvB,CAAC,EACD6P,EAAc,CAAC,IAAK,MAAO,SAAU7P,EAAO8I,EAAOpD,GAC/CoD,EAAMuH,GAAQd,EAAMvP,CAAK,EACzBmC,EAAgBuD,CAAM,EAAEzB,QAAU,CAAA,CACtC,CAAC,EACD4L,EAAc,MAAO,SAAU7P,EAAO8I,EAAOpD,GACzC,IAAIwS,EAAMlY,EAAMc,OAAS,EACzBgI,EAAMuH,GAAQd,EAAMvP,EAAMgI,OAAO,EAAGkQ,CAAG,CAAC,EACxCpP,EAAMwH,IAAUf,EAAMvP,EAAMgI,OAAOkQ,CAAG,CAAC,EACvC/V,EAAgBuD,CAAM,EAAEzB,QAAU,CAAA,CACtC,CAAC,EACD4L,EAAc,QAAS,SAAU7P,EAAO8I,EAAOpD,GAC3C,IAAIyS,EAAOnY,EAAMc,OAAS,EACtBsX,EAAOpY,EAAMc,OAAS,EAC1BgI,EAAMuH,GAAQd,EAAMvP,EAAMgI,OAAO,EAAGmQ,CAAI,CAAC,EACzCrP,EAAMwH,IAAUf,EAAMvP,EAAMgI,OAAOmQ,EAAM,CAAC,CAAC,EAC3CrP,EAAMyH,IAAUhB,EAAMvP,EAAMgI,OAAOoQ,CAAI,CAAC,EACxCjW,EAAgBuD,CAAM,EAAEzB,QAAU,CAAA,CACtC,CAAC,EACD4L,EAAc,MAAO,SAAU7P,EAAO8I,EAAOpD,GACzC,IAAIwS,EAAMlY,EAAMc,OAAS,EACzBgI,EAAMuH,GAAQd,EAAMvP,EAAMgI,OAAO,EAAGkQ,CAAG,CAAC,EACxCpP,EAAMwH,IAAUf,EAAMvP,EAAMgI,OAAOkQ,CAAG,CAAC,CAC3C,CAAC,EACDrI,EAAc,QAAS,SAAU7P,EAAO8I,EAAOpD,GAC3C,IAAIyS,EAAOnY,EAAMc,OAAS,EACtBsX,EAAOpY,EAAMc,OAAS,EAC1BgI,EAAMuH,GAAQd,EAAMvP,EAAMgI,OAAO,EAAGmQ,CAAI,CAAC,EACzCrP,EAAMwH,IAAUf,EAAMvP,EAAMgI,OAAOmQ,EAAM,CAAC,CAAC,EAC3CrP,EAAMyH,IAAUhB,EAAMvP,EAAMgI,OAAOoQ,CAAI,CAAC,CAC5C,CAAC,EAeGC,EAAarH,GAAW,QAAS,CAAA,CAAI,EAUzC,IAuBIsH,GAvBAC,GAAa,CACbC,SA1mDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EAomDIzP,eA9+CwB,CACxB0P,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,2BACV,EAw+CIjQ,YA58CqB,eA68CrBX,QAv8CiB,KAw8CjB6Q,uBAv8CgC,UAw8ChCC,aAl8CsB,CACtBC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ7N,EAAG,SACH8N,GAAI,WACJ7O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EAm7CI9O,OAAQyI,GACRJ,YAAaM,GAEb3H,KAvkBoB,CACpBmJ,IAAK,EACLC,IAAK,CACT,EAskBIrL,SAAUyM,GACVN,YAAaQ,GACbP,cAAeM,GAEfsD,cAhC6B,eAiCjC,EAGIC,EAAU,GACVC,GAAiB,GAcrB,SAASC,GAAgB9T,GACrB,OAAOA,GAAMA,EAAIqG,YAAY,EAAE1D,QAAQ,IAAK,GAAG,CACnD,CAKA,SAASoR,GAAaC,GAOlB,IANA,IACIC,EACAC,EACAxY,EACA4R,EAJAlS,EAAI,EAMDA,EAAI4Y,EAAMvZ,QAAQ,CAKrB,IAHAwZ,GADA3G,EAAQwG,GAAgBE,EAAM5Y,EAAE,EAAEkS,MAAM,GAAG,GACjC7S,OAEVyZ,GADAA,EAAOJ,GAAgBE,EAAM5Y,EAAI,EAAE,GACrB8Y,EAAK5G,MAAM,GAAG,EAAI,KACrB,EAAJ2G,GAAO,CAEV,GADAvY,EAASyY,GAAW7G,EAAMnN,MAAM,EAAG8T,CAAC,EAAE7T,KAAK,GAAG,CAAC,EAE3C,OAAO1E,EAEX,GACIwY,GACAA,EAAKzZ,QAAUwZ,GArC/B,SAAsBG,EAAMC,GAGxB,IAFA,IACIC,EAAO/S,KAAKqM,IAAIwG,EAAK3Z,OAAQ4Z,EAAK5Z,MAAM,EACvCW,EAAI,EAAGA,EAAIkZ,EAAMlZ,GAAK,EACvB,GAAIgZ,EAAKhZ,KAAOiZ,EAAKjZ,GACjB,OAAOA,EAGf,OAAOkZ,CACX,EA6B6BhH,EAAO4G,CAAI,GAAKD,EAAI,EAGjC,MAEJA,CAAC,EACL,CACA7Y,CAAC,EACL,CACA,OAAO6W,EACX,CAQA,SAASkC,GAAW1T,GAChB,IAAI8T,EAPkB9T,EAUtB,GACsB9C,KAAAA,IAAlBiW,EAAQnT,IACU,aAAlB,OAAOxH,QACPA,QACAA,OAAOD,UAdWyH,EAeDA,IAZHA,EAAKiC,MAAM,aAAa,EActC,IACI6R,EAAYtC,GAAauC,MACRC,QACF,YAAchU,CAAI,EACjCiU,GAAmBH,CAAS,CAKhC,CAJE,MAAO7Q,GAGLkQ,EAAQnT,GAAQ,IACpB,CAEJ,OAAOmT,EAAQnT,EACnB,CAKA,SAASiU,GAAmB1U,EAAK2U,GAsB7B,OApBI3U,KAEI4U,EADAja,EAAYga,CAAM,EACXE,GAAU7U,CAAG,EAEb8U,GAAa9U,EAAK2U,CAAM,GAK/B1C,GAAe2C,EAEQ,aAAnB,OAAOjV,SAA2BA,QAAQH,MAE1CG,QAAQH,KACJ,UAAYQ,EAAM,wCACtB,GAKLiS,GAAauC,KACxB,CAEA,SAASM,GAAarU,EAAMpB,GACxB,GAAe,OAAXA,EAiDA,OADA,OAAOuU,EAAQnT,GACR,KAhDP,IAAI/E,EACAmF,EAAeqR,GAEnB,GADA7S,EAAO0V,KAAOtU,EACO,MAAjBmT,EAAQnT,GACRD,GACI,uBACA,yOAIJ,EACAK,EAAe+S,EAAQnT,GAAMuU,aAC1B,GAA2B,MAAvB3V,EAAO4V,aACd,GAAoC,MAAhCrB,EAAQvU,EAAO4V,cACfpU,EAAe+S,EAAQvU,EAAO4V,cAAcD,YACzC,CAEH,GAAc,OADdtZ,EAASyY,GAAW9U,EAAO4V,YAAY,GAWnC,OAPKpB,GAAexU,EAAO4V,gBACvBpB,GAAexU,EAAO4V,cAAgB,IAE1CpB,GAAexU,EAAO4V,cAAc5Z,KAAK,CACrCoF,KAAMA,EACNpB,OAAQA,CACZ,CAAC,EACM,KATPwB,EAAenF,EAAOsZ,OAW9B,CAeJ,OAbApB,EAAQnT,GAAQ,IAAIM,GAAOH,GAAaC,EAAcxB,CAAM,CAAC,EAEzDwU,GAAepT,IACfoT,GAAepT,GAAMyU,QAAQ,SAAUpI,GACnCgI,GAAahI,EAAErM,KAAMqM,EAAEzN,MAAM,CACjC,CAAC,EAMLqV,GAAmBjU,CAAI,EAEhBmT,EAAQnT,EAMvB,CAgDA,SAASoU,GAAU7U,GACf,IAAItE,EAMJ,GAAI,EAHAsE,EADAA,GAAOA,EAAIb,SAAWa,EAAIb,QAAQqV,MAC5BxU,EAAIb,QAAQqV,MAGjBxU,GACD,OAAOiS,GAGX,GAAI,CAACvY,EAAQsG,CAAG,EAAG,CAGf,GADAtE,EAASyY,GAAWnU,CAAG,EAEnB,OAAOtE,EAEXsE,EAAM,CAACA,EACX,CAEA,OAAO+T,GAAa/T,CAAG,CAC3B,CAMA,SAASmV,GAAcpZ,GACnB,IACI5B,EAAI4B,EAAEqZ,GAuCV,OArCIjb,GAAqC,CAAC,IAAjC2B,EAAgBC,CAAC,EAAEK,WACxBA,EACIjC,EAAE2P,IAAS,GAAgB,GAAX3P,EAAE2P,IACZA,GACA3P,EAAE4P,IAAQ,GAAK5P,EAAE4P,IAAQ8C,GAAY1S,EAAE0P,GAAO1P,EAAE2P,GAAM,EACpDC,GACA5P,EAAE6P,GAAQ,GACE,GAAV7P,EAAE6P,IACW,KAAZ7P,EAAE6P,KACgB,IAAd7P,EAAE8P,KACe,IAAd9P,EAAE+P,KACiB,IAAnB/P,EAAEgQ,KACVH,EACA7P,EAAE8P,IAAU,GAAiB,GAAZ9P,EAAE8P,IACjBA,GACA9P,EAAE+P,IAAU,GAAiB,GAAZ/P,EAAE+P,IACjBA,GACA/P,EAAEgQ,IAAe,GAAsB,IAAjBhQ,EAAEgQ,IACtBA,GACA,CAAC,EAGjBrO,EAAgBC,CAAC,EAAEsZ,qBAClBjZ,EAAWyN,GAAmBE,GAAX3N,KAEpBA,EAAW2N,IAEXjO,EAAgBC,CAAC,EAAEuZ,gBAA+B,CAAC,IAAdlZ,IACrCA,EAAWgO,IAEXtO,EAAgBC,CAAC,EAAEwZ,kBAAiC,CAAC,IAAdnZ,IACvCA,EAAWiO,IAGfvO,EAAgBC,CAAC,EAAEK,SAAWA,GAG3BL,CACX,CAIA,IAAIyZ,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,cAAe,CAAA,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,aAAc,CAAA,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,cAAe,CAAA,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,QAAS,CAAA,GACpB,CAAC,OAAQ,QAAS,CAAA,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElB9Y,GACI,0LACJ+Y,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,IAAK,CAAA,IACLC,IAAK,CAAA,IACLC,IAAK,CAAA,IACLC,IAAK,CAAA,IACLC,IAAK,CAAA,IACLC,IAAK,CAAA,IACLC,IAAK,CAAA,IACLC,IAAK,CAAA,GACT,EAGJ,SAASC,GAAcpX,GACnB,IAAIjE,EACAsb,EAGAC,EACAC,EACAC,EACAC,EALAC,EAAS1X,EAAOR,GAChB6D,EAAQ8S,GAAiBwB,KAAKD,CAAM,GAAKtB,GAAcuB,KAAKD,CAAM,EAKlEE,EAActB,GAASlb,OACvByc,EAActB,GAASnb,OAE3B,GAAIiI,EAAO,CAEP,IADA5G,EAAgBuD,CAAM,EAAE1C,IAAM,CAAA,EACzBvB,EAAI,EAAGsb,EAAIO,EAAa7b,EAAIsb,EAAGtb,CAAC,GACjC,GAAIua,GAASva,GAAG,GAAG4b,KAAKtU,EAAM,EAAE,EAAG,CAC/BkU,EAAajB,GAASva,GAAG,GACzBub,EAA+B,CAAA,IAAnBhB,GAASva,GAAG,GACxB,KACJ,CAEJ,GAAkB,MAAdwb,EACAvX,EAAOvB,SAAW,CAAA,MADtB,CAIA,GAAI4E,EAAM,GAAI,CACV,IAAKtH,EAAI,EAAGsb,EAAIQ,EAAa9b,EAAIsb,EAAGtb,CAAC,GACjC,GAAIwa,GAASxa,GAAG,GAAG4b,KAAKtU,EAAM,EAAE,EAAG,CAE/BmU,GAAcnU,EAAM,IAAM,KAAOkT,GAASxa,GAAG,GAC7C,KACJ,CAEJ,GAAkB,MAAdyb,EAEA,OADAxX,KAAAA,EAAOvB,SAAW,CAAA,EAG1B,CACA,GAAK6Y,GAA2B,MAAdE,EAAlB,CAIA,GAAInU,EAAM,GAAI,CACV,GAAIgT,CAAAA,GAAQsB,KAAKtU,EAAM,EAAE,EAIrB,OADArD,KAAAA,EAAOvB,SAAW,CAAA,GAFlBgZ,EAAW,GAKnB,CACAzX,EAAOP,GAAK8X,GAAcC,GAAc,KAAOC,GAAY,IAC3DK,GAA0B9X,CAAM,CAVhC,MAFIA,EAAOvB,SAAW,CAAA,CAftB,CA4BJ,MACIuB,EAAOvB,SAAW,CAAA,CAE1B,CAEA,SAASsZ,GACLC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEIC,EAAS,CAejB,SAAwBN,GAChBnR,EAAOsE,SAAS6M,EAAS,EAAE,EAC/B,CAAA,GAAInR,GAAQ,GACR,OAAO,IAAOA,EACX,GAAIA,GAAQ,IACf,OAAO,KAAOA,CAClB,CACA,OAAOA,CACX,EAtBuBmR,CAAO,EACtB9J,GAAyB9C,QAAQ6M,CAAQ,EACzC9M,SAAS+M,EAAQ,EAAE,EACnB/M,SAASgN,EAAS,EAAE,EACpBhN,SAASiN,EAAW,EAAE,GAO1B,OAJIC,GACAC,EAAOtc,KAAKmP,SAASkN,EAAW,EAAE,CAAC,EAGhCC,CACX,CAsDA,SAASC,GAAkBvY,GACvB,IAhBqBwY,EAAWC,EAgB5BpV,EAAQ3F,GAAQia,KAAuB3X,EAAOR,GAxC7C8D,QAAQ,qBAAsB,GAAG,EACjCA,QAAQ,WAAY,GAAG,EACvBA,QAAQ,SAAU,EAAE,EACpBA,QAAQ,SAAU,EAAE,CAqC4B,EAEjDD,GACAqV,EAAcX,GACV1U,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,EACV,EA5CR,SAAsBsV,EAAYC,EAAa5Y,GAC3C,GAAI2Y,CAAAA,GAEsB3H,GAA2B5F,QAAQuN,CAAU,IAC/C,IAAIld,KAChBmd,EAAY,GACZA,EAAY,GACZA,EAAY,EAChB,EAAErM,OAAO,EAOjB,OAAO,EALC9P,EAAgBuD,CAAM,EAAErC,gBAAkB,CAAA,EAC1CqC,EAAOvB,SAAW,CAAA,CAK9B,EA6B0B4E,EAAM,GAAIqV,EAAa1Y,CAAM,IAI/CA,EAAO+V,GAAK2C,EACZ1Y,EAAOL,MAhCU6Y,EAgCanV,EAAM,GAhCRoV,EAgCYpV,EAAM,GAhCFwV,EAgCMxV,EAAM,IA/BxDmV,EACO/B,GAAW+B,GACXC,EAEA,EAKI,MAHPK,EAAK3N,SAAS0N,EAAW,EAAE,IAC3Bnc,EAAIoc,EAAK,MACM,KACHpc,GAwBhBsD,EAAOhC,GAAKuR,GAAcpV,MAAM,KAAM6F,EAAO+V,EAAE,EAC/C/V,EAAOhC,GAAGgP,cAAchN,EAAOhC,GAAGgO,cAAc,EAAIhM,EAAOL,IAAI,EAE/DlD,EAAgBuD,CAAM,EAAEtC,QAAU,CAAA,IAElCsC,EAAOvB,SAAW,CAAA,CAE1B,CA0CA,SAASsa,GAASje,EAAGC,EAAGie,GACpB,OAAS,MAALle,EACOA,EAEF,MAALC,EACOA,EAEJie,CACX,CAmBA,SAASC,GAAgBjZ,GACrB,IAAIjE,EAGAmd,EAqFuBlZ,EACvBqG,EAAGmB,EAAUjB,EAAMhC,EAASmL,EAAKC,EAAWwJ,EAAiBC,EAvF7D9e,EAAQ,GAKZ,GAAI0F,CAAAA,EAAOhC,GAAX,CAgCA,IAzDsBgC,EA6BSA,EA3B3BqZ,EAAW,IAAI5d,KAAKvB,EAAMof,IAAI,CAAC,EA2BnCJ,EA1BIlZ,EAAOuZ,QACA,CACHF,EAAS3M,eAAe,EACxB2M,EAAS7M,YAAY,EACrB6M,EAASjN,WAAW,GAGrB,CAACiN,EAAS1M,YAAY,EAAG0M,EAAS5M,SAAS,EAAG4M,EAAShN,QAAQ,GAsBlErM,EAAOsK,IAAyB,MAAnBtK,EAAO+V,GAAGrL,KAAqC,MAApB1K,EAAO+V,GAAGtL,MA8E1C,OADZpE,GAH2BrG,EAzEDA,GA4EfsK,IACLpE,IAAqB,MAAPG,EAAEG,GAAoB,MAAPH,EAAE7B,GACjCkL,EAAM,EACNC,EAAM,EAMNnI,EAAWuR,GACP1S,EAAEH,GACFlG,EAAO+V,GAAGvL,GACVwF,GAAWwJ,EAAY,EAAG,EAAG,CAAC,EAAE3S,IACpC,EACAN,EAAOwS,GAAS1S,EAAEG,EAAG,CAAC,IACtBjC,EAAUwU,GAAS1S,EAAE7B,EAAG,CAAC,GACX,GAAe,EAAVD,KACf4U,EAAkB,CAAA,KAGtBzJ,EAAM1P,EAAOF,QAAQ2Z,MAAM/J,IAC3BC,EAAM3P,EAAOF,QAAQ2Z,MAAM9J,IAE3ByJ,EAAUpJ,GAAWwJ,EAAY,EAAG9J,EAAKC,CAAG,EAE5CnI,EAAWuR,GAAS1S,EAAEN,GAAI/F,EAAO+V,GAAGvL,GAAO4O,EAAQvS,IAAI,EAGvDN,EAAOwS,GAAS1S,EAAEA,EAAG+S,EAAQ7S,IAAI,EAEtB,MAAPF,EAAEnC,IAEFK,EAAU8B,EAAEnC,GACE,GAAe,EAAVK,KACf4U,EAAkB,CAAA,GAER,MAAP9S,EAAEhC,GAETE,EAAU8B,EAAEhC,EAAIqL,GACZrJ,EAAEhC,EAAI,GAAW,EAANgC,EAAEhC,KACb8U,EAAkB,CAAA,IAItB5U,EAAUmL,GAGdnJ,EAAO,GAAKA,EAAO4J,GAAY3I,EAAUkI,EAAKC,CAAG,EACjDlT,EAAgBuD,CAAM,EAAEiW,eAAiB,CAAA,EACf,MAAnBkD,EACP1c,EAAgBuD,CAAM,EAAEkW,iBAAmB,CAAA,GAE3CwD,EAAO7J,GAAmBrI,EAAUjB,EAAMhC,EAASmL,EAAKC,CAAG,EAC3D3P,EAAO+V,GAAGvL,GAAQkP,EAAK7S,KACvB7G,EAAO2Z,WAAaD,EAAKnS,YA9HJ,MAArBvH,EAAO2Z,aACPC,EAAYb,GAAS/Y,EAAO+V,GAAGvL,GAAO0O,EAAY1O,EAAK,GAGnDxK,EAAO2Z,WAAa1O,GAAW2O,CAAS,GAClB,IAAtB5Z,EAAO2Z,cAEPld,EAAgBuD,CAAM,EAAEgW,mBAAqB,CAAA,GAGjD/R,EAAOsL,GAAcqK,EAAW,EAAG5Z,EAAO2Z,UAAU,EACpD3Z,EAAO+V,GAAGtL,IAASxG,EAAKuI,YAAY,EACpCxM,EAAO+V,GAAGrL,IAAQzG,EAAKmI,WAAW,GAQjCrQ,EAAI,EAAGA,EAAI,GAAqB,MAAhBiE,EAAO+V,GAAGha,GAAY,EAAEA,EACzCiE,EAAO+V,GAAGha,GAAKzB,EAAMyB,GAAKmd,EAAYnd,GAI1C,KAAOA,EAAI,EAAGA,CAAC,GACXiE,EAAO+V,GAAGha,GAAKzB,EAAMyB,GACD,MAAhBiE,EAAO+V,GAAGha,GAAoB,IAANA,EAAU,EAAI,EAAKiE,EAAO+V,GAAGha,GAKrC,KAApBiE,EAAO+V,GAAGpL,IACY,IAAtB3K,EAAO+V,GAAGnL,KACY,IAAtB5K,EAAO+V,GAAGlL,KACiB,IAA3B7K,EAAO+V,GAAGjL,MAEV9K,EAAO6Z,SAAW,CAAA,EAClB7Z,EAAO+V,GAAGpL,GAAQ,GAGtB3K,EAAOhC,IAAMgC,EAAOuZ,QAAUhK,GAAgBD,IAAYnV,MACtD,KACAG,CACJ,EACAwf,EAAkB9Z,EAAOuZ,QACnBvZ,EAAOhC,GAAGsO,UAAU,EACpBtM,EAAOhC,GAAGuO,OAAO,EAIJ,MAAfvM,EAAOL,MACPK,EAAOhC,GAAGgP,cAAchN,EAAOhC,GAAGgO,cAAc,EAAIhM,EAAOL,IAAI,EAG/DK,EAAO6Z,WACP7Z,EAAO+V,GAAGpL,GAAQ,IAKlB3K,EAAOsK,IACgB,KAAA,IAAhBtK,EAAOsK,GAAGpG,GACjBlE,EAAOsK,GAAGpG,IAAM4V,IAEhBrd,EAAgBuD,CAAM,EAAErC,gBAAkB,CAAA,EA3E9C,CA6EJ,CAsEA,SAASma,GAA0B9X,GAE/B,GAAIA,EAAOP,KAAOvF,EAAM6f,SACpB3C,GAAcpX,CAAM,OAGxB,GAAIA,EAAOP,KAAOvF,EAAM8f,SACpBzB,GAAkBvY,CAAM,MAD5B,CAIAA,EAAO+V,GAAK,GACZtZ,EAAgBuD,CAAM,EAAEpD,MAAQ,CAAA,EAiBhC,IAdA,IAEIgc,EAEAhW,EA97DyBA,EAAOtI,EAAO0F,EA07DvC0X,EAAS,GAAK1X,EAAOR,GAMrBya,EAAevC,EAAOtc,OACtB8e,EAAyB,EAI7BhQ,EACI/G,GAAanD,EAAOP,GAAIO,EAAOF,OAAO,EAAEuD,MAAMd,EAAgB,GAAK,GACvE6H,EAAWF,EAAO9O,OACbW,EAAI,EAAGA,EAAIqO,EAAUrO,CAAC,GACvB6G,EAAQsH,EAAOnO,IACf6c,GAAelB,EAAOrU,MAAM6F,GAAsBtG,EAAO5C,CAAM,CAAC,GAC5D,IAAI,MAGiB,GADrBma,EAAUzC,EAAOpV,OAAO,EAAGoV,EAAOtM,QAAQwN,CAAW,CAAC,GAC1Cxd,QACRqB,EAAgBuD,CAAM,EAAElD,YAAYd,KAAKme,CAAO,EAEpDzC,EAASA,EAAO5W,MACZ4W,EAAOtM,QAAQwN,CAAW,EAAIA,EAAYxd,MAC9C,EACA8e,GAA0BtB,EAAYxd,QAGtCsH,GAAqBE,IACjBgW,EACAnc,EAAgBuD,CAAM,EAAEpD,MAAQ,CAAA,EAEhCH,EAAgBuD,CAAM,EAAEnD,aAAab,KAAK4G,CAAK,EA39D9BA,EA69DGA,EA79DW5C,EA69DSA,EA59DvC,OADuB1F,EA69DGse,IA59DlB/d,EAAWqP,GAAQtH,CAAK,GACzCsH,GAAOtH,GAAOtI,EAAO0F,EAAO+V,GAAI/V,EAAQ4C,CAAK,GA49DlC5C,EAAO3B,SAAW,CAACua,GAC1Bnc,EAAgBuD,CAAM,EAAEnD,aAAab,KAAK4G,CAAK,EAKvDnG,EAAgBuD,CAAM,EAAEhD,cACpBid,EAAeC,EACC,EAAhBxC,EAAOtc,QACPqB,EAAgBuD,CAAM,EAAElD,YAAYd,KAAK0b,CAAM,EAK/C1X,EAAO+V,GAAGpL,IAAS,IACiB,CAAA,IAApClO,EAAgBuD,CAAM,EAAEzB,SACN,EAAlByB,EAAO+V,GAAGpL,KAEVlO,EAAgBuD,CAAM,EAAEzB,QAAUD,KAAAA,GAGtC7B,EAAgBuD,CAAM,EAAEzC,gBAAkByC,EAAO+V,GAAGjV,MAAM,CAAC,EAC3DrE,EAAgBuD,CAAM,EAAEvC,SAAWuC,EAAOuS,UAE1CvS,EAAO+V,GAAGpL,GAgBd,SAAyBtO,EAAQ2I,EAAMvH,GAGnC,GAAgB,MAAZA,EAEA,OAAOuH,EAEX,OAA2B,MAAvB3I,EAAO+d,aACA/d,EAAO+d,aAAapV,EAAMvH,CAAQ,EACnB,MAAfpB,EAAOiW,OAEd+H,EAAOhe,EAAOiW,KAAK7U,CAAQ,IACfuH,EAAO,KACfA,GAAQ,IAGRA,EADCqV,GAAiB,KAATrV,EAGNA,EAFI,GAKJA,CAEf,EAtCQhF,EAAOF,QACPE,EAAO+V,GAAGpL,GACV3K,EAAOuS,SACX,EAIY,QADZ/U,EAAMf,EAAgBuD,CAAM,EAAExC,OAE1BwC,EAAO+V,GAAGvL,GAAQxK,EAAOF,QAAQwa,gBAAgB9c,EAAKwC,EAAO+V,GAAGvL,EAAK,GAGzEyO,GAAgBjZ,CAAM,EACtB8V,GAAc9V,CAAM,CA9EpB,CA+EJ,CAqHA,SAASua,GAAcva,GACnB,IA7BsBA,EAKlBjE,EACAye,EAuBAlgB,EAAQ0F,EAAOR,GACfpD,EAAS4D,EAAOP,GAIpB,GAFAO,EAAOF,QAAUE,EAAOF,SAAW0V,GAAUxV,EAAON,EAAE,EAExC,OAAVpF,GAA8BgE,KAAAA,IAAXlC,GAAkC,KAAV9B,EAC3C,OAAOoE,EAAc,CAAEzB,UAAW,CAAA,CAAK,CAAC,EAO5C,GAJqB,UAAjB,OAAO3C,IACP0F,EAAOR,GAAKlF,EAAQ0F,EAAOF,QAAQ2a,SAASngB,CAAK,GAGjD4F,EAAS5F,CAAK,EACd,OAAO,IAAIyF,EAAO+V,GAAcxb,CAAK,CAAC,EACnC,GAAIkB,EAAOlB,CAAK,EACnB0F,EAAOhC,GAAK1D,OACT,GAAID,EAAQ+B,CAAM,EAAG,CACxBse,IA3GAC,EACAC,EACAC,EACA9e,EACA+e,EACAC,EAN0B/a,EA4GDA,EArGzBgb,EAAoB,CAAA,EACpBC,EAAajb,EAAOP,GAAGrE,OAE3B,GAAmB,IAAf6f,EACAxe,EAAgBuD,CAAM,EAAE5C,cAAgB,CAAA,EACxC4C,EAAOhC,GAAK,IAAIvC,KAAKkD,GAAG,MAF5B,CAMA,IAAK5C,EAAI,EAAGA,EAAIkf,EAAYlf,CAAC,GACzB+e,EAAe,EACfC,EAAmB,CAAA,EACnBJ,EAAa1b,EAAW,GAAIe,CAAM,EACZ,MAAlBA,EAAOuZ,UACPoB,EAAWpB,QAAUvZ,EAAOuZ,SAEhCoB,EAAWlb,GAAKO,EAAOP,GAAG1D,GAC1B+b,GAA0B6C,CAAU,EAEhC/c,EAAQ+c,CAAU,IAClBI,EAAmB,CAAA,GAOvBD,GAHAA,GAAgBre,EAAgBke,CAAU,EAAE3d,eAGsB,GAAlDP,EAAgBke,CAAU,EAAE9d,aAAazB,OAEzDqB,EAAgBke,CAAU,EAAEO,MAAQJ,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,KACAC,EAAoB,CAAA,GAWpC/e,EAAO+D,EAAQ4a,GAAcD,CAAU,CA5CvC,CA+FA,MAAO,GAAIve,EACP0b,GAA0B9X,CAAM,OAcpC,GAAI1E,EADAhB,GADiB0F,EAVDA,GAWDR,EACE,EACjBQ,EAAOhC,GAAK,IAAIvC,KAAKvB,EAAMof,IAAI,CAAC,OACzB9d,EAAOlB,CAAK,EACnB0F,EAAOhC,GAAK,IAAIvC,KAAKnB,EAAM4B,QAAQ,CAAC,EACZ,UAAjB,OAAO5B,GAndI0F,EAodDA,EAldL,QADZqJ,EAAUmN,GAAgBmB,KAAK3X,EAAOR,EAAE,GAExCQ,EAAOhC,GAAK,IAAIvC,KAAK,CAAC4N,EAAQ,EAAE,GAIpC+N,GAAcpX,CAAM,EACI,CAAA,IAApBA,EAAOvB,WACP,OAAOuB,EAAOvB,SAKlB8Z,GAAkBvY,CAAM,EACA,CAAA,IAApBA,EAAOvB,YACP,OAAOuB,EAAOvB,SAKduB,EAAO3B,QACP2B,EAAOvB,SAAW,CAAA,EAGlBvE,EAAMihB,wBAAwBnb,CAAM,KA4b7B3F,EAAQC,CAAK,GACpB0F,EAAO+V,GAAKra,EAAIpB,EAAMwG,MAAM,CAAC,EAAG,SAAU5F,GACtC,OAAOiQ,SAASjQ,EAAK,EAAE,CAC3B,CAAC,EACD+d,GAAgBjZ,CAAM,GACfpF,EAASN,CAAK,GA1EH0F,EA2EDA,GA1EVhC,KAKPwc,EAAsBlc,KAAAA,KADtBvC,EAAIkL,GAAqBjH,EAAOR,EAAE,GACpB4E,IAAoBrI,EAAEkI,KAAOlI,EAAEqI,IACjDpE,EAAO+V,GAAKra,EACR,CAACK,EAAE8K,KAAM9K,EAAEyJ,MAAOgV,EAAWze,EAAEiJ,KAAMjJ,EAAEsJ,OAAQtJ,EAAE+J,OAAQ/J,EAAEoJ,aAC3D,SAAUjK,GACN,OAAOA,GAAOiQ,SAASjQ,EAAK,EAAE,CAClC,CACJ,EAEA+d,GAAgBjZ,CAAM,GA8DXzE,EAASjB,CAAK,EAErB0F,EAAOhC,GAAK,IAAIvC,KAAKnB,CAAK,EAE1BJ,EAAMihB,wBAAwBnb,CAAM,EAtBxC,OAJKpC,EAAQoC,CAAM,IACfA,EAAOhC,GAAK,MAGTgC,CACX,CAyBA,SAASzD,GAAiBjC,EAAO8B,EAAQC,EAAQC,EAAQqP,GACrD,IAAIqN,EAAI,GA2BR,MAzBe,CAAA,IAAX5c,GAA8B,CAAA,IAAXA,IACnBE,EAASF,EACTA,EAASkC,KAAAA,GAGE,CAAA,IAAXjC,GAA8B,CAAA,IAAXA,IACnBC,EAASD,EACTA,EAASiC,KAAAA,IAIR1D,EAASN,CAAK,GAAKW,EAAcX,CAAK,GACtCD,EAAQC,CAAK,GAAsB,IAAjBA,EAAMc,UAEzBd,EAAQgE,KAAAA,GAIZ0a,EAAEzZ,iBAAmB,CAAA,EACrByZ,EAAEO,QAAUP,EAAEpZ,OAAS+L,EACvBqN,EAAEtZ,GAAKrD,EACP2c,EAAExZ,GAAKlF,EACP0e,EAAEvZ,GAAKrD,EACP4c,EAAE3a,QAAU/B,GA5FRT,EAAM,IAAIkE,EAAO+V,GAAcyE,GADbva,EA+FEgZ,CA9F+B,CAAC,CAAC,GACjDa,WAEJhe,EAAIuf,IAAI,EAAG,GAAG,EACdvf,EAAIge,SAAWvb,KAAAA,GAGZzC,CAwFX,CAEA,SAAS2d,EAAYlf,EAAO8B,EAAQC,EAAQC,GACxC,OAAOC,GAAiBjC,EAAO8B,EAAQC,EAAQC,EAAQ,CAAA,CAAK,CAChE,CAxeApC,EAAMihB,wBAA0B5a,EAC5B,gSAGA,SAAUP,GACNA,EAAOhC,GAAK,IAAIvC,KAAKuE,EAAOR,IAAMQ,EAAOuZ,QAAU,OAAS,GAAG,CACnE,CACJ,EAqLArf,EAAM6f,SAAW,aAGjB7f,EAAM8f,SAAW,aA2SbqB,GAAe9a,EACX,qGACA,WACI,IAAI+a,EAAQ9B,EAAYrf,MAAM,KAAMC,SAAS,EAC7C,OAAIJ,KAAK4D,QAAQ,GAAK0d,EAAM1d,QAAQ,EACzB0d,EAAQthB,KAAOA,KAAOshB,EAEtB5c,EAAc,CAE7B,CACJ,EACA6c,EAAehb,EACX,qGACA,WACI,IAAI+a,EAAQ9B,EAAYrf,MAAM,KAAMC,SAAS,EAC7C,OAAIJ,KAAK4D,QAAQ,GAAK0d,EAAM1d,QAAQ,EACjB5D,KAARshB,EAAethB,KAAOshB,EAEtB5c,EAAc,CAE7B,CACJ,EAOJ,SAAS8c,GAAO5f,EAAI6f,GAChB,IAAI5f,EAAKE,EAIT,GAAI,EAFA0f,EADmB,IAAnBA,EAAQrgB,QAAgBf,EAAQohB,EAAQ,EAAE,EAChCA,EAAQ,GAEjBA,GAAQrgB,OACT,OAAOoe,EAAY,EAGvB,IADA3d,EAAM4f,EAAQ,GACT1f,EAAI,EAAGA,EAAI0f,EAAQrgB,OAAQ,EAAEW,EACzB0f,EAAQ1f,GAAG6B,QAAQ,GAAK6d,CAAAA,EAAQ1f,GAAGH,GAAIC,CAAG,IAC3CA,EAAM4f,EAAQ1f,IAGtB,OAAOF,CACX,CAeA,IAII6f,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eA0CJ,SAASC,GAASC,GACd,IAAIxU,EAAkBH,GAAqB2U,CAAQ,EAC/ChV,EAAQQ,EAAgBP,MAAQ,EAChCnB,EAAW0B,EAAgBzB,SAAW,EACtCJ,EAAS6B,EAAgB5B,OAAS,EAClCc,EAAQc,EAAgBb,MAAQa,EAAgBM,SAAW,EAC3DvD,EAAOiD,EAAgBhD,KAAO,EAC9BW,EAAQqC,EAAgBpC,MAAQ,EAChCI,EAAUgC,EAAgB/B,QAAU,EACpCQ,EAAUuB,EAAgBtB,QAAU,EACpCZ,EAAekC,EAAgBjC,aAAe,EAElDnL,KAAKyE,SAnDT,SAAyB/B,GACrB,IAAIiE,EAEA5E,EADA8f,EAAiB,CAAA,EAEjBC,EAAWJ,GAAStgB,OACxB,IAAKuF,KAAOjE,EACR,GACI7B,EAAW6B,EAAGiE,CAAG,IAEmB,CAAC,IAAjCyK,EAAQzQ,KAAK+gB,GAAU/a,CAAG,GACf,MAAVjE,EAAEiE,IAAiB1C,MAAMvB,EAAEiE,EAAI,GAGpC,MAAO,CAAA,EAIf,IAAK5E,EAAI,EAAGA,EAAI+f,EAAU,EAAE/f,EACxB,GAAIW,EAAEgf,GAAS3f,IAAK,CAChB,GAAI8f,EACA,MAAO,CAAA,EAEPE,WAAWrf,EAAEgf,GAAS3f,GAAG,IAAM8N,EAAMnN,EAAEgf,GAAS3f,GAAG,IACnD8f,EAAiB,CAAA,EAEzB,CAGJ,MAAO,CAAA,CACX,EAsBoCzU,CAAe,EAG/CpN,KAAKgiB,cACD,CAAC9W,EACS,IAAVW,EACU,IAAVT,EACQ,IAARL,EAAe,GAAK,GAGxB/K,KAAKiiB,MAAQ,CAAC9X,EAAe,EAARmC,EAIrBtM,KAAKkiB,QAAU,CAAC3W,EAAoB,EAAXG,EAAuB,GAARkB,EAExC5M,KAAKmiB,MAAQ,GAEbniB,KAAK8F,QAAU0V,GAAU,EAEzBxb,KAAKoiB,QAAQ,CACjB,CAEA,SAASC,GAAWnhB,GAChB,OAAOA,aAAeygB,EAC1B,CAEA,SAASW,GAASxa,GACd,OAAIA,EAAS,EACwB,CAAC,EAA3BI,KAAKqa,MAAM,CAAC,EAAIza,CAAM,EAEtBI,KAAKqa,MAAMza,CAAM,CAEhC,CAqBA,SAAS0a,GAAO5Z,EAAO6Z,GACnB9Z,EAAeC,EAAO,EAAG,EAAG,WACxB,IAAI4Z,EAASxiB,KAAK0iB,UAAU,EACxBC,EAAO,IAKX,OAJIH,EAAS,IACTA,EAAS,CAACA,EACVG,EAAO,KAGPA,EACA9a,GAAS,CAAC,EAAE2a,EAAS,IAAK,CAAC,EAC3BC,EACA5a,GAAS,CAAC,CAAC2a,EAAS,GAAI,CAAC,CAEjC,CAAC,CACL,CAEAA,GAAO,IAAK,GAAG,EACfA,GAAO,KAAM,EAAE,EAIf3T,EAAc,IAAKJ,EAAgB,EACnCI,EAAc,KAAMJ,EAAgB,EACpC0B,EAAc,CAAC,IAAK,MAAO,SAAU7P,EAAO8I,EAAOpD,GAC/CA,EAAOuZ,QAAU,CAAA,EACjBvZ,EAAOL,KAAOid,GAAiBnU,GAAkBnO,CAAK,CAC1D,CAAC,EAOD,IAAIuiB,GAAc,kBAElB,SAASD,GAAiBE,EAASpF,GAC/B,IAAIqF,GAAWrF,GAAU,IAAIrU,MAAMyZ,CAAO,EAK1C,OAAgB,OAAZC,EACO,KAOQ,KAFnB3X,EAAuB,IADvB4X,IADQD,EAAQA,EAAQ3hB,OAAS,IAAM,IACtB,IAAIiI,MAAMwZ,EAAW,GAAK,CAAC,IAAK,EAAG,IAClC,GAAWhT,EAAMmT,EAAM,EAAE,GAEpB,EAAiB,MAAbA,EAAM,GAAa5X,EAAU,CAACA,CAC7D,CAGA,SAAS6X,GAAgB3iB,EAAO4iB,GAC5B,IAASC,EACT,OAAID,EAAMtd,QACN/D,EAAMqhB,EAAME,MAAM,EAClBD,GACKjd,EAAS5F,CAAK,GAAKkB,EAAOlB,CAAK,EAC1BA,EACAkf,EAAYlf,CAAK,GADX4B,QAAQ,EACkBL,EAAIK,QAAQ,EAEtDL,EAAImC,GAAGqf,QAAQxhB,EAAImC,GAAG9B,QAAQ,EAAIihB,CAAI,EACtCjjB,EAAM+F,aAAapE,EAAK,CAAA,CAAK,EACtBA,GAEA2d,EAAYlf,CAAK,EAAEgjB,MAAM,CAExC,CAEA,SAASC,GAAc7gB,GAGnB,MAAO,CAACwF,KAAKqa,MAAM7f,EAAEsB,GAAGwf,kBAAkB,CAAC,CAC/C,CAyJA,SAASC,KACL,MAAOzjB,CAAAA,CAAAA,KAAK4D,QAAQ,GAAI5D,KAAK4F,QAA2B,IAAjB5F,KAAK6F,OAChD,CArJA3F,EAAM+F,aAAe,aAwJrB,IAAIyd,GAAc,wDAIdC,GACI,sKAER,SAASC,GAAetjB,EAAOqG,GAC3B,IAIIkd,EAJAjC,EAAWthB,EAoEf,OA7DI+hB,GAAW/hB,CAAK,EAChBshB,EAAW,CACP3W,GAAI3K,EAAM0hB,cACV9X,EAAG5J,EAAM2hB,MACT3W,EAAGhL,EAAM4hB,OACb,EACO3gB,EAASjB,CAAK,GAAK,CAAC2D,MAAM,CAAC3D,CAAK,GACvCshB,EAAW,GACPjb,EACAib,EAASjb,GAAO,CAACrG,EAEjBshB,EAAS1W,aAAe,CAAC5K,IAErB+I,EAAQqa,GAAY/F,KAAKrd,CAAK,IACtCqiB,EAAoB,MAAbtZ,EAAM,GAAa,CAAC,EAAI,EAC/BuY,EAAW,CACPjV,EAAG,EACHzC,EAAG2F,EAAMxG,EAAMqH,GAAK,EAAIiS,EACxB7X,EAAG+E,EAAMxG,EAAMsH,EAAK,EAAIgS,EACxBjgB,EAAGmN,EAAMxG,EAAMuH,GAAO,EAAI+R,EAC1B/W,EAAGiE,EAAMxG,EAAMwH,GAAO,EAAI8R,EAC1B1X,GAAI4E,EAAMyS,GAA8B,IAArBjZ,EAAMyH,GAAmB,CAAC,EAAI6R,CACrD,IACQtZ,EAAQsa,GAAShG,KAAKrd,CAAK,IACnCqiB,EAAoB,MAAbtZ,EAAM,GAAa,CAAC,EAAI,EAC/BuY,EAAW,CACPjV,EAAGmX,GAASza,EAAM,GAAIsZ,CAAI,EAC1BrX,EAAGwY,GAASza,EAAM,GAAIsZ,CAAI,EAC1BtW,EAAGyX,GAASza,EAAM,GAAIsZ,CAAI,EAC1BzY,EAAG4Z,GAASza,EAAM,GAAIsZ,CAAI,EAC1B7X,EAAGgZ,GAASza,EAAM,GAAIsZ,CAAI,EAC1BjgB,EAAGohB,GAASza,EAAM,GAAIsZ,CAAI,EAC1B/W,EAAGkY,GAASza,EAAM,GAAIsZ,CAAI,CAC9B,GACmB,MAAZf,EAEPA,EAAW,GAES,UAApB,OAAOA,IACN,SAAUA,GAAY,OAAQA,KAE/BmC,EAiDR,SAA2BC,EAAM1C,GAC7B,IAAIzf,EACJ,GAAMmiB,CAAAA,EAAKpgB,QAAQ,GAAK0d,CAAAA,EAAM1d,QAAQ,EAClC,MAAO,CAAEsH,aAAc,EAAGK,OAAQ,CAAE,EAGxC+V,EAAQ2B,GAAgB3B,EAAO0C,CAAI,EAC/BA,EAAKC,SAAS3C,CAAK,EACnBzf,EAAMqiB,GAA0BF,EAAM1C,CAAK,IAE3Czf,EAAMqiB,GAA0B5C,EAAO0C,CAAI,GACvC9Y,aAAe,CAACrJ,EAAIqJ,aACxBrJ,EAAI0J,OAAS,CAAC1J,EAAI0J,QAGtB,OAAO1J,CACX,EAhEY2d,EAAYoC,EAASzc,IAAI,EACzBqa,EAAYoC,EAAS1c,EAAE,CAC3B,GAEA0c,EAAW,IACF3W,GAAK8Y,EAAQ7Y,aACtB0W,EAAStW,EAAIyY,EAAQxY,QAGzBsY,EAAM,IAAIlC,GAASC,CAAQ,EAEvBS,GAAW/hB,CAAK,GAAKO,EAAWP,EAAO,SAAS,IAChDujB,EAAI/d,QAAUxF,EAAMwF,SAGpBuc,GAAW/hB,CAAK,GAAKO,EAAWP,EAAO,UAAU,IACjDujB,EAAIpf,SAAWnE,EAAMmE,UAGlBof,CACX,CAKA,SAASC,GAASK,EAAKxB,GAIf9gB,EAAMsiB,GAAOpC,WAAWoC,EAAI7a,QAAQ,IAAK,GAAG,CAAC,EAEjD,OAAQrF,MAAMpC,CAAG,EAAI,EAAIA,GAAO8gB,CACpC,CAEA,SAASuB,GAA0BF,EAAM1C,GACrC,IAAIzf,EAAM,GAUV,OARAA,EAAI0J,OACA+V,EAAM9V,MAAM,EAAIwY,EAAKxY,MAAM,EAAmC,IAA9B8V,EAAMzU,KAAK,EAAImX,EAAKnX,KAAK,GACzDmX,EAAKZ,MAAM,EAAEhC,IAAIvf,EAAI0J,OAAQ,GAAG,EAAE6Y,QAAQ9C,CAAK,GAC/C,EAAEzf,EAAI0J,OAGV1J,EAAIqJ,aAAe,CAACoW,EAAQ,CAAC0C,EAAKZ,MAAM,EAAEhC,IAAIvf,EAAI0J,OAAQ,GAAG,EAEtD1J,CACX,CAqBA,SAASwiB,GAAYC,EAAWld,GAC5B,OAAO,SAAU/B,EAAKkf,GAClB,IAASC,EAmBT,OAjBe,OAAXD,GAAoBtgB,MAAM,CAACsgB,CAAM,IACjCpd,GACIC,EACA,YACIA,EACA,uDACAA,EAEA,gGACR,EACAod,EAAMnf,EACNA,EAAMkf,EACNA,EAASC,GAIbC,GAAYzkB,KADN4jB,GAAeve,EAAKkf,CAAM,EACTD,CAAS,EACzBtkB,IACX,CACJ,CAEA,SAASykB,GAAYlb,EAAKqY,EAAU8C,EAAUze,GAC1C,IAAIiF,EAAe0W,EAASI,cACxB7X,EAAOmY,GAASV,EAASK,KAAK,EAC9B1W,EAAS+W,GAASV,EAASM,OAAO,EAEjC3Y,EAAI3F,QAAQ,IAKjBqC,EAA+B,MAAhBA,GAA8BA,EAEzCsF,GACA+I,GAAS/K,EAAKmI,GAAInI,EAAK,OAAO,EAAIgC,EAASmZ,CAAQ,EAEnDva,GACAsH,GAAMlI,EAAK,OAAQmI,GAAInI,EAAK,MAAM,EAAIY,EAAOua,CAAQ,EAErDxZ,GACA3B,EAAIvF,GAAGqf,QAAQ9Z,EAAIvF,GAAG9B,QAAQ,EAAIgJ,EAAewZ,CAAQ,EAEzDze,IACA/F,EAAM+F,aAAasD,EAAKY,GAAQoB,CAAM,CAE9C,CA9FAqY,GAAehiB,GAAK+f,GAASlhB,UAC7BmjB,GAAee,QA/Xf,WACI,OAAOf,GAAejf,GAAG,CAC7B,EA4dIyc,GAAMiD,GAAY,EAAG,KAAK,EAC1BO,GAAWP,GAAY,CAAC,EAAG,UAAU,EAEzC,SAASQ,GAASvkB,GACd,MAAwB,UAAjB,OAAOA,GAAsBA,aAAiBwkB,MACzD,CAGA,SAASC,GAAczkB,GACnB,OACI4F,EAAS5F,CAAK,GACdkB,EAAOlB,CAAK,GACZukB,GAASvkB,CAAK,GACdiB,EAASjB,CAAK,GAiDtB,SAA+BA,GAC3B,IAAI0kB,EAAY3kB,EAAQC,CAAK,EACzB2kB,EAAe,CAAA,EACfD,IACAC,EAGkB,IAFd3kB,EAAM4kB,OAAO,SAAUC,GACnB,MAAO,CAAC5jB,EAAS4jB,CAAI,GAAKN,GAASvkB,CAAK,CAC5C,CAAC,EAAEc,QAEX,OAAO4jB,GAAaC,CACxB,EA1D8B3kB,CAAK,GAOnC,SAA6BA,GACzB,IA4BIyB,EACAqjB,EA7BAC,EAAazkB,EAASN,CAAK,GAAK,CAACW,EAAcX,CAAK,EACpDglB,EAAe,CAAA,EACfC,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJC,EAAcD,EAAWnkB,OAE7B,IAAKW,EAAI,EAAGA,EAAIyjB,EAAazjB,GAAK,EAC9BqjB,EAAWG,EAAWxjB,GACtBujB,EAAeA,GAAgBzkB,EAAWP,EAAO8kB,CAAQ,EAG7D,OAAOC,GAAcC,CACzB,EA7C4BhlB,CAAK,GANtB,MAOHA,CAGR,CAsPA,SAASmlB,GAAU3kB,EAAGC,GAClB,IAMI2kB,EAEAC,EARJ,OAAI7kB,EAAEmJ,KAAK,EAAIlJ,EAAEkJ,KAAK,EAGX,CAACwb,GAAU1kB,EAAGD,CAAC,EAoBnB,GAjBH4kB,EAAyC,IAAvB3kB,EAAE8L,KAAK,EAAI/L,EAAE+L,KAAK,IAAW9L,EAAEyK,MAAM,EAAI1K,EAAE0K,MAAM,KAMnEzK,GAJA4kB,EAAS7kB,EAAEsiB,MAAM,EAAEhC,IAAIsE,EAAgB,QAAQ,GAIlC,GAGH3kB,EAAI4kB,IAAWA,EAFf7kB,EAAEsiB,MAAM,EAAEhC,IAAIsE,EAAiB,EAAG,QAAQ,IAM1C3kB,EAAI4kB,IAFJ7kB,EAAEsiB,MAAM,EAAEhC,IAAqB,EAAjBsE,EAAoB,QAAQ,EAEjBC,MAIF,CACzC,CAkHA,SAAStjB,GAAOsE,GAGZ,OAAYrC,KAAAA,IAARqC,EACO3G,KAAK8F,QAAQqV,OAGC,OADrByK,EAAgBpK,GAAU7U,CAAG,KAEzB3G,KAAK8F,QAAU8f,GAEZ5lB,KAEf,CA5HAE,EAAM2lB,cAAgB,uBACtB3lB,EAAM4lB,iBAAmB,yBA6HrBC,GAAOxf,EACP,kJACA,SAAUI,GACN,OAAYrC,KAAAA,IAARqC,EACO3G,KAAKiJ,WAAW,EAEhBjJ,KAAKqC,OAAOsE,CAAG,CAE9B,CACJ,EAEA,SAASsC,KACL,OAAOjJ,KAAK8F,OAChB,CAEA,IAGIkgB,GAAmB,YAGvB,SAASC,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,CAC9C,CAEA,SAASC,GAAiBzZ,EAAGjK,EAAGwH,GAE5B,OAAIyC,EAAI,KAAY,GAALA,EAEJ,IAAIlL,KAAKkL,EAAI,IAAKjK,EAAGwH,CAAC,EAAI8b,GAE1B,IAAIvkB,KAAKkL,EAAGjK,EAAGwH,CAAC,EAAEhI,QAAQ,CAEzC,CAEA,SAASmkB,GAAe1Z,EAAGjK,EAAGwH,GAE1B,OAAIyC,EAAI,KAAY,GAALA,EAEJlL,KAAK+T,IAAI7I,EAAI,IAAKjK,EAAGwH,CAAC,EAAI8b,GAE1BvkB,KAAK+T,IAAI7I,EAAGjK,EAAGwH,CAAC,CAE/B,CAkbA,SAASoc,GAAarX,EAAU5M,GAC5B,OAAOA,EAAOkkB,cAActX,CAAQ,CACxC,CAcA,SAASuX,KAYL,IAXA,IAMIC,EACAC,EACAC,EARAC,EAAa,GACbC,EAAa,GACbC,EAAe,GACf9R,EAAc,GAMd+R,EAAO/mB,KAAK+mB,KAAK,EAEhBhlB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAClC0kB,EAAWrX,GAAY2X,EAAKhlB,GAAGqF,IAAI,EACnCsf,EAAWtX,GAAY2X,EAAKhlB,GAAG2Z,IAAI,EACnCiL,EAAavX,GAAY2X,EAAKhlB,GAAGilB,MAAM,EAEvCH,EAAW7kB,KAAKykB,CAAQ,EACxBG,EAAW5kB,KAAK0kB,CAAQ,EACxBI,EAAa9kB,KAAK2kB,CAAU,EAC5B3R,EAAYhT,KAAKykB,CAAQ,EACzBzR,EAAYhT,KAAK0kB,CAAQ,EACzB1R,EAAYhT,KAAK2kB,CAAU,EAG/B3mB,KAAKinB,WAAa,IAAI9X,OAAO,KAAO6F,EAAYjO,KAAK,GAAG,EAAI,IAAK,GAAG,EACpE/G,KAAKknB,eAAiB,IAAI/X,OAAO,KAAO0X,EAAW9f,KAAK,GAAG,EAAI,IAAK,GAAG,EACvE/G,KAAKmnB,eAAiB,IAAIhY,OAAO,KAAOyX,EAAW7f,KAAK,GAAG,EAAI,IAAK,GAAG,EACvE/G,KAAKonB,iBAAmB,IAAIjY,OACxB,KAAO2X,EAAa/f,KAAK,GAAG,EAAI,IAChC,GACJ,CACJ,CAYA,SAASsgB,GAAuBze,EAAO0e,GACnC3e,EAAe,EAAG,CAACC,EAAOA,EAAMxH,QAAS,EAAGkmB,CAAM,CACtD,CAyEA,SAASC,GAAqBjnB,EAAOiM,EAAMhC,EAASmL,EAAKC,GACrD,IAAI6R,EACJ,OAAa,MAATlnB,EACO0V,GAAWhW,KAAM0V,EAAKC,CAAG,EAAE9I,MAElC2a,EAAcrR,GAAY7V,EAAOoV,EAAKC,CAAG,EAQjD,SAAoBnI,EAAUjB,EAAMhC,EAASmL,EAAKC,GAC1C8R,EAAgB5R,GAAmBrI,EAAUjB,EAAMhC,EAASmL,EAAKC,CAAG,EACpE1L,EAAOsL,GAAckS,EAAc5a,KAAM,EAAG4a,EAAcla,SAAS,EAKvE,OAHAvN,KAAK6M,KAAK5C,EAAKyI,eAAe,CAAC,EAC/B1S,KAAKwL,MAAMvB,EAAKuI,YAAY,CAAC,EAC7BxS,KAAKiK,KAAKA,EAAKmI,WAAW,CAAC,EACpBpS,IACX,EAZ0BW,KAAKX,KAAMM,EAFzBiM,EADOib,EAAPjb,EACOib,EAEyBjb,EAAMhC,EAASmL,EAAKC,CAAG,EAEnE,CA7XAhN,EAAe,IAAK,EAAG,EAAG,SAAS,EACnCA,EAAe,KAAM,EAAG,EAAG,SAAS,EACpCA,EAAe,MAAO,EAAG,EAAG,SAAS,EACrCA,EAAe,OAAQ,EAAG,EAAG,SAAS,EACtCA,EAAe,QAAS,EAAG,EAAG,WAAW,EAEzCA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,SAAS,EAC7CA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,SAAS,EAC3CA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,SAAS,EAC5CA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,SAAS,EAE7CkG,EAAc,IAAKyX,EAAY,EAC/BzX,EAAc,KAAMyX,EAAY,EAChCzX,EAAc,MAAOyX,EAAY,EACjCzX,EAAc,OAiOd,SAAsBI,EAAU5M,GAC5B,OAAOA,EAAOqlB,cAAczY,CAAQ,CACxC,CAnOkC,EAClCJ,EAAc,QAoOd,SAAwBI,EAAU5M,GAC9B,OAAOA,EAAOslB,gBAAgB1Y,CAAQ,CAC1C,CAtOqC,EAErCkB,EACI,CAAC,IAAK,KAAM,MAAO,OAAQ,SAC3B,SAAU7P,EAAO8I,EAAOpD,EAAQ4C,GACxBpF,EAAMwC,EAAOF,QAAQ8hB,UAAUtnB,EAAOsI,EAAO5C,EAAO3B,OAAO,EAC3Db,EACAf,EAAgBuD,CAAM,EAAExC,IAAMA,EAE9Bf,EAAgBuD,CAAM,EAAE9C,WAAa5C,CAE7C,CACJ,EAEAuO,EAAc,IAAKP,EAAa,EAChCO,EAAc,KAAMP,EAAa,EACjCO,EAAc,MAAOP,EAAa,EAClCO,EAAc,OAAQP,EAAa,EACnCO,EAAc,KAsNd,SAA6BI,EAAU5M,GACnC,OAAOA,EAAOwlB,sBAAwBvZ,EAC1C,CAxNuC,EAEvC6B,EAAc,CAAC,IAAK,KAAM,MAAO,QAASK,CAAI,EAC9CL,EAAc,CAAC,MAAO,SAAU7P,EAAO8I,EAAOpD,EAAQ4C,GAClD,IAAIS,EACArD,EAAOF,QAAQ+hB,uBACfxe,EAAQ/I,EAAM+I,MAAMrD,EAAOF,QAAQ+hB,oBAAoB,GAGvD7hB,EAAOF,QAAQgiB,oBACf1e,EAAMoH,GAAQxK,EAAOF,QAAQgiB,oBAAoBxnB,EAAO+I,CAAK,EAE7DD,EAAMoH,GAAQW,SAAS7Q,EAAO,EAAE,CAExC,CAAC,EAgPDqI,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAO3I,KAAKwN,SAAS,EAAI,GAC7B,CAAC,EAED7E,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAO3I,KAAKyN,YAAY,EAAI,GAChC,CAAC,EAMD4Z,GAAuB,OAAQ,UAAU,EACzCA,GAAuB,QAAS,UAAU,EAC1CA,GAAuB,OAAQ,aAAa,EAC5CA,GAAuB,QAAS,aAAa,EAM7CxY,EAAc,IAAKN,EAAW,EAC9BM,EAAc,IAAKN,EAAW,EAC9BM,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,OAAQT,EAAWN,CAAM,EACvCe,EAAc,OAAQT,EAAWN,CAAM,EACvCe,EAAc,QAASR,EAAWN,CAAM,EACxCc,EAAc,QAASR,EAAWN,CAAM,EAExCsC,GACI,CAAC,OAAQ,QAAS,OAAQ,SAC1B,SAAU/P,EAAOiM,EAAMvG,EAAQ4C,GAC3B2D,EAAK3D,EAAMN,OAAO,EAAG,CAAC,GAAKuH,EAAMvP,CAAK,CAC1C,CACJ,EAEA+P,GAAkB,CAAC,KAAM,MAAO,SAAU/P,EAAOiM,EAAMvG,EAAQ4C,GAC3D2D,EAAK3D,GAAS1I,EAAMgR,kBAAkB5Q,CAAK,CAC/C,CAAC,EAqEDqI,EAAe,IAAK,EAAG,KAAM,SAAS,EAItCkG,EAAc,IAAKlB,EAAM,EACzBwC,EAAc,IAAK,SAAU7P,EAAO8I,GAChCA,EAAMqH,IAA8B,GAApBZ,EAAMvP,CAAK,EAAI,EACnC,CAAC,EAYDqI,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,MAAM,EAI3CkG,EAAc,IAAKb,EAAWW,CAAsB,EACpDE,EAAc,KAAMb,EAAWJ,CAAM,EACrCiB,EAAc,KAAM,SAAUI,EAAU5M,GAEpC,OAAO4M,EACD5M,EAAO0lB,yBAA2B1lB,EAAO2lB,cACzC3lB,EAAO4lB,8BACjB,CAAC,EAED9X,EAAc,CAAC,IAAK,MAAOO,EAAI,EAC/BP,EAAc,KAAM,SAAU7P,EAAO8I,GACjCA,EAAMsH,IAAQb,EAAMvP,EAAM+I,MAAM2E,CAAS,EAAE,EAAE,CACjD,CAAC,EAIGka,EAAmB5W,GAAW,OAAQ,CAAA,CAAI,EAI9C3I,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,WAAW,EAItDkG,EAAc,MAAOV,EAAS,EAC9BU,EAAc,OAAQhB,EAAM,EAC5BsC,EAAc,CAAC,MAAO,QAAS,SAAU7P,EAAO8I,EAAOpD,GACnDA,EAAO2Z,WAAa9P,EAAMvP,CAAK,CACnC,CAAC,EAgBDqI,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAAQ,EAI1CkG,EAAc,IAAKb,EAAWY,CAAgB,EAC9CC,EAAc,KAAMb,EAAWJ,CAAM,EACrCuC,EAAc,CAAC,IAAK,MAAOS,EAAM,EAIjC,IAoDIhI,GApDAuf,EAAe7W,GAAW,UAAW,CAAA,CAAK,EAc1C8W,GAVJzf,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAAQ,EAI1CkG,EAAc,IAAKb,EAAWY,CAAgB,EAC9CC,EAAc,KAAMb,EAAWJ,CAAM,EACrCuC,EAAc,CAAC,IAAK,MAAOU,EAAM,EAIdS,GAAW,UAAW,CAAA,CAAK,GAuC9C,IAnCA3I,EAAe,IAAK,EAAG,EAAG,WACtB,MAAO,CAAC,EAAE3I,KAAKmL,YAAY,EAAI,IACnC,CAAC,EAEDxC,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,MAAO,CAAC,EAAE3I,KAAKmL,YAAY,EAAI,GACnC,CAAC,EAEDxC,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,aAAa,EAC9CA,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,WAC9B,OAA4B,GAArB3I,KAAKmL,YAAY,CAC5B,CAAC,EACDxC,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,WAC/B,OAA4B,IAArB3I,KAAKmL,YAAY,CAC5B,CAAC,EACDxC,EAAe,EAAG,CAAC,SAAU,GAAI,EAAG,WAChC,OAA4B,IAArB3I,KAAKmL,YAAY,CAC5B,CAAC,EACDxC,EAAe,EAAG,CAAC,UAAW,GAAI,EAAG,WACjC,OAA4B,IAArB3I,KAAKmL,YAAY,CAC5B,CAAC,EACDxC,EAAe,EAAG,CAAC,WAAY,GAAI,EAAG,WAClC,OAA4B,IAArB3I,KAAKmL,YAAY,CAC5B,CAAC,EACDxC,EAAe,EAAG,CAAC,YAAa,GAAI,EAAG,WACnC,OAA4B,IAArB3I,KAAKmL,YAAY,CAC5B,CAAC,EAID0D,EAAc,IAAKV,GAAWR,EAAM,EACpCkB,EAAc,KAAMV,GAAWP,CAAM,EACrCiB,EAAc,MAAOV,GAAWN,EAAM,EAGjCjF,GAAQ,OAAQA,GAAMxH,QAAU,EAAGwH,IAAS,IAC7CiG,EAAcjG,GAAO0F,EAAa,EAGtC,SAAS+Z,GAAQ/nB,EAAO8I,GACpBA,EAAM0H,IAAejB,EAAuB,KAAhB,KAAOvP,EAAa,CACpD,CAEA,IAAKsI,GAAQ,IAAKA,GAAMxH,QAAU,EAAGwH,IAAS,IAC1CuH,EAAcvH,GAAOyf,EAAO,EAGhCC,EAAoBhX,GAAW,eAAgB,CAAA,CAAK,EAIpD3I,EAAe,IAAK,EAAG,EAAG,UAAU,EACpCA,EAAe,KAAM,EAAG,EAAG,UAAU,EAYjC4f,EAAQxiB,EAAOtF,UAgHnB,SAAS+nB,GAAmB9K,GACxB,OAAOA,CACX,CAhHA6K,EAAMnH,IAAMA,GACZmH,EAAMzP,SAhlCN,SAAoB2P,EAAMC,GAEG,IAArBtoB,UAAUgB,SACLhB,UAAU,GAGJ2kB,GAAc3kB,UAAU,EAAE,GACjCqoB,EAAOroB,UAAU,GACjBsoB,EAAUpkB,KAAAA,GA/CtB,SAAwBhE,GAcpB,IAbA,IAAI+kB,EAAazkB,EAASN,CAAK,GAAK,CAACW,EAAcX,CAAK,EACpDglB,EAAe,CAAA,EACfC,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKHxjB,EAAI,EAAGA,EAAIwjB,EAAWnkB,OAAQW,GAAK,EAEpCujB,EAAeA,GAAgBzkB,EAAWP,EAD/BilB,EAAWxjB,EACmC,EAG7D,OAAOsjB,GAAcC,CACzB,EA4BkCllB,UAAU,EAAE,IAClCsoB,EAAUtoB,UAAU,GACpBqoB,EAAOnkB,KAAAA,GANPokB,EADAD,EAAOnkB,KAAAA,GAYf,IAAIgb,EAAMmJ,GAAQjJ,EAAY,EAC1BmJ,EAAM1F,GAAgB3D,EAAKtf,IAAI,EAAE4oB,QAAQ,KAAK,EAC9CxmB,EAASlC,EAAM2oB,eAAe7oB,KAAM2oB,CAAG,GAAK,WAC5Cnf,EACIkf,IACCrhB,GAAWqhB,EAAQtmB,EAAO,EACrBsmB,EAAQtmB,GAAQzB,KAAKX,KAAMsf,CAAG,EAC9BoJ,EAAQtmB,IAEtB,OAAOpC,KAAKoC,OACRoH,GAAUxJ,KAAKiJ,WAAW,EAAE6P,SAAS1W,EAAQpC,KAAMwf,EAAYF,CAAG,CAAC,CACvE,CACJ,EAqjCAiJ,EAAMnF,MAnjCN,WACI,OAAO,IAAIrd,EAAO/F,IAAI,CAC1B,EAkjCAuoB,EAAMpF,KA3+BN,SAAc7iB,EAAOyM,EAAO+b,GACxB,IAAIC,EAAMC,EAAWxf,EAErB,GAAI,CAACxJ,KAAK4D,QAAQ,EACd,OAAOe,IAKX,GAAI,EAFJokB,EAAO9F,GAAgB3iB,EAAON,IAAI,GAExB4D,QAAQ,EACd,OAAOe,IAOX,OAJAqkB,EAAoD,KAAvCD,EAAKrG,UAAU,EAAI1iB,KAAK0iB,UAAU,GAE/C3V,EAAQD,EAAeC,CAAK,GAGxB,IAAK,OACDvD,EAASic,GAAUzlB,KAAM+oB,CAAI,EAAI,GACjC,MACJ,IAAK,QACDvf,EAASic,GAAUzlB,KAAM+oB,CAAI,EAC7B,MACJ,IAAK,UACDvf,EAASic,GAAUzlB,KAAM+oB,CAAI,EAAI,EACjC,MACJ,IAAK,SACDvf,GAAUxJ,KAAO+oB,GAAQ,IACzB,MACJ,IAAK,SACDvf,GAAUxJ,KAAO+oB,GAAQ,IACzB,MACJ,IAAK,OACDvf,GAAUxJ,KAAO+oB,GAAQ,KACzB,MACJ,IAAK,MACDvf,GAAUxJ,KAAO+oB,EAAOC,GAAa,MACrC,MACJ,IAAK,OACDxf,GAAUxJ,KAAO+oB,EAAOC,GAAa,OACrC,MACJ,QACIxf,EAASxJ,KAAO+oB,CACxB,CAEA,OAAOD,EAAUtf,EAASkG,EAASlG,CAAM,CAC7C,EA67BA+e,EAAMU,MAtrBN,SAAelc,GACX,IAAI0b,EAAMS,EAEV,GAAc5kB,KAAAA,KADdyI,EAAQD,EAAeC,CAAK,IACS,gBAAVA,GAA4B/M,KAAK4D,QAAQ,EAApE,CAMA,OAFAslB,EAAclpB,KAAK4F,OAASygB,GAAiBD,GAErCrZ,GACJ,IAAK,OACD0b,EAAOS,EAAYlpB,KAAK6M,KAAK,EAAI,EAAG,EAAG,CAAC,EAAI,EAC5C,MACJ,IAAK,UACD4b,EACIS,EACIlpB,KAAK6M,KAAK,EACV7M,KAAKwL,MAAM,EAAKxL,KAAKwL,MAAM,EAAI,EAAK,EACpC,CACJ,EAAI,EACR,MACJ,IAAK,QACDid,EAAOS,EAAYlpB,KAAK6M,KAAK,EAAG7M,KAAKwL,MAAM,EAAI,EAAG,CAAC,EAAI,EACvD,MACJ,IAAK,OACDid,EACIS,EACIlpB,KAAK6M,KAAK,EACV7M,KAAKwL,MAAM,EACXxL,KAAKiK,KAAK,EAAIjK,KAAKuK,QAAQ,EAAI,CACnC,EAAI,EACR,MACJ,IAAK,UACDke,EACIS,EACIlpB,KAAK6M,KAAK,EACV7M,KAAKwL,MAAM,EACXxL,KAAKiK,KAAK,GAAKjK,KAAKsN,WAAW,EAAI,GAAK,CAC5C,EAAI,EACR,MACJ,IAAK,MACL,IAAK,OACDmb,EAAOS,EAAYlpB,KAAK6M,KAAK,EAAG7M,KAAKwL,MAAM,EAAGxL,KAAKiK,KAAK,EAAI,CAAC,EAAI,EACjE,MACJ,IAAK,OACDwe,EAAOzoB,KAAKgE,GAAG9B,QAAQ,EACvBumB,GAzIM,KA2IFxC,GACIwC,GAAQzoB,KAAK4F,OAAS,EA7ItB,IA6I0B5F,KAAK0iB,UAAU,GA5I3C,IA8IF,EACA,EACJ,MACJ,IAAK,SACD+F,EAAOzoB,KAAKgE,GAAG9B,QAAQ,EACvBumB,GApJQ,IAoJgBxC,GAAMwC,EApJtB,GAoJyC,EAAI,EACrD,MACJ,IAAK,SACDA,EAAOzoB,KAAKgE,GAAG9B,QAAQ,EACvBumB,GAzJQ,IAyJgBxC,GAAMwC,EAzJtB,GAyJyC,EAAI,EACrD,KACR,CAEAzoB,KAAKgE,GAAGqf,QAAQoF,CAAI,EACpBvoB,EAAM+F,aAAajG,KAAM,CAAA,CAAI,CA5D7B,CA6DA,OAAOA,IACX,EAonBAuoB,EAAMnmB,OAh2BN,SAAgB+mB,GAOZ,OANKA,EAAAA,IACanpB,KAAKyjB,MAAM,EACnBvjB,EAAM4lB,iBACN5lB,EAAM2lB,eAEZrc,EAASN,GAAalJ,KAAMmpB,CAAW,EACpCnpB,KAAKiJ,WAAW,EAAEmgB,WAAW5f,CAAM,CAC9C,EAy1BA+e,EAAMpjB,KAv1BN,SAAcsjB,EAAMY,GAChB,OACIrpB,KAAK4D,QAAQ,IACXsC,EAASuiB,CAAI,GAAKA,EAAK7kB,QAAQ,GAAM4b,EAAYiJ,CAAI,EAAE7kB,QAAQ,GAE1DggB,GAAe,CAAE1e,GAAIlF,KAAMmF,KAAMsjB,CAAK,CAAC,EACzCpmB,OAAOrC,KAAKqC,OAAO,CAAC,EACpBinB,SAAS,CAACD,CAAa,EAErBrpB,KAAKiJ,WAAW,EAAEQ,YAAY,CAE7C,EA60BA8e,EAAMgB,QA30BN,SAAiBF,GACb,OAAOrpB,KAAKmF,KAAKqa,EAAY,EAAG6J,CAAa,CACjD,EA00BAd,EAAMrjB,GAx0BN,SAAYujB,EAAMY,GACd,OACIrpB,KAAK4D,QAAQ,IACXsC,EAASuiB,CAAI,GAAKA,EAAK7kB,QAAQ,GAAM4b,EAAYiJ,CAAI,EAAE7kB,QAAQ,GAE1DggB,GAAe,CAAEze,KAAMnF,KAAMkF,GAAIujB,CAAK,CAAC,EACzCpmB,OAAOrC,KAAKqC,OAAO,CAAC,EACpBinB,SAAS,CAACD,CAAa,EAErBrpB,KAAKiJ,WAAW,EAAEQ,YAAY,CAE7C,EA8zBA8e,EAAMiB,MA5zBN,SAAeH,GACX,OAAOrpB,KAAKkF,GAAGsa,EAAY,EAAG6J,CAAa,CAC/C,EA2zBAd,EAAM7W,IAx0HN,SAAmB3E,GAEf,OAAI1F,GAAWrH,KADf+M,EAAQD,EAAeC,CAAK,EACF,EACf/M,KAAK+M,GAAO,EAEhB/M,IACX,EAm0HAuoB,EAAMkB,UArkBN,WACI,OAAOhnB,EAAgBzC,IAAI,EAAE+C,QACjC,EAokBAwlB,EAAMnE,QAzjCN,SAAiB9jB,EAAOyM,GAEpB,OADI2c,EAAaxjB,EAAS5F,CAAK,EAAIA,EAAQkf,EAAYlf,CAAK,EACvD,EAACN,CAAAA,KAAK4D,QAAQ,GAAK8lB,CAAAA,EAAW9lB,QAAQ,KAI7B,iBADdmJ,EAAQD,EAAeC,CAAK,GAAK,eAEtB/M,KAAKkC,QAAQ,EAAIwnB,EAAWxnB,QAAQ,EAEpCwnB,EAAWxnB,QAAQ,EAAIlC,KAAKojB,MAAM,EAAEwF,QAAQ7b,CAAK,EAAE7K,QAAQ,EAE1E,EA+iCAqmB,EAAMtE,SA7iCN,SAAkB3jB,EAAOyM,GAErB,OADI2c,EAAaxjB,EAAS5F,CAAK,EAAIA,EAAQkf,EAAYlf,CAAK,EACvD,EAACN,CAAAA,KAAK4D,QAAQ,GAAK8lB,CAAAA,EAAW9lB,QAAQ,KAI7B,iBADdmJ,EAAQD,EAAeC,CAAK,GAAK,eAEtB/M,KAAKkC,QAAQ,EAAIwnB,EAAWxnB,QAAQ,EAEpClC,KAAKojB,MAAM,EAAE6F,MAAMlc,CAAK,EAAE7K,QAAQ,EAAIwnB,EAAWxnB,QAAQ,EAExE,EAmiCAqmB,EAAMoB,UAjiCN,SAAmBxkB,EAAMD,EAAI6H,EAAO6c,GAGhC,OAFIC,EAAY3jB,EAASf,CAAI,EAAIA,EAAOqa,EAAYra,CAAI,EACpD2kB,EAAU5jB,EAAShB,CAAE,EAAIA,EAAKsa,EAAYta,CAAE,EAC3C,CAAA,EAAClF,KAAK4D,QAAQ,GAAKimB,EAAUjmB,QAAQ,GAAKkmB,EAAQlmB,QAAQ,KAKvC,OAFxBgmB,EAAcA,GAAe,MAEZ,GACP5pB,KAAKokB,QAAQyF,EAAW9c,CAAK,EAC7B,CAAC/M,KAAKikB,SAAS4F,EAAW9c,CAAK,KACjB,MAAnB6c,EAAY,GACP5pB,KAAKikB,SAAS6F,EAAS/c,CAAK,EAC5B,CAAC/M,KAAKokB,QAAQ0F,EAAS/c,CAAK,EAE1C,EAmhCAwb,EAAMwB,OAjhCN,SAAgBzpB,EAAOyM,GACnB,IAAI2c,EAAaxjB,EAAS5F,CAAK,EAAIA,EAAQkf,EAAYlf,CAAK,EAE5D,MAAK,EAACN,CAAAA,KAAK4D,QAAQ,GAAK8lB,CAAAA,EAAW9lB,QAAQ,KAI7B,iBADdmJ,EAAQD,EAAeC,CAAK,GAAK,eAEtB/M,KAAKkC,QAAQ,IAAMwnB,EAAWxnB,QAAQ,GAE7C8nB,EAAUN,EAAWxnB,QAAQ,EAEzBlC,KAAKojB,MAAM,EAAEwF,QAAQ7b,CAAK,EAAE7K,QAAQ,GAAK8nB,GACzCA,GAAWhqB,KAAKojB,MAAM,EAAE6F,MAAMlc,CAAK,EAAE7K,QAAQ,GAGzD,EAkgCAqmB,EAAM0B,cAhgCN,SAAuB3pB,EAAOyM,GAC1B,OAAO/M,KAAK+pB,OAAOzpB,EAAOyM,CAAK,GAAK/M,KAAKokB,QAAQ9jB,EAAOyM,CAAK,CACjE,EA+/BAwb,EAAM2B,eA7/BN,SAAwB5pB,EAAOyM,GAC3B,OAAO/M,KAAK+pB,OAAOzpB,EAAOyM,CAAK,GAAK/M,KAAKikB,SAAS3jB,EAAOyM,CAAK,CAClE,EA4/BAwb,EAAM3kB,QAplBN,WACI,OAAOA,EAAQ5D,IAAI,CACvB,EAmlBAuoB,EAAMxC,KAAOA,GACbwC,EAAMlmB,OAASA,GACfkmB,EAAMtf,WAAaA,GACnBsf,EAAMlgB,IAAMkZ,EACZgH,EAAMhU,IAAM8M,GACZkH,EAAM4B,aAtlBN,WACI,OAAOloB,EAAO,GAAIQ,EAAgBzC,IAAI,CAAC,CAC3C,EAqlBAuoB,EAAM5gB,IA/0HN,SAAmBoF,EAAOiD,GACtB,GAAqB,UAAjB,OAAOjD,EAKP,IAHA,IAAIqd,EArSZ,SAA6BC,GACzB,IACIC,EADAvd,EAAQ,GAEZ,IAAKud,KAAKD,EACFxpB,EAAWwpB,EAAUC,CAAC,GACtBvd,EAAM/K,KAAK,CAAEuP,KAAM+Y,EAAGC,SAAUld,GAAWid,EAAG,CAAC,EAMvD,OAHAvd,EAAMkI,KAAK,SAAUnU,EAAGC,GACpB,OAAOD,EAAEypB,SAAWxpB,EAAEwpB,QAC1B,CAAC,EACMxd,CACX,EAwRQA,EAAQE,GAAqBF,CAAK,CACS,EAEvCyd,EAAiBJ,EAAYhpB,OAC5BW,EAAI,EAAGA,EAAIyoB,EAAgBzoB,CAAC,GAC7B/B,KAAKoqB,EAAYroB,GAAGwP,MAAMxE,EAAMqd,EAAYroB,GAAGwP,KAAK,OAIxD,GAAIlK,GAAWrH,KADf+M,EAAQD,EAAeC,CAAK,EACF,EACtB,OAAO/M,KAAK+M,GAAOiD,CAAK,EAGhC,OAAOhQ,IACX,EAg0HAuoB,EAAMK,QA3wBN,SAAiB7b,GACb,IAAI0b,EAAMS,EAEV,GAAc5kB,KAAAA,KADdyI,EAAQD,EAAeC,CAAK,IACS,gBAAVA,GAA4B/M,KAAK4D,QAAQ,EAApE,CAMA,OAFAslB,EAAclpB,KAAK4F,OAASygB,GAAiBD,GAErCrZ,GACJ,IAAK,OACD0b,EAAOS,EAAYlpB,KAAK6M,KAAK,EAAG,EAAG,CAAC,EACpC,MACJ,IAAK,UACD4b,EAAOS,EACHlpB,KAAK6M,KAAK,EACV7M,KAAKwL,MAAM,EAAKxL,KAAKwL,MAAM,EAAI,EAC/B,CACJ,EACA,MACJ,IAAK,QACDid,EAAOS,EAAYlpB,KAAK6M,KAAK,EAAG7M,KAAKwL,MAAM,EAAG,CAAC,EAC/C,MACJ,IAAK,OACDid,EAAOS,EACHlpB,KAAK6M,KAAK,EACV7M,KAAKwL,MAAM,EACXxL,KAAKiK,KAAK,EAAIjK,KAAKuK,QAAQ,CAC/B,EACA,MACJ,IAAK,UACDke,EAAOS,EACHlpB,KAAK6M,KAAK,EACV7M,KAAKwL,MAAM,EACXxL,KAAKiK,KAAK,GAAKjK,KAAKsN,WAAW,EAAI,EACvC,EACA,MACJ,IAAK,MACL,IAAK,OACDmb,EAAOS,EAAYlpB,KAAK6M,KAAK,EAAG7M,KAAKwL,MAAM,EAAGxL,KAAKiK,KAAK,CAAC,EACzD,MACJ,IAAK,OACDwe,EAAOzoB,KAAKgE,GAAG9B,QAAQ,EACvBumB,GAAQxC,GACJwC,GAAQzoB,KAAK4F,OAAS,EAzElB,IAyEsB5F,KAAK0iB,UAAU,GAxEvC,IA0EN,EACA,MACJ,IAAK,SACD+F,EAAOzoB,KAAKgE,GAAG9B,QAAQ,EACvBumB,GAAQxC,GAAMwC,EA/EN,GA+EyB,EACjC,MACJ,IAAK,SACDA,EAAOzoB,KAAKgE,GAAG9B,QAAQ,EACvBumB,GAAQxC,GAAMwC,EApFN,GAoFyB,EACjC,KACR,CAEAzoB,KAAKgE,GAAGqf,QAAQoF,CAAI,EACpBvoB,EAAM+F,aAAajG,KAAM,CAAA,CAAI,CAtD7B,CAuDA,OAAOA,IACX,EA+sBAuoB,EAAM3D,SAAWA,GACjB2D,EAAMkC,QA7nBN,WACI,IAAI/nB,EAAI1C,KACR,MAAO,CACH0C,EAAEmK,KAAK,EACPnK,EAAE8I,MAAM,EACR9I,EAAEuH,KAAK,EACPvH,EAAEsI,KAAK,EACPtI,EAAE2I,OAAO,EACT3I,EAAEoJ,OAAO,EACTpJ,EAAEyI,YAAY,EAEtB,EAmnBAod,EAAMmC,SAjnBN,WACI,IAAIhoB,EAAI1C,KACR,MAAO,CACH4M,MAAOlK,EAAEmK,KAAK,EACdtB,OAAQ7I,EAAE8I,MAAM,EAChBvB,KAAMvH,EAAEuH,KAAK,EACbc,MAAOrI,EAAEqI,MAAM,EACfK,QAAS1I,EAAE0I,QAAQ,EACnBS,QAASnJ,EAAEmJ,QAAQ,EACnBX,aAAcxI,EAAEwI,aAAa,CACjC,CACJ,EAumBAqd,EAAMoC,OAnoBN,WACI,OAAO,IAAIlpB,KAAKzB,KAAKkC,QAAQ,CAAC,CAClC,EAkoBAqmB,EAAMqC,YAp7BN,SAAqBC,GACjB,IAIInoB,EAJJ,OAAK1C,KAAK4D,QAAQ,GAIdlB,GADAF,EAAqB,CAAA,IAAfqoB,GACI7qB,KAAKojB,MAAM,EAAE5gB,IAAI,EAAIxC,MAC7B6M,KAAK,EAAI,GAAgB,KAAXnK,EAAEmK,KAAK,EAChB3D,GACHxG,EACAF,EACM,iCACA,8BACV,EAEA6E,GAAW5F,KAAKhB,UAAUmqB,WAAW,EAEjCpoB,EACOxC,KAAK2qB,OAAO,EAAEC,YAAY,EAE1B,IAAInpB,KAAKzB,KAAKkC,QAAQ,EAAuB,GAAnBlC,KAAK0iB,UAAU,EAAS,GAAI,EACxDkI,YAAY,EACZthB,QAAQ,IAAKJ,GAAaxG,EAAG,GAAG,CAAC,EAGvCwG,GACHxG,EACAF,EAAM,+BAAiC,4BAC3C,EAzBW,IA0Bf,EAy5BA+lB,EAAMuC,QAj5BN,WACI,IAIIC,EACAC,EACAne,EANJ,OAAK7M,KAAK4D,QAAQ,GAGdoF,EAAO,SACP+hB,EAAO,GAKN/qB,KAAKirB,QAAQ,IACdjiB,EAA4B,IAArBhJ,KAAK0iB,UAAU,EAAU,aAAe,mBAC/CqI,EAAO,KAEXC,EAAS,IAAMhiB,EAAO,MACtB6D,EAAO,GAAK7M,KAAK6M,KAAK,GAAK7M,KAAK6M,KAAK,GAAK,KAAO,OAAS,SAInD7M,KAAKoC,OAAO4oB,EAASne,EAHjB,yBACFke,EAAO,OAEoC,GAjBzC,qBAAuB/qB,KAAKwF,GAAK,MAkBhD,EA83BsB,aAAlB,OAAO0lB,QAAwC,MAAdA,OAAOC,MACxC5C,EAAM2C,OAAOC,IAAI,4BAA4B,GAAK,WAC9C,MAAO,UAAYnrB,KAAKoC,OAAO,EAAI,GACvC,GAEJmmB,EAAM6C,OA7mBN,WAEI,OAAOprB,KAAK4D,QAAQ,EAAI5D,KAAK4qB,YAAY,EAAI,IACjD,EA2mBArC,EAAM7nB,SAh8BN,WACI,OAAOV,KAAKojB,MAAM,EAAE/gB,OAAO,IAAI,EAAED,OAAO,kCAAkC,CAC9E,EA+7BAmmB,EAAM8C,KAjpBN,WACI,OAAOnjB,KAAK0H,MAAM5P,KAAKkC,QAAQ,EAAI,GAAI,CAC3C,EAgpBAqmB,EAAMrmB,QAtpBN,WACI,OAAOlC,KAAKgE,GAAG9B,QAAQ,EAA0B,KAArBlC,KAAK6F,SAAW,EAChD,EAqpBA0iB,EAAM+C,aAhmBN,WACI,MAAO,CACHhrB,MAAON,KAAKwF,GACZpD,OAAQpC,KAAKyF,GACbpD,OAAQrC,KAAK8F,QACb6L,MAAO3R,KAAK4F,OACZtD,OAAQtC,KAAKqE,OACjB,CACJ,EAylBAkkB,EAAMgD,QAvdN,WAKI,IAJA,IAEIlmB,EACA0hB,EAAO/mB,KAAKiJ,WAAW,EAAE8d,KAAK,EAC7BhlB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAAG,CAIrC,GAFAsD,EAAMrF,KAAKojB,MAAM,EAAEwF,QAAQ,KAAK,EAAE1mB,QAAQ,EAEtC6kB,EAAKhlB,GAAGypB,OAASnmB,GAAOA,GAAO0hB,EAAKhlB,GAAG0pB,MACvC,OAAO1E,EAAKhlB,GAAGqF,KAEnB,GAAI2f,EAAKhlB,GAAG0pB,OAASpmB,GAAOA,GAAO0hB,EAAKhlB,GAAGypB,MACvC,OAAOzE,EAAKhlB,GAAGqF,IAEvB,CAEA,MAAO,EACX,EAscAmhB,EAAMmD,UApcN,WAKI,IAJA,IAEIrmB,EACA0hB,EAAO/mB,KAAKiJ,WAAW,EAAE8d,KAAK,EAC7BhlB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAAG,CAIrC,GAFAsD,EAAMrF,KAAKojB,MAAM,EAAEwF,QAAQ,KAAK,EAAE1mB,QAAQ,EAEtC6kB,EAAKhlB,GAAGypB,OAASnmB,GAAOA,GAAO0hB,EAAKhlB,GAAG0pB,MACvC,OAAO1E,EAAKhlB,GAAGilB,OAEnB,GAAID,EAAKhlB,GAAG0pB,OAASpmB,GAAOA,GAAO0hB,EAAKhlB,GAAGypB,MACvC,OAAOzE,EAAKhlB,GAAGilB,MAEvB,CAEA,MAAO,EACX,EAmbAuB,EAAMoD,QAjbN,WAKI,IAJA,IAEItmB,EACA0hB,EAAO/mB,KAAKiJ,WAAW,EAAE8d,KAAK,EAC7BhlB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAAG,CAIrC,GAFAsD,EAAMrF,KAAKojB,MAAM,EAAEwF,QAAQ,KAAK,EAAE1mB,QAAQ,EAEtC6kB,EAAKhlB,GAAGypB,OAASnmB,GAAOA,GAAO0hB,EAAKhlB,GAAG0pB,MACvC,OAAO1E,EAAKhlB,GAAG2Z,KAEnB,GAAIqL,EAAKhlB,GAAG0pB,OAASpmB,GAAOA,GAAO0hB,EAAKhlB,GAAGypB,MACvC,OAAOzE,EAAKhlB,GAAG2Z,IAEvB,CAEA,MAAO,EACX,EAgaA6M,EAAMqD,QA9ZN,WAMI,IALA,IAEIC,EACAxmB,EACA0hB,EAAO/mB,KAAKiJ,WAAW,EAAE8d,KAAK,EAC7BhlB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAMlC,GALA8pB,EAAM9E,EAAKhlB,GAAGypB,OAASzE,EAAKhlB,GAAG0pB,MAAS,EAAI,CAAC,EAG7CpmB,EAAMrF,KAAKojB,MAAM,EAAEwF,QAAQ,KAAK,EAAE1mB,QAAQ,EAGrC6kB,EAAKhlB,GAAGypB,OAASnmB,GAAOA,GAAO0hB,EAAKhlB,GAAG0pB,OACvC1E,EAAKhlB,GAAG0pB,OAASpmB,GAAOA,GAAO0hB,EAAKhlB,GAAGypB,MAExC,OACKxrB,KAAK6M,KAAK,EAAI3M,EAAM6mB,EAAKhlB,GAAGypB,KAAK,EAAE3e,KAAK,GAAKgf,EAC9C9E,EAAKhlB,GAAGygB,OAKpB,OAAOxiB,KAAK6M,KAAK,CACrB,EAuYA0b,EAAM1b,KAAOwE,GACbkX,EAAMhY,WAx8HN,WACI,OAAOA,GAAWvQ,KAAK6M,KAAK,CAAC,CACjC,EAu8HA0b,EAAM/a,SAnRN,SAAwBlN,GACpB,OAAOinB,GAAqB5mB,KACxBX,KACAM,EACAN,KAAKuM,KAAK,EACVvM,KAAKuK,QAAQ,EAAIvK,KAAKiJ,WAAW,EAAEwW,MAAM/J,IACzC1V,KAAKiJ,WAAW,EAAEwW,MAAM/J,IACxB1V,KAAKiJ,WAAW,EAAEwW,MAAM9J,GAC5B,CACJ,EA2QA4S,EAAM9a,YAzQN,SAA2BnN,GACvB,OAAOinB,GAAqB5mB,KACxBX,KACAM,EACAN,KAAK0N,QAAQ,EACb1N,KAAKsN,WAAW,EAChB,EACA,CACJ,CACJ,EAiQAib,EAAM5c,QAAU4c,EAAM7c,SAzMtB,SAAuBpL,GACnB,OAAgB,MAATA,EACD4H,KAAKyH,MAAM3P,KAAKwL,MAAM,EAAI,GAAK,CAAC,EAChCxL,KAAKwL,MAAoB,GAAblL,EAAQ,GAAUN,KAAKwL,MAAM,EAAI,CAAE,CACzD,EAsMA+c,EAAM/c,MAAQiJ,GACd8T,EAAM/U,YA5lHN,WACI,OAAOA,GAAYxT,KAAK6M,KAAK,EAAG7M,KAAKwL,MAAM,CAAC,CAChD,EA2lHA+c,EAAMhc,KAAOgc,EAAMjc,MA33GnB,SAAoBhM,GAChB,IAAIiM,EAAOvM,KAAKiJ,WAAW,EAAEsD,KAAKvM,IAAI,EACtC,OAAgB,MAATM,EAAgBiM,EAAOvM,KAAKohB,IAAqB,GAAhB9gB,EAAQiM,GAAW,GAAG,CAClE,EAy3GAgc,EAAM7a,QAAU6a,EAAMuD,SAv3GtB,SAAuBxrB,GACnB,IAAIiM,EAAOyJ,GAAWhW,KAAM,EAAG,CAAC,EAAEuM,KAClC,OAAgB,MAATjM,EAAgBiM,EAAOvM,KAAKohB,IAAqB,GAAhB9gB,EAAQiM,GAAW,GAAG,CAClE,EAq3GAgc,EAAMpS,YA5PN,WACI,IAAI4V,EAAW/rB,KAAKiJ,WAAW,EAAEwW,MACjC,OAAOtJ,GAAYnW,KAAK6M,KAAK,EAAGkf,EAASrW,IAAKqW,EAASpW,GAAG,CAC9D,EA0PA4S,EAAMyD,gBAxPN,WACI,IAAID,EAAW/rB,KAAKiJ,WAAW,EAAEwW,MACjC,OAAOtJ,GAAYnW,KAAKwN,SAAS,EAAGue,EAASrW,IAAKqW,EAASpW,GAAG,CAClE,EAsPA4S,EAAM0D,eAtQN,WACI,OAAO9V,GAAYnW,KAAK6M,KAAK,EAAG,EAAG,CAAC,CACxC,EAqQA0b,EAAM2D,sBAnQN,WACI,OAAO/V,GAAYnW,KAAKyN,YAAY,EAAG,EAAG,CAAC,CAC/C,EAkQA8a,EAAMte,KAAOie,EACbK,EAAMne,IAAMme,EAAMpe,KApnGlB,SAAyB7J,GACrB,IAII8J,EAvNc9J,EAAO+B,EAmNzB,OAAKrC,KAAK4D,QAAQ,GAIdwG,EAAMsH,GAAI1R,KAAM,KAAK,EACZ,MAATM,GAxNcA,EAyNOA,EAzNA+B,EAyNOrC,KAAKiJ,WAAW,EAA5C3I,EAxNiB,UAAjB,OAAOA,EACAA,EAGN2D,MAAM3D,CAAK,EAKK,UAAjB,OADJA,EAAQ+B,EAAOyU,cAAcxW,CAAK,GAEvBA,EAGJ,KARI6Q,SAAS7Q,EAAO,EAAE,EAoNlBN,KAAKohB,IAAI9gB,EAAQ8J,EAAK,GAAG,GAEzBA,GARS,MAAT9J,EAAgBN,KAAO2E,GAUtC,EAymGA4jB,EAAMhe,QAvmGN,SAA+BjK,GAC3B,IAGIiK,EAHJ,OAAKvK,KAAK4D,QAAQ,GAGd2G,GAAWvK,KAAKoK,IAAI,EAAI,EAAIpK,KAAKiJ,WAAW,EAAEwW,MAAM/J,KAAO,EAC/C,MAATpV,EAAgBiK,EAAUvK,KAAKohB,IAAI9gB,EAAQiK,EAAS,GAAG,GAH1C,MAATjK,EAAgBN,KAAO2E,GAItC,EAkmGA4jB,EAAMjb,WAhmGN,SAA4BhN,GACxB,IAxNqBA,EAAO+B,EAwN5B,OAAKrC,KAAK4D,QAAQ,EAQL,MAATtD,GAhOiBA,EAiOaA,EAjON+B,EAiOarC,KAAKiJ,WAAW,EAAjDsB,EAhOa,UAAjB,OAAOjK,EACA+B,EAAOyU,cAAcxW,CAAK,EAAI,GAAK,EAEvC2D,MAAM3D,CAAK,EAAI,KAAOA,EA8NlBN,KAAKoK,IAAIpK,KAAKoK,IAAI,EAAI,EAAIG,EAAUA,EAAU,CAAC,GAE/CvK,KAAKoK,IAAI,GAAK,EAXL,MAAT9J,EAAgBN,KAAO2E,GAatC,EAklGA4jB,EAAMhb,UAxKN,SAAyBjN,GACrB,IAAIiN,EACArF,KAAKqa,OACAviB,KAAKojB,MAAM,EAAEwF,QAAQ,KAAK,EAAI5oB,KAAKojB,MAAM,EAAEwF,QAAQ,MAAM,GAAK,KACnE,EAAI,EACR,OAAgB,MAATtoB,EAAgBiN,EAAYvN,KAAKohB,IAAI9gB,EAAQiN,EAAW,GAAG,CACtE,EAmKAgb,EAAMvd,KAAOud,EAAMxd,MAAQ4N,EAC3B4P,EAAMld,OAASkd,EAAMnd,QAAU+c,EAC/BI,EAAMzc,OAASyc,EAAM1c,QAAUuc,EAC/BG,EAAMpd,YAAcod,EAAMrd,aAAeod,EACzCC,EAAM7F,UA9jDN,SAAsBpiB,EAAO6rB,EAAeC,GACxC,IACIC,EADA7J,EAASxiB,KAAK6F,SAAW,EAE7B,GAAI,CAAC7F,KAAK4D,QAAQ,EACd,OAAgB,MAATtD,EAAgBN,KAAO2E,IAElC,GAAa,MAATrE,EAiCA,OAAON,KAAK4F,OAAS4c,EAASe,GAAcvjB,IAAI,EAhChD,GAAqB,UAAjB,OAAOM,GAEP,GAAc,QADdA,EAAQsiB,GAAiBnU,GAAkBnO,CAAK,GAE5C,OAAON,IACX,MACOkI,KAAKC,IAAI7H,CAAK,EAAI,IAAM,CAAC8rB,IAChC9rB,GAAgB,IAwBpB,MAtBI,CAACN,KAAK4F,QAAUumB,IAChBE,EAAc9I,GAAcvjB,IAAI,GAEpCA,KAAK6F,QAAUvF,EACfN,KAAK4F,OAAS,CAAA,EACK,MAAfymB,GACArsB,KAAKohB,IAAIiL,EAAa,GAAG,EAEzB7J,IAAWliB,IACP,CAAC6rB,GAAiBnsB,KAAKssB,kBACvB7H,GACIzkB,KACA4jB,GAAetjB,EAAQkiB,EAAQ,GAAG,EAClC,EACA,CAAA,CACJ,EACQxiB,KAAKssB,oBACbtsB,KAAKssB,kBAAoB,CAAA,EACzBpsB,EAAM+F,aAAajG,KAAM,CAAA,CAAI,EAC7BA,KAAKssB,kBAAoB,OAG1BtsB,IAIf,EAshDAuoB,EAAM/lB,IAtgDN,SAAwB2pB,GACpB,OAAOnsB,KAAK0iB,UAAU,EAAGyJ,CAAa,CAC1C,EAqgDA5D,EAAMjF,MAngDN,SAA0B6I,GAStB,OARInsB,KAAK4F,SACL5F,KAAK0iB,UAAU,EAAGyJ,CAAa,EAC/BnsB,KAAK4F,OAAS,CAAA,EAEVumB,IACAnsB,KAAK4kB,SAASrB,GAAcvjB,IAAI,EAAG,GAAG,EAGvCA,IACX,EA0/CAuoB,EAAMgE,UAx/CN,WACI,IAGQC,EAOR,OAViB,MAAbxsB,KAAK2F,KACL3F,KAAK0iB,UAAU1iB,KAAK2F,KAAM,CAAA,EAAO,CAAA,CAAI,EACX,UAAnB,OAAO3F,KAAKwF,KAEN,OADTgnB,EAAQ5J,GAAiBpU,GAAaxO,KAAKwF,EAAE,GAE7CxF,KAAK0iB,UAAU8J,CAAK,EAEpBxsB,KAAK0iB,UAAU,EAAG,CAAA,CAAI,GAGvB1iB,IACX,EA6+CAuoB,EAAMkE,qBA3+CN,SAA8BnsB,GAC1B,MAAKN,CAAAA,CAAAA,KAAK4D,QAAQ,IAGlBtD,EAAQA,EAAQkf,EAAYlf,CAAK,EAAEoiB,UAAU,EAAI,GAEzC1iB,KAAK0iB,UAAU,EAAIpiB,GAAS,IAAO,EAC/C,EAq+CAioB,EAAMmE,MAn+CN,WACI,OACI1sB,KAAK0iB,UAAU,EAAI1iB,KAAKojB,MAAM,EAAE5X,MAAM,CAAC,EAAEkX,UAAU,GACnD1iB,KAAK0iB,UAAU,EAAI1iB,KAAKojB,MAAM,EAAE5X,MAAM,CAAC,EAAEkX,UAAU,CAE3D,EA+9CA6F,EAAM0C,QAv8CN,WACI,MAAOjrB,CAAAA,CAAAA,KAAK4D,QAAQ,GAAI,CAAC5D,KAAK4F,MAClC,EAs8CA2iB,EAAMoE,YAp8CN,WACI,MAAO3sB,CAAAA,CAAAA,KAAK4D,QAAQ,GAAI5D,KAAK4F,MACjC,EAm8CA2iB,EAAM9E,MAAQA,GACd8E,EAAM5W,MAAQ8R,GACd8E,EAAMqE,SAzFN,WACI,OAAO5sB,KAAK4F,OAAS,MAAQ,EACjC,EAwFA2iB,EAAMsE,SAtFN,WACI,OAAO7sB,KAAK4F,OAAS,6BAA+B,EACxD,EAqFA2iB,EAAMve,MAAQzD,EACV,kDACA2hB,CACJ,EACAK,EAAMhd,OAAShF,EACX,mDACAkO,EACJ,EACA8T,EAAM3b,MAAQrG,EACV,iDACA8K,EACJ,EACAkX,EAAMwC,KAAOxkB,EACT,2GA5iDJ,SAAoBjG,EAAO6rB,GACvB,OAAa,MAAT7rB,GAKAN,KAAK0iB,UAHDpiB,EADiB,UAAjB,OAAOA,EACC,CAACA,EAGEA,EAAO6rB,CAAa,EAE5BnsB,MAEA,CAACA,KAAK0iB,UAAU,CAE/B,CAkiDA,EACA6F,EAAMuE,aAAevmB,EACjB,0GAp/CJ,WACI,IAIIyY,EACAsC,EAaJ,OAlBKhgB,EAAYtB,KAAK+sB,aAAa,IAOnC9nB,EAHI+Z,EAAI,GAGMhf,IAAI,GAClBgf,EAAIuB,GAAcvB,CAAC,GAEbjD,IACFuF,GAAQtC,EAAEpZ,OAASzD,EAAkBqd,GAARR,EAAEjD,EAAE,EACjC/b,KAAK+sB,cACD/sB,KAAK4D,QAAQ,GAA4C,EAtOrE,SAAuBopB,EAAQC,EAAQC,GAKnC,IAJA,IAAIpoB,EAAMoD,KAAKqM,IAAIyY,EAAO5rB,OAAQ6rB,EAAO7rB,MAAM,EAC3C+rB,EAAajlB,KAAKC,IAAI6kB,EAAO5rB,OAAS6rB,EAAO7rB,MAAM,EACnDgsB,EAAQ,EAEPrrB,EAAI,EAAGA,EAAI+C,EAAK/C,CAAC,IAEbmrB,GAAeF,EAAOjrB,KAAOkrB,EAAOlrB,IACpC,CAACmrB,GAAerd,EAAMmd,EAAOjrB,EAAE,IAAM8N,EAAMod,EAAOlrB,EAAE,IAErDqrB,CAAK,GAGb,OAAOA,EAAQD,CACnB,EAwN4CnO,EAAEjD,GAAIuF,EAAMmJ,QAAQ,CAAC,GAEzDzqB,KAAK+sB,cAAgB,CAAA,GAGlB/sB,KAAK+sB,aAChB,CAk+CA,EAcIM,EAAU3lB,GAAOjH,UAuCrB,SAAS6sB,GAAMlrB,EAAQmrB,EAAOC,EAAOC,GACjC,IAAIprB,EAASmZ,GAAU,EACnBhZ,EAAML,EAAU,EAAEwF,IAAI8lB,EAAQF,CAAK,EACvC,OAAOlrB,EAAOmrB,GAAOhrB,EAAKJ,CAAM,CACpC,CAEA,SAASsrB,GAAetrB,EAAQmrB,EAAOC,GAQnC,GAPIjsB,EAASa,CAAM,IACfmrB,EAAQnrB,EACRA,EAASkC,KAAAA,GAGblC,EAASA,GAAU,GAEN,MAATmrB,EACA,OAAOD,GAAMlrB,EAAQmrB,EAAOC,EAAO,OAAO,EAK9C,IAFA,IACIG,EAAM,GACL5rB,EAAI,EAAGA,EAAI,GAAIA,CAAC,GACjB4rB,EAAI5rB,GAAKurB,GAAMlrB,EAAQL,EAAGyrB,EAAO,OAAO,EAE5C,OAAOG,CACX,CAUA,SAASC,GAAiBC,EAAczrB,EAAQmrB,EAAOC,GAO/CprB,GANwB,WAAxB,OAAOyrB,EACHtsB,EAASa,CAAM,IACfmrB,EAAQnrB,EACRA,EAASkC,KAAAA,IAKblC,EAASyrB,EAETA,EAAe,CAAA,EAEXtsB,EAHJgsB,EAAQnrB,CAGW,IACfmrB,EAAQnrB,EACRA,EAASkC,KAAAA,IAGJlC,GAAU,IAGvB,IAEIL,EAFAM,EAASmZ,GAAU,EACnBsS,EAAQD,EAAexrB,EAAOod,MAAM/J,IAAM,EAE1CiY,EAAM,GAEV,GAAa,MAATJ,EACA,OAAOD,GAAMlrB,GAASmrB,EAAQO,GAAS,EAAGN,EAAO,KAAK,EAG1D,IAAKzrB,EAAI,EAAGA,EAAI,EAAGA,CAAC,GAChB4rB,EAAI5rB,GAAKurB,GAAMlrB,GAASL,EAAI+rB,GAAS,EAAGN,EAAO,KAAK,EAExD,OAAOG,CACX,CAzGAN,EAAQvU,SA5+IR,SAAkBnS,EAAK4C,EAAK+V,GAExB,OAAOjY,GADHmC,EAASxJ,KAAK+tB,UAAUpnB,IAAQ3G,KAAK+tB,UAAoB,QACrC,EAAIvkB,EAAO7I,KAAK4I,EAAK+V,CAAG,EAAI9V,CACxD,EA0+IA6jB,EAAQ1jB,eAh3IR,SAAwBhD,GACpB,IAAIvE,EAASpC,KAAKguB,gBAAgBrnB,GAC9BsnB,EAAcjuB,KAAKguB,gBAAgBrnB,EAAIunB,YAAY,GAEvD,OAAI9rB,GAAU,CAAC6rB,EACJ7rB,GAGXpC,KAAKguB,gBAAgBrnB,GAAOsnB,EACvB5kB,MAAMd,EAAgB,EACtB7G,IAAI,SAAUysB,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAIrnB,MAAM,CAAC,EAEfqnB,CACX,CAAC,EACApnB,KAAK,EAAE,EAEL/G,KAAKguB,gBAAgBrnB,GAChC,EAy1IA0mB,EAAQ5jB,YAr1IR,WACI,OAAOzJ,KAAKouB,YAChB,EAo1IAf,EAAQvkB,QA/0IR,SAAiBhB,GACb,OAAO9H,KAAKquB,SAAS/kB,QAAQ,KAAMxB,CAAM,CAC7C,EA80IAulB,EAAQ5M,SAAW+H,GACnB6E,EAAQjE,WAAaZ,GACrB6E,EAAQzT,aA3zIR,SAAsB9R,EAAQuhB,EAAe3L,EAAQ4Q,GACjD,IAAI9kB,EAASxJ,KAAKuuB,cAAc7Q,GAChC,OAAOrW,GAAWmC,CAAM,EAClBA,EAAO1B,EAAQuhB,EAAe3L,EAAQ4Q,CAAQ,EAC9C9kB,EAAOF,QAAQ,MAAOxB,CAAM,CACtC,EAuzIAulB,EAAQmB,WArzIR,SAAoBrL,EAAM3Z,GAEtB,OAAOnC,GADHjF,EAASpC,KAAKuuB,cAAqB,EAAPpL,EAAW,SAAW,OAC9B,EAAI/gB,EAAOoH,CAAM,EAAIpH,EAAOkH,QAAQ,MAAOE,CAAM,CAC7E,EAmzIA6jB,EAAQ1lB,IAxkJR,SAAa3B,GACT,IAAIZ,EAAMrD,EACV,IAAKA,KAAKiE,EACFnF,EAAWmF,EAAQjE,CAAC,IAEhBsF,GADJjC,EAAOY,EAAOjE,EACK,EACf/B,KAAK+B,GAAKqD,EAEVpF,KAAK,IAAM+B,GAAKqD,GAI5BpF,KAAK2b,QAAU3V,EAIfhG,KAAKioB,+BAAiC,IAAI9Y,QACrCnP,KAAK+nB,wBAAwB0G,QAAUzuB,KAAKgoB,cAAcyG,QACvD,IACA,UAAUA,MAClB,CACJ,EAojJApB,EAAQtG,KAxnBR,SAAoBrkB,EAAGN,GAKnB,IAJA,IAEI6H,EACA8c,EAAO/mB,KAAK0uB,OAASlT,GAAU,IAAI,EAAEkT,MACpC3sB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAAG,CACrC,OAAQ,OAAOglB,EAAKhlB,GAAGypB,OACnB,IAAK,SAEDvhB,EAAO/J,EAAM6mB,EAAKhlB,GAAGypB,KAAK,EAAE5C,QAAQ,KAAK,EACzC7B,EAAKhlB,GAAGypB,MAAQvhB,EAAK/H,QAAQ,EAC7B,KACR,CAEA,OAAQ,OAAO6kB,EAAKhlB,GAAG0pB,OACnB,IAAK,YACD1E,EAAKhlB,GAAG0pB,MAASkD,EAAAA,EACjB,MACJ,IAAK,SAED1kB,EAAO/J,EAAM6mB,EAAKhlB,GAAG0pB,KAAK,EAAE7C,QAAQ,KAAK,EAAE1mB,QAAQ,EACnD6kB,EAAKhlB,GAAG0pB,MAAQxhB,EAAK/H,QAAQ,EAC7B,KACR,CACJ,CACA,OAAO6kB,CACX,EA+lBAsG,EAAQzF,UA7lBR,SAAyB2D,EAASnpB,EAAQE,GACtC,IAAIP,EACAsb,EAEAjW,EACAsU,EACAsL,EAHAD,EAAO/mB,KAAK+mB,KAAK,EAMrB,IAFAwE,EAAUA,EAAQ2C,YAAY,EAEzBnsB,EAAI,EAAGsb,EAAI0J,EAAK3lB,OAAQW,EAAIsb,EAAG,EAAEtb,EAKlC,GAJAqF,EAAO2f,EAAKhlB,GAAGqF,KAAK8mB,YAAY,EAChCxS,EAAOqL,EAAKhlB,GAAG2Z,KAAKwS,YAAY,EAChClH,EAASD,EAAKhlB,GAAGilB,OAAOkH,YAAY,EAEhC5rB,EACA,OAAQF,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIsZ,IAAS6P,EACT,OAAOxE,EAAKhlB,GAEhB,MAEJ,IAAK,OACD,GAAIqF,IAASmkB,EACT,OAAOxE,EAAKhlB,GAEhB,MAEJ,IAAK,QACD,GAAIilB,IAAWuE,EACX,OAAOxE,EAAKhlB,GAEhB,KACR,MACG,GAA6C,GAAzC,CAACqF,EAAMsU,EAAMsL,GAAQ5V,QAAQma,CAAO,EAC3C,OAAOxE,EAAKhlB,EAGxB,EAsjBAsrB,EAAQ/M,gBApjBR,SAA+B9c,EAAKqJ,GAChC,IAAIgf,EAAMroB,EAAIgoB,OAAShoB,EAAIioB,MAAS,EAAI,CAAC,EACzC,OAAannB,KAAAA,IAATuI,EACO3M,EAAMsD,EAAIgoB,KAAK,EAAE3e,KAAK,EAEtB3M,EAAMsD,EAAIgoB,KAAK,EAAE3e,KAAK,GAAKA,EAAOrJ,EAAIgf,QAAUqJ,CAE/D,EA8iBAwB,EAAQ9G,cA/cR,SAAuBtX,GAInB,OAHKpO,EAAWb,KAAM,gBAAgB,GAClCwmB,GAAiB7lB,KAAKX,IAAI,EAEvBiP,EAAWjP,KAAKmnB,eAAiBnnB,KAAKinB,UACjD,EA2cAoG,EAAQ3F,cAvdR,SAAuBzY,GAInB,OAHKpO,EAAWb,KAAM,gBAAgB,GAClCwmB,GAAiB7lB,KAAKX,IAAI,EAEvBiP,EAAWjP,KAAKknB,eAAiBlnB,KAAKinB,UACjD,EAmdAoG,EAAQ1F,gBA1cR,SAAyB1Y,GAIrB,OAHKpO,EAAWb,KAAM,kBAAkB,GACpCwmB,GAAiB7lB,KAAKX,IAAI,EAEvBiP,EAAWjP,KAAKonB,iBAAmBpnB,KAAKinB,UACnD,EAucAoG,EAAQ9hB,OAn1HR,SAAsB7I,EAAGN,GACrB,OAAKM,GAKErC,EAAQL,KAAKkiB,OAAO,EACrBliB,KAAKkiB,QACLliB,KAAKkiB,SACAliB,KAAKkiB,QAAQ0M,UAAYza,IAAkBtK,KAAKzH,CAAM,EACjD,SACA,eAJGM,EAAE8I,MAAM,GALhBnL,EAAQL,KAAKkiB,OAAO,EACrBliB,KAAKkiB,QACLliB,KAAKkiB,QAAoB,UASvC,EAu0HAmL,EAAQzZ,YAr0HR,SAA2BlR,EAAGN,GAC1B,OAAKM,GAKErC,EAAQL,KAAK6uB,YAAY,EAC1B7uB,KAAK6uB,aACL7uB,KAAK6uB,aACD1a,GAAiBtK,KAAKzH,CAAM,EAAI,SAAW,eAF7BM,EAAE8I,MAAM,GALrBnL,EAAQL,KAAK6uB,YAAY,EAC1B7uB,KAAK6uB,aACL7uB,KAAK6uB,aAAyB,UAO5C,EA2zHAxB,EAAQtZ,YA1wHR,SAA2B+a,EAAW1sB,EAAQE,GAC1C,IAAIP,EAAQ+M,EAEZ,GAAI9O,KAAK+uB,kBACL,OAnDR,SAA2BD,EAAW1sB,EAAQE,GAC1C,IAAIP,EACAitB,EACAzlB,EACA0lB,EAAMH,EAAUI,kBAAkB,EACtC,GAAI,CAAClvB,KAAKmvB,aAKN,IAHAnvB,KAAKmvB,aAAe,GACpBnvB,KAAKovB,iBAAmB,GACxBpvB,KAAKqvB,kBAAoB,GACpBttB,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAClBwH,EAAMpH,EAAU,CAAC,IAAMJ,EAAE,EACzB/B,KAAKqvB,kBAAkBttB,GAAK/B,KAAK4T,YAC7BrK,EACA,EACJ,EAAE2lB,kBAAkB,EACpBlvB,KAAKovB,iBAAiBrtB,GAAK/B,KAAKuL,OAAOhC,EAAK,EAAE,EAAE2lB,kBAAkB,EAI1E,OAAI5sB,EACe,QAAXF,EAEc,CAAC,KADf4sB,EAAK5d,EAAQzQ,KAAKX,KAAKqvB,kBAAmBJ,CAAG,GAC1BD,EAAK,KAGV,CAAC,KADfA,EAAK5d,EAAQzQ,KAAKX,KAAKovB,iBAAkBH,CAAG,GACzBD,EAAK,KAGb,QAAX5sB,EAEW,CAAC,KADZ4sB,EAAK5d,EAAQzQ,KAAKX,KAAKqvB,kBAAmBJ,CAAG,IAK/B,CAAC,KADfD,EAAK5d,EAAQzQ,KAAKX,KAAKovB,iBAAkBH,CAAG,GACzBD,EAAK,KAGb,CAAC,KADZA,EAAK5d,EAAQzQ,KAAKX,KAAKovB,iBAAkBH,CAAG,IAK9B,CAAC,KADfD,EAAK5d,EAAQzQ,KAAKX,KAAKqvB,kBAAmBJ,CAAG,GAC1BD,EAAK,IAGpC,EAMiCruB,KAAKX,KAAM8uB,EAAW1sB,EAAQE,CAAM,EAYjE,IATKtC,KAAKmvB,eACNnvB,KAAKmvB,aAAe,GACpBnvB,KAAKovB,iBAAmB,GACxBpvB,KAAKqvB,kBAAoB,IAMxBttB,EAAI,EAAGA,EAAI,GAAIA,CAAC,GAAI,CAmBrB,GAjBAwH,EAAMpH,EAAU,CAAC,IAAMJ,EAAE,EACrBO,GAAU,CAACtC,KAAKovB,iBAAiBrtB,KACjC/B,KAAKovB,iBAAiBrtB,GAAK,IAAIoN,OAC3B,IAAMnP,KAAKuL,OAAOhC,EAAK,EAAE,EAAED,QAAQ,IAAK,EAAE,EAAI,IAC9C,GACJ,EACAtJ,KAAKqvB,kBAAkBttB,GAAK,IAAIoN,OAC5B,IAAMnP,KAAK4T,YAAYrK,EAAK,EAAE,EAAED,QAAQ,IAAK,EAAE,EAAI,IACnD,GACJ,GAEChH,GAAWtC,KAAKmvB,aAAaptB,KAC9B+M,EACI,IAAM9O,KAAKuL,OAAOhC,EAAK,EAAE,EAAI,KAAOvJ,KAAK4T,YAAYrK,EAAK,EAAE,EAChEvJ,KAAKmvB,aAAaptB,GAAK,IAAIoN,OAAOL,EAAMxF,QAAQ,IAAK,EAAE,EAAG,GAAG,GAI7DhH,GACW,SAAXF,GACApC,KAAKovB,iBAAiBrtB,GAAG8H,KAAKilB,CAAS,EAEvC,OAAO/sB,EACJ,GACHO,GACW,QAAXF,GACApC,KAAKqvB,kBAAkBttB,GAAG8H,KAAKilB,CAAS,EAExC,OAAO/sB,EACJ,GAAI,CAACO,GAAUtC,KAAKmvB,aAAaptB,GAAG8H,KAAKilB,CAAS,EACrD,OAAO/sB,CAEf,CACJ,EAwtHAsrB,EAAQvZ,YAtpHR,SAAqB7E,GACjB,OAAIjP,KAAK+uB,mBACAluB,EAAWb,KAAM,cAAc,GAChC0U,GAAmB/T,KAAKX,IAAI,EAE5BiP,EACOjP,KAAKoV,mBAELpV,KAAKkV,eAGXrU,EAAWb,KAAM,cAAc,IAChCA,KAAKkV,aAAeb,IAEjBrU,KAAKoV,oBAAsBnG,EAC5BjP,KAAKoV,mBACLpV,KAAKkV,aAEnB,EAqoHAmY,EAAQxZ,iBA3qHR,SAA0B5E,GACtB,OAAIjP,KAAK+uB,mBACAluB,EAAWb,KAAM,cAAc,GAChC0U,GAAmB/T,KAAKX,IAAI,EAE5BiP,EACOjP,KAAKqV,wBAELrV,KAAKmV,oBAGXtU,EAAWb,KAAM,mBAAmB,IACrCA,KAAKmV,kBAAoBf,IAEtBpU,KAAKqV,yBAA2BpG,EACjCjP,KAAKqV,wBACLrV,KAAKmV,kBAEnB,EA0pHAkY,EAAQ9gB,KAj+GR,SAAoBhD,GAChB,OAAOyM,GAAWzM,EAAKvJ,KAAKyf,MAAM/J,IAAK1V,KAAKyf,MAAM9J,GAAG,EAAEpJ,IAC3D,EAg+GA8gB,EAAQiC,eAr9GR,WACI,OAAOtvB,KAAKyf,MAAM9J,GACtB,EAo9GA0X,EAAQkC,eA19GR,WACI,OAAOvvB,KAAKyf,MAAM/J,GACtB,EA09GA2X,EAAQ/iB,SAj3GR,SAAwB5H,EAAGN,GAQvB,OAPIkI,EAAWjK,EAAQL,KAAKwvB,SAAS,EAC/BxvB,KAAKwvB,UACLxvB,KAAKwvB,UACD9sB,GAAW,CAAA,IAANA,GAAc1C,KAAKwvB,UAAUZ,SAAS/kB,KAAKzH,CAAM,EAChD,SACA,cAEH,CAAA,IAANM,EACD2T,GAAc/L,EAAUtK,KAAKyf,MAAM/J,GAAG,EACtChT,EACE4H,EAAS5H,EAAE0H,IAAI,GACfE,CACZ,EAq2GA+iB,EAAQ5W,YA31GR,SAA2B/T,GACvB,MAAa,CAAA,IAANA,EACD2T,GAAcrW,KAAKyvB,aAAczvB,KAAKyf,MAAM/J,GAAG,EAC/ChT,EACE1C,KAAKyvB,aAAa/sB,EAAE0H,IAAI,GACxBpK,KAAKyvB,YACjB,EAs1GApC,EAAQ3W,cAp2GR,SAA6BhU,GACzB,MAAa,CAAA,IAANA,EACD2T,GAAcrW,KAAK0vB,eAAgB1vB,KAAKyf,MAAM/J,GAAG,EACjDhT,EACE1C,KAAK0vB,eAAehtB,EAAE0H,IAAI,GAC1BpK,KAAK0vB,cACjB,EA+1GArC,EAAQvW,cA5wGR,SAA6B6Y,EAAavtB,EAAQE,GAC9C,IAAIP,EAAQ+M,EAEZ,GAAI9O,KAAK4vB,oBACL,OA7ER,SAA6BD,EAAavtB,EAAQE,GAC9C,IAAIP,EACAitB,EACAzlB,EACA0lB,EAAMU,EAAYT,kBAAkB,EACxC,GAAI,CAAClvB,KAAK6vB,eAKN,IAJA7vB,KAAK6vB,eAAiB,GACtB7vB,KAAK8vB,oBAAsB,GAC3B9vB,KAAK+vB,kBAAoB,GAEpBhuB,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACjBwH,EAAMpH,EAAU,CAAC,IAAM,EAAE,EAAEiI,IAAIrI,CAAC,EAChC/B,KAAK+vB,kBAAkBhuB,GAAK/B,KAAKyW,YAC7BlN,EACA,EACJ,EAAE2lB,kBAAkB,EACpBlvB,KAAK8vB,oBAAoB/tB,GAAK/B,KAAK0W,cAC/BnN,EACA,EACJ,EAAE2lB,kBAAkB,EACpBlvB,KAAK6vB,eAAe9tB,GAAK/B,KAAKsK,SAASf,EAAK,EAAE,EAAE2lB,kBAAkB,EAI1E,OAAI5sB,EACe,SAAXF,EAEc,CAAC,KADf4sB,EAAK5d,EAAQzQ,KAAKX,KAAK6vB,eAAgBZ,CAAG,GACvBD,EAAK,KACN,QAAX5sB,EAEO,CAAC,KADf4sB,EAAK5d,EAAQzQ,KAAKX,KAAK8vB,oBAAqBb,CAAG,GAC5BD,EAAK,KAGV,CAAC,KADfA,EAAK5d,EAAQzQ,KAAKX,KAAK+vB,kBAAmBd,CAAG,GAC1BD,EAAK,KAGb,SAAX5sB,EAEW,CAAC,KADZ4sB,EAAK5d,EAAQzQ,KAAKX,KAAK6vB,eAAgBZ,CAAG,IAK/B,CAAC,KADZD,EAAK5d,EAAQzQ,KAAKX,KAAK8vB,oBAAqBb,CAAG,IAKjC,CAAC,KADfD,EAAK5d,EAAQzQ,KAAKX,KAAK+vB,kBAAmBd,CAAG,GAC1BD,EAAK,KACN,QAAX5sB,EAEI,CAAC,KADZ4sB,EAAK5d,EAAQzQ,KAAKX,KAAK8vB,oBAAqBb,CAAG,IAKpC,CAAC,KADZD,EAAK5d,EAAQzQ,KAAKX,KAAK6vB,eAAgBZ,CAAG,IAK5B,CAAC,KADfD,EAAK5d,EAAQzQ,KAAKX,KAAK+vB,kBAAmBd,CAAG,GAC1BD,EAAK,KAGb,CAAC,KADZA,EAAK5d,EAAQzQ,KAAKX,KAAK+vB,kBAAmBd,CAAG,IAKlC,CAAC,KADZD,EAAK5d,EAAQzQ,KAAKX,KAAK6vB,eAAgBZ,CAAG,IAK5B,CAAC,KADfD,EAAK5d,EAAQzQ,KAAKX,KAAK8vB,oBAAqBb,CAAG,GAC5BD,EAAK,IAGpC,EAMmCruB,KAAKX,KAAM2vB,EAAavtB,EAAQE,CAAM,EAUrE,IAPKtC,KAAK6vB,iBACN7vB,KAAK6vB,eAAiB,GACtB7vB,KAAK+vB,kBAAoB,GACzB/vB,KAAK8vB,oBAAsB,GAC3B9vB,KAAKgwB,mBAAqB,IAGzBjuB,EAAI,EAAGA,EAAI,EAAGA,CAAC,GAAI,CA6BpB,GA1BAwH,EAAMpH,EAAU,CAAC,IAAM,EAAE,EAAEiI,IAAIrI,CAAC,EAC5BO,GAAU,CAACtC,KAAKgwB,mBAAmBjuB,KACnC/B,KAAKgwB,mBAAmBjuB,GAAK,IAAIoN,OAC7B,IAAMnP,KAAKsK,SAASf,EAAK,EAAE,EAAED,QAAQ,IAAK,MAAM,EAAI,IACpD,GACJ,EACAtJ,KAAK8vB,oBAAoB/tB,GAAK,IAAIoN,OAC9B,IAAMnP,KAAK0W,cAAcnN,EAAK,EAAE,EAAED,QAAQ,IAAK,MAAM,EAAI,IACzD,GACJ,EACAtJ,KAAK+vB,kBAAkBhuB,GAAK,IAAIoN,OAC5B,IAAMnP,KAAKyW,YAAYlN,EAAK,EAAE,EAAED,QAAQ,IAAK,MAAM,EAAI,IACvD,GACJ,GAECtJ,KAAK6vB,eAAe9tB,KACrB+M,EACI,IACA9O,KAAKsK,SAASf,EAAK,EAAE,EACrB,KACAvJ,KAAK0W,cAAcnN,EAAK,EAAE,EAC1B,KACAvJ,KAAKyW,YAAYlN,EAAK,EAAE,EAC5BvJ,KAAK6vB,eAAe9tB,GAAK,IAAIoN,OAAOL,EAAMxF,QAAQ,IAAK,EAAE,EAAG,GAAG,GAI/DhH,GACW,SAAXF,GACApC,KAAKgwB,mBAAmBjuB,GAAG8H,KAAK8lB,CAAW,EAE3C,OAAO5tB,EACJ,GACHO,GACW,QAAXF,GACApC,KAAK8vB,oBAAoB/tB,GAAG8H,KAAK8lB,CAAW,EAE5C,OAAO5tB,EACJ,GACHO,GACW,OAAXF,GACApC,KAAK+vB,kBAAkBhuB,GAAG8H,KAAK8lB,CAAW,EAE1C,OAAO5tB,EACJ,GAAI,CAACO,GAAUtC,KAAK6vB,eAAe9tB,GAAG8H,KAAK8lB,CAAW,EACzD,OAAO5tB,CAEf,CACJ,EA6sGAsrB,EAAQxW,cAlqGR,SAAuB5H,GACnB,OAAIjP,KAAK4vB,qBACA/uB,EAAWb,KAAM,gBAAgB,GAClCqX,GAAqB1W,KAAKX,IAAI,EAE9BiP,EACOjP,KAAK6X,qBAEL7X,KAAK0X,iBAGX7W,EAAWb,KAAM,gBAAgB,IAClCA,KAAK0X,eAAiBR,IAEnBlX,KAAK6X,sBAAwB5I,EAC9BjP,KAAK6X,qBACL7X,KAAK0X,eAEnB,EAipGA2V,EAAQzW,mBA/oGR,SAA4B3H,GACxB,OAAIjP,KAAK4vB,qBACA/uB,EAAWb,KAAM,gBAAgB,GAClCqX,GAAqB1W,KAAKX,IAAI,EAE9BiP,EACOjP,KAAK8X,0BAEL9X,KAAK2X,sBAGX9W,EAAWb,KAAM,qBAAqB,IACvCA,KAAK2X,oBAAsBR,IAExBnX,KAAK8X,2BAA6B7I,EACnCjP,KAAK8X,0BACL9X,KAAK2X,oBAEnB,EA8nGA0V,EAAQ1W,iBA5nGR,SAA0B1H,GACtB,OAAIjP,KAAK4vB,qBACA/uB,EAAWb,KAAM,gBAAgB,GAClCqX,GAAqB1W,KAAKX,IAAI,EAE9BiP,EACOjP,KAAK+X,wBAEL/X,KAAK4X,oBAGX/W,EAAWb,KAAM,mBAAmB,IACrCA,KAAK4X,kBAAoBR,IAEtBpX,KAAK+X,yBAA2B9I,EACjCjP,KAAK+X,wBACL/X,KAAK4X,kBAEnB,EA4mGAyV,EAAQ/U,KAn8FR,SAAoBhY,GAGhB,MAAgD,OAAxCA,EAAQ,IAAI0M,YAAY,EAAEijB,OAAO,CAAC,CAC9C,EAg8FA5C,EAAQ5pB,SAv7FR,SAAwBsH,EAAOK,EAAS8kB,GACpC,OAAY,GAARnlB,EACOmlB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EA6gGA7U,GAAmB,KAAM,CACrB0L,KAAM,CACF,CACIyE,MAAO,aACPC,MAAQkD,EAAAA,EACRnM,OAAQ,EACRpb,KAAM,cACN4f,OAAQ,KACRtL,KAAM,IACV,EACA,CACI8P,MAAO,aACPC,MAAQkD,CAAAA,EAAAA,EACRnM,OAAQ,EACRpb,KAAM,gBACN4f,OAAQ,KACRtL,KAAM,IACV,GAEJ/B,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GATgC,IAA/B+H,EAAO/H,EAAS,IAAO,EAAE,EACnB,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,CACJ,CAAC,EAIDb,EAAM6lB,KAAOxf,EACT,wDACA8U,EACJ,EACAnb,EAAMiwB,SAAW5pB,EACb,gEACAiV,EACJ,EAEA,IAAI4U,GAAUloB,KAAKC,IAmBnB,SAASkoB,GAAczO,EAAUthB,EAAO0P,EAAOsU,GACvChD,EAAQsC,GAAetjB,EAAO0P,CAAK,EAMvC,OAJA4R,EAASI,eAAiBsC,EAAYhD,EAAMU,cAC5CJ,EAASK,OAASqC,EAAYhD,EAAMW,MACpCL,EAASM,SAAWoC,EAAYhD,EAAMY,QAE/BN,EAASQ,QAAQ,CAC5B,CAYA,SAASkO,GAAQxoB,GACb,OAAIA,EAAS,EACFI,KAAK0H,MAAM9H,CAAM,EAEjBI,KAAKyH,KAAK7H,CAAM,CAE/B,CAyDA,SAASyoB,GAAapmB,GAGlB,OAAe,KAAPA,EAAe,MAC3B,CAEA,SAASqmB,GAAajlB,GAElB,OAAiB,OAATA,EAAmB,IAC/B,CA8CA,SAASklB,GAAOC,GACZ,OAAO,WACH,OAAO1wB,KAAK2wB,GAAGD,CAAK,CACxB,CACJ,CAEIE,GAAiBH,GAAO,IAAI,EAC5BI,EAAYJ,GAAO,GAAG,EACtBK,GAAYL,GAAO,GAAG,EACtBM,GAAUN,GAAO,GAAG,EACpBO,GAASP,GAAO,GAAG,EACnBQ,EAAUR,GAAO,GAAG,EACpBS,GAAWT,GAAO,GAAG,EACrBU,GAAaV,GAAO,GAAG,EACvBW,EAAUX,GAAO,GAAG,EACpBY,EAAYT,GAWhB,SAASU,GAAWlqB,GAChB,OAAO,WACH,OAAOpH,KAAK4D,QAAQ,EAAI5D,KAAKmiB,MAAM/a,GAAQzC,GAC/C,CACJ,CAEA,IAAIuG,EAAeomB,GAAW,cAAc,EACxCzlB,EAAUylB,GAAW,SAAS,EAC9BlmB,EAAUkmB,GAAW,SAAS,EAC9BvmB,GAAQumB,GAAW,OAAO,EAC1BnnB,EAAOmnB,GAAW,MAAM,EACxB/lB,GAAS+lB,GAAW,QAAQ,EAC5B1kB,GAAQ0kB,GAAW,OAAO,EAM9B,IAAI/O,GAAQra,KAAKqa,MACbgP,GAAa,CACTxX,GAAI,GACJnO,EAAG,GACHlJ,EAAG,GACHoI,EAAG,GACHZ,EAAG,GACHmC,EAAG,KACHf,EAAG,EACP,EAOJ,SAASkmB,GAAeC,EAAgBpI,EAAekI,EAAYlvB,GAC/D,IAAIuf,EAAWgC,GAAe6N,CAAc,EAAEtpB,IAAI,EAC9C0D,EAAU0W,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAChCvlB,EAAUmX,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAChC5lB,EAAQwX,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAC9BxmB,EAAOoY,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAC7BplB,EAASgX,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAC/BrkB,EAAQiW,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAC9B/jB,EAAQ2V,GAAMX,EAAS+O,GAAG,GAAG,CAAC,EAC9B7vB,GACK+K,GAAW0lB,EAAWxX,GAAM,CAAC,IAAKlO,GAClCA,EAAU0lB,EAAW3lB,GAAK,CAAC,KAAMC,MACjCT,GAAW,EAAK,CAAC,KACjBA,EAAUmmB,EAAW7uB,GAAK,CAAC,KAAM0I,MACjCL,GAAS,EAAK,CAAC,KACfA,EAAQwmB,EAAWzmB,GAAK,CAAC,KAAMC,MAC/BZ,GAAQ,EAAK,CAAC,KACdA,EAAOonB,EAAWrnB,GAAK,CAAC,KAAMC,IAgBvC,OARArJ,GALIA,EADgB,MAAhBywB,EAAWllB,EAEPvL,IACCwL,GAAS,EAAK,CAAC,KACfA,EAAQilB,EAAWllB,GAAK,CAAC,KAAMC,IAEpCxL,KACCyK,GAAU,EAAK,CAAC,KAChBA,EAASgmB,EAAWjmB,GAAK,CAAC,KAAMC,MAChCqB,GAAS,EAAK,CAAC,KAAS,CAAC,KAAMA,KAElC,GAAKyc,EACPvoB,EAAE,GAAuB,EAAlB,CAAC2wB,EACR3wB,EAAE,GAAKuB,EApCX,SAA2Bqb,EAAQ5V,EAAQuhB,EAAeiF,EAAUjsB,GAChE,OAAOA,EAAOuX,aAAa9R,GAAU,EAAG,CAAC,CAACuhB,EAAe3L,EAAQ4Q,CAAQ,CAC7E,EAmC6BnuB,MAAM,KAAMW,CAAC,CAC1C,CA+DA,IAAI4wB,GAAQxpB,KAAKC,IAEjB,SAASwa,GAAKlP,GACV,OAAY,EAAJA,IAAUA,EAAI,IAAM,CAACA,CACjC,CAEA,SAASke,KAQL,IAII9lB,EACA1B,EACAoB,EACAH,EACAL,EACA6B,EACAhB,EACAgmB,EAEAC,EACAC,EACAC,EAfJ,OAAK/xB,KAAK4D,QAAQ,GAIdiI,EAAU6lB,GAAM1xB,KAAKgiB,aAAa,EAAI,IACtC7X,EAAOunB,GAAM1xB,KAAKiiB,KAAK,EACvB1W,EAASmmB,GAAM1xB,KAAKkiB,OAAO,GAK3B0P,EAAQ5xB,KAAK6wB,UAAU,IAa3BzlB,EAAUsE,EAAS7D,EAAU,EAAE,EAC/Bd,EAAQ2E,EAAStE,EAAU,EAAE,EAC7BS,GAAW,GACXT,GAAW,GAGXwB,EAAQ8C,EAASnE,EAAS,EAAE,EAC5BA,GAAU,GAGVK,EAAIC,EAAUA,EAAQmmB,QAAQ,CAAC,EAAE1oB,QAAQ,SAAU,EAAE,EAAI,GAGzDuoB,EAASlP,GAAK3iB,KAAKkiB,OAAO,IAAMS,GAAKiP,CAAK,EAAI,IAAM,GACpDE,EAAWnP,GAAK3iB,KAAKiiB,KAAK,IAAMU,GAAKiP,CAAK,EAAI,IAAM,GACpDG,EAAUpP,GAAK3iB,KAAKgiB,aAAa,IAAMW,GAAKiP,CAAK,EAAI,IAAM,IAH/CA,EAAQ,EAAI,IAAM,IAO1B,KACChlB,EAAQilB,EAASjlB,EAAQ,IAAM,KAC/BrB,EAASsmB,EAAStmB,EAAS,IAAM,KACjCpB,EAAO2nB,EAAW3nB,EAAO,IAAM,KAC/BY,GAASK,GAAWS,EAAU,IAAM,KACpCd,EAAQgnB,EAAUhnB,EAAQ,IAAM,KAChCK,EAAU2mB,EAAU3mB,EAAU,IAAM,KACpCS,EAAUkmB,EAAUnmB,EAAI,IAAM,KA9BxB,OAnBA5L,KAAKiJ,WAAW,EAAEQ,YAAY,CAmD7C,CAgLiB,SAAbwoB,GAAuB1b,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACW,GAAXA,EAAI,KAAYA,EAAI,KAAO,GACzB,EACW,IAAXA,EAAI,IACF,EACA,CAClB,CAmDY,SAAZ2b,EAAsB5H,GAClB,OAAO,SAAUxiB,EAAQuhB,EAAe3L,EAAQ4Q,GAC5C,IAAI6D,EAAIF,GAAWnqB,CAAM,EACrBsqB,EAAMC,GAAQ/H,GAAG2H,GAAWnqB,CAAM,GAItC,OAFIsqB,EADM,IAAND,EACMC,EAAI/I,EAAgB,EAAI,GAE3B+I,GAAI9oB,QAAQ,MAAOxB,CAAM,CACpC,CACJ,CA6Ie,SAAfwqB,GAAyB/b,GACrB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACW,GAAXA,EAAI,KAAYA,EAAI,KAAO,GACzB,EACW,IAAXA,EAAI,IACF,EACA,CAClB,CAmDc,SAAdgc,EAAwBjI,GACpB,OAAO,SAAUxiB,EAAQuhB,EAAe3L,EAAQ4Q,GAC5C,IAAI6D,EAAIG,GAAaxqB,CAAM,EACvBsqB,EAAMI,GAAUlI,GAAGgI,GAAaxqB,CAAM,GAI1C,OAFIsqB,EADM,IAAND,EACMC,EAAI/I,EAAgB,EAAI,GAE3B+I,GAAI9oB,QAAQ,MAAOxB,CAAM,CACpC,CACJ,CAuae,SAAf2qB,GAAyBlc,GACrB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACW,GAAXA,EAAI,KAAYA,EAAI,KAAO,GACzB,EACW,IAAXA,EAAI,IACF,EACA,CAClB,CAmDc,SAAdmc,EAAwBpI,GACpB,OAAO,SAAUxiB,EAAQuhB,EAAe3L,EAAQ4Q,GAC5C,IAAI6D,EAAIM,GAAa3qB,CAAM,EACvBsqB,EAAMO,GAAUrI,GAAGmI,GAAa3qB,CAAM,GAI1C,OAFIsqB,EADM,IAAND,EACMC,EAAI/I,EAAgB,EAAI,GAE3B+I,GAAI9oB,QAAQ,MAAOxB,CAAM,CACpC,CACJ,CA17BJ,IAAI8qB,EAAUjR,GAASlhB,UA2LnB4xB,IAzLJO,EAAQhvB,QAp0ER,WACI,OAAO5D,KAAKyE,QAChB,EAm0EAmuB,EAAQzqB,IA/XR,WACI,IAAIoT,EAAOvb,KAAKmiB,MAahB,OAXAniB,KAAKgiB,cAAgBoO,GAAQpwB,KAAKgiB,aAAa,EAC/ChiB,KAAKiiB,MAAQmO,GAAQpwB,KAAKiiB,KAAK,EAC/BjiB,KAAKkiB,QAAUkO,GAAQpwB,KAAKkiB,OAAO,EAEnC3G,EAAKrQ,aAAeklB,GAAQ7U,EAAKrQ,YAAY,EAC7CqQ,EAAK1P,QAAUukB,GAAQ7U,EAAK1P,OAAO,EACnC0P,EAAKnQ,QAAUglB,GAAQ7U,EAAKnQ,OAAO,EACnCmQ,EAAKxQ,MAAQqlB,GAAQ7U,EAAKxQ,KAAK,EAC/BwQ,EAAKhQ,OAAS6kB,GAAQ7U,EAAKhQ,MAAM,EACjCgQ,EAAK3O,MAAQwjB,GAAQ7U,EAAK3O,KAAK,EAExB5M,IACX,EAiXA4yB,EAAQxR,IApWR,SAAe9gB,EAAO0P,GAClB,OAAOqgB,GAAcrwB,KAAMM,EAAO0P,EAAO,CAAC,CAC9C,EAmWA4iB,EAAQhO,SAhWR,SAAoBtkB,EAAO0P,GACvB,OAAOqgB,GAAcrwB,KAAMM,EAAO0P,EAAO,CAAC,CAAC,CAC/C,EA+VA4iB,EAAQjC,GAnRR,SAAY5jB,GACR,GAAI,CAAC/M,KAAK4D,QAAQ,EACd,OAAOe,IAEX,IAAIwF,EACAoB,EACAL,EAAelL,KAAKgiB,cAIxB,GAAc,WAFdjV,EAAQD,EAAeC,CAAK,IAEO,YAAVA,GAAiC,SAAVA,EAG5C,OAFA5C,EAAOnK,KAAKiiB,MAAQ/W,EAAe,MACnCK,EAASvL,KAAKkiB,QAAUqO,GAAapmB,CAAI,EACjC4C,GACJ,IAAK,QACD,OAAOxB,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,EACxB,MAIA,OADApB,EAAOnK,KAAKiiB,MAAQ/Z,KAAKqa,MAAMiO,GAAaxwB,KAAKkiB,OAAO,CAAC,EACjDnV,GACJ,IAAK,OACD,OAAO5C,EAAO,EAAIe,EAAe,OACrC,IAAK,MACD,OAAOf,EAAOe,EAAe,MACjC,IAAK,OACD,OAAc,GAAPf,EAAYe,EAAe,KACtC,IAAK,SACD,OAAc,KAAPf,EAAce,EAAe,IACxC,IAAK,SACD,OAAc,MAAPf,EAAee,EAAe,IAEzC,IAAK,cACD,OAAOhD,KAAK0H,MAAa,MAAPzF,CAAY,EAAIe,EACtC,QACI,MAAM,IAAIlE,MAAM,gBAAkB+F,CAAK,CAC/C,CAER,EA0OA6lB,EAAQhC,eAAiBA,GACzBgC,EAAQ/B,UAAYA,EACpB+B,EAAQ9B,UAAYA,GACpB8B,EAAQ7B,QAAUA,GAClB6B,EAAQ5B,OAASA,GACjB4B,EAAQ3B,QAAUA,EAClB2B,EAAQ1B,SAAWA,GACnB0B,EAAQzB,WAAaA,GACrByB,EAAQxB,QAAUA,EAClBwB,EAAQ1wB,QAAUmvB,EAClBuB,EAAQxQ,QAhWR,WACI,IAAIlX,EAAelL,KAAKgiB,cACpB7X,EAAOnK,KAAKiiB,MACZ1W,EAASvL,KAAKkiB,QACd3G,EAAOvb,KAAKmiB,MAgDhB,OArCyB,GAAhBjX,GAA6B,GAARf,GAAuB,GAAVoB,GAClCL,GAAgB,GAAKf,GAAQ,GAAKoB,GAAU,IAGjDL,GAAuD,MAAvColB,GAAQE,GAAajlB,CAAM,EAAIpB,CAAI,EAEnDoB,EADApB,EAAO,GAMXoR,EAAKrQ,aAAeA,EAAe,IAEnCW,EAAU6D,EAASxE,EAAe,GAAI,EACtCqQ,EAAK1P,QAAUA,EAAU,GAEzBT,EAAUsE,EAAS7D,EAAU,EAAE,EAC/B0P,EAAKnQ,QAAUA,EAAU,GAEzBL,EAAQ2E,EAAStE,EAAU,EAAE,EAC7BmQ,EAAKxQ,MAAQA,EAAQ,GAErBZ,GAAQuF,EAAS3E,EAAQ,EAAE,EAI3BQ,GADAsnB,EAAiBnjB,EAAS6gB,GAAapmB,CAAI,CAAC,EAE5CA,GAAQmmB,GAAQE,GAAaqC,CAAc,CAAC,EAG5CjmB,EAAQ8C,EAASnE,EAAS,EAAE,EAC5BA,GAAU,GAEVgQ,EAAKpR,KAAOA,EACZoR,EAAKhQ,OAASA,EACdgQ,EAAK3O,MAAQA,EAEN5M,IACX,EA4SA4yB,EAAQxP,MAlOR,WACI,OAAOQ,GAAe5jB,IAAI,CAC9B,EAiOA4yB,EAAQlhB,IA/NR,SAAe3E,GAEX,OADAA,EAAQD,EAAeC,CAAK,EACrB/M,KAAK4D,QAAQ,EAAI5D,KAAK+M,EAAQ,KAAK,EAAIpI,GAClD,EA6NAiuB,EAAQ1nB,aAAeA,EACvB0nB,EAAQ/mB,QAAUA,EAClB+mB,EAAQxnB,QAAUA,EAClBwnB,EAAQ7nB,MAAQA,GAChB6nB,EAAQzoB,KAAOA,EACfyoB,EAAQtmB,MAlNR,WACI,OAAOoD,EAAS1P,KAAKmK,KAAK,EAAI,CAAC,CACnC,EAiNAyoB,EAAQrnB,OAASA,GACjBqnB,EAAQhmB,MAAQA,GAChBgmB,EAAQtJ,SAlIR,SAAkBwJ,EAAeC,GAC7B,IAIIC,EACAC,EALJ,OAAKjzB,KAAK4D,QAAQ,GAIdovB,EAAa,CAAA,EACbC,EAAK1B,GAIoB,UAAzB,OAAOuB,IACPC,EAAgBD,EAChBA,EAAgB,CAAA,GAES,WAAzB,OAAOA,IACPE,EAAaF,GAEY,UAAzB,OAAOC,IACPE,EAAKzyB,OAAO0yB,OAAO,GAAI3B,GAAYwB,CAAa,EACzB,MAAnBA,EAAcnnB,IAAiC,MAApBmnB,EAAchZ,KACzCkZ,EAAGlZ,GAAKgZ,EAAcnnB,EAAI,GAIlCvJ,EAASrC,KAAKiJ,WAAW,EACzBO,EAASgoB,GAAexxB,KAAM,CAACgzB,EAAYC,EAAI5wB,CAAM,EAEjD2wB,IACAxpB,EAASnH,EAAOmsB,WAAW,CAACxuB,KAAMwJ,CAAM,GAGrCnH,EAAO+mB,WAAW5f,CAAM,GA7BpBxJ,KAAKiJ,WAAW,EAAEQ,YAAY,CA8B7C,EAmGAmpB,EAAQhI,YAAc+G,GACtBiB,EAAQlyB,SAAWixB,GACnBiB,EAAQxH,OAASuG,GACjBiB,EAAQvwB,OAASA,GACjBuwB,EAAQ3pB,WAAaA,GAErB2pB,EAAQO,YAAc5sB,EAClB,sFACAorB,EACJ,EACAiB,EAAQ7M,KAAOA,GAIfpd,EAAe,IAAK,EAAG,EAAG,MAAM,EAChCA,EAAe,IAAK,EAAG,EAAG,SAAS,EAInCkG,EAAc,IAAKN,EAAW,EAC9BM,EAAc,IA5wJO,sBA4wJY,EACjCsB,EAAc,IAAK,SAAU7P,EAAO8I,EAAOpD,GACvCA,EAAOhC,GAAK,IAAIvC,KAAyB,IAApBsgB,WAAWzhB,CAAK,CAAQ,CACjD,CAAC,EACD6P,EAAc,IAAK,SAAU7P,EAAO8I,EAAOpD,GACvCA,EAAOhC,GAAK,IAAIvC,KAAKoO,EAAMvP,CAAK,CAAC,CACrC,CAAC,EAIDJ,EAAMkzB,QAAU,SAn/KZnzB,EAq/KYuf,EAEhBtf,EAAM0B,GAAK2mB,EACXroB,EAAMqU,IA77EN,WAGI,OAAOiN,GAAO,WAFH,GAAG1a,MAAMnG,KAAKP,UAAW,CAAC,CAEP,CAClC,EA07EAF,EAAMmI,IAx7EN,WAGI,OAAOmZ,GAAO,UAFH,GAAG1a,MAAMnG,KAAKP,UAAW,CAAC,CAER,CACjC,EAq7EAF,EAAMof,IAn7EI,WACN,OAAO7d,KAAK6d,IAAM7d,KAAK6d,IAAI,EAAI,CAAC,IAAI7d,IACxC,EAk7EAvB,EAAMsC,IAAML,EACZjC,EAAMmrB,KA9nBN,SAAoB/qB,GAChB,OAAOkf,EAAoB,IAARlf,CAAY,CACnC,EA6nBAJ,EAAMqL,OAtgBN,SAAoBnJ,EAAQmrB,GACxB,OAAOG,GAAetrB,EAAQmrB,EAAO,QAAQ,CACjD,EAqgBArtB,EAAMsB,OAASA,EACftB,EAAMmC,OAASgZ,GACfnb,EAAMykB,QAAUjgB,EAChBxE,EAAM0hB,SAAWgC,GACjB1jB,EAAMgG,SAAWA,EACjBhG,EAAMoK,SApgBN,SAAsBujB,EAAczrB,EAAQmrB,GACxC,OAAOK,GAAiBC,EAAczrB,EAAQmrB,EAAO,UAAU,CACnE,EAmgBArtB,EAAMqsB,UAloBN,WACI,OAAO/M,EAAYrf,MAAM,KAAMC,SAAS,EAAEmsB,UAAU,CACxD,EAioBArsB,EAAM+I,WAAauS,GACnBtb,EAAMmiB,WAAaA,GACnBniB,EAAM0T,YA5gBN,SAAyBxR,EAAQmrB,GAC7B,OAAOG,GAAetrB,EAAQmrB,EAAO,aAAa,CACtD,EA2gBArtB,EAAMuW,YAjgBN,SAAyBoX,EAAczrB,EAAQmrB,GAC3C,OAAOK,GAAiBC,EAAczrB,EAAQmrB,EAAO,aAAa,CACtE,EAggBArtB,EAAMub,aAAeA,GACrBvb,EAAMmzB,aA90GN,SAAsBjsB,EAAMpB,GACxB,IAEQstB,EACA9rB,EAsCR,OAzCc,MAAVxB,GAGIwB,EAAeqR,GAEE,MAAjB0B,EAAQnT,IAA+C,MAA9BmT,EAAQnT,GAAMwU,aAEvCrB,EAAQnT,GAAMO,IAAIJ,GAAagT,EAAQnT,GAAMuU,QAAS3V,CAAM,CAAC,GAO7DA,EAASuB,GAFLC,EADa,OADjB8rB,EAAYxY,GAAW1T,CAAI,GAERksB,EAAU3X,QAEPnU,EAAcxB,CAAM,EACzB,MAAbstB,IAIAttB,EAAO0V,KAAOtU,IAElB/E,EAAS,IAAIqF,GAAO1B,CAAM,GACnB4V,aAAerB,EAAQnT,GAC9BmT,EAAQnT,GAAQ/E,GAIpBgZ,GAAmBjU,CAAI,GAGF,MAAjBmT,EAAQnT,KAC0B,MAA9BmT,EAAQnT,GAAMwU,cACdrB,EAAQnT,GAAQmT,EAAQnT,GAAMwU,aAC1BxU,IAASiU,GAAmB,GAC5BA,GAAmBjU,CAAI,GAEH,MAAjBmT,EAAQnT,IACf,OAAOmT,EAAQnT,IAIpBmT,EAAQnT,EACnB,EAoyGAlH,EAAMqa,QA1wGN,WACI,OAAO3S,GAAK2S,CAAO,CACvB,EAywGAra,EAAMwW,cAzgBN,SAA2BmX,EAAczrB,EAAQmrB,GAC7C,OAAOK,GAAiBC,EAAczrB,EAAQmrB,EAAO,eAAe,CACxE,EAwgBArtB,EAAM4M,eAAiBA,EACvB5M,EAAMqzB,qBAtNN,SAAoCC,GAChC,OAAyBlvB,KAAAA,IAArBkvB,EACOjR,GAEqB,YAA5B,OAAOiR,IACPjR,GAAQiR,EACD,CAAA,EAGf,EA8MAtzB,EAAMuzB,sBA3MN,SAAqCC,EAAWC,GAC5C,OAA8BrvB,KAAAA,IAA1BitB,GAAWmC,KAGDpvB,KAAAA,IAAVqvB,EACOpC,GAAWmC,IAEtBnC,GAAWmC,GAAaC,EACN,MAAdD,IACAnC,GAAWxX,GAAK4Z,EAAQ,GAErB,CAAA,GACX,EAgMAzzB,EAAM2oB,eAx1DN,SAA2B+K,EAAUtU,GAEjC,OADI6D,EAAOyQ,EAASzQ,KAAK7D,EAAK,OAAQ,CAAA,CAAI,GAC5B,CAAC,EACT,WACA6D,EAAO,CAAC,EACN,WACAA,EAAO,EACL,UACAA,EAAO,EACL,UACAA,EAAO,EACL,UACAA,EAAO,EACL,WACA,UACpB,EA00DAjjB,EAAMO,UAAY8nB,EAGlBroB,EAAM2zB,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnBtjB,KAAM,aACNujB,KAAM,QACNC,aAAc,WACdC,QAAS,eACTpjB,KAAM,aACNN,MAAO,SACX,EAIAvQ,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,8FAA8F0I,MAClG,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,4DAA4D2J,MAClE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqG,cAAe,SACfhC,KAAM,SAAUhY,GACZ,MAAO,QAAQuJ,KAAKvJ,CAAK,CAC7B,EACAmD,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACDmlB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAvmB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNlO,EAAG,mBACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,YACJlP,EAAG,SACHmP,GAAI,SACJ/P,EAAG,SACHgQ,GAAI,SACJ5O,EAAG,WACH8O,GAAI,YACJzN,EAAG,UACH0N,GAAI,SACR,EACAV,uBAAwB,kBACxB7Q,QAAS,SAAUhB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,KAEhE,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAiBa,CACN/J,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,8BACA,oCACA,qCAEJlJ,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,oCACA,oCACA,qCAEJoI,EAAG,CACC,2DACA,0DACA,CAAC,uCAAU,wCACX,oCACA,8BACA,+BAEJZ,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,oCACA,yBAEJoB,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,8BACA,yBAEJqB,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,oCACA,oCACA,wBAER,GAWAynB,GAAW,CACP,iCACA,iCACA,2BACA,iCACA,qBACA,2BACA,uCACA,qBACA,uCACA,uCACA,uCACA,wCAoHJC,IAjHJn0B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ6oB,GACRxgB,YAAawgB,GACb9pB,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAY,cAAe,gBACfhC,KAAM,SAAUhY,GACZ,MAAO,WAAQA,CACnB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,SAEA,QAEf,EACA8N,SAAU,CACNC,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNlO,EAAGsmB,EAAU,GAAG,EAChBnY,GAAImY,EAAU,GAAG,EACjBxvB,EAAGwvB,EAAU,GAAG,EAChBlY,GAAIkY,EAAU,GAAG,EACjBpnB,EAAGonB,EAAU,GAAG,EAChBjY,GAAIiY,EAAU,GAAG,EACjBhoB,EAAGgoB,EAAU,GAAG,EAChBhY,GAAIgY,EAAU,GAAG,EACjB5mB,EAAG4mB,EAAU,GAAG,EAChB9X,GAAI8X,EAAU,GAAG,EACjBvlB,EAAGulB,EAAU,GAAG,EAChB7X,GAAI6X,EAAU,GAAG,CACrB,EACA9I,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,KAAM,QAAG,CACnC,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0WAAwE0I,MAC5E,GACJ,EACAL,YACI,0WAAwEK,MACpE,GACJ,EACJ3J,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,2BACHmO,GAAI,oCACJrX,EAAG,iCACHsX,GAAI,oCACJlP,EAAG,2BACHmP,GAAI,oCACJ/P,EAAG,qBACHgQ,GAAI,8BACJ5O,EAAG,qBACH8O,GAAI,8BACJzN,EAAG,qBACH0N,GAAI,mCACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAIe,CACR4e,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,GACP,GAcAxC,GAAY,CACR5mB,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,8BACA,oCACA,qCAEJlJ,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,oCACA,oCACA,qCAEJoI,EAAG,CACC,2DACA,0DACA,CAAC,uCAAU,wCACX,oCACA,8BACA,+BAEJZ,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,oCACA,yBAEJoB,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,8BACA,yBAEJqB,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,oCACA,oCACA,wBAER,EAWAsoB,EAAW,CACP,iCACA,uCACA,2BACA,iCACA,2BACA,iCACA,iCACA,iCACA,uCACA,uCACA,uCACA,wCA2HJC,IAxHJh1B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ0pB,EACRrhB,YAAaqhB,EACb3qB,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAY,cAAe,gBACfhC,KAAM,SAAUhY,GACZ,MAAO,WAAQA,CACnB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,SAEA,QAEf,EACA8N,SAAU,CACNC,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNlO,EAAG2mB,EAAY,GAAG,EAClBxY,GAAIwY,EAAY,GAAG,EACnB7vB,EAAG6vB,EAAY,GAAG,EAClBvY,GAAIuY,EAAY,GAAG,EACnBznB,EAAGynB,EAAY,GAAG,EAClBtY,GAAIsY,EAAY,GAAG,EACnBroB,EAAGqoB,EAAY,GAAG,EAClBrY,GAAIqY,EAAY,GAAG,EACnBjnB,EAAGinB,EAAY,GAAG,EAClBnY,GAAImY,EAAY,GAAG,EACnB5lB,EAAG4lB,EAAY,GAAG,EAClBlY,GAAIkY,EAAY,GAAG,CACvB,EACA9R,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,UAAM,GAAG,CACnC,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EACFpU,QAAQ,MAAO,SAAUD,GACtB,OAAOgrB,GAAUhrB,EACrB,CAAC,EACAC,QAAQ,KAAM,QAAG,CAC1B,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0WAAwE0I,MAC5E,GACJ,EACAL,YACI,0WAAwEK,MACpE,GACJ,EACJ3J,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,2BACHmO,GAAI,oCACJrX,EAAG,iCACHsX,GAAI,oCACJlP,EAAG,2BACHmP,GAAI,oCACJ/P,EAAG,qBACHgQ,GAAI,8BACJ5O,EAAG,qBACH8O,GAAI,8BACJzN,EAAG,qBACH0N,GAAI,mCACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAG,GAAY,CACRC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAsFAC,IApFJ51B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,4eAAiG0I,MACrG,GACJ,EACAL,YACI,sRAA0DK,MAAM,GAAG,EACvE3J,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAY,cAAe,gBACfhC,KAAM,SAAUhY,GACZ,MAAO,WAAQA,CACnB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,SAEA,QAEf,EACA8N,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,2BACHmO,GAAI,oCACJrX,EAAG,iCACHsX,GAAI,oCACJlP,EAAG,2BACHmP,GAAI,oCACJ/P,EAAG,qBACHgQ,GAAI,8BACJ5O,EAAG,qBACH8O,GAAI,8BACJzN,EAAG,qBACH0N,GAAI,mCACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EACFpU,QAAQ,sDAAe,SAAUD,GAC9B,OAAO8rB,GAAU9rB,EACrB,CAAC,EACA4K,MAAM,EAAE,EACR8hB,QAAQ,EACRhvB,KAAK,EAAE,EACPuC,QAAQ,oCAA2B,SAAUD,GAC1C,OAAO8rB,GAAU9rB,EACrB,CAAC,EACA4K,MAAM,EAAE,EACR8hB,QAAQ,EACRhvB,KAAK,EAAE,EACPuC,QAAQ,UAAM,GAAG,CAC1B,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EACFpU,QAAQ,MAAO,SAAUD,GACtB,OAAO6rB,GAAY7rB,EACvB,CAAC,EACAC,QAAQ,KAAM,QAAG,CAC1B,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAgB,GAAc,CACVZ,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAmIAI,IAjIJ/1B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wYAA6E0I,MACjF,GACJ,EACAL,YACI,wYAA6EK,MACzE,GACJ,EACJ3J,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAY,cAAe,gBACfhC,KAAM,SAAUhY,GACZ,MAAO,WAAQA,CACnB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,SAEA,QAEf,EACA8N,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,2BACHmO,GAAI,oCACJrX,EAAG,iCACHsX,GAAI,oCACJlP,EAAG,2BACHmP,GAAI,oCACJ/P,EAAG,qBACHgQ,GAAI,8BACJ5O,EAAG,qBACH8O,GAAI,8BACJzN,EAAG,qBACH0N,GAAI,mCACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EACFpU,QAAQ,kEAAiB,SAAUD,GAChC,OAAO2sB,GAAY3sB,EACvB,CAAC,EACAC,QAAQ,UAAM,GAAG,CAC1B,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EACFpU,QAAQ,MAAO,SAAUD,GACtB,OAAOysB,GAAYzsB,EACvB,CAAC,EACAC,QAAQ,KAAM,QAAG,CAC1B,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,gXAAyE0I,MAC7E,GACJ,EACAL,YACI,gXAAyEK,MACrE,GACJ,EACJ3J,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,2BACHmO,GAAI,oCACJrX,EAAG,iCACHsX,GAAI,oCACJlP,EAAG,2BACHmP,GAAI,oCACJ/P,EAAG,qBACHgQ,GAAI,8BACJ5O,EAAG,qBACH8O,GAAI,8BACJzN,EAAG,qBACH0N,GAAI,mCACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAkB,GAAc,CACVd,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAcAlD,GAAY,CACR/mB,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,8BACA,oCACA,qCAEJlJ,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,oCACA,oCACA,qCAEJoI,EAAG,CACC,2DACA,0DACA,CAAC,uCAAU,wCACX,oCACA,8BACA,+BAEJZ,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,oCACA,yBAEJoB,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,8BACA,yBAEJqB,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,oCACA,oCACA,wBAER,EAWAwpB,GAAW,CACP,iCACA,uCACA,2BACA,iCACA,2BACA,iCACA,iCACA,iCACA,uCACA,uCACA,uCACA,wCA2EJC,IAxEJl2B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ4qB,GACRviB,YAAauiB,GACb7rB,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,mMAAwCzC,MAAM,GAAG,EAChEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAY,cAAe,gBACfhC,KAAM,SAAUhY,GACZ,MAAO,WAAQA,CACnB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,SAEA,QAEf,EACA8N,SAAU,CACNC,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNlO,EAAG8mB,EAAY,GAAG,EAClB3Y,GAAI2Y,EAAY,GAAG,EACnBhwB,EAAGgwB,EAAY,GAAG,EAClB1Y,GAAI0Y,EAAY,GAAG,EACnB5nB,EAAG4nB,EAAY,GAAG,EAClBzY,GAAIyY,EAAY,GAAG,EACnBxoB,EAAGwoB,EAAY,GAAG,EAClBxY,GAAIwY,EAAY,GAAG,EACnBpnB,EAAGonB,EAAY,GAAG,EAClBtY,GAAIsY,EAAY,GAAG,EACnB/lB,EAAG+lB,EAAY,GAAG,EAClBrY,GAAIqY,EAAY,GAAG,CACvB,EACAjS,SAAU,SAAU/C,GAChB,OAAOA,EACFpU,QAAQ,kEAAiB,SAAUD,GAChC,OAAO6sB,GAAY7sB,EACvB,CAAC,EACAC,QAAQ,UAAM,GAAG,CAC1B,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EACFpU,QAAQ,MAAO,SAAUD,GACtB,OAAO4sB,GAAY5sB,EACvB,CAAC,EACAC,QAAQ,KAAM,QAAG,CAC1B,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAIc,CACX4e,EAAG,QACHI,EAAG,QACHG,EAAG,QACHuB,GAAI,QACJC,GAAI,QACJ9B,EAAG,OACHK,EAAG,OACH0B,GAAI,OACJC,GAAI,OACJ/B,EAAG,cACHC,EAAG,cACH+B,IAAK,cACL7B,EAAG,YACHG,EAAG,QACH2B,GAAI,QACJC,GAAI,QACJC,GAAI,kBACJC,GAAI,iBACR,GAwFA,SAASC,GAAuBhvB,EAAQuhB,EAAe1iB,GASnD,MAAY,MAARA,EACO0iB,EAAgB,6CAAY,6CACpB,MAAR1iB,EACA0iB,EAAgB,6CAAY,6CAE5BvhB,EAAS,KAtBFivB,EAsB4B,CAACjvB,EArB3CkvB,GADQC,EASC,CACTld,GAAIsP,EAAgB,6HAA2B,6HAC/CrP,GAAIqP,EAAgB,6HAA2B,6HAC/CpP,GAAIoP,EAAgB,6HAA2B,6HAC/CnP,GAAI,6EACJE,GAAI,iHACJC,GAAI,4EACR,EAMwC1T,IArBvBsN,MAAM,GAAG,EACnB8iB,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACM,GAAZD,EAAM,IAAWA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAmB,IAAbA,EAAM,KACzDC,EAAM,GACNA,EAAM,GAkBlB,CAtGA92B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,+EAA+E0I,MACnF,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SACI,2KAAqE2J,MACjE,GACJ,EACJyC,cAAe,sDAA8BzC,MAAM,GAAG,EACtDwC,YAAa,+CAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,qBACTC,QAAS,kBACTC,SAAU,mDACVC,QAAS,qBACTC,SAAU,iDACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,qBACNlO,EAAG,+BACHmO,GAAI,iBACJrX,EAAG,uBACHsX,GAAI,sBACJlP,EAAG,WACHmP,GAAI,UACJ/P,EAAG,aACHgQ,GAAI,YACJ5O,EAAG,SACH8O,GAAI,QACJzN,EAAG,SACH0N,GAAI,OACR,EACAC,cAAe,oDACfhC,KAAM,SAAUhY,GACZ,MAAO,8BAAmBuJ,KAAKvJ,CAAK,CACxC,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,YACAA,EAAO,GACP,kBACAA,EAAO,GACP,eAEA,YAEf,EACA2O,uBAAwB,6DACxB7Q,QAAS,SAAUhB,GACf,IAIIhH,EAJJ,OAAe,IAAXgH,EAEOA,EAAS,kBAKbA,GAAUsuB,GAHbt1B,EAAIgH,EAAS,KAGesuB,GAFvBtuB,EAAS,IAAOhH,IAEsBs1B,GAD7B,KAAVtuB,EAAgB,IAAM,MAElC,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EA8BDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,oiBAAuG6R,MAC3G,GACJ,EACAijB,WACI,whBAAqGjjB,MACjG,GACJ,CACR,EACAL,YACI,sRAA0DK,MAAM,GAAG,EACvE3J,SAAU,CACNlI,OAAQ,+SAA0D6R,MAC9D,GACJ,EACAijB,WACI,+SAA0DjjB,MACtD,GACJ,EACJ2a,SAAU,4IACd,EACAlY,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,kCACV,EACAZ,SAAU,CACNC,QAAS,6CACTC,QAAS,mDACTE,QAAS,6CACTD,SAAU,WACN,MAAO,2BACX,EACAE,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uEACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,gEACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,8BACRC,KAAM,8BACNlO,EAAG,wFACHlJ,EAAGo0B,GACH9c,GAAI8c,GACJhsB,EAAGgsB,GACH7c,GAAI6c,GACJ5sB,EAAG,iCACHgQ,GAAI4c,GACJxrB,EAAG,iCACH8O,GAAI0c,GACJnqB,EAAG,qBACH0N,GAAIyc,EACR,EACAxc,cAAe,wHACfhC,KAAM,SAAUhY,GACZ,MAAO,8DAAiBuJ,KAAKvJ,CAAK,CACtC,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,qBAEA,sCAEf,EACA2O,uBAAwB,uCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQzc,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,UADTA,EAAS,UAEnB,IAAK,IACD,OAAOA,EAAS,gBACpB,QACI,OAAOA,CACf,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,kbAAoF0I,MACxF,GACJ,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SAAU,ySAAyD2J,MAC/D,GACJ,EACAyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,sEACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+DACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACNlO,EAAG,wFACHmO,GAAI,gDACJrX,EAAG,uCACHsX,GAAI,0CACJlP,EAAG,qBACHmP,GAAI,8BACJ/P,EAAG,qBACHgQ,GAAI,8BACJ7N,EAAG,6CACH8N,GAAI,gDACJ7O,EAAG,iCACH8O,GAAI,0CACJzN,EAAG,uCACH0N,GAAI,yCACR,EACAV,uBAAwB,0FACxB7Q,QAAS,SAAUhB,GACf,IAAIqvB,EAAYrvB,EAAS,GACrBsvB,EAActvB,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,gBACO,GAAhBsvB,EACAtvB,EAAS,gBACK,GAAdsvB,GAAoBA,EAAc,GAClCtvB,EAAS,gBACK,GAAdqvB,EACArvB,EAAS,gBACK,GAAdqvB,EACArvB,EAAS,gBACK,GAAdqvB,GAAiC,GAAdA,EACnBrvB,EAAS,gBAETA,EAAS,eAExB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,uKAA8I0I,MAClJ,GACJ,EACAL,YAAa,gEAAiDK,MAAM,GAAG,EACvE3J,SAAU,yDAA+C2J,MAAM,GAAG,EAClEyC,cAAe,mCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,kDACLC,KAAM,sDACV,EACAZ,SAAU,CACNC,QAAS,yBACTC,QAAS,2BACTC,SAAU,+BACVC,QAAS,2BACTC,SAAU,6CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,oBACRC,KAAM,uBACNlO,EAAG,kBACHmO,GAAI,aACJrX,EAAG,eACHsX,GAAI,YACJlP,EAAG,uBACHmP,GAAI,oBACJ/P,EAAG,aACHgQ,GAAI,UACJ5O,EAAG,aACH8O,GAAI,UACJzN,EAAG,YACH0N,GAAI,QACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAI0hB,GAAc,CACV9C,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,EACAsC,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAuGAC,IArGJ/3B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,sdAA0F0I,MAC9F,GACJ,EACAL,YACI,4UAAmEK,MAC/D,GACJ,EACJ3J,SAAU,2TAA4D2J,MAClE,GACJ,EACAyC,cAAe,6LAAuCzC,MAAM,GAAG,EAC/DwC,YAAa,+JAAkCxC,MAAM,GAAG,EACxDtK,eAAgB,CACZ2P,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,8CACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNlO,EAAG,sEACHmO,GAAI,gDACJrX,EAAG,8CACHsX,GAAI,oCACJlP,EAAG,8CACHmP,GAAI,oCACJ/P,EAAG,kCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,wBACJzN,EAAG,kCACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOiuB,GAAYjuB,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOguB,GAAYhuB,EACvB,CAAC,CACL,EAEAiR,cAAe,6LACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,uBAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,uBAAbvH,GAEa,6BAAbA,EACAuH,EACa,mCAAbvH,EACQ,GAARuH,EAAYA,EAAOA,EAAO,GACb,mCAAbvH,GAEa,+CAAbA,EACAuH,EAAO,GADX,KAAA,CAGX,EAEAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,qBACAA,EAAO,EACP,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,iCACAA,EAAO,GACP,6CAEA,oBAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAkD,GAAc,CACVX,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EA6FAG,IA3FJj4B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,sdAA0F0I,MAC9F,GACJ,EACAL,YACI,4UAAmEK,MAC/D,GACJ,EACJ3J,SAAU,2TAA4D2J,MAClE,GACJ,EACAyC,cAAe,6LAAuCzC,MAAM,GAAG,EAC/DwC,YAAa,+JAAkCxC,MAAM,GAAG,EACxDtK,eAAgB,CACZ2P,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,8CACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNlO,EAAG,sEACHmO,GAAI,gDACJrX,EAAG,8CACHsX,GAAI,oCACJlP,EAAG,8CACHmP,GAAI,oCACJ/P,EAAG,kCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,wBACJzN,EAAG,kCACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAO6uB,GAAY7uB,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAO4uB,GAAY5uB,EACvB,CAAC,CACL,EACAiR,cAAe,+HACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAGO,uBAAbvH,GAA8B,GAARuH,GACT,mCAAbvH,GAAwBuH,EAAO,GACnB,mCAAbvH,EAEOuH,EAAO,GAEPA,CAEf,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,iCAEA,oBAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAoD,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAkGJ,SAASC,GAAyBjxB,EAAQuhB,EAAe1iB,GAMrD,OAAOmB,EAAS,KAoBFkxB,EAzBD,CACThf,GAAI,WACJI,GAAI,MACJF,GAAI,QACR,EACsCvT,GAqBvB,KADKmB,EApBwBA,GAwBrCkxB,EAQ+B10B,KAAAA,KALlC20B,EAAgB,CAChBv2B,EAAG,IACH3B,EAAG,IACHmJ,EAAG,GACP,IALkB8uB,EAJMA,GAUD/I,OAAO,CAAC,GAGxBgJ,EAAcD,EAAK/I,OAAO,CAAC,GAAK+I,EAAKE,UAAU,CAAC,EAF5CF,EAhCf,CAvGA94B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wzBAAqJ0I,MACzJ,GACJ,EACAL,YACI,qPAAiEK,MAC7D,GACJ,EACJJ,iBAAkB,+BAClBslB,iBAAkB,CAAA,EAClB7uB,SACI,mbAAgF2J,MAC5E,GACJ,EACJyC,cAAe,2QAAoDzC,MAC/D,GACJ,EACAwC,YAAa,iIAA6BxC,MAAM,GAAG,EACnDtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,2BACV,EACAZ,SAAU,CACNC,QAAS,4CACTC,QAAS,4CACTC,SAAU,mGACVC,QAAS,gCACTC,SAAU,kGACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,oCACNlO,EAAG,iCACHmO,GAAI,0CACJrX,EAAG,+DACHsX,GAAI,oCACJlP,EAAG,qEACHmP,GAAI,0CACJ/P,EAAG,mDACHgQ,GAAI,8BACJ5O,EAAG,yDACH8O,GAAI,8BACJzN,EAAG,6CACH0N,GAAI,iBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAO+uB,GAAY/uB,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAO8uB,GAAY9uB,EACvB,CAAC,CACL,EACAiR,cAAe,6MACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAGO,yCAAbvH,GAAiC,GAARuH,GACZ,+CAAbvH,GAA0BuH,EAAO,GACrB,+CAAbvH,EAEOuH,EAAO,GAEPA,CAEf,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,uCACAA,EAAO,GACP,6CACAA,EAAO,GACP,6CACAA,EAAO,GACP,6CAEA,sCAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAgDG5B,GAAc,CACV,QACA,mBACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJqlB,GACI,uJAuBJC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAuFR,SAASC,GAAUxxB,EAAQuhB,EAAe1iB,GACtC,IAAI2X,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,KAQD,OANI2X,GADW,IAAXxW,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIwW,GADW,IAAXxW,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAEA,SAGlB,IAAK,IACD,MAAuB,YAC3B,IAAK,KAQD,OANIwW,GADW,IAAXxW,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,OAGlB,IAAK,KAMD,OAJIwW,GADW,IAAXxW,EACU,MAEA,OAGlB,IAAK,KAQD,OANIwW,GADW,IAAXxW,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIwW,GADW,IAAXxW,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAEA,QAGtB,CACJ,CA9IA5H,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,qFAAgF0I,MACpF,GACJ,EACAL,YAAa,wDAAmDK,MAAM,GAAG,EACzE3J,SAAU,kDAA6C2J,MAAM,GAAG,EAChEyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,wBAAwBxC,MAAM,GAAG,EAC9C6C,cAAeuiB,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,sBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBvlB,YAAaslB,GACbvlB,iBAAkBulB,GAClBK,kBA9CI,6FA+CJC,uBA7CI,gEA8CJ3lB,YAAaA,GACb4lB,gBAAiB5lB,GACjB6lB,iBAAkB7lB,GAElBpK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,iCACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,0BACTC,SAAU,eACVC,QAAS,qBACTC,SAAU,qBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,YACRC,KAAM,cACNlO,EAAG,2BACHmO,GAAI,YACJrX,EAAG,cACHsX,GAAI+e,GACJjuB,EAAG,SACHmP,GAAI,SACJ/P,EAAG,YACHgQ,GAAI6e,GACJztB,EAAG,SACH8O,GAAI2e,GACJpsB,EAAG,WACH0N,GAvIR,SAAiCvS,GAC7B,OAWJ,SAAS+xB,EAAW/xB,GAChB,GAAa,EAATA,EACA,OAAO+xB,EAAW/xB,EAAS,EAAE,EAEjC,OAAOA,CACX,EAhBuBA,CAAM,GACrB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,QACxB,CACJ,CA6HI,EACA6R,uBAAwB,qBACxB7Q,QAAS,SAAUhB,GAEf,OAAOA,GADiB,IAAXA,EAAe,QAAO,MAEvC,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,EACA2E,cAAe,YACfhC,KAAM,SAAU1P,GACZ,MAAiB,SAAVA,CACX,EACAnF,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAOllB,EAAO,GAAK,OAAS,MAChC,CACJ,CAAC,EA2ED9K,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,qFAAqF0I,MACzF,GACJ,EACAL,YACI,8DAA8DK,MAC1D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,iEAA4D2J,MAClE,GACJ,EACAyC,cAAe,0CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,iBACf,CACJ,EACA8O,QAAS,oBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,gCACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,cACHmO,GAAIuf,GACJ52B,EAtIR,SAA6BoF,EAAQuhB,EAAe1iB,EAAK2nB,GACrD,OAAQ3nB,GACJ,IAAK,IACD,OAAO0iB,EACD,eACAiF,EACE,eACA,cAChB,CACJ,EA8HQtU,GAAIsf,GACJxuB,EAAGwuB,GACHrf,GAAIqf,GACJpvB,EAAG,MACHgQ,GAAIof,GACJhuB,EAAG,SACH8O,GAAIkf,GACJ3sB,EAAG,SACH0N,GAAIif,EACR,EACA3f,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJ2rB,WACI,uFAAoFjjB,MAChF,GACJ,EACJ7R,OAAQ,wHAAqH6R,MACzH,GACJ,EACA2a,SAAU,iBACd,EACAhb,YACI,iEAA8DK,MAC1D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SACI,8DAA8D2J,MAC1D,GACJ,EACJyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJsgB,GAAI,aACJrgB,IAAK,gCACLsgB,IAAK,mBACLrgB,KAAM,qCACNsgB,KAAM,sBACV,EACAlhB,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjB/Y,KAAK+K,MAAM,EAAU,MAAQ,MAAQ,MAC9D,EACAiO,QAAS,WACL,MAAO,eAA+B,IAAjBhZ,KAAK+K,MAAM,EAAU,MAAQ,MAAQ,MAC9D,EACAkO,SAAU,WACN,MAAO,YAA+B,IAAjBjZ,KAAK+K,MAAM,EAAU,MAAQ,MAAQ,MAC9D,EACAmO,QAAS,WACL,MAAO,YAA+B,IAAjBlZ,KAAK+K,MAAM,EAAU,MAAQ,MAAQ,MAC9D,EACAoO,SAAU,WACN,MACI,wBACkB,IAAjBnZ,KAAK+K,MAAM,EAAU,MAAQ,MAC9B,MAER,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,eACRC,KAAM,QACNlO,EAAG,aACHmO,GAAI,YACJrX,EAAG,WACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,SACHgQ,GAAI,UACJ5O,EAAG,SACH8O,GAAI,WACJzN,EAAG,SACH0N,GAAI,SACR,EACAV,uBAAwB,wBACxB7Q,QAAS,SAAUhB,EAAQyc,GAcvB,OAAOzc,GAHQ,MAAXyc,GAA6B,MAAXA,EATP,IAAXzc,EACM,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACA,OAEH,IAGjB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIGskB,GAAW,CACP/C,WACI,8HAAoFjjB,MAChF,GACJ,EACJ7R,OAAQ,gIAAsF6R,MAC1F,GACJ,EACA2a,SAAU,gCACd,EACAhb,GAAc,yFAAkDK,MAAM,GAAG,EACzEimB,EAAgB,CACZ,QACA,WACA,aACA,QACA,aACA,wCACA,2CACA,QACA,gBACA,gBACA,QACA,SAIJC,EACI,mPAER,SAASC,GAAS7jB,GACd,OAAW,EAAJA,GAASA,EAAI,GAAoB,GAAf,CAAC,EAAEA,EAAI,GACpC,CACA,SAAS8jB,EAAYvyB,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIhQ,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,IACD,OAAO0iB,GAAiBiF,EAAW,gBAAe,mBACtD,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAU8b,GAAStyB,CAAM,EAAI,UAAY,UAEzCwW,EAAS,YAExB,IAAK,IACD,OAAO+K,EAAgB,SAAWiF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAU8b,GAAStyB,CAAM,EAAI,SAAW,SAExCwW,EAAS,WAExB,IAAK,IACD,OAAO+K,EAAgB,SAAWiF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAU8b,GAAStyB,CAAM,EAAI,SAAW,SAExCwW,EAAS,WAExB,IAAK,IACD,OAAO+K,GAAiBiF,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAU8b,GAAStyB,CAAM,EAAI,MAAQ,UAErCwW,EAAS,MAExB,IAAK,IACD,OAAO+K,GAAiBiF,EAAW,gBAAU,kBACjD,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAU8b,GAAStyB,CAAM,EAAI,iBAAW,uBAExCwW,EAAS,iBAExB,IAAK,IACD,OAAO+K,GAAiBiF,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAU8b,GAAStyB,CAAM,EAAI,OAAS,OAEtCwW,EAAS,MAE5B,CACJ,CAySA,SAASgc,GAAsBxyB,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTM,EAAG,CAAC,cAAe,gBACnBoI,EAAG,CAAC,cAAe,gBACnBZ,EAAG,CAAC,UAAW,aACfgQ,GAAI,CAACpS,EAAS,QAASA,EAAS,UAChCuE,EAAG,CAAC,aAAc,eAClBf,EAAG,CAAC,YAAa,eACjB8O,GAAI,CAACtS,EAAS,UAAWA,EAAS,YAClC6E,EAAG,CAAC,WAAY,cAChB0N,GAAI,CAACvS,EAAS,SAAUA,EAAS,UACrC,EACA,OAAOuhB,EAAgBjnB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACxD,CA4DA,SAAS4zB,GAAsBzyB,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTM,EAAG,CAAC,cAAe,gBACnBoI,EAAG,CAAC,cAAe,gBACnBZ,EAAG,CAAC,UAAW,aACfgQ,GAAI,CAACpS,EAAS,QAASA,EAAS,UAChCuE,EAAG,CAAC,aAAc,eAClBf,EAAG,CAAC,YAAa,eACjB8O,GAAI,CAACtS,EAAS,UAAWA,EAAS,YAClC6E,EAAG,CAAC,WAAY,cAChB0N,GAAI,CAACvS,EAAS,SAAUA,EAAS,UACrC,EACA,OAAOuhB,EAAgBjnB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACxD,CA4DA,SAAS6zB,GAAsB1yB,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTM,EAAG,CAAC,cAAe,gBACnBoI,EAAG,CAAC,cAAe,gBACnBZ,EAAG,CAAC,UAAW,aACfgQ,GAAI,CAACpS,EAAS,QAASA,EAAS,UAChCuE,EAAG,CAAC,aAAc,eAClBf,EAAG,CAAC,YAAa,eACjB8O,GAAI,CAACtS,EAAS,UAAWA,EAAS,YAClC6E,EAAG,CAAC,WAAY,cAChB0N,GAAI,CAACvS,EAAS,SAAUA,EAAS,UACrC,EACA,OAAOuhB,EAAgBjnB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACxD,CAtcAzG,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ0uB,GACRrmB,YAAaA,GACbE,YAAaqmB,EACbtmB,iBAAkBsmB,EAGlBV,kBACI,gPACJC,uBACI,6FACJ3lB,YAAammB,EACbP,gBAAiBO,EACjBN,iBAAkBM,EAClB5vB,SAAU,mFAAmD2J,MAAM,GAAG,EACtEyC,cAAe,kCAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,kCAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN2D,EAAG,YACP,EACAvE,SAAU,CACNC,QAAS,cACTC,QAAS,kBACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACf,CACJ,EACA8O,QAAS,oBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,uBACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,eACNlO,EAAGyuB,EACHtgB,GAAIsgB,EACJ33B,EAAG23B,EACHrgB,GAAIqgB,EACJvvB,EAAGuvB,EACHpgB,GAAIogB,EACJnwB,EAAGmwB,EACHngB,GAAImgB,EACJ/uB,EAAG+uB,EACHjgB,GAAIigB,EACJ1tB,EAAG0tB,EACHhgB,GAAIggB,CACR,EACA1gB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,0TAAgE0I,MACpE,GACJ,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SACI,2WAAoE2J,MAChE,GACJ,EACJyC,cAAe,iIAA6BzC,MAAM,GAAG,EACrDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iHACJC,IAAK,wHACLC,KAAM,6HACV,EACAZ,SAAU,CACNC,QAAS,6EACTC,QAAS,6EACTE,QAAS,6EACTD,SAAU,wFACVE,SAAU,wFACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SAAUrQ,GAMd,OAAOA,GALK,mCAAUmU,KAAKnU,CAAM,EAC3B,qBACA,uBAAQmU,KAAKnU,CAAM,EACjB,qBACA,qBAEZ,EACAsQ,KAAM,0CACNlO,EAAG,6EACHmO,GAAI,gDACJrX,EAAG,oDACHsX,GAAI,oCACJlP,EAAG,oDACHmP,GAAI,oCACJ/P,EAAG,wCACHgQ,GAAI,wBACJ5O,EAAG,8CACH8O,GAAI,8BACJzN,EAAG,wCACH0N,GAAI,uBACR,EACAV,uBAAwB,6BACxB7Q,QAAS,wBACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,yFAAyF0I,MAC7F,GACJ,EACAL,YAAa,qDAAqDK,MAC9D,GACJ,EACA3J,SACI,+EAA+E2J,MAC3E,GACJ,EACJyC,cAAe,+BAA+BzC,MAAM,GAAG,EACvDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EAEpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,cACNlO,EAAG,mBACHmO,GAAI,YACJrX,EAAG,QACHsX,GAAI,WACJlP,EAAG,MACHmP,GAAI,SACJ/P,EAAG,UACHgQ,GAAI,aACJ5O,EAAG,MACH8O,GAAI,SACJzN,EAAG,WACH0N,GAAI,YACR,EACAV,uBAAwB,mCAExB7Q,QAAS,SAAUhB,GACf,IACI0B,EAAS,GAiCb,OATQ,GAzBA1B,EA2BA0B,EADM,KA1BN1B,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MAEF,EA/BPA,IAgCJ0B,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBA1B,IAkCDA,EAAS0B,CACpB,EACA+C,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,sFAAsF0I,MAC1F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAAqD2J,MAAM,GAAG,EACxEyC,cAAe,oCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6BAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,oCACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,sBACVC,QAAS,oBACTC,SAAU,qBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,iBACHmO,GAAI,cACJrX,EAAG,WACHsX,GAAI,cACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,SACHgQ,GAAI,UACJ5O,EAAG,cACH8O,GAAI,gBACJzN,EAAG,WACH0N,GAAI,UACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAmBDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,2FAAqF0I,MACzF,GACJ,EACAL,YACI,mEAA6DK,MAAM,GAAG,EAC1EklB,iBAAkB,CAAA,EAClB7uB,SACI,8DAA8D2J,MAC1D,GACJ,EACJyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,8BACd,EACAS,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG43B,GACHtgB,GAAI,aACJlP,EAAGwvB,GACHrgB,GAAI,aACJ/P,EAAGowB,GACHpgB,GAAIogB,GACJjuB,EAAGiuB,GACHngB,GAAI,YACJ7O,EAAGgvB,GACHlgB,GAAIkgB,GACJ3tB,EAAG2tB,GACHjgB,GAAIigB,EACR,EACA3gB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAmBDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAqF0I,MACzF,GACJ,EACAL,YACI,gEAA6DK,MAAM,GAAG,EAC1EklB,iBAAkB,CAAA,EAClB7uB,SACI,8DAA8D2J,MAC1D,GACJ,EACJyC,cAAe,uBAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,8BACd,EACAS,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG63B,GACHvgB,GAAI,aACJlP,EAAGyvB,GACHtgB,GAAI,aACJ/P,EAAGqwB,GACHrgB,GAAIqgB,GACJluB,EAAGkuB,GACHpgB,GAAI,YACJ7O,EAAGivB,GACHngB,GAAImgB,GACJ5tB,EAAG4tB,GACHlgB,GAAIkgB,EACR,EACA5gB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAmBDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wFAAqF0I,MACzF,GACJ,EACAL,YACI,gEAA6DK,MAAM,GAAG,EAC1EklB,iBAAkB,CAAA,EAClB7uB,SACI,8DAA8D2J,MAC1D,GACJ,EACJyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,8BACd,EACAS,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG83B,GACHxgB,GAAI,aACJlP,EAAG0vB,GACHvgB,GAAI,aACJ/P,EAAGswB,GACHtgB,GAAIsgB,GACJnuB,EAAGmuB,GACHrgB,GAAI,YACJ7O,EAAGkvB,GACHpgB,GAAIogB,GACJ7tB,EAAG6tB,GACHngB,GAAImgB,EACR,EACA7gB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIG8kB,EAAW,CACP,mDACA,+DACA,uCACA,mDACA,eACA,2BACA,uCACA,mDACA,2EACA,+DACA,+DACA,gEAEJnwB,EAAW,CACP,mDACA,2BACA,mDACA,2BACA,+DACA,uCACA,oDAGRpK,EAAMub,aAAa,KAAM,CACrBlQ,OAAQkvB,EACR7mB,YAAa6mB,EACbnwB,SAAUA,EACVoM,cAAepM,EACfmM,YAAa,iLAAqCxC,MAAM,GAAG,EAC3DtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAY,cAAe,4BACfhC,KAAM,SAAUhY,GACZ,MAAO,iBAASA,CACpB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,eAEA,cAEf,EACA8N,SAAU,CACNC,QAAS,4CACTC,QAAS,4CACTC,SAAU,UACVC,QAAS,4CACTC,SAAU,6DACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,sDACRC,KAAM,0CACNlO,EAAG,uFACHmO,GAAI,sDACJrX,EAAG,mDACHsX,GAAI,0CACJlP,EAAG,+DACHmP,GAAI,sDACJ/P,EAAG,mDACHgQ,GAAI,0CACJ5O,EAAG,uCACH8O,GAAI,8BACJzN,EAAG,mDACH0N,GAAI,yCACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,UAAM,GAAG,CACnC,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,KAAM,QAAG,CACnC,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAWDzV,EAAMub,aAAa,KAAM,CACrBif,mBACI,wnBAAqHzmB,MACjH,GACJ,EACJ0mB,iBACI,wnBAAqH1mB,MACjH,GACJ,EACJ1I,OAAQ,SAAUqvB,EAAgBx4B,GAC9B,OAAKw4B,GAGiB,UAAlB,OAAOx4B,GACP,IAAIyH,KAAKzH,EAAO82B,UAAU,EAAG92B,EAAOgP,QAAQ,MAAM,CAAC,CAAC,EAG7CpR,KAAK66B,kBAEL76B,KAAK86B,qBAFkBF,EAAepvB,MAAM,GAN5CxL,KAAK86B,mBAUpB,EACAlnB,YAAa,kPAAoDK,MAAM,GAAG,EAC1E3J,SAAU,ySAAyD2J,MAC/D,GACJ,EACAyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CxQ,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAY,GAARnlB,EACOmlB,EAAU,eAAO,eAEjBA,EAAU,eAAO,cAEhC,EACA5X,KAAM,SAAUhY,GACZ,MAAyC,YAAjCA,EAAQ,IAAI0M,YAAY,EAAE,EACtC,EACAsN,cAAe,+BACf3Q,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAqhB,WAAY,CACRhiB,QAAS,+CACTC,QAAS,yCACTC,SAAU,eACVC,QAAS,mCACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,iGACX,QACI,MAAO,sGACf,CACJ,EACAgP,SAAU,GACd,EACAN,SAAU,SAAUnS,EAAK4C,GACrB,IAtEcjJ,EAsEVkJ,EAASxJ,KAAKg7B,YAAYr0B,GAC1BoE,EAAQxB,GAAOA,EAAIwB,MAAM,EAI7B,OA3EczK,EAwEGkJ,GACbA,EAvEiB,aAApB,OAAOlC,UAA4BhH,aAAiBgH,UACX,sBAA1C9G,OAAOC,UAAUC,SAASC,KAAKL,CAAK,EAsEvBkJ,EAAOrJ,MAAMoJ,CAAG,EAEtBC,GAAOF,QAAQ,KAAMyB,EAAQ,IAAO,EAAI,qBAAQ,0BAAM,CACjE,EACA6O,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACNlO,EAAG,oGACHmO,GAAI,8EACJrX,EAAG,oDACHsX,GAAI,oCACJlP,EAAG,wCACHmP,GAAI,8BACJ/P,EAAG,8CACHgQ,GAAI,oCACJ5O,EAAG,0DACH8O,GAAI,oCACJzN,EAAG,gEACH0N,GAAI,yCACR,EACAV,uBAAwB,gBACxB7Q,QAAS,WACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,2BACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,CACJ,CAAC,EAIDb,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,CACJ,CAAC,EAIDb,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,kGAA6F0I,MACjG,GACJ,EACAL,YAAa,yDAAoDK,MAAM,GAAG,EAC1E3J,SAAU,oEAAqD2J,MAAM,GAAG,EACxEyC,cAAe,0CAAgCzC,MAAM,GAAG,EACxDwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNsgB,KAAM,qCACV,EACA1f,cAAe,cACfhC,KAAM,SAAUhY,GACZ,MAAyC,MAAlCA,EAAM2vB,OAAO,CAAC,EAAEjjB,YAAY,CACvC,EACAvJ,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAY,GAARnlB,EACOmlB,EAAU,SAAW,SAErBA,EAAU,SAAW,QAEpC,EACApX,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,sBACTC,SAAU,2BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,gBACNlO,EAAG,kBACHmO,GAAI,cACJrX,EAAG,aACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,WACHgQ,GAAI,WACJ5O,EAAG,aACH8O,GAAI,aACJzN,EAAG,WACH0N,GAAI,UACR,EACAV,uBAAwB,WACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIslB,GACI,8DAA8DhnB,MAC1D,GACJ,EACJinB,GAAgB,kDAAkDjnB,MAAM,GAAG,EAC3EknB,EAAgB,CACZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,GACI,mLAsFJC,IApFJn7B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,2FAA2F0I,MAC/F,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnB84B,GAEAD,IAFcv4B,EAAE8I,MAAM,GAFtByvB,EAMf,EACAnnB,YAAasnB,GACbvnB,iBAAkBunB,GAClB3B,kBACI,+FACJC,uBACI,0FACJ3lB,YAAaonB,EACbxB,gBAAiBwB,EACjBvB,iBAAkBuB,EAClB7wB,SAAU,6DAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,2CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,oCACV,EACAZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/Y,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC3D,EACAiO,QAAS,WACL,MAAO,mBAAmC,IAAjBhZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC9D,EACAkO,SAAU,WACN,MAAO,cAAiC,IAAjBjZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAmO,QAAS,WACL,MAAO,cAAiC,IAAjBlZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAoO,SAAU,WACN,MACI,0BACkB,IAAjBnZ,KAAK+K,MAAM,EAAU,IAAM,IAC5B,MAER,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNlO,EAAG,gBACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,aACJ7N,EAAG,aACH8N,GAAI,aACJ7O,EAAG,SACH8O,GAAI,WACJzN,EAAG,YACH0N,GAAI,YACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKO,8DAA8D1B,MAC1D,GACJ,GACJqnB,GAAgB,kDAAkDrnB,MAAM,GAAG,EAC3EsnB,EAAgB,CACZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,GACI,mLAuFJC,IArFJv7B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,2FAA2F0I,MAC/F,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnBk5B,GAEAD,IAFc34B,EAAE8I,MAAM,GAFtB6vB,EAMf,EACAvnB,YAAa0nB,GACb3nB,iBAAkB2nB,GAClB/B,kBACI,+FACJC,uBACI,0FACJ3lB,YAAawnB,EACb5B,gBAAiB4B,EACjB3B,iBAAkB2B,EAClBjxB,SAAU,6DAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,2CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,kCACV,EACAZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/Y,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC3D,EACAiO,QAAS,WACL,MAAO,mBAAmC,IAAjBhZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC9D,EACAkO,SAAU,WACN,MAAO,cAAiC,IAAjBjZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAmO,QAAS,WACL,MAAO,cAAiC,IAAjBlZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAoO,SAAU,WACN,MACI,0BACkB,IAAjBnZ,KAAK+K,MAAM,EAAU,IAAM,IAC5B,MAER,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNlO,EAAG,gBACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,aACJ7N,EAAG,aACH8N,GAAI,aACJ7O,EAAG,SACH8O,GAAI,WACJzN,EAAG,YACH0N,GAAI,YACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,EACAlM,YAAa,mBACjB,CAAC,EAKO,8DAA8DwK,MAC1D,GACJ,GACJynB,GAAgB,kDAAkDznB,MAAM,GAAG,EAC3E0nB,GAAgB,CACZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAsFJC,IApFJ37B,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,2FAA2F0I,MAC/F,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnBs5B,GAEAD,IAFc/4B,EAAE8I,MAAM,GAFtBiwB,EAMf,EACA3nB,YAAa8nB,EACb/nB,iBAAkB+nB,EAClBnC,kBACI,+FACJC,uBACI,0FACJ3lB,YAAa4nB,GACbhC,gBAAiBgC,GACjB/B,iBAAkB+B,GAClBrxB,SAAU,6DAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,2CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,oCACV,EACAZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/Y,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC3D,EACAiO,QAAS,WACL,MAAO,mBAAmC,IAAjBhZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC9D,EACAkO,SAAU,WACN,MAAO,cAAiC,IAAjBjZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAmO,QAAS,WACL,MAAO,cAAiC,IAAjBlZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAoO,SAAU,WACN,MACI,0BACkB,IAAjBnZ,KAAK+K,MAAM,EAAU,IAAM,IAC5B,MAER,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNlO,EAAG,gBACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,aACJ7N,EAAG,aACH8N,GAAI,aACJ7O,EAAG,SACH8O,GAAI,WACJzN,EAAG,YACH0N,GAAI,YACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKO,8DAA8D1B,MAC1D,GACJ,GACJ6nB,GAAgB,kDAAkD7nB,MAAM,GAAG,EAC3E8nB,GAAgB,CACZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,GACI,mLAuFR,SAASC,GAAsBn0B,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTwJ,EAAG,CAAC,kBAAgB,iBAAe,iBACnCmO,GAAI,CAACjS,EAAS,UAAWA,EAAS,YAClCpF,EAAG,CAAC,gBAAc,gBAClBsX,GAAI,CAAClS,EAAS,UAAWA,EAAS,YAClCgD,EAAG,CAAC,eAAa,YAAa,eAC9BmP,GAAI,CAACnS,EAAS,SAAUA,EAAS,UACjCoC,EAAG,CAAC,kBAAa,kBACjBoB,EAAG,CAAC,UAAW,WAAY,cAC3B8O,GAAI,CAACtS,EAAS,OAAQA,EAAS,SAC/B6E,EAAG,CAAC,eAAa,QAAS,gBAC1B0N,GAAI,CAACvS,EAAS,SAAUA,EAAS,UACrC,EACA,OAAIuhB,EACOjnB,EAAOuE,GAAK,IAAsBvE,EAAOuE,GAAK,GAElD2nB,EAAWlsB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACnD,CAvGAzG,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,2FAA2F0I,MAC/F,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnB05B,GAEAD,IAFcn5B,EAAE8I,MAAM,GAFtBqwB,EAMf,EACA/nB,YAAakoB,GACbnoB,iBAAkBmoB,GAClBvC,kBACI,+FACJC,uBACI,0FACJ3lB,YAAagoB,GACbpC,gBAAiBoC,GACjBnC,iBAAkBmC,GAClBzxB,SAAU,6DAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,2CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,kCACV,EACAZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/Y,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC3D,EACAiO,QAAS,WACL,MAAO,mBAAmC,IAAjBhZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC9D,EACAkO,SAAU,WACN,MAAO,cAAiC,IAAjBjZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAmO,QAAS,WACL,MAAO,cAAiC,IAAjBlZ,KAAK+K,MAAM,EAAU,IAAM,IAAM,MAC5D,EACAoO,SAAU,WACN,MACI,0BACkB,IAAjBnZ,KAAK+K,MAAM,EAAU,IAAM,IAC5B,MAER,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNlO,EAAG,gBACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,aACJ7N,EAAG,aACH8N,GAAI,aACJ7O,EAAG,SACH8O,GAAI,WACJzN,EAAG,YACH0N,GAAI,YACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,EACAlM,YAAa,mBACjB,CAAC,EAwBDvJ,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gGAA6F0I,MACjG,GACJ,EACAL,YACI,gEAA6DK,MAAM,GAAG,EAC1E3J,SACI,sFAAiE2J,MAC7D,GACJ,EACJyC,cAAe,gBAAgBzC,MAAM,GAAG,EACxCwC,YAAa,gBAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,eACRC,KAAM,YACNlO,EAAGqwB,GACHliB,GAAIkiB,GACJv5B,EAAGu5B,GACHjiB,GAAIiiB,GACJnxB,EAAGmxB,GACHhiB,GAAIgiB,GACJ/xB,EAAG+xB,GACH/hB,GAAI,cACJ5O,EAAG2wB,GACH7hB,GAAI6hB,GACJtvB,EAAGsvB,GACH5hB,GAAI4hB,EACR,EACAtiB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,+FAA+F0I,MACnG,GACJ,EACAL,YACI,8DAA8DK,MAC1D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SACI,sEAAsE2J,MAClE,GACJ,EACJyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN2D,EAAG,WACHyc,GAAI,oBACJC,IAAK,0BACLC,KAAM,8BACV,EACAlhB,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNlO,EAAG,iBACHmO,GAAI,aACJrX,EAAG,aACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,UACJ/P,EAAG,WACHgQ,GAAI,UACJ5O,EAAG,eACH8O,GAAI,cACJzN,EAAG,WACH0N,GAAI,SACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIumB,GAAc,CACV3H,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,EACAmH,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAuFAC,IArFJ58B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,0WAAwE0I,MAC5E,GACJ,EACAL,YACI,0WAAwEK,MACpE,GACJ,EACJ3J,SACI,iRAAoE2J,MAChE,GACJ,EACJyC,cACI,iRAAoEzC,MAChE,GACJ,EACJwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAY,cAAe,wGACfhC,KAAM,SAAUhY,GACZ,MAAO,qDAAauJ,KAAKvJ,CAAK,CAClC,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,qDAEA,oDAEf,EACA8N,SAAU,CACNC,QAAS,+DACTC,QAAS,yDACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,0DACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,oDACHmO,GAAI,oCACJrX,EAAG,8CACHsX,GAAI,oCACJlP,EAAG,wCACHmP,GAAI,8BACJ/P,EAAG,kCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,wBACJzN,EAAG,kCACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EACFpU,QAAQ,mBAAU,SAAUD,GACzB,OAAO8yB,GAAY9yB,EACvB,CAAC,EACAC,QAAQ,UAAM,GAAG,CAC1B,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EACFpU,QAAQ,MAAO,SAAUD,GACtB,OAAO6yB,GAAY7yB,EACvB,CAAC,EACAC,QAAQ,KAAM,QAAG,CAC1B,EACAqQ,uBAAwB,gBACxB7Q,QAAS,WACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAKO,iFAAwE1B,MACpE,GACJ,GACJ8oB,GAAgB,CACZ,QACA,QACA,SACA,SACA,YACA,SACA,SACAD,GAAY,GACZA,GAAY,GACZA,GAAY,IAEpB,SAASE,EAAYl1B,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIhQ,EAAS,GACb,OAAQ3X,GACJ,IAAK,IACD,OAAO2nB,EAAW,oBAAsB,kBAC5C,IAAK,KACDhQ,EAASgQ,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACDhQ,EAASgQ,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDhQ,EAASgQ,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,eAAW,cACjC,IAAK,KACDhQ,EAASgQ,EAAW,eAAW,kBAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACDhQ,EAASgQ,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDhQ,EAASgQ,EAAW,SAAW,SAC/B,KACR,CAEA,OAE0BA,EAHIA,EAA9BhQ,IAGkBxW,EAHIA,GAIN,IACVwmB,EACIyO,GACAD,IADch1B,GAElBA,GARoC,IAAMwW,CAEpD,CASApe,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,iHAA2G0I,MAC/G,GACJ,EACAL,YACI,6EAAuEK,MACnE,GACJ,EACJ3J,SACI,qEAAqE2J,MACjE,GACJ,EACJyC,cAAe,uBAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN2D,EAAG,WACHyc,GAAI,cACJC,IAAK,2BACLC,KAAM,+BACV,EACAlhB,SAAU,CACNC,QAAS,6BACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,qBACRC,KAAM,YACNlO,EAAGoxB,EACHjjB,GAAIijB,EACJt6B,EAAGs6B,EACHhjB,GAAIgjB,EACJlyB,EAAGkyB,EACH/iB,GAAI+iB,EACJ9yB,EAAG8yB,EACH9iB,GAAI8iB,EACJ1xB,EAAG0xB,EACH5iB,GAAI4iB,EACJrwB,EAAGqwB,EACH3iB,GAAI2iB,CACR,EACArjB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,MAAO,CACtBlQ,OAAQ,0FAA0F0I,MAC9F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,yDAAyD2J,MAC/D,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,wBAAwBxC,MAAM,GAAG,EAC9CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,2BACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,eACHsX,GAAI,YACJlP,EAAG,aACHmP,GAAI,UACJ/P,EAAG,aACHgQ,GAAI,UACJ5O,EAAG,cACH8O,GAAI,WACJzN,EAAG,aACH0N,GAAI,SACR,EACAV,uBAAwB,UACxB7Q,QAAS,SAAUhB,GACf,OAAOA,CACX,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wFAAqF0I,MACzF,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SACI,wFAA4E2J,MACxE,GACJ,EACJyC,cAAe,0CAA8BzC,MAAM,GAAG,EACtDwC,YAAa,gCAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,wBACTC,SAAU,8BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,kBACNlO,EAAG,eACHmO,GAAI,cACJrX,EAAG,eACHsX,GAAI,cACJlP,EAAG,cACHmP,GAAI,cACJ/P,EAAG,YACHgQ,GAAI,WACJ5O,EAAG,oBACH8O,GAAI,mBACJzN,EAAG,aACH0N,GAAI,UACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,gGAAuF0I,MAC3F,GACJ,EACAL,YACI,0EAAiEK,MAC7D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,sDAAsD2J,MAAM,GAAG,EACzEyC,cAAe,qCAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG,aACHsX,GAAI,aACJlP,EAAG,YACHmP,GAAI,YACJ/P,EAAG,UACHgQ,GAAI,WACJ5O,EAAG,UACH8O,GAAI,UACJzN,EAAG,QACH0N,GAAI,QACR,EACAV,uBAAwB,gBACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzc,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,IAC/C,CACJ,CACJ,CAAC,EAID5H,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,gGAAuF0I,MAC3F,GACJ,EACAL,YACI,0EAAiEK,MAC7D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,sDAAsD2J,MAAM,GAAG,EACzEyC,cAAe,qCAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG,aACHsX,GAAI,aACJlP,EAAG,YACHmP,GAAI,YACJ/P,EAAG,UACHgQ,GAAI,WACJ5O,EAAG,UACH8O,GAAI,UACJzN,EAAG,QACH0N,GAAI,QACR,EACAV,uBAAwB,gBACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzc,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,IAC/C,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAIIsnB,EACI,2LACJC,GAAgB,CACZ,SACA,YACA,SACA,QACA,QACA,SACA,SACA,YACA,SACA,QACA,QACA,YAuFJC,IApFJj9B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gGAAuF0I,MAC3F,GACJ,EACAL,YACI,0EAAiEK,MAC7D,GACJ,EACJH,YAAampB,EACbppB,iBAAkBopB,EAClBxD,kBA9BI,oGA+BJC,uBA7BI,6FA8BJ3lB,YAAampB,GACbvD,gBAAiBuD,GACjBtD,iBAAkBsD,GAClB5yB,SAAU,sDAAsD2J,MAAM,GAAG,EACzEyC,cAAe,qCAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG,aACHsX,GAAI,aACJlP,EAAG,YACHmP,GAAI,YACJ/P,EAAG,UACHgQ,GAAI,WACJ7N,EAAG,cACH8N,GAAI,cACJ7O,EAAG,UACH8O,GAAI,UACJzN,EAAG,QACH0N,GAAI,QACR,EACAV,uBAAwB,eACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOzc,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,IAC/C,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKO,6DAA6D1B,MAAM,GAAG,GAC1EmpB,GACI,kDAAkDnpB,MAAM,GAAG,EAEnE/T,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,iGAAiG0I,MACrG,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnBg7B,GAEAD,IAFuBz6B,EAAE8I,MAAM,GAF/B2xB,EAMf,EACAhE,iBAAkB,CAAA,EAClB7uB,SAAU,wDAAwD2J,MAC9D,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNlO,EAAG,mBACHmO,GAAI,cACJrX,EAAG,eACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,UACHgQ,GAAI,WACJ5O,EAAG,aACH8O,GAAI,aACJzN,EAAG,WACH0N,GAAI,YACR,EACAV,uBAAwB,kBACxB7Q,QAAS,SAAUhB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,KAEhE,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EA4CDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAzCW,CACP,YACA,UACA,WACA,aACA,YACA,YACA,UACA,YACA,qBACA,sBACA,UACA,WA8BJqI,YA5BgB,CACZ,MACA,QACA,UACA,MACA,OACA,QACA,UACA,SACA,OACA,OACA,OACA,QAiBJulB,iBAAkB,CAAA,EAClB7uB,SAhBa,CACT,kBACA,cACA,iBACA,oBACA,eACA,eACA,kBAUJoM,cARgB,CAAC,OAAQ,OAAQ,WAAS,UAAQ,UAAQ,QAAS,QASnED,YARc,CAAC,KAAM,KAAM,QAAM,QAAM,QAAM,IAAK,MASlD9M,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,kBACTC,SAAU,2BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,OACRC,KAAM,eACNlO,EAAG,mBACHmO,GAAI,aACJrX,EAAG,gBACHsX,GAAI,mBACJlP,EAAG,iBACHmP,GAAI,oBACJ/P,EAAG,QACHgQ,GAAI,WACJ5O,EAAG,QACH8O,GAAI,eACJzN,EAAG,SACH0N,GAAI,WACR,EACAV,uBAAwB,mBACxB7Q,QAAS,SAAUhB,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,KAEjE,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAwKD,SAAS0nB,EAAsBv1B,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTwJ,EAAG,CAAC,wFAAmB,2DACvBmO,GAAI,CAACjS,EAAS,0DAAcA,EAAS,mCACrCpF,EAAG,CAAC,0DAAc,+CAClBsX,GAAI,CAAClS,EAAS,oDAAaA,EAAS,yCACpCgD,EAAG,CAAC,8CAAY,6BAChBmP,GAAI,CAACnS,EAAS,wCAAWA,EAAS,6BAClCoC,EAAG,CAAC,oDAAa,mCACjBgQ,GAAI,CAACpS,EAAS,8CAAYA,EAAS,uBACnCwD,EAAG,CAAC,4EAAiB,qDACrB8O,GAAI,CAACtS,EAAS,gEAAeA,EAAS,yCACtC6E,EAAG,CAAC,0DAAc,yCAClB0N,GAAI,CAACvS,EAAS,oDAAaA,EAAS,wCACxC,EACA,OAAOwmB,EAAWlsB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACnD,CA2GA,SAAS22B,GAAsBx1B,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTwJ,EAAG,CAAC,qBAAsB,iBAC1BmO,GAAI,CAACjS,EAAS,cAAeA,EAAS,WACtCpF,EAAG,CAAC,aAAc,YAClBsX,GAAI,CAAClS,EAAS,YAAaA,EAAS,WACpCgD,EAAG,CAAC,YAAa,UACjBmP,GAAI,CAACnS,EAAS,WAAYA,EAAS,UACnCoC,EAAG,CAAC,YAAa,UACjBgQ,GAAI,CAACpS,EAAS,WAAYA,EAAS,QACnCwD,EAAG,CAAC,eAAgB,aACpB8O,GAAI,CAACtS,EAAS,cAAeA,EAAS,WACtC6E,EAAG,CAAC,aAAc,YAClB0N,GAAI,CAACvS,EAAS,YAAaA,EAAS,UACxC,EACA,OAAOwmB,EAAWlsB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACnD,CAvQAzG,EAAMub,aAAa,KAAM,CACrBlQ,OAzCW,CACP,gBACA,aACA,aACA,aACA,gBACA,kBACA,cACA,iBACA,eACA,gBACA,eACA,mBA8BJqI,YA5BgB,CACZ,OACA,OACA,UACA,OACA,UACA,UACA,OACA,SACA,OACA,UACA,OACA,WAiBJulB,iBAAkB,CAAA,EAClB7uB,SAhBa,CACT,iBACA,UACA,aACA,YACA,YACA,WACA,eAUJoM,cARkB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS7DD,YARgB,CAAC,QAAM,KAAM,QAAM,KAAM,KAAM,KAAM,MASrD9M,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,yBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,6BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACNlO,EAAG,gBACHmO,GAAI,YACJrX,EAAG,UACHsX,GAAI,gBACJlP,EAAG,OACHmP,GAAI,aACJ/P,EAAG,QACHgQ,GAAI,WACJ5O,EAAG,UACH8O,GAAI,eACJzN,EAAG,WACH0N,GAAI,aACR,EACAV,uBAAwB,mBACxB7Q,QAAS,SAAUhB,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,KAEjE,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,4FAAyF0I,MAC7F,GACJ,EACAL,YACI,iEAA8DK,MAC1D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,yDAAmD2J,MAAM,GAAG,EACtEyC,cAAe,2CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,6BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,kCACV,EACAZ,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjB/Y,KAAK+K,MAAM,EAAU,QAAO,QAAO,MAC1D,EACAiO,QAAS,WACL,MAAO,gBAA6B,IAAjBhZ,KAAK+K,MAAM,EAAU,QAAO,QAAO,MAC1D,EACAkO,SAAU,WACN,MAAO,UAA6B,IAAjBjZ,KAAK+K,MAAM,EAAU,QAAO,KAAO,MAC1D,EACAmO,QAAS,WACL,MAAO,UAA6B,IAAjBlZ,KAAK+K,MAAM,EAAU,OAAM,KAAO,MACzD,EACAoO,SAAU,WACN,MACI,qBAAwC,IAAjBnZ,KAAK+K,MAAM,EAAU,QAAO,KAAO,MAElE,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SAAUuY,GACd,OAA0B,IAAtBA,EAAIhhB,QAAQ,IAAI,EACT,IAAMghB,EAEV,MAAQA,CACnB,EACAtY,KAAM,SACNlO,EAAG,eACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,YACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,aACJ5O,EAAG,SACH8O,GAAI,WACJzN,EAAG,SACH0N,GAAI,SACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAsBDzV,EAAMub,aAAa,WAAY,CAC3BlQ,OAAQ,CACJ2rB,WACI,0cAAwFjjB,MACpF,GACJ,EACJ7R,OAAQ,4yBAAmJ6R,MACvJ,GACJ,EACA2a,SAAU,iBACd,EACAhb,YACI,qVAA4EK,MACxE,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,iRAAqD2J,MAAM,GAAG,EACxEyC,cAAe,wLAA4CzC,MAAM,GAAG,EACpEwC,YAAa,mGAAwBxC,MAAM,GAAG,EAC9CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,gDACJD,IAAK,mDACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4DACLC,KAAM,qEACNsgB,KAAM,gEACV,EACAlhB,SAAU,CACNC,QAAS,0BACTC,QAAS,kDACTC,SAAU,8CACVC,QAAS,0BACTC,SAAU,8CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,KACRC,KAAM,8BACNlO,EAAGyxB,EACHtjB,GAAIsjB,EACJ36B,EAAG26B,EACHrjB,GAAIqjB,EACJvyB,EAAGuyB,EACHpjB,GAAIojB,EACJnzB,EAAGmzB,EACHnjB,GAAImjB,EACJ/xB,EAAG+xB,EACHjjB,GAAIijB,EACJ1wB,EAAG0wB,EACHhjB,GAAIgjB,CACR,EACA1jB,uBAAwB,8BACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzc,EAAS,qBACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,CACf,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,EACA2E,cAAe,0IACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,6BAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,yCAAbvH,EACAuH,EACa,+CAAbvH,EACO,GAAPuH,EAAYA,EAAOA,EAAO,GACb,mCAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,6CACAA,EAAO,GACP,iCAEA,0BAEf,CACJ,CAAC,EAsBD9K,EAAMub,aAAa,WAAY,CAC3BlQ,OAAQ,CACJ2rB,WACI,4EAA4EjjB,MACxE,GACJ,EACJ7R,OAAQ,wIAAwI6R,MAC5I,GACJ,EACA2a,SAAU,iBACd,EACAhb,YACI,4DAA4DK,MAAM,GAAG,EACzEklB,iBAAkB,CAAA,EAClB7uB,SAAU,uDAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,qCAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,iBACJD,IAAK,oBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNsgB,KAAM,iCACV,EACAlhB,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNlO,EAAG0xB,GACHvjB,GAAIujB,GACJ56B,EAAG46B,GACHtjB,GAAIsjB,GACJxyB,EAAGwyB,GACHrjB,GAAIqjB,GACJpzB,EAAGozB,GACHpjB,GAAIojB,GACJhyB,EAAGgyB,GACHljB,GAAIkjB,GACJ3wB,EAAG2wB,GACHjjB,GAAIijB,EACR,EACA3jB,uBAAwB,cACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzc,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,CACf,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,EACA2E,cAAe,+BACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,SAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbvH,EACAuH,EACa,aAAbvH,EACO,GAAPuH,EAAYA,EAAOA,EAAO,GACb,UAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,MAEf,CACJ,CAAC,EAID,IAAIuyB,GAAc,CACVhJ,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,EACAwI,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAyLAC,IAvLJj+B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gdAAyF0I,MAC7F,GACJ,EACAL,YACI,mUAAyEK,MACrE,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,mSAAwD2J,MAC9D,GACJ,EACAyC,cAAe,qKAAmCzC,MAAM,GAAG,EAC3DwC,YAAa,iFAAqBxC,MAAM,GAAG,EAC3CtK,eAAgB,CACZ2P,GAAI,8CACJD,IAAK,iDACLE,EAAG,aACHC,GAAI,cACJC,IAAK,2DACLC,KAAM,gEACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,4CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,oCACNlO,EAAG,8CACHmO,GAAI,oCACJrX,EAAG,8CACHsX,GAAI,oCACJlP,EAAG,wCACHmP,GAAI,8BACJ/P,EAAG,wCACHgQ,GAAI,8BACJ5O,EAAG,8CACH8O,GAAI,oCACJzN,EAAG,wCACH0N,GAAI,6BACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOm0B,GAAYn0B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOk0B,GAAYl0B,EACvB,CAAC,CACL,EAGAiR,cAAe,gGACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,uBAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbvH,EACAuH,EACa,6BAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,6BAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,2BACAA,EAAO,GACP,2BAEA,oBAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,sXAA0E0I,MAC9E,GACJ,EACAL,YACI,kSAA4DK,MAAM,GAAG,EACzE3J,SAAU,6LAAuC2J,MAAM,GAAG,EAC1DyC,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,kCACN2D,EAAG,WACHyc,GAAI,aACJC,IAAK,mBACLC,KAAM,uBACV,EACAlhB,SAAU,CACNC,QAAS,4CACTC,QAAS,sCACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,qGACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,8BACRC,KAAM,8BACNlO,EAAG,0DACHmO,GAAI,oCACJrX,EAAG,qBACHsX,GAAI,8BACJlP,EAAG,qBACHmP,GAAI,SAAUnS,GACV,OAAe,IAAXA,EACO,uCAEJA,EAAS,2BACpB,EACAoC,EAAG,qBACHgQ,GAAI,SAAUpS,GACV,OAAe,IAAXA,EACO,uCAEJA,EAAS,2BACpB,EACAwD,EAAG,2BACH8O,GAAI,SAAUtS,GACV,OAAe,IAAXA,EACO,6CAEJA,EAAS,uCACpB,EACA6E,EAAG,qBACH0N,GAAI,SAAUvS,GACV,OAAe,IAAXA,EACO,uCACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,sBAEbA,EAAS,2BACpB,CACJ,EACAwS,cACI,qTACJhC,KAAM,SAAUhY,GACZ,MAAO,6HAA8BuJ,KAAKvJ,CAAK,CACnD,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,0DACAA,EAAO,GACP,iCACAA,EAAO,GACPklB,EAAU,kCAAW,sEACrBllB,EAAO,GACPklB,EAAU,4BAAU,sEAEpB,0BAEf,CACJ,CAAC,EAIiB,CACVqE,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAoJ,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EACAC,EAAgB,CACZ,iBACA,oCACA,mCACA,mCACA,iBACA,uBACA,uBACA,iBACA,gDACA,mCACA,oCACA,iDAiIR,SAASC,GAAYl3B,EAAQuhB,EAAe1iB,GACxC,IAAI2X,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,KAQD,OANI2X,GADW,IAAXxW,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,IACD,OAAOuhB,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI/K,GADW,IAAXxW,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAEA,SAGlB,IAAK,IACD,OAAOuhB,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI/K,GADW,IAAXxW,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,OAGlB,IAAK,KAMD,OAJIwW,GADW,IAAXxW,EACU,MAEA,OAGlB,IAAK,KAQD,OANIwW,GADW,IAAXxW,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIwW,GADW,IAAXxW,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAEA,QAGtB,CACJ,CA5KA5H,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,8YAA8E6R,MAClF,GACJ,EACAijB,WACI,sXAA0EjjB,MACtE,GACJ,CACR,EACAL,YACI,2PAA6DK,MAAM,GAAG,EAC1E3J,SAAU,6RAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,+JAAkCzC,MAAM,GAAG,EAC1DwC,YAAa,iFAAqBxC,MAAM,GAAG,EAC3CtK,eAAgB,CACZ2P,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,8CACV,EAEA3F,YAAagrB,EACbpF,gBAAiBoF,EACjBnF,iBAzCmB,CACf,iBACA,uBACA,mCACA,mCACA,iBACA,uBACA,uBACA,iBACA,uBACA,mCACA,iBACA,wBA+BJ9lB,YACI,yuBAEJD,iBACI,yuBAEJ4lB,kBACI,6lBAEJC,uBACI,oRAEJ5gB,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,WACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,8BACNlO,EAAG,2DACHmO,GAAI,oCACJrX,EAAG,wCACHsX,GAAI,8BACJlP,EAAG,wCACHmP,GAAI,8BACJ/P,EAAG,kCACHgQ,GAAI,wBACJ5O,EAAG,8CACH8O,GAAI,oCACJzN,EAAG,wCACH0N,GAAI,6BACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAO+0B,GAAY/0B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAO80B,GAAY90B,EACvB,CAAC,CACL,EAGAiR,cAAe,gGACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,uBAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbvH,EACAuH,EACa,mCAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,uBAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,qBAEA,oBAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAkEDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,mHAAoG6R,MACxG,GACJ,EACAijB,WACI,+GAAgGjjB,MAC5F,GACJ,CACR,EACAL,YACI,oEAA+DK,MAC3D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,iEAA4D2J,MAClE,GACJ,EACAyC,cAAe,0CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,iBACf,CACJ,EACA8O,QAAS,oBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,kCACX,KAAK,EACD,MAAO,iCACX,KAAK,EACD,MAAO,gCACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,cACHmO,GAAIilB,GACJt8B,EAAGs8B,GACHhlB,GAAIglB,GACJl0B,EAAGk0B,GACH/kB,GAAI+kB,GACJ90B,EAAG,MACHgQ,GAAI8kB,GACJ1zB,EAAG,SACH8O,GAAI4kB,GACJryB,EAAG,SACH0N,GAAI2kB,EACR,EACArlB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIspB,GACA,6FAAgEhrB,MAAM,GAAG,EAC7E,SAASirB,GAAYp3B,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIyI,EAAMjvB,EACV,OAAQnB,GACJ,IAAK,IACD,OAAO2nB,GAAYjF,EACb,4BACA,6BACV,IAAK,KACD,OAAO0N,GAAOzI,GAAYjF,GACpB,gBACA,iBACV,IAAK,IACD,MAAO,OAASiF,GAAYjF,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAO0N,GAAOzI,GAAYjF,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASiF,GAAYjF,EAAgB,UAAS,gBACzD,IAAK,KACD,OAAO0N,GAAOzI,GAAYjF,EAAgB,UAAS,gBACvD,IAAK,IACD,MAAO,OAASiF,GAAYjF,EAAgB,OAAS,UACzD,IAAK,KACD,OAAO0N,GAAOzI,GAAYjF,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASiF,GAAYjF,EAAgB,YAAW,eAC3D,IAAK,KACD,OAAO0N,GAAOzI,GAAYjF,EAAgB,YAAW,eACzD,IAAK,IACD,MAAO,OAASiF,GAAYjF,EAAgB,SAAQ,WACxD,IAAK,KACD,OAAO0N,GAAOzI,GAAYjF,EAAgB,SAAQ,UAC1D,CACA,MAAO,EACX,CACA,SAAS9c,GAAK+hB,GACV,OACKA,EAAW,GAAK,cACjB,IACA2Q,GAAYj/B,KAAKoK,IAAI,GACrB,YAER,CA0OA,SAAS+0B,GAAS5oB,GACd,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,CAI1B,CACA,SAAS6oB,GAAYt3B,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIhQ,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,IACD,OAAO0iB,GAAiBiF,EAClB,sBACA,sBACV,IAAK,KACD,OAAI6Q,GAASr3B,CAAM,EAEXwW,GACC+K,GAAiBiF,EAAW,cAAa,eAG3ChQ,EAAS,aACpB,IAAK,IACD,OAAO+K,EAAgB,eAAW,eACtC,IAAK,KACD,OAAI8V,GAASr3B,CAAM,EAEXwW,GAAU+K,GAAiBiF,EAAW,gBAAY,iBAE/CjF,EACA/K,EAAS,eAEbA,EAAS,eACpB,IAAK,KACD,OAAI6gB,GAASr3B,CAAM,EAEXwW,GACC+K,GAAiBiF,EACZ,gBACA,iBAGPhQ,EAAS,cACpB,IAAK,IACD,OAAI+K,EACO,QAEJiF,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI6Q,GAASr3B,CAAM,EACXuhB,EACO/K,EAAS,QAEbA,GAAUgQ,EAAW,OAAS,YAC9BjF,EACA/K,EAAS,QAEbA,GAAUgQ,EAAW,MAAQ,QACxC,IAAK,IACD,OAAIjF,EACO,gBAEJiF,EAAW,cAAU,eAChC,IAAK,KACD,OAAI6Q,GAASr3B,CAAM,EACXuhB,EACO/K,EAAS,gBAEbA,GAAUgQ,EAAW,eAAW,iBAChCjF,EACA/K,EAAS,gBAEbA,GAAUgQ,EAAW,cAAU,gBAC1C,IAAK,IACD,OAAOjF,GAAiBiF,EAAW,QAAO,SAC9C,IAAK,KACD,OAAI6Q,GAASr3B,CAAM,EACRwW,GAAU+K,GAAiBiF,EAAW,QAAO,WAEjDhQ,GAAU+K,GAAiBiF,EAAW,QAAO,SAC5D,CACJ,CA1TApuB,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,4HAAoG0I,MACxG,GACJ,EACAL,YACI,gFAAiEK,MAC7D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,6EAAsD2J,MAAM,GAAG,EACzEyC,cAAe,yCAAgCzC,MAAM,GAAG,EACxDwC,YAAa,qBAAqBxC,MAAM,GAAG,EAC3CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,0BACV,EACAY,cAAe,SACfhC,KAAM,SAAUhY,GACZ,MAAyC,MAAlCA,EAAM2vB,OAAO,CAAC,EAAEjjB,YAAY,CACvC,EACAvJ,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACW,CAAA,IAAZmlB,EAAmB,KAAO,KAEd,CAAA,IAAZA,EAAmB,KAAO,IAEzC,EACApX,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAO1M,GAAK5L,KAAKX,KAAM,CAAA,CAAI,CAC/B,EACAkZ,QAAS,oBACTC,SAAU,WACN,OAAO5M,GAAK5L,KAAKX,KAAM,CAAA,CAAK,CAChC,EACAoZ,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,KACNlO,EAAGszB,GACHnlB,GAAImlB,GACJx8B,EAAGw8B,GACHllB,GAAIklB,GACJp0B,EAAGo0B,GACHjlB,GAAIilB,GACJh1B,EAAGg1B,GACHhlB,GAAIglB,GACJ5zB,EAAG4zB,GACH9kB,GAAI8kB,GACJvyB,EAAGuyB,GACH7kB,GAAI6kB,EACR,EACAvlB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,CACJnJ,OAAQ,kkBAA4G6R,MAChH,GACJ,EACAijB,WACI,0fAAgGjjB,MAC5F,GACJ,CACR,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SACI,mVAAgE2J,MAC5D,GACJ,EACJyC,cAAe,6IAA+BzC,MAAM,GAAG,EACvDwC,YAAa,6IAA+BxC,MAAM,GAAG,EACrDtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,kCACV,EACAZ,SAAU,CACNC,QAAS,sCACTC,QAAS,gCACTE,QAAS,gCACTD,SAAU,WACN,MAAO,uDACX,EACAE,SAAU,WACN,MAAO,wFACX,EACAC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,8BACRC,KAAM,8BACNlO,EAAG,yFACHmO,GAAI,sDACJrX,EAAG,2BACHsX,GAAI,8BACJlP,EAAG,qBACHmP,GAAI,wBACJ/P,EAAG,eACHgQ,GAAI,kBACJ5O,EAAG,2BACH8O,GAAI,8BACJzN,EAAG,2BACH0N,GAAI,6BACR,EACAC,cAAe,0LACfhC,KAAM,SAAUhY,GACZ,MAAO,kGAAuBuJ,KAAKvJ,CAAK,CAC5C,EACAmD,SAAU,SAAUuH,GAChB,OAAIA,EAAO,EACA,6CACAA,EAAO,GACP,mDACAA,EAAO,GACP,6CAEA,kDAEf,EACA2O,uBAAwB,8CACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXzc,EACOA,EAAS,gBAEbA,EAAS,gBACpB,QACI,OAAOA,CACf,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,yFAAyF0I,MAC7F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,6CAA6C2J,MAAM,GAAG,EAChEyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,iCACV,EACAY,cAAe,wBACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,SAAbvH,EACOuH,EACa,UAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,SAAbvH,GAAoC,UAAbA,EACvBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,OAEf,EACA+N,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,eACNlO,EAAG,iBACHmO,GAAI,WACJrX,EAAG,UACHsX,GAAI,WACJlP,EAAG,QACHmP,GAAI,SACJ/P,EAAG,SACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,WACJzN,EAAG,UACH0N,GAAI,UACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAwFDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wHAAoF0I,MACxF,GACJ,EACAL,YAAa,oEAAkDK,MAAM,GAAG,EACxE3J,SACI,kGAAmF2J,MAC/E,GACJ,EACJyC,cAAe,0CAA8BzC,MAAM,GAAG,EACtDwC,YAAa,gCAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,+BACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,uBACTC,SAAU,gCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,uBACNlO,EAAGwzB,GACHrlB,GAAIqlB,GACJ18B,EAAG08B,GACHplB,GAAIolB,GACJt0B,EAAG,cACHmP,GAAImlB,GACJl1B,EAAGk1B,GACHllB,GAAIklB,GACJ9zB,EAAG8zB,GACHhlB,GAAIglB,GACJzyB,EAAGyyB,GACH/kB,GAAI+kB,EACR,EACAzlB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,gGAAgG0I,MACpG,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,0EAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,6BACX,QACI,MAAO,4BACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SAAUjO,GACd,OAAQ,YAAY/B,KAAK+B,CAAC,EAAI,MAAQ,MAAQ,IAAMA,CACxD,EACAkO,KAAM,QACNlO,EAAG,iBACHmO,GAAI,aACJrX,EAAG,YACHsX,GAAI,YACJlP,EAAG,SACHmP,GAAI,SACJ/P,EAAG,YACHgQ,GAAI,YACJ5O,EAAG,UACH8O,GAAI,UACJzN,EAAG,UACH0N,GAAI,SACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gGAAgG0I,MACpG,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,0EAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,WACL,MACI,WACgB,EAAf/Y,KAAK+K,MAAM,EAAQ,OAA0B,IAAjB/K,KAAK+K,MAAM,EAAU,IAAM,OACxD,KAER,EACAiO,QAAS,WACL,MACI,aACgB,EAAfhZ,KAAK+K,MAAM,EAAQ,OAA0B,IAAjB/K,KAAK+K,MAAM,EAAU,IAAM,OACxD,KAER,EACAkO,SAAU,WACN,MACI,WACgB,EAAfjZ,KAAK+K,MAAM,EAAQ,OAA0B,IAAjB/K,KAAK+K,MAAM,EAAU,IAAM,OACxD,KAER,EACAmO,QAAS,WACL,MACI,WACgB,EAAflZ,KAAK+K,MAAM,EAAQ,OAA0B,IAAjB/K,KAAK+K,MAAM,EAAU,IAAM,OACxD,KAER,EACAoO,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MACI,uBACgB,EAAfpK,KAAK+K,MAAM,EACN,OACiB,IAAjB/K,KAAK+K,MAAM,EACT,IACA,OACR,MAER,QACI,MACI,uBACgB,EAAf/K,KAAK+K,MAAM,EACN,OACiB,IAAjB/K,KAAK+K,MAAM,EACT,IACA,OACR,KAEZ,CACJ,EACAqO,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNlO,EAAG,iBACHmO,GAAI,aACJrX,EAAG,YACHsX,GAAI,YACJlP,EAAG,SACHmP,GAAI,SACJ/P,EAAG,YACHgQ,GAAI,YACJ7N,EAAG,gBACH8N,GAAI,eACJ7O,EAAG,UACH8O,GAAI,UACJzN,EAAG,UACH0N,GAAI,SACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBsL,KAAM,CACF,CACIyE,MAAO,aACPhJ,OAAQ,EACRpb,KAAM,eACN4f,OAAQ,SACRtL,KAAM,GACV,EACA,CACI8P,MAAO,aACPC,MAAO,aACPjJ,OAAQ,EACRpb,KAAM,eACN4f,OAAQ,SACRtL,KAAM,GACV,EACA,CACI8P,MAAO,aACPC,MAAO,aACPjJ,OAAQ,EACRpb,KAAM,eACN4f,OAAQ,SACRtL,KAAM,GACV,EACA,CACI8P,MAAO,aACPC,MAAO,aACPjJ,OAAQ,EACRpb,KAAM,eACN4f,OAAQ,SACRtL,KAAM,GACV,EACA,CACI8P,MAAO,aACPC,MAAO,aACPjJ,OAAQ,EACRpb,KAAM,eACN4f,OAAQ,SACRtL,KAAM,GACV,EACA,CACI8P,MAAO,aACPC,MAAO,aACPjJ,OAAQ,EACRpb,KAAM,eACN4f,OAAQ,KACRtL,KAAM,IACV,EACA,CACI8P,MAAO,aACPC,MAAQkD,CAAAA,EAAAA,EACRnM,OAAQ,EACRpb,KAAM,qBACN4f,OAAQ,KACRtL,KAAM,IACV,GAEJ2jB,oBAAqB,qBACrBvX,oBAAqB,SAAUxnB,EAAO+I,GAClC,MAAoB,WAAbA,EAAM,GAAa,EAAI8H,SAAS9H,EAAM,IAAM/I,EAAO,EAAE,CAChE,EACAiL,OAAQ,qGAAyC0I,MAAM,GAAG,EAC1DL,YAAa,qGAAyCK,MAClD,GACJ,EACA3J,SAAU,uIAA8B2J,MAAM,GAAG,EACjDyC,cAAe,mDAAgBzC,MAAM,GAAG,EACxCwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCACN2D,EAAG,aACHyc,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACV,EACA1f,cAAe,6BACfhC,KAAM,SAAUhY,GACZ,MAAiB,iBAAVA,CACX,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,eAEA,cAEf,EACA8N,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,SAAUqG,GAChB,OAAIA,EAAI/S,KAAK,IAAMvM,KAAKuM,KAAK,EAClB,wBAEA,SAEf,EACA2M,QAAS,oBACTC,SAAU,SAAUmG,GAChB,OAAItf,KAAKuM,KAAK,IAAM+S,EAAI/S,KAAK,EAClB,wBAEA,SAEf,EACA6M,SAAU,GACd,EACAO,uBAAwB,gBACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXzc,EAAe,eAAOA,EAAS,SAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,SACpB,QACI,OAAOA,CACf,CACJ,EACA8R,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNlO,EAAG,eACHmO,GAAI,WACJrX,EAAG,UACHsX,GAAI,WACJlP,EAAG,gBACHmP,GAAI,iBACJ/P,EAAG,UACHgQ,GAAI,WACJ5O,EAAG,gBACH8O,GAAI,iBACJzN,EAAG,UACH0N,GAAI,UACR,CACJ,CAAC,EAIDna,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,yFAAyF0I,MAC7F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,+CAA+C2J,MAAM,GAAG,EAClEyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,iCACV,EACAY,cAAe,6BACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,WAAbvH,EACOuH,EACa,WAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,WAAbvH,GAAsC,UAAbA,EACzBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,OAEf,EACA+N,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACNlO,EAAG,kBACHmO,GAAI,WACJrX,EAAG,kBACHsX,GAAI,WACJlP,EAAG,gBACHmP,GAAI,SACJ/P,EAAG,WACHgQ,GAAI,YACJ5O,EAAG,UACH8O,GAAI,WACJzN,EAAG,SACH0N,GAAI,SACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,whBAAqG0I,MACzG,GACJ,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SAAU,CACN4sB,WACI,mVAAgEjjB,MAC5D,GACJ,EACJ7R,OAAQ,yVAAiE6R,MACrE,GACJ,EACA2a,SAAU,iEACd,EACAlY,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,+CACTC,QAAS,+CACTE,QAAS,qDACTD,SAAU,gEACVE,SAAU,kDACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SAAUjO,GACd,OAAOA,EAAEtC,QACL,+HACA,SAAUg2B,EAAIC,EAAIC,GACd,MAAc,WAAPA,EAAaD,EAAK,eAAOA,EAAKC,EAAK,cAC9C,CACJ,CACJ,EACA1lB,KAAM,SAAUlO,GACZ,MAAI,2HAA4B/B,KAAK+B,CAAC,EAC3BA,EAAEtC,QAAQ,mBAAU,iCAAQ,EAEnC,2BAAOO,KAAK+B,CAAC,EACNA,EAAEtC,QAAQ,4BAAS,6CAAU,EAEjCsC,CACX,EACAA,EAAG,kFACHmO,GAAI,8BACJrX,EAAG,2BACHsX,GAAI,8BACJlP,EAAG,iCACHmP,GAAI,oCACJ/P,EAAG,qBACHgQ,GAAI,wBACJ5O,EAAG,qBACH8O,GAAI,wBACJzN,EAAG,2BACH0N,GAAI,6BACR,EACAV,uBAAwB,uDACxB7Q,QAAS,SAAUhB,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,gBAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,gBAAQA,EAEZA,EAAS,SACpB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAI8pB,GAAa,CACbzK,EAAG,gBACHT,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACH2B,GAAI,gBACJH,GAAI,gBACJI,GAAI,gBACJ+I,GAAI,gBACJlJ,GAAI,gBACJI,GAAI,gBACJP,GAAI,gBACJC,GAAI,gBACJO,GAAI,gBACJJ,IAAK,eACT,EA0DIkJ,IAxDJz/B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wbAAqF0I,MACzF,GACJ,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SAAU,+SAA0D2J,MAChE,GACJ,EACAyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,qEACTC,QAAS,qEACTC,SAAU,2CACVC,QAAS,+DACTC,SAAU,uHACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,0CACRC,KAAM,oCACNlO,EAAG,kFACHmO,GAAI,0CACJrX,EAAG,oDACHsX,GAAI,oCACJlP,EAAG,oDACHmP,GAAI,oCACJ/P,EAAG,wCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,kBACJzN,EAAG,wCACH0N,GAAI,uBACR,EACAV,uBAAwB,sCACxB7Q,QAAS,SAAUhB,GAGf,OAAOA,GAAU23B,GAAW33B,IAAW23B,GAF/B33B,EAAS,KAEuC23B,GADtC,KAAV33B,EAAgB,IAAM,MAElC,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACA4K,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EA6EAC,IA3EJrgC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gXAAyE0I,MAC7E,GACJ,EACAL,YACI,gXAAyEK,MACrE,GACJ,EACJ3J,SAAU,yPAAiD2J,MAAM,GAAG,EACpEyC,cAAe,2EAAoBzC,MAAM,GAAG,EAC5CwC,YAAa,2EAAoBxC,MAAM,GAAG,EAC1CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAY,cAAe,gEACfhC,KAAM,SAAUhY,GACZ,MAAiB,mCAAVA,CACX,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,iCAEA,gCAEf,EACA8N,SAAU,CACNC,QAAS,2EACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,iFACTC,SAAU,oGACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,uBACRC,KAAM,uBACNlO,EAAG,uFACHmO,GAAI,0CACJrX,EAAG,6CACHsX,GAAI,8BACJlP,EAAG,6CACHmP,GAAI,8BACJ/P,EAAG,6CACHgQ,GAAI,8BACJ5O,EAAG,iCACH8O,GAAI,kBACJzN,EAAG,mDACH0N,GAAI,mCACR,EACAV,uBAAwB,sBACxB7Q,QAAS,iBACT2X,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOu2B,GAAYv2B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOs2B,GAAYt2B,EACvB,CAAC,CACL,EACAkD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAwL,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAyKJ,SAASC,EAAsBpK,EAAK1N,EAAe1iB,EAAK2nB,GAChDlsB,EAAS,CACTwJ,EAAG,CAAC,oBAAe,wBACnBmO,GAAI,CAACgd,EAAM,aAAWA,EAAM,iBAC5Br0B,EAAG,CAAC,eAAa,oBACjBsX,GAAI,CAAC+c,EAAM,aAAWA,EAAM,iBAC5BjsB,EAAG,CAAC,SAAU,cACdmP,GAAI,CAAC8c,EAAM,QAASA,EAAM,WAC1B7sB,EAAG,CAAC,QAAS,aACbgQ,GAAI,CAAC6c,EAAM,OAAQA,EAAM,UACzB1qB,EAAG,CAAC,WAAY,gBAChB8N,GAAI,CAAC4c,EAAM,SAAUA,EAAM,aAC3BzrB,EAAG,CAAC,QAAS,aACb8O,GAAI,CAAC2c,EAAM,OAAQA,EAAM,UACzBpqB,EAAG,CAAC,QAAS,aACb0N,GAAI,CAAC0c,EAAM,OAAQA,EAAM,SAC7B,EACA,OAAO1N,EAAgBjnB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACxD,CAzLAzG,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,weAA6F0I,MACjG,GACJ,EACAL,YACI,4XAA2EK,MACvE,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,+SAA0D2J,MAChE,GACJ,EACAyC,cAAe,iLAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,mGAAwBxC,MAAM,GAAG,EAC9CtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,2BACV,EACAZ,SAAU,CACNC,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACNlO,EAAG,4EACHmO,GAAI,kEACJrX,EAAG,0DACHsX,GAAI,oCACJlP,EAAG,oDACHmP,GAAI,8BACJ/P,EAAG,8CACHgQ,GAAI,wBACJ5O,EAAG,gEACH8O,GAAI,0CACJzN,EAAG,oDACH0N,GAAI,6BACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOm3B,GAAYn3B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOk3B,GAAYl3B,EACvB,CAAC,CACL,EACAiR,cAAe,kKACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,yCAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,qDAAbvH,EACAuH,EACa,qDAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,6BAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,uCACAA,EAAO,GACP,mDACAA,EAAO,GACP,mDACAA,EAAO,GACP,2BAEA,sCAEf,EACA2O,uBAAwB,8BACxB7Q,QAAS,SAAUhB,GACf,OAAOA,EAAS,oBACpB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,qGAAyC0I,MAAM,GAAG,EAC1DL,YAAa,qGAAyCK,MAClD,GACJ,EACA3J,SAAU,uIAA8B2J,MAAM,GAAG,EACjDyC,cAAe,mDAAgBzC,MAAM,GAAG,EACxCwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,cACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,sCACN2D,EAAG,cACHyc,GAAI,0BACJC,IAAK,iCACLC,KAAM,qCACV,EACAlhB,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,UACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNlO,EAAG,gBACHmO,GAAI,WACJrX,EAAG,UACHsX,GAAI,WACJlP,EAAG,sBACHmP,GAAI,iBACJ/P,EAAG,eACHgQ,GAAI,WACJ5O,EAAG,gBACH8O,GAAI,WACJzN,EAAG,gBACH0N,GAAI,UACR,EACAV,uBAAwB,gCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,CACf,CACJ,EACAwS,cAAe,4BACfhC,KAAM,SAAU1P,GACZ,MAAiB,iBAAVA,CACX,EACAnF,SAAU,SAAUuH,EAAMK,EAAQ+1B,GAC9B,OAAOp2B,EAAO,GAAK,eAAO,cAC9B,CACJ,CAAC,EA2CD9K,EAAMub,aAAa,SAAU,CAIzBlQ,OAAQ,mGAAoF0I,MACxF,GACJ,EACAL,YAAa,8DAAkDK,MAAM,GAAG,EACxEklB,iBAAkB,CAAA,EAClB7uB,SAAU,yFAA4C2J,MAAM,GAAG,EAC/DyC,cAAe,4CAA2BzC,MAAM,GAAG,EACnDwC,YAAa,wCAAuBxC,MAAM,GAAG,EAC7CxQ,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACDmlB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACA5V,cAAe,cACf3Q,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,kCACNogB,GAAI,qBACJC,IAAK,2BACLC,KAAM,kCACV,EACAlhB,SAAU,CACNC,QAAS,2BACTC,QAAS,4BACTC,SAAU,yBACVC,QAAS,wBACTC,SAAU,kCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNlO,EAAGu1B,EACHpnB,GAAIonB,EACJz+B,EAAGy+B,EACHnnB,GAAImnB,EACJr2B,EAAGq2B,EACHlnB,GAAIknB,EACJj3B,EAAGi3B,EACHjnB,GAAIinB,EACJ90B,EAAG80B,EACHhnB,GAAIgnB,EACJ71B,EAAG61B,EACH/mB,GAAI+mB,EACJx0B,EAAGw0B,EACH9mB,GAAI8mB,CACR,EACAxnB,uBAAwB,2BACxB7Q,QAAS,SAAUiuB,EAAKxS,GACpB,IAAI8c,EAAI9c,EAAOvX,YAAY,EAC3B,OAAIq0B,EAAEC,SAAS,GAAG,GAAKD,EAAEC,SAAS,GAAG,EAAUvK,EAAM,IAE9CA,GAxEP1Z,GADJ0Z,EAAM,IADcA,EA0EYA,IAxEpBmC,UAAUnC,EAAI31B,OAAS,CAAC,EAGxB,KAAN04B,EAFgB,EAAb/C,EAAI31B,OAAa21B,EAAImC,UAAUnC,EAAI31B,OAAS,CAAC,EAAI,KAElC,IAAN04B,GACR,KAALzc,GAAiB,KAALA,GAAkB,MAANyc,GAAmB,MAALzc,GAAkB,MAALA,EAGjD,OADI,QAmEX,EACA9Q,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAI4rB,GAAc,CACVhN,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,EACAwM,GAAc,CACVpM,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EACA4L,GAAW,CACP,sEACA,iCACA,iCACA,iCACA,iCACA,mDACA,uCACA,qBACA,6CACA,sEACA,sEACA,uEA+EJC,IA5EJxhC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQk2B,GACR7tB,YAAa6tB,GACbn3B,SACI,+YAA0E2J,MACtE,GACJ,EACJyC,cACI,qTAA2DzC,MAAM,GAAG,EACxEwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAY,cAAe,wFACfhC,KAAM,SAAUhY,GACZ,MAAO,6CAAUuJ,KAAKvJ,CAAK,CAC/B,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,6CAEA,4CAEf,EACA8N,SAAU,CACNC,QAAS,uFACTC,QAAS,6FACTC,SAAU,uDACVC,QAAS,iFACTC,SAAU,uDACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,KACNlO,EAAG,wFACHmO,GAAI,oCACJrX,EAAG,gEACHsX,GAAI,0CACJlP,EAAG,sEACHmP,GAAI,gDACJ/P,EAAG,8CACHgQ,GAAI,wBACJ5O,EAAG,oDACH8O,GAAI,8BACJzN,EAAG,8CACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EACFpU,QAAQ,kEAAiB,SAAUD,GAChC,OAAOm4B,GAAYn4B,EACvB,CAAC,EACAC,QAAQ,UAAM,GAAG,CAC1B,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EACFpU,QAAQ,MAAO,SAAUD,GACtB,OAAOk4B,GAAYl4B,EACvB,CAAC,EACAC,QAAQ,KAAM,QAAG,CAC1B,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAIgB,CACbqf,EAAG,gBACHT,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACH2B,GAAI,gBACJH,GAAI,gBACJI,GAAI,gBACJ+I,GAAI,gBACJlJ,GAAI,gBACJI,GAAI,gBACJP,GAAI,gBACJC,GAAI,gBACJO,GAAI,gBACJJ,IAAK,eACT,GA4DA,SAASkL,GAAsB75B,EAAQuhB,EAAe1iB,EAAK2nB,GACvD,IAAIlsB,EAAS,CACTM,EAAG,CAAC,aAAc,gBAClBoI,EAAG,CAAC,YAAa,eACjBZ,EAAG,CAAC,UAAW,aACfoB,EAAG,CAAC,WAAY,eAChBqB,EAAG,CAAC,UAAW,aACnB,EACA,OAAO0c,EAAgBjnB,EAAOuE,GAAK,GAAKvE,EAAOuE,GAAK,EACxD,CAsBA,SAASi7B,GAA4B95B,GAEjC,GADAA,EAASqJ,SAASrJ,EAAQ,EAAE,EACxB7D,MAAM6D,CAAM,EACZ,MAAO,CAAA,EAEX,GAAIA,EAAS,EAET,MAAO,CAAA,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,IAECqvB,EAFD,GAAIrvB,EAAS,IAIhB,OACW85B,GADO,IAFdzK,EAAYrvB,EAAS,IACRA,EAAS,GAISqvB,CAFc,EAG9C,GAAIrvB,EAAS,IAAO,CAEvB,KAAiB,IAAVA,GACHA,GAAkB,GAEtB,OAAO85B,GAA4B95B,CAAM,CAC7C,CAGI,OAAO85B,GADP95B,GAAkB,GACuB,CAEjD,CA1HA5H,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,saAAkF0I,MACtF,GACJ,EACAL,YAAa,wPAAqDK,MAC9D,GACJ,EACA3J,SAAU,qTAA2D2J,MACjE,GACJ,EACAyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,+DACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,4IACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,0CACRC,KAAM,oCACNlO,EAAG,kFACHmO,GAAI,0CACJrX,EAAG,oDACHsX,GAAI,oCACJlP,EAAG,8CACHmP,GAAI,8BACJ/P,EAAG,wCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,kBACJzN,EAAG,wCACH0N,GAAI,uBACR,EACAV,uBAAwB,gEACxB7Q,QAAS,SAAUhB,GAGf,OAAOA,GAAU45B,GAAW55B,IAAW45B,GAF/B55B,EAAS,KAEuC45B,GADtC,KAAV55B,EAAgB,IAAM,MAElC,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAsEDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,6FAAuF0I,MAC3F,GACJ,EACAL,YACI,+DAA+DK,MAC3D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SACI,4EAAmE2J,MAC/D,GACJ,EACJyC,cAAe,uCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,gCAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,cACJD,IAAK,iBACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,gCACV,EACAZ,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,sBACTC,SAAU,WAEN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,wBACf,CACJ,CACJ,EACAwP,aAAc,CACVC,OAlGR,SAA2B6D,GAEvB,OAAIkkB,GADSlkB,EAAOpV,OAAO,EAAGoV,EAAOtM,QAAQ,GAAG,CAAC,CACX,EAC3B,KAAOsM,EAEX,MAAQA,CACnB,EA6FQ5D,KA5FR,SAAyB4D,GAErB,OAAIkkB,GADSlkB,EAAOpV,OAAO,EAAGoV,EAAOtM,QAAQ,GAAG,CAAC,CACX,EAC3B,QAAUsM,EAEd,SAAWA,CACtB,EAuFQ9R,EAAG,kBACHmO,GAAI,cACJrX,EAAGi/B,GACH3nB,GAAI,cACJlP,EAAG62B,GACH1nB,GAAI,aACJ/P,EAAGy3B,GACHznB,GAAI,UACJ5O,EAAGq2B,GACHvnB,GAAI,cACJzN,EAAGg1B,GACHtnB,GAAI,SACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wYAA6E0I,MACjF,GACJ,EACAL,YACI,wYAA6EK,MACzE,GACJ,EACJ3J,SAAU,uLAAsC2J,MAAM,GAAG,EACzDyC,cAAe,2KAAoCzC,MAAM,GAAG,EAC5DwC,YAAa,qEAAmBxC,MAAM,GAAG,EACzCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0CACV,EACAY,cAAe,wFACfhC,KAAM,SAAUhY,GACZ,MAAiB,yCAAVA,CACX,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,mDAEA,sCAEf,EACA8N,SAAU,CACNC,QAAS,oEACTC,QAAS,0EACTC,SAAU,0EACVC,QAAS,sFACTC,SAAU,kGACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,yCACNlO,EAAG,mGACHmO,GAAI,0CACJrX,EAAG,6BACHsX,GAAI,8BACJlP,EAAG,+CACHmP,GAAI,gDACJ/P,EAAG,uBACHgQ,GAAI,wBACJ5O,EAAG,mCACH8O,GAAI,oCACJzN,EAAG,iBACH0N,GAAI,iBACR,EACAV,uBAAwB,8BACxB7Q,QAAS,SAAUhB,GACf,MAAO,qBAAQA,CACnB,CACJ,CAAC,EAID,IAAIiF,GAAQ,CACRgN,GAAI,4CACJrX,EAAG,uCACHsX,GAAI,yCACJlP,EAAG,gCACHmP,GAAI,iCACJ/P,EAAG,0BACHgQ,GAAI,2BACJ5O,EAAG,2CACH8O,GAAI,gDACJzN,EAAG,wBACH0N,GAAI,uBACR,EAQA,SAASwnB,GAAkB/5B,EAAQuhB,EAAe1iB,EAAK2nB,GACnD,OAAOjF,EACD2N,GAAMrwB,CAAG,EAAE,GACX2nB,EACE0I,GAAMrwB,CAAG,EAAE,GACXqwB,GAAMrwB,CAAG,EAAE,EACvB,CACA,SAASm7B,GAAQh6B,GACb,OAAOA,EAAS,IAAO,GAAe,GAATA,GAAeA,EAAS,EACzD,CACA,SAASkvB,GAAMrwB,GACX,OAAOoG,GAAMpG,GAAKsN,MAAM,GAAG,CAC/B,CACA,SAAS8tB,GAAYj6B,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIhQ,EAASxW,EAAS,IACtB,OAAe,IAAXA,EAEIwW,EAASujB,GAAkB/5B,EAAQuhB,EAAe1iB,EAAI,GAAI2nB,CAAQ,EAE/DjF,EACA/K,GAAUwjB,GAAQh6B,CAAM,EAAIkvB,GAAMrwB,CAAG,EAAE,GAAKqwB,GAAMrwB,CAAG,EAAE,IAE1D2nB,EACOhQ,EAAS0Y,GAAMrwB,CAAG,EAAE,GAEpB2X,GAAUwjB,GAAQh6B,CAAM,EAAIkvB,GAAMrwB,CAAG,EAAE,GAAKqwB,GAAMrwB,CAAG,EAAE,GAG1E,CACAzG,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,iJAAoG6R,MACxG,GACJ,EACAijB,WACI,2HAAkGjjB,MAC9F,GACJ,EACJ2a,SAAU,6DACd,EACAhb,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,CACNlI,OAAQ,sIAAoF6R,MACxF,GACJ,EACAijB,WACI,0GAA2FjjB,MACvF,GACJ,EACJ2a,SAAU,YACd,EACAlY,cAAe,wCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,sBAAiBxC,MAAM,GAAG,EACvCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN2D,EAAG,aACHyc,GAAI,wBACJC,IAAK,sCACLC,KAAM,0CACV,EACAlhB,SAAU,CACNC,QAAS,qBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,gBACNlO,EApFR,SAA0B9D,EAAQuhB,EAAe1iB,EAAK2nB,GAClD,OAAIjF,EACO,uBAEAiF,EAAW,iCAAoB,iBAE9C,EA+EQvU,GAAIgoB,GACJr/B,EAAGm/B,GACH7nB,GAAI+nB,GACJj3B,EAAG+2B,GACH5nB,GAAI8nB,GACJ73B,EAAG23B,GACH3nB,GAAI6nB,GACJz2B,EAAGu2B,GACHznB,GAAI2nB,GACJp1B,EAAGk1B,GACHxnB,GAAI0nB,EACR,EACApoB,uBAAwB,cACxB7Q,QAAS,SAAUhB,GACf,OAAOA,EAAS,MACpB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIqsB,GAAU,CACVjoB,GAAI,0CAAqC9F,MAAM,GAAG,EAClDvR,EAAG,0DAAiCuR,MAAM,GAAG,EAC7C+F,GAAI,0DAAiC/F,MAAM,GAAG,EAC9CnJ,EAAG,sCAAiCmJ,MAAM,GAAG,EAC7CgG,GAAI,sCAAiChG,MAAM,GAAG,EAC9C/J,EAAG,kCAA6B+J,MAAM,GAAG,EACzCiG,GAAI,kCAA6BjG,MAAM,GAAG,EAC1C3I,EAAG,oEAAiC2I,MAAM,GAAG,EAC7CmG,GAAI,oEAAiCnG,MAAM,GAAG,EAC9CtH,EAAG,wBAAwBsH,MAAM,GAAG,EACpCoG,GAAI,wBAAwBpG,MAAM,GAAG,CACzC,EAIA,SAASguB,GAASjL,EAAOlvB,EAAQuhB,GAC7B,OAAIA,EAEOvhB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKkvB,EAAM,GAAKA,EAAM,GAI5DlvB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKkvB,EAAM,GAAKA,EAAM,EAE3E,CACA,SAASkL,GAAyBp6B,EAAQuhB,EAAe1iB,GACrD,OAAOmB,EAAS,IAAMm6B,GAASD,GAAQr7B,GAAMmB,EAAQuhB,CAAa,CACtE,CACA,SAAS8Y,GAAyBr6B,EAAQuhB,EAAe1iB,GACrD,OAAOs7B,GAASD,GAAQr7B,GAAMmB,EAAQuhB,CAAa,CACvD,CAKAnpB,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gIAAuG0I,MAC3G,GACJ,EACAL,YAAa,4DAAkDK,MAAM,GAAG,EACxE3J,SACI,oFAA0E2J,MACtE,GACJ,EACJyC,cAAe,kBAAkBzC,MAAM,GAAG,EAC1CwC,YAAa,kBAAkBxC,MAAM,GAAG,EACxCqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,mCACV,EACAZ,SAAU,CACNC,QAAS,4BACTC,QAAS,yBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,+CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNlO,EAnCR,SAAyB9D,EAAQuhB,GAC7B,OAAOA,EAAgB,sBAAmB,+BAC9C,EAkCQtP,GAAImoB,GACJx/B,EAAGy/B,GACHnoB,GAAIkoB,GACJp3B,EAAGq3B,GACHloB,GAAIioB,GACJh4B,EAAGi4B,GACHjoB,GAAIgoB,GACJ52B,EAAG62B,GACH/nB,GAAI8nB,GACJv1B,EAAGw1B,GACH9nB,GAAI6nB,EACR,EACAvoB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIysB,GAAa,CACbC,MAAO,CAEHtoB,GAAI,CAAC,SAAU,UAAW,WAC1BrX,EAAG,CAAC,cAAe,iBACnBsX,GAAI,CAAC,QAAS,SAAU,UACxBlP,EAAG,CAAC,YAAa,eACjBmP,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BC,GAAI,CAAC,SAAU,SAAU,SAC7B,EACAioB,uBAAwB,SAAUx6B,EAAQy6B,GACtC,OAAkB,IAAXz6B,EACDy6B,EAAQ,GACE,GAAVz6B,GAAeA,GAAU,EACvBy6B,EAAQ,GACRA,EAAQ,EACpB,EACAjJ,UAAW,SAAUxxB,EAAQuhB,EAAe1iB,GACxC,IAAI47B,EAAUH,GAAWC,MAAM17B,GAC/B,OAAmB,IAAfA,EAAIvF,OACGioB,EAAgBkZ,EAAQ,GAAKA,EAAQ,GAGxCz6B,EACA,IACAs6B,GAAWE,uBAAuBx6B,EAAQy6B,CAAO,CAG7D,CACJ,EA6SA,SAASC,GAAY16B,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,OAAQ3nB,GACJ,IAAK,IACD,OAAO0iB,EAAgB,4EAAkB,wFAC7C,IAAK,KACD,OAAOvhB,GAAUuhB,EAAgB,wCAAY,qDACjD,IAAK,IACL,IAAK,KACD,OAAOvhB,GAAUuhB,EAAgB,kCAAW,+CAChD,IAAK,IACL,IAAK,KACD,OAAOvhB,GAAUuhB,EAAgB,sBAAS,yCAC9C,IAAK,IACL,IAAK,KACD,OAAOvhB,GAAUuhB,EAAgB,4BAAU,yCAC/C,IAAK,IACL,IAAK,KACD,OAAOvhB,GAAUuhB,EAAgB,sBAAS,mCAC9C,IAAK,IACL,IAAK,KACD,OAAOvhB,GAAUuhB,EAAgB,sBAAS,yCAC9C,QACI,OAAOvhB,CACf,CACJ,CAnUA5H,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,mFAAmF0I,MACvF,GACJ,EACAL,YACI,2DAA2DK,MAAM,GAAG,EACxEklB,iBAAkB,CAAA,EAClB7uB,SAAU,iEAA4D2J,MAClE,GACJ,EACAyC,cAAe,0CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,iBACf,CACJ,EACA8O,QAAS,mBACTC,SAAU,WAUN,MATmB,CACf,kCACA,sCACA,iCACA,iCACA,wCACA,gCACA,iCAEgBnZ,KAAKoK,IAAI,EACjC,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,mBACHmO,GAAIqoB,GAAW9I,UACf52B,EAAG0/B,GAAW9I,UACdtf,GAAIooB,GAAW9I,UACfxuB,EAAGs3B,GAAW9I,UACdrf,GAAImoB,GAAW9I,UACfpvB,EAAG,MACHgQ,GAAIkoB,GAAW9I,UACfhuB,EAAG,SACH8O,GAAIgoB,GAAW9I,UACf3sB,EAAG,SACH0N,GAAI+nB,GAAW9I,SACnB,EACA3f,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,2LAA8I0I,MAClJ,GACJ,EACAL,YACI,sEAAiEK,MAC7D,GACJ,EACJH,YAAa,yCACb2lB,kBAAmB,yCACnB5lB,iBAAkB,yCAClB6lB,uBAAwB,yCACxBpvB,SAAU,sEAAkD2J,MAAM,GAAG,EACrEyC,cAAe,uCAAwBzC,MAAM,GAAG,EAChDwC,YAAa,uCAAwBxC,MAAM,GAAG,EAC9CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,6BACV,EACAZ,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNlO,EAAG,wBACHmO,GAAI,iBACJrX,EAAG,YACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,QACHgQ,GAAI,QACJ5O,EAAG,YACH8O,GAAI,YACJzN,EAAG,SACH0N,GAAI,QACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,ocAAuF0I,MAC3F,GACJ,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SAAU,mSAAwD2J,MAC9D,GACJ,EACAyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,8EAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,mDACTC,QAAS,6CACTC,SAAU,wCACVC,QAAS,mDACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,wFACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uFACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACNlO,EAAG,wFACHmO,GAAI,gDACJrX,EAAG,gEACHsX,GAAI,0CACJlP,EAAG,8CACHmP,GAAI,8BACJ/P,EAAG,8CACHgQ,GAAI,8BACJ5O,EAAG,0DACH8O,GAAI,0CACJzN,EAAG,gEACH0N,GAAI,yCACR,EACAV,uBAAwB,0FACxB7Q,QAAS,SAAUhB,GACf,IAAIqvB,EAAYrvB,EAAS,GACrBsvB,EAActvB,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,gBACO,GAAhBsvB,EACAtvB,EAAS,gBACK,GAAdsvB,GAAoBA,EAAc,GAClCtvB,EAAS,gBACK,GAAdqvB,EACArvB,EAAS,gBACK,GAAdqvB,EACArvB,EAAS,gBACK,GAAdqvB,GAAiC,GAAdA,EACnBrvB,EAAS,gBAETA,EAAS,eAExB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gdAAyF0I,MAC7F,GACJ,EACAL,YACI,8TAAyEK,MACrE,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SACI,mYAAwE2J,MACpE,GACJ,EACJyC,cAAe,qNAA2CzC,MAAM,GAAG,EACnEwC,YAAa,mGAAwBxC,MAAM,GAAG,EAC9CtK,eAAgB,CACZ2P,GAAI,uBACJD,IAAK,0BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oCACLC,KAAM,yCACV,EACAZ,SAAU,CACNC,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,gDACRC,KAAM,oCACNlO,EAAG,4EACHmO,GAAI,sDACJrX,EAAG,sEACHsX,GAAI,sDACJlP,EAAG,sEACHmP,GAAI,sDACJ/P,EAAG,oDACHgQ,GAAI,oCACJ5O,EAAG,8CACH8O,GAAI,8BACJzN,EAAG,8CACH0N,GAAI,6BACR,EACAC,cAAe,mPACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAGO,yCAAbvH,GAAiC,GAARuH,GACb,wEAAbvH,GACa,iEAAbA,EAEOuH,EAAO,GAEPA,CAEf,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,uCACAA,EAAO,GACP,uCACAA,EAAO,GACP,sEACAA,EAAO,GACP,+DAEA,sCAEf,CACJ,CAAC,EA8BD9K,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,8+BAA+L0I,MACnM,GACJ,EACAL,YACI,iQAA6EK,MACzE,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,iOAA6C2J,MAAM,GAAG,EAChEyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,6CACJC,IAAK,mDACLC,KAAM,wDACV,EACAY,cAAe,6BACfhC,KAAM,SAAUhY,GACZ,MAAiB,iBAAVA,CACX,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,eAEA,cAEf,EACA8N,SAAU,CACNC,QAAS,kDACTC,QAAS,kDACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,6DACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,oCACRC,KAAM,8BACNlO,EAAG42B,GACHzoB,GAAIyoB,GACJ9/B,EAAG8/B,GACHxoB,GAAIwoB,GACJ13B,EAAG03B,GACHvoB,GAAIuoB,GACJt4B,EAAGs4B,GACHtoB,GAAIsoB,GACJl3B,EAAGk3B,GACHpoB,GAAIooB,GACJ71B,EAAG61B,GACHnoB,GAAImoB,EACR,EACA7oB,uBAAwB,mCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,4BACpB,QACI,OAAOA,CACf,CACJ,CACJ,CAAC,EAID,IAAI26B,GAAc,CACVlO,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,EACA0N,GAAc,CACVrE,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAEJ,SAAS6D,GAAe76B,EAAQuhB,EAAe3L,EAAQ4Q,GACnD,IAAI9kB,EAAS,GACb,GAAI6f,EACA,OAAQ3L,GACJ,IAAK,IACDlU,EAAS,0DACT,MACJ,IAAK,KACDA,EAAS,oCACT,MACJ,IAAK,IACDA,EAAS,8CACT,MACJ,IAAK,KACDA,EAAS,0CACT,MACJ,IAAK,IACDA,EAAS,kCACT,MACJ,IAAK,KACDA,EAAS,wBACT,MACJ,IAAK,IACDA,EAAS,wCACT,MACJ,IAAK,KACDA,EAAS,8BACT,MACJ,IAAK,IACDA,EAAS,8CACT,MACJ,IAAK,KACDA,EAAS,oCACT,MACJ,IAAK,IACDA,EAAS,wCACT,MACJ,IAAK,KACDA,EAAS,oCACT,KACR,MAEA,OAAQkU,GACJ,IAAK,IACDlU,EAAS,sEACT,MACJ,IAAK,KACDA,EAAS,gDACT,MACJ,IAAK,IACDA,EAAS,0DACT,MACJ,IAAK,KACDA,EAAS,gDACT,MACJ,IAAK,IACDA,EAAS,8CACT,MACJ,IAAK,KACDA,EAAS,oCACT,MACJ,IAAK,IACDA,EAAS,oDACT,MACJ,IAAK,KACDA,EAAS,0CACT,MACJ,IAAK,IACDA,EAAS,gEACT,MACJ,IAAK,KACDA,EAAS,sDACT,MACJ,IAAK,IACDA,EAAS,oDACT,MACJ,IAAK,KACDA,EAAS,0CACT,KACR,CAEJ,OAAOA,EAAOF,QAAQ,MAAOxB,CAAM,CACvC,CAEA5H,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,0cAAwF0I,MAC5F,GACJ,EACAL,YACI,8VAAgFK,MAC5E,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,6RAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,+JAAkCzC,MAAM,GAAG,EAC1DwC,YAAa,iFAAqBxC,MAAM,GAAG,EAC3CtK,eAAgB,CACZ2P,GAAI,wCACJD,IAAK,2CACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,0DACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,sCACTC,SAAU,WACVC,QAAS,0BACTC,SAAU,4CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,mCACRC,KAAM,yCACNlO,EAAG+2B,GACH5oB,GAAI4oB,GACJjgC,EAAGigC,GACH3oB,GAAI2oB,GACJ73B,EAAG63B,GACH1oB,GAAI0oB,GACJz4B,EAAGy4B,GACHzoB,GAAIyoB,GACJr3B,EAAGq3B,GACHvoB,GAAIuoB,GACJh2B,EAAGg2B,GACHtoB,GAAIsoB,EACR,EACAliB,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOq5B,GAAYr5B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOo5B,GAAYp5B,EACvB,CAAC,CACL,EACAiR,cAAe,2LACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,mCAAbvH,GAAqC,mCAAbA,EACjBuH,EAEM,yCAAbvH,GACa,qDAAbA,GACa,yCAAbA,EAEe,IAARuH,EAAaA,EAAOA,EAAO,GAL/B,KAAA,CAOX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAY,GAARllB,GAAaA,EAAO,EACb,iCACAA,EAAO,GACP,iCACAA,EAAO,GACP,uCACAA,EAAO,GACP,mDAEA,sCAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,oFAAoF0I,MACxF,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,6CAA6C2J,MAAM,GAAG,EAChEyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,iCACV,EACAY,cAAe,8BACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,SAAbvH,EACOuH,EACa,cAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,WAAbvH,GAAsC,UAAbA,EACzBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEf,EACA+N,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNlO,EAAG,gBACHmO,GAAI,UACJrX,EAAG,UACHsX,GAAI,WACJlP,EAAG,QACHmP,GAAI,SACJ/P,EAAG,SACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,WACJzN,EAAG,UACH0N,GAAI,UACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,oFAAoF0I,MACxF,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,6CAA6C2J,MAAM,GAAG,EAChEyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,iCACV,EACAY,cAAe,8BACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,SAAbvH,EACOuH,EACa,cAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,WAAbvH,GAAsC,UAAbA,EACzBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEf,EACA+N,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNlO,EAAG,gBACHmO,GAAI,UACJrX,EAAG,UACHsX,GAAI,WACJlP,EAAG,QACHmP,GAAI,SACJ/P,EAAG,SACHgQ,GAAI,UACJ5O,EAAG,UACH8O,GAAI,WACJzN,EAAG,UACH0N,GAAI,UACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,kGAAwF0I,MAC5F,GACJ,EACAL,YAAa,4DAAkDK,MAAM,GAAG,EACxE3J,SACI,0FAAiE2J,MAC7D,GACJ,EACJyC,cAAe,6CAA8BzC,MAAM,GAAG,EACtDwC,YAAa,sCAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,0BACTC,SAAU,iCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,aACRC,KAAM,SACNlO,EAAG,eACHmO,GAAI,aACJrX,EAAG,SACHsX,GAAI,YACJlP,EAAG,cACHmP,GAAI,kBACJ/P,EAAG,eACHgQ,GAAI,iBACJ5O,EAAG,QACH8O,GAAI,UACJzN,EAAG,OACH0N,GAAI,QACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIitB,GAAc,CACVrO,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,EACA6N,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAsHAC,IApHJtjC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,4dAA2F0I,MAC/F,GACJ,EACAL,YAAa,4OAAmDK,MAAM,GAAG,EACzE3J,SAAU,mSAAwD2J,MAC9D,GACJ,EACAyC,cAAe,qHAA2BzC,MAAM,GAAG,EACnDwC,YAAa,qHAA2BxC,MAAM,GAAG,EAEjDtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,gDACTC,QAAS,6EACTC,SAAU,+BACVC,QAAS,sDACTC,SAAU,8FACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,6DACRC,KAAM,yEACNlO,EAAG,wFACHmO,GAAI,gDACJrX,EAAG,mDACHsX,GAAI,oCACJlP,EAAG,6CACHmP,GAAI,8BACJ/P,EAAG,uCACHgQ,GAAI,wBACJ5O,EAAG,2BACH8O,GAAI,YACJzN,EAAG,6CACH0N,GAAI,6BACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOw5B,GAAYx5B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOu5B,GAAYv5B,EACvB,CAAC,CACL,EACAkD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,qFAAqF0I,MACzF,GACJ,EACAL,YACI,6DAA6DK,MAAM,GAAG,EAC1EklB,iBAAkB,CAAA,EAClB7uB,SAAU,2DAAqD2J,MAAM,GAAG,EACxEyC,cAAe,oCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,+BACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,0BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,gBACHmO,GAAI,cACJrX,EAAG,aACHsX,GAAI,cACJlP,EAAG,aACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,WACJ7N,EAAG,YACH8N,GAAI,UACJ7O,EAAG,iBACH8O,GAAI,gBACJzN,EAAG,YACH0N,GAAI,UACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAyO,GAAc,CACVpF,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EA+FA4E,IA7FJxjC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,ocAAuF0I,MAC3F,GACJ,EACAL,YACI,uTAAuEK,MACnE,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,mSAAwD2J,MAC9D,GACJ,EACAyC,cAAe,4KAA0CzC,MAAM,GAAG,EAClEwC,YAAa,wFAA4BxC,MAAM,GAAG,EAClDqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,wCACJD,IAAK,2CACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,0DACV,EACA+G,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAOo6B,GAAYp6B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAOm6B,GAAYn6B,EACvB,CAAC,CACL,EACAiR,cAAe,wHACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,6BAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,mCAAbvH,EACAuH,EACa,yCAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,6BAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,uCACAA,EAAO,GACP,2BAEA,0BAEf,EACA8N,SAAU,CACNC,QAAS,oBACTC,QAAS,gCACTC,SAAU,8CACVC,QAAS,gCACTC,SAAU,wCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,iBACRC,KAAM,oCACNlO,EAAG,oDACHmO,GAAI,gDACJrX,EAAG,8CACHsX,GAAI,oCACJlP,EAAG,8CACHmP,GAAI,oCACJ/P,EAAG,kCACHgQ,GAAI,wBACJ5O,EAAG,8CACH8O,GAAI,oCACJzN,EAAG,wCACH0N,GAAI,6BACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKO,6DAA6D1B,MAAM,GAAG,GAC1E0vB,GACI,kDAAkD1vB,MAAM,GAAG,EAC/D2vB,EAAgB,CACZ,QACA,QACA,oBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,GACI,qKA+EJC,IA7EJ5jC,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0FAA0F0I,MAC9F,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnBuhC,GAEAD,IAFyBhhC,EAAE8I,MAAM,GAFjCk4B,EAMf,EAEA5vB,YAAa+vB,GACbhwB,iBAAkBgwB,GAClBpK,kBACI,4FACJC,uBACI,mFAEJ3lB,YAAa6vB,EACbjK,gBAAiBiK,EACjBhK,iBAAkBgK,EAElBt5B,SACI,6DAA6D2J,MAAM,GAAG,EAC1EyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG,mBACHsX,GAAI,aACJlP,EAAG,gBACHmP,GAAI,SACJ/P,EAAG,gBACHgQ,GAAI,WACJ5O,EAAG,kBACH8O,GAAI,aACJzN,EAAG,iBACH0N,GAAI,SACR,EACAV,uBAAwB,kBACxB7Q,QAAS,SAAUhB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,KAEhE,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKO,6DAA6D1B,MAAM,GAAG,GAC1E8vB,GACI,kDAAkD9vB,MAAM,GAAG,EAC/D+vB,GAAgB,CACZ,QACA,QACA,oBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,GACI,qKA0NJC,IAxNJhkC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,0FAA0F0I,MAC9F,GACJ,EACAL,YAAa,SAAUlR,EAAGN,GACtB,OAAKM,GAEM,QAAQmH,KAAKzH,CAAM,EACnB2hC,GAEAD,IAFyBphC,EAAE8I,MAAM,GAFjCs4B,EAMf,EAEAhwB,YAAamwB,GACbpwB,iBAAkBowB,GAClBxK,kBACI,4FACJC,uBACI,mFAEJ3lB,YAAaiwB,GACbrK,gBAAiBqK,GACjBpK,iBAAkBoK,GAElB15B,SACI,6DAA6D2J,MAAM,GAAG,EAC1EyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG,mBACHsX,GAAI,aACJlP,EAAG,gBACHmP,GAAI,SACJ/P,EAAG,gBACHgQ,GAAI,WACJ7N,EAAG,iBACH8N,GAAI,WACJ7O,EAAG,kBACH8O,GAAI,aACJzN,EAAG,iBACH0N,GAAI,SACR,EACAV,uBAAwB,kBACxB7Q,QAAS,SAAUhB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,KAEhE,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,qFAAqF0I,MACzF,GACJ,EACAL,YACI,6DAA6DK,MAAM,GAAG,EAC1EklB,iBAAkB,CAAA,EAClB7uB,SAAU,wDAAqD2J,MAAM,GAAG,EACxEyC,cAAe,kCAA+BzC,MAAM,GAAG,EACvDwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,+BACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,uBACTC,SAAU,sCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,eACHmO,GAAI,YACJrX,EAAG,aACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,UACHgQ,GAAI,WACJ7N,EAAG,UACH8N,GAAI,WACJ7O,EAAG,eACH8O,GAAI,gBACJzN,EAAG,YACH0N,GAAI,UACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,SAAU,CACzBlQ,OAAQ,CACJ2rB,WACI,iGAAqFjjB,MACjF,GACJ,EACJ7R,OAAQ,kIAAsH6R,MAC1H,GACJ,EACA2a,SAAU,iBACd,EACAhb,YACI,kEAA+DK,MAC3D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,iEAA2D2J,MACjE,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJsgB,GAAI,aACJrgB,IAAK,4BACLsgB,IAAK,mBACLrgB,KAAM,iCACNsgB,KAAM,sBACV,EACAlhB,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,eACRC,KAAM,QACNlO,EAAG,gBACHmO,GAAI,cACJrX,EAAG,aACHsX,GAAI,aACJlP,EAAG,UACHmP,GAAI,UACJ/P,EAAG,UACHgQ,GAAI,WACJ5O,EAAG,SACH8O,GAAI,WACJzN,EAAG,QACH0N,GAAI,QACR,EACAV,uBAAwB,wBACxB7Q,QAAS,SAAUhB,EAAQyc,GAcvB,OAAOzc,GAHQ,MAAXyc,GAA6B,MAAXA,EATP,IAAXzc,EACM,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACA,OAEH,IAGjB,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAmP,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EAgGAC,IA9FJ5kC,EAAMub,aAAa,QAAS,CAExBlQ,OAAQ,8VAAsE0I,MAC1E,GACJ,EACAL,YACI,8VAAsEK,MAClE,GACJ,EACJ3J,SAAU,ySAAyD2J,MAC/D,GACJ,EACAyC,cAAe,yJAAiCzC,MAAM,GAAG,EACzDwC,YAAa,yJAAiCxC,MAAM,GAAG,EACvDtK,eAAgB,CACZ2P,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,8CACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,sCACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACNlO,EAAG,oDACHmO,GAAI,oCACJrX,EAAG,wCACHsX,GAAI,8BACJlP,EAAG,8CACHmP,GAAI,8BACJ/P,EAAG,wCACHgQ,GAAI,wBACJ5O,EAAG,oDACH8O,GAAI,oCACJzN,EAAG,wCACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAO86B,GAAY96B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAO66B,GAAY76B,EACvB,CAAC,CACL,EAGAiR,cAAe,4GACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,uBAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbvH,EACAuH,EACa,yCAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,6BAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,2BAEA,oBAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKO,iIAAmG1B,MAC/F,GACJ,GACJ8wB,GACI,+GAAqG9wB,MACjG,GACJ,EACJ+wB,GAAgB,CACZ,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,aACA,QACA,SAER,SAASC,GAAS1uB,GACd,OAAOA,EAAI,GAAK,GAAc,EAATA,EAAI,IAAU,CAAC,EAAEA,EAAI,IAAM,IAAO,CAC3D,CACA,SAAS2uB,GAAYp9B,EAAQuhB,EAAe1iB,GACxC,IAAI2X,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,KACD,OAAO2X,GAAU2mB,GAASn9B,CAAM,EAAI,UAAY,UACpD,IAAK,IACD,OAAOuhB,EAAgB,SAAW,cACtC,IAAK,KACD,OAAO/K,GAAU2mB,GAASn9B,CAAM,EAAI,SAAW,SACnD,IAAK,IACD,OAAOuhB,EAAgB,UAAY,eACvC,IAAK,KACD,OAAO/K,GAAU2mB,GAASn9B,CAAM,EAAI,UAAY,UACpD,IAAK,KACD,OAAOwW,GAAU2mB,GAASn9B,CAAM,EAAI,WAAa,WACrD,IAAK,KACD,OAAOwW,GAAU2mB,GAASn9B,CAAM,EAAI,gBAAa,iBACrD,IAAK,KACD,OAAOwW,GAAU2mB,GAASn9B,CAAM,EAAI,OAAS,MACrD,CACJ,CA+MA,SAASq9B,GAAyBr9B,EAAQuhB,EAAe1iB,GAcrD,OAAOmB,GAHa,IAAhBA,EAAS,KAAwB,KAAVA,GAAiBA,EAAS,KAAQ,EAC7C,OAFA,KATH,CACLiS,GAAI,UACJC,GAAI,SACJC,GAAI,MACJC,GAAI,OACJC,GAAI,yBACJC,GAAI,OACJC,GAAI,KACR,EAK+B1T,EACvC,CAgEA,SAASy+B,GAAyBt9B,EAAQuhB,EAAe1iB,GAUrD,MAAY,MAARA,EACO0iB,EAAgB,uCAAW,uCAE3BvhB,EAAS,KArBAivB,EAqB4B,CAACjvB,EApB7CkvB,GADUC,EASD,CACTld,GAAIsP,EAAgB,6HAA2B,6HAC/CrP,GAAIqP,EAAgB,2GAAwB,2GAC5CpP,GAAI,6EACJC,GAAI,uEACJC,GAAI,iHACJC,GAAI,iHACJC,GAAI,gEACR,EAI0C1T,IApBzBsN,MAAM,GAAG,EACnB8iB,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACM,GAAZD,EAAM,IAAWA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAmB,IAAbA,EAAM,KACzDC,EAAM,GACNA,EAAM,GAiBlB,CA3SA92B,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,SAAUqvB,EAAgBx4B,GAC9B,OAAKw4B,GAEM,SAAS/wB,KAAKzH,CAAM,EACpB2iC,GAEAD,IAFiBlK,EAAepvB,MAAM,GAFtCs5B,EAMf,EACAlxB,YAAa,uDAAkDK,MAAM,GAAG,EACxEF,YAAaixB,GACbrL,gBAAiBqL,GACjBpL,iBAAkBoL,GAClB16B,SACI,4EAA6D2J,MAAM,GAAG,EAC1EyC,cAAe,gCAA2BzC,MAAM,GAAG,EACnDwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,mBACTC,QAAS,eACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,0BAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,2BAEX,KAAK,EACD,MAAO,uBAEX,QACI,MAAO,iBACf,CACJ,EACA8O,QAAS,iBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,2CACX,KAAK,EACD,MAAO,4CACX,KAAK,EACD,MAAO,wCACX,QACI,MAAO,6BACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNlO,EAAG,eACHmO,GAAImrB,GACJxiC,EAAGwiC,GACHlrB,GAAIkrB,GACJp6B,EAAGo6B,GACHjrB,GAAIirB,GACJh7B,EAAG,eACHgQ,GAAI,SACJ7N,EAAG,eACH8N,GAAI+qB,GACJ55B,EAAG,eACH8O,GAAI8qB,GACJv4B,EAAG,MACH0N,GAAI6qB,EACR,EACAvrB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,8FAA2F0I,MAC/F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SACI,uFAAiF2J,MAC7E,GACJ,EACJyC,cAAe,iCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,yCAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,2CACV,EACAZ,SAAU,CACNC,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACN,OAAsB,IAAfnZ,KAAKoK,IAAI,GAA0B,IAAfpK,KAAKoK,IAAI,EAC9B,8BACA,6BACV,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,kBACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,SACHgQ,GAAI,UACJ5O,EAAG,YACH8O,GAAI,WACJzN,EAAG,SACH0N,GAAI,SACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTW,YAAa,kBACjB,CAAC,EAIDvJ,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,8FAA2F0I,MAC/F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SACI,uFAAiF2J,MAC7E,GACJ,EACJyC,cAAe,iCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,yCAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,mCACV,EACAZ,SAAU,CACNC,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACN,OAAsB,IAAfnZ,KAAKoK,IAAI,GAA0B,IAAfpK,KAAKoK,IAAI,EAC9B,8BACA,6BACV,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNlO,EAAG,WACHmO,GAAI,cACJrX,EAAG,YACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,WACJ/P,EAAG,SACHgQ,GAAI,UACJ7N,EAAG,aACH8N,GAAI,aACJ7O,EAAG,YACH8O,GAAI,WACJzN,EAAG,SACH0N,GAAI,SACR,EACAV,uBAAwB,cACxB7Q,QAAS,SACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAqBDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,oGAAoG0I,MACxG,GACJ,EACAL,YACI,+DAA+DK,MAC3D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,yEAAkD2J,MAAM,GAAG,EACrEyC,cAAe,iCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,cACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,qBACNlO,EAAG,oBACHmO,GAAIorB,GACJziC,EAAG,WACHsX,GAAImrB,GACJr6B,EAAG,aACHmP,GAAIkrB,GACJj7B,EAAG,OACHgQ,GAAIirB,GACJ94B,EAAG,gCACH8N,GAAIgrB,GACJ75B,EAAG,cACH8O,GAAI+qB,GACJx4B,EAAG,QACH0N,GAAI8qB,EACR,EACA54B,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EA4BG0vB,EAAgB,CAChB,uBACA,uBACA,uBACA,uBACA,+BACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAMJnlC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,kbAAoF6R,MACxF,GACJ,EACAijB,WACI,saAAkFjjB,MAC9E,GACJ,CACR,EACAL,YAAa,CAETxR,OAAQ,6QAAgE6R,MACpE,GACJ,EACAijB,WACI,kRAAgEjjB,MAC5D,GACJ,CACR,EACA3J,SAAU,CACN4sB,WACI,mVAAgEjjB,MAC5D,GACJ,EACJ7R,OAAQ,mVAAgE6R,MACpE,GACJ,EACA2a,SAAU,wJACd,EACAlY,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CF,YAAasxB,EACb1L,gBAAiB0L,EACjBzL,iBAAkByL,EAGlBvxB,YACI,+wBAGJD,iBACI,+wBAGJ4lB,kBACI,wgBAGJC,uBACI,8TACJ/vB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,iCACV,EACAZ,SAAU,CACNC,QAAS,0DACTC,QAAS,oDACTE,QAAS,8CACTD,SAAU,SAAUqG,GAChB,GAAIA,EAAI/S,KAAK,IAAMvM,KAAKuM,KAAK,EAczB,OAAmB,IAAfvM,KAAKoK,IAAI,EACF,mCAEA,6BAhBX,OAAQpK,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,oFACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oFACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,mFACf,CAQR,EACA+O,SAAU,SAAUmG,GAChB,GAAIA,EAAI/S,KAAK,IAAMvM,KAAKuM,KAAK,EAczB,OAAmB,IAAfvM,KAAKoK,IAAI,EACF,mCAEA,6BAhBX,OAAQpK,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,wEACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,wEACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uEACf,CAQR,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,oCACRC,KAAM,oCACNlO,EAAG,8FACHmO,GAAIqrB,GACJ1iC,EAAG0iC,GACHprB,GAAIorB,GACJt6B,EAAG,qBACHmP,GAAImrB,GACJl7B,EAAG,2BACHgQ,GAAIkrB,GACJ/4B,EAAG,uCACH8N,GAAIirB,GACJ95B,EAAG,iCACH8O,GAAIgrB,GACJz4B,EAAG,qBACH0N,GAAI+qB,EACR,EACA9qB,cAAe,6GACfhC,KAAM,SAAUhY,GACZ,MAAO,8DAAiBuJ,KAAKvJ,CAAK,CACtC,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,2BACAA,EAAO,GACP,2BACAA,EAAO,GACP,qBAEA,sCAEf,EACA2O,uBAAwB,uCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,UACpB,IAAK,IACD,OAAOA,EAAS,gBACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,UACpB,QACI,OAAOA,CACf,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIG2vB,EAAW,CACP,iCACA,6CACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,6CACA,uCACA,iCACA,kCAEJC,EAAS,CAAC,qBAAO,2BAAQ,iCAAS,2BAAQ,2BAAQ,qBAAO,4BAE7DrlC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ+5B,EACR1xB,YAAa0xB,EACbh7B,SAAUi7B,EACV7uB,cAAe6uB,EACf9uB,YAAa8uB,EACb57B,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,8BACV,EACAY,cAAe,wCACfhC,KAAM,SAAUhY,GACZ,MAAO,uBAAUA,CACrB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,qBAEJ,oBACX,EACA8N,SAAU,CACNC,QAAS,oBACTC,QAAS,sCACTC,SAAU,2EACVC,QAAS,sCACTC,SAAU,mFACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,kBACNlO,EAAG,oDACHmO,GAAI,oCACJrX,EAAG,kCACHsX,GAAI,wBACJlP,EAAG,wCACHmP,GAAI,8BACJ/P,EAAG,8CACHgQ,GAAI,oCACJ5O,EAAG,8CACH8O,GAAI,oCACJzN,EAAG,kCACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,UAAM,GAAG,CACnC,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,KAAM,QAAG,CACnC,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wNAAmJ0I,MACvJ,GACJ,EACAL,YACI,oFAA6DK,MAAM,GAAG,EAC1E3J,SACI,gGAA6E2J,MACzE,GACJ,EACJyC,cAAe,2CAAmCzC,MAAM,GAAG,EAC3DwC,YAAa,gBAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,qCACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,iBACRC,KAAM,gBACNlO,EAAG,mBACHmO,GAAI,eACJrX,EAAG,eACHsX,GAAI,cACJlP,EAAG,cACHmP,GAAI,aACJ/P,EAAG,cACHgQ,GAAI,cACJ5O,EAAG,gBACH8O,GAAI,cACJzN,EAAG,aACH0N,GAAI,UACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAKDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,sgBAAkG0I,MACtG,GACJ,EACAL,YAAa,0QAAwDK,MACjE,GACJ,EACA3J,SACI,mVAAgE2J,MAC5D,GACJ,EACJyC,cAAe,mJAAgCzC,MAAM,GAAG,EACxDwC,YAAa,iFAAqBxC,MAAM,GAAG,EAC3CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,wDACV,EACAZ,SAAU,CACNC,QAAS,4BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,kCACTC,SAAU,yDACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,6BACRC,KAAM,oCACNlO,EAAG,sEACHmO,GAAI,oCACJrX,EAAG,yDACHsX,GAAI,sDACJlP,EAAG,qBACHmP,GAAI,wBACJ/P,EAAG,2BACHgQ,GAAI,wBACJ5O,EAAG,2BACH8O,GAAI,wBACJzN,EAAG,qBACH0N,GAAI,uBACR,EACAV,uBAAwB,mCACxB7Q,QAAS,SAAUhB,GACf,OAAOA,EAAS,2BACpB,EACAwS,cAAe,iHACfhC,KAAM,SAAUhY,GACZ,MAAiB,mBAAVA,GAA8B,0CAAVA,CAC/B,EACAmD,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAY,GAARnlB,EACOmlB,EAAU,iBAAS,wCAEnBA,EAAU,uBAAU,uCAEnC,CACJ,CAAC,EAIGsV,EACI,yGAAoFvxB,MAChF,GACJ,EACJwxB,GAAgB,2DAAkDxxB,MAAM,GAAG,EAC/E,SAASyxB,GAASnvB,GACd,OAAW,EAAJA,GAASA,EAAI,CACxB,CACA,SAASovB,GAAY79B,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIhQ,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,IACD,OAAO0iB,GAAiBiF,EAAW,mBAAe,mBACtD,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAUonB,GAAS59B,CAAM,EAAI,UAAY,aAEzCwW,EAAS,YAExB,IAAK,IACD,OAAO+K,EAAgB,YAAWiF,EAAW,YAAW,aAC5D,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAUonB,GAAS59B,CAAM,EAAI,YAAW,YAExCwW,EAAS,cAExB,IAAK,IACD,OAAO+K,EAAgB,SAAWiF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAUonB,GAAS59B,CAAM,EAAI,SAAW,YAExCwW,EAAS,WAExB,IAAK,IACD,OAAO+K,GAAiBiF,EAAW,WAAQ,YAC/C,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAUonB,GAAS59B,CAAM,EAAI,MAAQ,UAErCwW,EAAS,aAExB,IAAK,IACD,OAAO+K,GAAiBiF,EAAW,SAAW,WAClD,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAUonB,GAAS59B,CAAM,EAAI,UAAY,YAEzCwW,EAAS,WAExB,IAAK,IACD,OAAO+K,GAAiBiF,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIjF,GAAiBiF,EACVhQ,GAAUonB,GAAS59B,CAAM,EAAI,OAAS,SAEtCwW,EAAS,OAE5B,CACJ,CAiFA,SAASsnB,GAAsB99B,EAAQuhB,EAAe1iB,EAAK2nB,GACvD,IAAIhQ,EAASxW,EAAS,IACtB,OAAQnB,GACJ,IAAK,IACD,OAAO0iB,GAAiBiF,EAClB,eACA,kBACV,IAAK,KAUD,OARIhQ,GADW,IAAXxW,EACUuhB,EAAgB,UAAY,UACpB,IAAXvhB,EACGuhB,GAAiBiF,EAAW,UAAY,WAC3CxmB,EAAS,EACNuhB,GAAiBiF,EAAW,UAAY,WAExC,SAGlB,IAAK,IACD,OAAOjF,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARI/K,GADW,IAAXxW,EACUuhB,EAAgB,SAAW,SACnB,IAAXvhB,EACGuhB,GAAiBiF,EAAW,SAAW,WAC1CxmB,EAAS,EACNuhB,GAAiBiF,EAAW,SAAW,WAEvCjF,GAAiBiF,EAAW,QAAU,WAGxD,IAAK,IACD,OAAOjF,EAAgB,UAAY,UACvC,IAAK,KAUD,OARI/K,GADW,IAAXxW,EACUuhB,EAAgB,MAAQ,MAChB,IAAXvhB,EACGuhB,GAAiBiF,EAAW,MAAQ,QACvCxmB,EAAS,EACNuhB,GAAiBiF,EAAW,MAAQ,QAEpCjF,GAAiBiF,EAAW,KAAO,QAGrD,IAAK,IACD,OAAOjF,GAAiBiF,EAAW,SAAW,YAClD,IAAK,KAQD,OANIhQ,GADW,IAAXxW,EACUuhB,GAAiBiF,EAAW,MAAQ,OAC5B,IAAXxmB,EACGuhB,GAAiBiF,EAAW,MAAQ,UAEpCjF,GAAiBiF,EAAW,MAAQ,QAGtD,IAAK,IACD,OAAOjF,GAAiBiF,EAAW,WAAa,eACpD,IAAK,KAUD,OARIhQ,GADW,IAAXxW,EACUuhB,GAAiBiF,EAAW,QAAU,UAC9B,IAAXxmB,EACGuhB,GAAiBiF,EAAW,SAAW,WAC1CxmB,EAAS,EACNuhB,GAAiBiF,EAAW,SAAW,SAEvCjF,GAAiBiF,EAAW,UAAY,SAG1D,IAAK,IACD,OAAOjF,GAAiBiF,EAAW,WAAa,aACpD,IAAK,KAUD,OARIhQ,GADW,IAAXxW,EACUuhB,GAAiBiF,EAAW,OAAS,QAC7B,IAAXxmB,EACGuhB,GAAiBiF,EAAW,OAAS,SACxCxmB,EAAS,EACNuhB,GAAiBiF,EAAW,OAAS,OAErCjF,GAAiBiF,EAAW,MAAQ,MAG1D,CACJ,CAjKApuB,EAAMub,aAAa,KAAM,CACrBlQ,OAAQi6B,EACR5xB,YAAa6xB,GACbn7B,SAAU,gEAAsD2J,MAAM,GAAG,EACzEyC,cAAe,4BAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,yBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,iBACf,CACJ,EACA8O,QAAS,oBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,+BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,yBACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNlO,EAAG+5B,GACH5rB,GAAI4rB,GACJjjC,EAAGijC,GACH3rB,GAAI2rB,GACJ76B,EAAG66B,GACH1rB,GAAI0rB,GACJz7B,EAAGy7B,GACHzrB,GAAIyrB,GACJr6B,EAAGq6B,GACHvrB,GAAIurB,GACJh5B,EAAGg5B,GACHtrB,GAAIsrB,EACR,EACAhsB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAwFDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YACI,8DAA8DK,MAC1D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,2DAAsD2J,MAAM,GAAG,EACzEyC,cAAe,0CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBACf,CACJ,EACA8O,QAAS,sBACTC,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,oCACX,KAAK,EACD,MAAO,kCACX,KAAK,EACD,MAAO,mCACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BACf,CACJ,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,UACNlO,EAAGg6B,GACH7rB,GAAI6rB,GACJljC,EAAGkjC,GACH5rB,GAAI4rB,GACJ96B,EAAG86B,GACH3rB,GAAI2rB,GACJ17B,EAAG07B,GACH1rB,GAAI0rB,GACJt6B,EAAGs6B,GACHxrB,GAAIwrB,GACJj5B,EAAGi5B,GACHvrB,GAAIurB,EACR,EACAjsB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,mFAAgF0I,MACpF,GACJ,EACAL,YAAa,qDAAkDK,MAAM,GAAG,EACxE3J,SAAU,8EAA4D2J,MAClE,GACJ,EACAyC,cAAe,oCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,sBAAmBxC,MAAM,GAAG,EACzCqgB,mBAAoB,CAAA,EACpBha,cAAe,QACfhC,KAAM,SAAUhY,GACZ,MAA2B,MAApBA,EAAM2vB,OAAO,CAAC,CACzB,EACAxsB,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAOnlB,EAAQ,GAAK,KAAO,IAC/B,EACApB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,iBACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,mBACNlO,EAAG,eACHmO,GAAI,aACJrX,EAAG,mBACHsX,GAAI,YACJlP,EAAG,gBACHmP,GAAI,YACJ/P,EAAG,iBACHgQ,GAAI,aACJ5O,EAAG,cACH8O,GAAI,UACJzN,EAAG,aACH0N,GAAI,SACR,EACAV,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAIkwB,EAAe,CACfxD,MAAO,CAEHtoB,GAAI,CAAC,6CAAW,6CAAW,8CAC3BrX,EAAG,CAAC,gEAAe,6EACnBsX,GAAI,CAAC,iCAAS,uCAAU,wCACxBlP,EAAG,CAAC,oDAAa,iEACjBmP,GAAI,CAAC,qBAAO,2BAAQ,4BACpB/P,EAAG,CAAC,oDAAa,iEACjBgQ,GAAI,CAAC,qBAAO,2BAAQ,4BACpB5O,EAAG,CAAC,gEAAe,6EACnB8O,GAAI,CAAC,iCAAS,uCAAU,wCACxBzN,EAAG,CAAC,sEAAgB,uEACpB0N,GAAI,CAAC,uCAAU,uCAAU,uCAC7B,EACAioB,uBAAwB,SAAUx6B,EAAQy6B,GACtC,OACmB,GAAfz6B,EAAS,IACTA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAsB,IAAhBA,EAAS,KAExBA,EAAS,IAAO,EAAIy6B,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EACnB,EACAjJ,UAAW,SAAUxxB,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIiU,EAAUsD,EAAaxD,MAAM17B,GAGjC,OAAmB,IAAfA,EAAIvF,OAEQ,MAARuF,GAAe0iB,EAAsB,sEAClCiF,GAAYjF,EAAgBkZ,EAAQ,GAAKA,EAAQ,IAG5DtL,EAAO4O,EAAavD,uBAAuBx6B,EAAQy6B,CAAO,EAE9C,OAAR57B,GAAgB0iB,GAA0B,yCAAT4N,EAC1BnvB,EAAS,wCAGbA,EAAS,IAAMmvB,EAC1B,CACJ,EAgFI6O,GA9EJ5lC,EAAMub,aAAa,UAAW,CAC1BlQ,OAAQ,4aAAmF0I,MACvF,GACJ,EACAL,YACI,+OAA2DK,MAAM,GAAG,EACxEklB,iBAAkB,CAAA,EAClB7uB,SAAU,uRAAsD2J,MAAM,GAAG,EACzEyC,cAAe,8IAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,6CACTC,QAAS,6CACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,8DACX,KAAK,EACD,MAAO,wDACX,KAAK,EACD,MAAO,8DACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACf,CACJ,EACA8O,QAAS,uCACTC,SAAU,WAUN,MATmB,CACf,4FACA,oHACA,kGACA,sFACA,8GACA,4FACA,6FAEgBnZ,KAAKoK,IAAI,EACjC,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNlO,EAAG,8FACHmO,GAAI8rB,EAAavM,UACjB52B,EAAGmjC,EAAavM,UAChBtf,GAAI6rB,EAAavM,UACjBxuB,EAAG+6B,EAAavM,UAChBrf,GAAI4rB,EAAavM,UACjBpvB,EAAG27B,EAAavM,UAChBpf,GAAI2rB,EAAavM,UACjBhuB,EAAGu6B,EAAavM,UAChBlf,GAAIyrB,EAAavM,UACjB3sB,EAAGk5B,EAAavM,UAChBjf,GAAIwrB,EAAavM,SACrB,EACA3f,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIkB,CACf0sB,MAAO,CAEHtoB,GAAI,CAAC,UAAW,UAAW,WAC3BrX,EAAG,CAAC,cAAe,iBACnBsX,GAAI,CAAC,QAAS,SAAU,UACxBlP,EAAG,CAAC,YAAa,eACjBmP,GAAI,CAAC,MAAO,OAAQ,QACpB/P,EAAG,CAAC,YAAa,eACjBgQ,GAAI,CAAC,MAAO,OAAQ,QACpB5O,EAAG,CAAC,cAAe,iBACnB8O,GAAI,CAAC,QAAS,SAAU,UACxBzN,EAAG,CAAC,eAAgB,gBACpB0N,GAAI,CAAC,SAAU,SAAU,SAC7B,EACAioB,uBAAwB,SAAUx6B,EAAQy6B,GACtC,OACmB,GAAfz6B,EAAS,IACTA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAsB,IAAhBA,EAAS,KAExBA,EAAS,IAAO,EAAIy6B,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EACnB,EACAjJ,UAAW,SAAUxxB,EAAQuhB,EAAe1iB,EAAK2nB,GAC7C,IAAIiU,EAAUuD,EAAazD,MAAM17B,GAGjC,OAAmB,IAAfA,EAAIvF,OAEQ,MAARuF,GAAe0iB,EAAsB,eAClCiF,GAAYjF,EAAgBkZ,EAAQ,GAAKA,EAAQ,IAG5DtL,EAAO6O,EAAaxD,uBAAuBx6B,EAAQy6B,CAAO,EAE9C,OAAR57B,GAAgB0iB,GAA0B,WAAT4N,EAC1BnvB,EAAS,UAGbA,EAAS,IAAMmvB,EAC1B,CACJ,GAwRI8O,IAtRJ7lC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,mFAAmF0I,MACvF,GACJ,EACAL,YACI,2DAA2DK,MAAM,GAAG,EACxEklB,iBAAkB,CAAA,EAClB7uB,SAAU,6DAAwD2J,MAC9D,GACJ,EACAyC,cAAe,0CAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,4BAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjZ,KAAKoK,IAAI,GACb,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,iBACf,CACJ,EACA8O,QAAS,mBACTC,SAAU,WAUN,MATmB,CACf,iCACA,qCACA,iCACA,+BACA,wCACA,gCACA,iCAEgBnZ,KAAKoK,IAAI,EACjC,EACAgP,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNlO,EAAG,mBACHmO,GAAI+rB,EAAaxM,UACjB52B,EAAGojC,EAAaxM,UAChBtf,GAAI8rB,EAAaxM,UACjBxuB,EAAGg7B,EAAaxM,UAChBrf,GAAI6rB,EAAaxM,UACjBpvB,EAAG47B,EAAaxM,UAChBpf,GAAI4rB,EAAaxM,UACjBhuB,EAAGw6B,EAAaxM,UAChBlf,GAAI0rB,EAAaxM,UACjB3sB,EAAGm5B,EAAaxM,UAChBjf,GAAIyrB,EAAaxM,SACrB,EACA3f,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,mHAAmH0I,MACvH,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SACI,sEAAsE2J,MAClE,GACJ,EACJyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACNlO,EAAG,qBACHmO,GAAI,cACJrX,EAAG,SACHsX,GAAI,aACJlP,EAAG,SACHmP,GAAI,aACJ/P,EAAG,UACHgQ,GAAI,cACJ5O,EAAG,UACH8O,GAAI,cACJzN,EAAG,UACH0N,GAAI,aACR,EACAC,cAAe,mCACf7W,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,SAEf,EACAqV,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,YAAbvH,EACOuH,EACa,UAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,eAAbvH,GAA0C,YAAbA,EACvB,IAATuH,EACO,EAEJA,EAAO,GAJX,KAAA,CAMX,EACA2O,uBAAwB,UACxB7Q,QAAS,KACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,wFAAwF0I,MAC5F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,6DAAoD2J,MAAM,GAAG,EACvEyC,cAAe,uCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,gCAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNqgB,IAAK,mBACLC,KAAM,sBACV,EACAlhB,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,eACTD,SAAU,kBACVE,SAAU,iBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,QACRC,KAAM,kBACNlO,EAAG,oBACHmO,GAAI,cACJrX,EAAG,WACHsX,GAAI,aACJlP,EAAG,WACHmP,GAAI,YACJ/P,EAAG,SACHgQ,GAAI,WACJ5O,EAAG,cACH8O,GAAI,gBACJzN,EAAG,YACH0N,GAAI,UACR,EACAV,uBAAwB,mBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,MAER,GAAN/G,GAEQ,GAANA,GACE,KAEE,KAGxB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,sFAAsF0I,MAC1F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SACI,8DAA8D2J,MAC1D,GACJ,EACJyC,cAAe,kCAAkCzC,MAAM,GAAG,EAC1DwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,UACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNlO,EAAG,aACHmO,GAAI,aACJrX,EAAG,cACHsX,GAAI,YACJlP,EAAG,aACHmP,GAAI,WACJ/P,EAAG,YACHgQ,GAAI,UACJ5O,EAAG,cACH8O,GAAI,WACJzN,EAAG,cACH0N,GAAI,UACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIiB,CACV4e,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,QACP,GACAgR,GAAc,CACVC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,IACLC,SAAK,GACT,EA6PAC,IA3PJzmC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,sdAA0F0I,MAC9F,GACJ,EACAL,YACI,sdAA0FK,MACtF,GACJ,EACJ3J,SACI,ugBAA8F2J,MAC1F,GACJ,EACJyC,cAAe,qQAAmDzC,MAC9D,GACJ,EACAwC,YAAa,uFAAsBxC,MAAM,GAAG,EAC5CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,2EACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,8BACNlO,EAAG,+FACHmO,GAAI,4DACJrX,EAAG,gEACHsX,GAAI,kEACJlP,EAAG,uEACHmP,GAAI,uDACJ/P,EAAG,8CACHgQ,GAAI,gDACJ5O,EAAG,oDACH8O,GAAI,sDACJzN,EAAG,0DACH0N,GAAI,qDACR,EACAV,uBAAwB,4BACxB7Q,QAAS,SAAUhB,GACf,OAAOA,EAAS,oBACpB,EACA2Y,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,kEAAiB,SAAUD,GAC7C,OAAO28B,GAAY38B,EACvB,CAAC,CACL,EACA+f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,MAAO,SAAUD,GACnC,OAAO08B,GAAY18B,EACvB,CAAC,CACL,EAEAiR,cAAe,wMACf7W,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,kCACAA,EAAO,EACP,kCACAA,EAAO,GACP,4BACAA,EAAO,GACP,8CACAA,EAAO,GACP,8CACAA,EAAO,GACP,4BAEA,iCAEf,EACAoV,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,mCAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,mCAAbvH,GAAqC,6BAAbA,GAEX,+CAAbA,GACQ,IAARuH,EAAaA,EAEbA,EAAO,EAEtB,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,0cAAwF0I,MAC5F,GACJ,EACAL,YACI,oSAAmEK,MAC/D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SACI,uUAA8D2J,MAC1D,GACJ,EACJyC,cAAe,+JAAkCzC,MAAM,GAAG,EAC1DwC,YAAa,iFAAqBxC,MAAM,GAAG,EAC3CtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,2BACV,EACAZ,SAAU,CACNC,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,0CACNlO,EAAG,kFACHmO,GAAI,gDACJrX,EAAG,oDACHsX,GAAI,sDACJlP,EAAG,kCACHmP,GAAI,oCACJ/P,EAAG,wCACHgQ,GAAI,0CACJ5O,EAAG,kCACH8O,GAAI,oCACJzN,EAAG,gEACH0N,GAAI,iEACR,EACAV,uBAAwB,gBACxB7Q,QAAS,WACTwR,cAAe,wKACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,yCAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbvH,EACAuH,EACa,2DAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,qDAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,uCACAA,EAAO,GACP,2BACAA,EAAO,GACP,yDACAA,EAAO,GACP,mDAEA,sCAEf,EACAuB,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,MAAO,CACtBlQ,OAAQ,6FAA0F0I,MAC9F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,kDAAkD2J,MAAM,GAAG,EACrEyC,cAAe,iCAAiCzC,MAAM,GAAG,EACzDwC,YAAa,yBAAyBxC,MAAM,GAAG,EAC/CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,aACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,UACJ/P,EAAG,YACHgQ,GAAI,WACJ5O,EAAG,YACH8O,GAAI,WACJzN,EAAG,YACH0N,GAAI,UACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIgB,CACbqf,EAAG,gBACHT,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACH2B,GAAI,gBACJkQ,GAAI,gBACJC,GAAI,gBACJtQ,GAAI,gBACJI,GAAI,gBACJ+I,GAAI,gBACJlJ,GAAI,gBACJI,GAAI,gBACJP,GAAI,gBACJC,GAAI,gBACJO,GAAI,gBACJJ,IAAK,eACT,GAyJIqQ,IAvJJ5mC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,wbAAqF6R,MACzF,GACJ,EACAijB,WACI,gXAAyEjjB,MACrE,GACJ,CACR,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SAAU,ySAAyD2J,MAC/D,GACJ,EACAyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,qEACTC,QAAS,qEACTE,QAAS,qEACTD,SAAU,uHACVE,SAAU,mIACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,oCACRC,KAAM,wBACNlO,EAAG,sEACHlJ,EAAG,oDACHsX,GAAI,0CACJlP,EAAG,wCACHmP,GAAI,8BACJ/P,EAAG,kCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,wBACJzN,EAAG,kCACH0N,GAAI,uBACR,EACAC,cAAe,gGACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,uBAAbvH,EACOuH,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbvH,EACAuH,EACa,uBAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,mCAAbvH,EACAuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,qBACAA,EAAO,GACP,iCAEA,oBAEf,EACA2O,uBAAwB,sCACxB7Q,QAAS,SAAUhB,GAGf,OAAOA,GAAU6+B,GAAW7+B,IAAW6+B,GAF/B7+B,EAAS,KAEuC6+B,GADtC,KAAV7+B,EAAgB,IAAM,MAElC,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,khBAAoG0I,MACxG,GACJ,EACAL,YACI,wMAAiEK,MAC7D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,yPAAiD2J,MAAM,GAAG,EACpEyC,cAAe,uOAA8CzC,MAAM,GAAG,EACtEwC,YAAa,sEAAyBxC,MAAM,GAAG,EAC/CqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4CACLC,KAAM,oFACV,EACAY,cAAe,4HACfhC,KAAM,SAAUhY,GACZ,MAAiB,iEAAVA,CACX,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,+DAEA,8DAEf,EACA8N,SAAU,CACNC,QAAS,qEACTC,QAAS,iFACTC,SAAU,6DACVC,QAAS,mGACTC,SAAU,mGACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,+CACNlO,EAAG,2EACHmO,GAAI,0CACJrX,EAAG,6BACHsX,GAAI,8BACJlP,EAAG,+CACHmP,GAAI,gDACJ/P,EAAG,uBACHgQ,GAAI,wBACJ7N,EAAG,+CACH8N,GAAI,gDACJ7O,EAAG,mCACH8O,GAAI,oCACJzN,EAAG,iBACH0N,GAAI,iBACR,CACJ,CAAC,EAIgB,CACbka,EAAG,QACHI,EAAG,QACHG,EAAG,QACHuB,GAAI,QACJC,GAAI,QACJ9B,EAAG,OACHK,EAAG,OACH0B,GAAI,OACJC,GAAI,OACJ/B,EAAG,WACHC,EAAG,WACH+B,IAAK,WACL7B,EAAG,OACHG,EAAG,QACH2B,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,OACR,GA2HIkQ,IAzHJ7mC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,oGAA+E0I,MACnF,GACJ,EACAL,YAAa,iEAAkDK,MAAM,GAAG,EACxE3J,SAAU,4FAAwD2J,MAC9D,GACJ,EACAyC,cAAe,mDAA8BzC,MAAM,GAAG,EACtDwC,YAAa,4CAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,gBACNlO,EAAG,uBACHlJ,EAAG,YACHsX,GAAI,WACJlP,EAAG,YACHmP,GAAI,WACJ/P,EAAG,aACHgQ,GAAI,YACJ5O,EAAG,YACH8O,GAAI,WACJzN,EAAG,aACH0N,GAAI,WACR,EACAvR,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzc,EACX,QACI,IAIIhH,EAJJ,OAAe,IAAXgH,EAEOA,EAAS,QAKbA,GAAUg/B,GAHbhmC,EAAIgH,EAAS,KAGiBg/B,GAFzBh/B,EAAS,IAAOhH,IAE0BgmC,GADjC,KAAVh/B,EAAgB,IAAM,MAEtC,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0FAA0F0I,MAC9F,GACJ,EACAL,YAAa,kDAAkDK,MAAM,GAAG,EACxE3J,SAAU,yDAAyD2J,MAC/D,GACJ,EACAyC,cAAe,8BAA8BzC,MAAM,GAAG,EACtDwC,YAAa,wBAAwBxC,MAAM,GAAG,EAC9CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,2BACV,EACAZ,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNlO,EAAG,gBACHmO,GAAI,aACJrX,EAAG,eACHsX,GAAI,YACJlP,EAAG,aACHmP,GAAI,UACJ/P,EAAG,aACHgQ,GAAI,UACJ5O,EAAG,cACH8O,GAAI,WACJzN,EAAG,aACH0N,GAAI,SACR,EACAV,uBAAwB,UACxB7Q,QAAS,SAAUhB,GACf,OAAOA,CACX,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIkB,2DAAiD1B,MAAM,GAAG,GA4B7E,SAAS+yB,GAAYl/B,EAAQuhB,EAAe3L,EAAQ4Q,GAChD,IAAI2Y,EAiBR,SAAsBn/B,GAClB,IAAIo/B,EAAUh/B,KAAK0H,MAAO9H,EAAS,IAAQ,GAAG,EAC1Cq/B,EAAMj/B,KAAK0H,MAAO9H,EAAS,IAAO,EAAE,EACpCs/B,EAAMt/B,EAAS,GACfmvB,EAAO,GACG,EAAViQ,IACAjQ,GAAQ8P,GAAaG,GAAW,SAE1B,EAANC,IACAlQ,IAAkB,KAATA,EAAc,IAAM,IAAM8P,GAAaI,GAAO,OAEjD,EAANC,IACAnQ,IAAkB,KAATA,EAAc,IAAM,IAAM8P,GAAaK,IAEpD,MAAgB,KAATnQ,EAAc,OAASA,CAClC,EAhCkCnvB,CAAM,EACpC,OAAQ4V,GACJ,IAAK,KACD,OAAOupB,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,MAC5B,CACJ,CAmBA/mC,EAAMub,aAAa,MAAO,CACtBlQ,OAAQ,iSAAkM0I,MACtM,GACJ,EACAL,YACI,6JAA0HK,MACtH,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,2DAA2D2J,MACjE,GACJ,EACAyC,cACI,2DAA2DzC,MAAM,GAAG,EACxEwC,YACI,2DAA2DxC,MAAM,GAAG,EACxEtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,cACTC,QAAS,mBACTC,SAAU,MACVC,QAAS,wBACTC,SAAU,MACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OA9FR,SAAyBrQ,GACrB,IAAIif,EAAOjf,EASX,OAAOif,EAPuB,CAAC,IAA3Bjf,EAAO4H,QAAQ,KAAK,EACdqX,EAAK3hB,MAAM,EAAG,CAAC,CAAC,EAAI,MACM,CAAC,IAA3B0C,EAAO4H,QAAQ,KAAK,EAClBqX,EAAK3hB,MAAM,EAAG,CAAC,CAAC,EAAI,MACM,CAAC,IAA3B0C,EAAO4H,QAAQ,KAAK,EAClBqX,EAAK3hB,MAAM,EAAG,CAAC,CAAC,EAAI,MACpB2hB,EAAO,MAEzB,EAoFQ3O,KAlFR,SAAuBtQ,GACnB,IAAIif,EAAOjf,EASX,OAAOif,EAPuB,CAAC,IAA3Bjf,EAAO4H,QAAQ,KAAK,EACdqX,EAAK3hB,MAAM,EAAG,CAAC,CAAC,EAAI,WACM,CAAC,IAA3B0C,EAAO4H,QAAQ,KAAK,EAClBqX,EAAK3hB,MAAM,EAAG,CAAC,CAAC,EAAI,MACM,CAAC,IAA3B0C,EAAO4H,QAAQ,KAAK,EAClBqX,EAAK3hB,MAAM,EAAG,CAAC,CAAC,EAAI,MACpB2hB,EAAO,MAEzB,EAwEQ7c,EAAG,UACHmO,GAAIitB,GACJtkC,EAAG,eACHsX,GAAIgtB,GACJl8B,EAAG,eACHmP,GAAI+sB,GACJ98B,EAAG,eACHgQ,GAAI8sB,GACJ17B,EAAG,eACH8O,GAAI4sB,GACJr6B,EAAG,eACH0N,GAAI2sB,EACR,EACArtB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAID,IAAI0xB,GAAa,CACb9S,EAAG,QACHI,EAAG,QACHG,EAAG,QACHuB,GAAI,QACJC,GAAI,QACJ9B,EAAG,OACHK,EAAG,OACH0B,GAAI,OACJC,GAAI,OACJ/B,EAAG,cACHC,EAAG,cACH+B,IAAK,cACL7B,EAAG,YACHG,EAAG,QACH2B,GAAI,QACJC,GAAI,QACJC,GAAI,kBACJC,GAAI,iBACR,EAgJA,SAASyQ,GAAsBx/B,EAAQuhB,EAAe1iB,EAAK2nB,GACnDlsB,EAAS,CACTwJ,EAAG,CAAC,kBAAmB,mBACvBmO,GAAI,CAACjS,EAAS,WAAiBA,EAAS,YACxCpF,EAAG,CAAC,aAAW,iBACfsX,GAAI,CAAClS,EAAS,YAAeA,EAAS,aACtCgD,EAAG,CAAC,aAAW,kBACfmP,GAAI,CAACnS,EAAS,YAAeA,EAAS,aACtCoC,EAAG,CAAC,UAAW,eACfgQ,GAAI,CAACpS,EAAS,SAAeA,EAAS,UACtCwD,EAAG,CAAC,SAAU,aACd8O,GAAI,CAACtS,EAAS,SAAeA,EAAS,UACtC6E,EAAG,CAAC,QAAS,YACb0N,GAAI,CAACvS,EAAS,OAAaA,EAAS,OACxC,EACA,OAAOwmB,GAEDjF,EACEjnB,EAAOuE,GAAK,GACZvE,EAAOuE,GAAK,EACxB,CA8NA,SAAS4gC,GAAyBz/B,EAAQuhB,EAAe1iB,GASrD,MAAY,MAARA,EACO0iB,EAAgB,6CAAY,6CACpB,MAAR1iB,EACA0iB,EAAgB,uCAAW,uCAE3BvhB,EAAS,KAtBAivB,EAsB4B,CAACjvB,EArB7CkvB,GADUC,EASD,CACTld,GAAIsP,EAAgB,6HAA2B,6HAC/CrP,GAAIqP,EAAgB,6HAA2B,6HAC/CpP,GAAIoP,EAAgB,2GAAwB,2GAC5CnP,GAAI,uEACJE,GAAI,uHACJC,GAAI,4EACR,EAM0C1T,IArBzBsN,MAAM,GAAG,EACnB8iB,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACM,GAAZD,EAAM,IAAWA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAmB,IAAbA,EAAM,KACzDC,EAAM,GACNA,EAAM,GAkBlB,CAkCA,SAASwQ,GAAqBpV,GAC1B,OAAO,WACH,OAAOA,EAAM,UAAwB,KAAjBpyB,KAAK+K,MAAM,EAAW,SAAM,IAAM,MAC1D,CACJ,CAtbA7K,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,yGAA6E0I,MACjF,GACJ,EACAL,YAAa,4DAAkDK,MAAM,GAAG,EACxE3J,SAAU,0EAAwD2J,MAC9D,GACJ,EACAyC,cAAe,iCAA8BzC,MAAM,GAAG,EACtDwC,YAAa,0BAAuBxC,MAAM,GAAG,EAC7CxQ,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACDmlB,EAAU,WAAO,WAEjBA,EAAU,QAAO,OAEhC,EACA5V,cAAe,gCACfhC,KAAM,SAAUhY,GACZ,MAAiB,UAAVA,GAA4B,UAAVA,CAC7B,EACAqJ,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,qBACTC,QAAS,uBACTC,SAAU,2BACVC,QAAS,cACTC,SAAU,4BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNlO,EAAG,mBACHmO,GAAI,YACJrX,EAAG,aACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,UACJ/P,EAAG,aACHgQ,GAAI,YACJ7N,EAAG,YACH8N,GAAI,WACJ7O,EAAG,SACH8O,GAAI,QACJzN,EAAG,eACH0N,GAAI,aACR,EACAvR,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzc,EACX,QACI,IAIIhH,EAJJ,OAAe,IAAXgH,EAEOA,EAAS,kBAKbA,GAAUu/B,GAHbvmC,EAAIgH,EAAS,KAGiBu/B,GAFzBv/B,EAAS,IAAOhH,IAE0BumC,GADjC,KAAVv/B,EAAgB,IAAM,MAEtC,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAMDzV,EAAMub,aAAa,MAAO,CACtBlQ,OAAQ,kGAAsF0I,MAC1F,GACJ,EACAL,YAAa,qDAAkDK,MAAM,GAAG,EACxE3J,SAAU,8EAAsD2J,MAAM,GAAG,EACzEyC,cAAe,gDAA8BzC,MAAM,GAAG,EACtDwC,YAAa,mCAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,wCACV,EACAY,cAAe,aACfhC,KAAM,SAAUhY,GACZ,MAAO,QAAUA,EAAM0M,YAAY,CACvC,EACAvJ,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAY,GAARnlB,EACOmlB,EAAU,MAAQ,MAElBA,EAAU,MAAQ,KAEjC,EACApX,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,oCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,YACRC,KAAM,OACNlO,EAAG07B,GACHvtB,GAAIutB,GACJ5kC,EAAG4kC,GACHttB,GAAIstB,GACJx8B,EAAGw8B,GACHrtB,GAAIqtB,GACJp9B,EAAGo9B,GACHptB,GAAIotB,GACJh8B,EAAGg8B,GACHltB,GAAIktB,GACJ36B,EAAG26B,GACHjtB,GAAIitB,EACR,EACA3tB,uBAAwB,YACxB7Q,QAAS,MACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EA0BDzV,EAAMub,aAAa,WAAY,CAC3BlQ,OAAQ,qIAAwF0I,MAC5F,GACJ,EACAL,YACI,qIAAwFK,MACpF,GACJ,EACJ3J,SAAU,uDAAkD2J,MAAM,GAAG,EACrEyC,cAAe,uDAAkDzC,MAAM,GAAG,EAC1EwC,YAAa,uDAAkDxC,MAAM,GAAG,EACxEtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNlO,EAAG,OACHmO,GAAI,UACJrX,EAAG,aACHsX,GAAI,gBACJlP,EAAG,YACHmP,GAAI,mBACJ/P,EAAG,MACHgQ,GAAI,WACJ5O,EAAG,QACH8O,GAAI,YACJzN,EAAG,QACH0N,GAAI,WACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,MAAO,CACtBlQ,OAAQ,saAAkF0I,MACtF,GACJ,EACAL,YACI,saAAkFK,MAC9E,GACJ,EACJ3J,SAAU,+PAAkD2J,MAAM,GAAG,EACrEyC,cAAe,+PAAkDzC,MAAM,GAAG,EAC1EwC,YAAa,+PAAkDxC,MAAM,GAAG,EACxEtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,wBACV,EACAZ,SAAU,CACNC,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,mBACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wDACRC,KAAM,wBACNlO,EAAG,2BACHmO,GAAI,8BACJrX,EAAG,iCACHsX,GAAI,oCACJlP,EAAG,2BACHmP,GAAI,sDACJ/P,EAAG,qBACHgQ,GAAI,+BACJ5O,EAAG,4BACH8O,GAAI,0CACJzN,EAAG,iCACH0N,GAAI,yCACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,EACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,8bAAsF0I,MAC1F,GACJ,EACAL,YACI,8bAAsFK,MAClF,GACJ,EACJ3J,SAAU,ySAAyD2J,MAC/D,GACJ,EACAyC,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,gGACJC,IAAK,4GACLC,KAAM,sHACV,EACAY,cAAe,uQACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAGM,4DAAbvH,GACa,mCAAbA,GACa,wEAAbA,GAGoB,wEAAbA,GAA4C,uBAAbA,GAGvB,IAARuH,EAAaA,EAAOA,EAAO,EAE1C,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC1BpR,EAAY,IAAP9T,EAAaK,EACtB,OAAIyT,EAAK,IACE,0DACAA,EAAK,IACL,iCACAA,EAAK,KACL,sEACAA,EAAK,KACL,qBACAA,EAAK,KACL,sEAEA,oBAEf,EACAhG,SAAU,CACNC,QAAS,qEACTC,QAAS,+DACTC,SAAU,wFACVC,QAAS,kDACTC,SAAU,8FACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,oCACRC,KAAM,oCACNlO,EAAG,sEACHmO,GAAI,0CACJrX,EAAG,oDACHsX,GAAI,oCACJlP,EAAG,oDACHmP,GAAI,oCACJ/P,EAAG,wCACHgQ,GAAI,wBACJ5O,EAAG,wCACH8O,GAAI,wBACJzN,EAAG,wCACH0N,GAAI,uBACR,EAEAV,uBAAwB,yFACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,4BACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,kCACpB,QACI,OAAOA,CACf,CACJ,EACA2Y,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,UAAM,GAAG,CACnC,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,KAAM,QAAG,CACnC,EACAiD,KAAM,CAEFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAoEDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,CACJnJ,OAAQ,gdAAyF6R,MAC7F,GACJ,EACAijB,WACI,ggBAAiGjjB,MAC7F,GACJ,CACR,EACAL,YAAa,gRAAyDK,MAClE,GACJ,EACA3J,SApDJ,SAA6B5H,EAAGN,GAC5B,IAAIkI,EAAW,CACPm9B,WACI,+SAA0DxzB,MACtD,GACJ,EACJyzB,WACI,+SAA0DzzB,MACtD,GACJ,EACJ0zB,SACI,2TAA4D1zB,MACxD,GACJ,CACR,EAGJ,MAAU,CAAA,IAANvR,EACO4H,EAAqB,WACvBxD,MAAM,EAAG,CAAC,EACV0P,OAAOlM,EAAqB,WAAExD,MAAM,EAAG,CAAC,CAAC,EAE7CpE,EASE4H,EALI,yCAAqBT,KAAKzH,CAAM,EACrC,aACA,sHAAsCyH,KAAKzH,CAAM,EAC/C,WACA,cACkBM,EAAE0H,IAAI,GARrBE,EAAqB,UASpC,EAqBIoM,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,kCACV,EACAZ,SAAU,CACNC,QAASyuB,GAAqB,oDAAY,EAC1CxuB,QAASwuB,GAAqB,wCAAU,EACxCtuB,QAASsuB,GAAqB,kCAAS,EACvCvuB,SAAUuuB,GAAqB,iBAAY,EAC3CruB,SAAU,WACN,OAAQnZ,KAAKoK,IAAI,GACb,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOo9B,GAAqB,qDAAkB,EAAE7mC,KAAKX,IAAI,EAC7D,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOwnC,GAAqB,2DAAmB,EAAE7mC,KAAKX,IAAI,CAClE,CACJ,EACAoZ,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACNlO,EAAG,wFACHmO,GAAIwtB,GACJ7kC,EAAG6kC,GACHvtB,GAAIutB,GACJz8B,EAAG,uCACHmP,GAAIstB,GACJr9B,EAAG,2BACHgQ,GAAIqtB,GACJj8B,EAAG,uCACH8O,GAAImtB,GACJ56B,EAAG,qBACH0N,GAAIktB,EACR,EAEAjtB,cAAe,kHACfhC,KAAM,SAAUhY,GACZ,MAAO,8DAAiBuJ,KAAKvJ,CAAK,CACtC,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,EACA,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,qBAEA,sCAEf,EACA2O,uBAAwB,gCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOzc,EAAS,UACpB,IAAK,IACD,OAAOA,EAAS,gBACpB,QACI,OAAOA,CACf,CACJ,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIGiyB,EAAW,CACP,iCACA,iCACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,iCACA,uCACA,iCACA,kCAEJC,GAAS,CAAC,iCAAS,qBAAO,2BAAQ,qBAAO,uCAAU,2BAAQ,4BAuvB/D,OArvBA3nC,EAAMub,aAAa,KAAM,CACrBlQ,OAAQq8B,EACRh0B,YAAag0B,EACbt9B,SAAUu9B,GACVnxB,cAAemxB,GACfpxB,YAAaoxB,GACbl+B,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,8BACV,EACAY,cAAe,wCACfhC,KAAM,SAAUhY,GACZ,MAAO,uBAAUA,CACrB,EACAmD,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC9B,OAAIllB,EAAO,GACA,qBAEJ,oBACX,EACA8N,SAAU,CACNC,QAAS,6CACTC,QAAS,6CACTC,SAAU,qCACVC,QAAS,kFACTC,SAAU,sEACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNlO,EAAG,oDACHmO,GAAI,oCACJrX,EAAG,wCACHsX,GAAI,wBACJlP,EAAG,oDACHmP,GAAI,oCACJ/P,EAAG,kCACHgQ,GAAI,kBACJ5O,EAAG,wCACH8O,GAAI,wBACJzN,EAAG,wCACH0N,GAAI,uBACR,EACAoG,SAAU,SAAU/C,GAChB,OAAOA,EAAOpU,QAAQ,UAAM,GAAG,CACnC,EACA8f,WAAY,SAAU1L,GAClB,OAAOA,EAAOpU,QAAQ,KAAM,QAAG,CACnC,EACAiD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,UAAW,CAC1BlQ,OAAQ,6EAA6E0I,MACjF,GACJ,EACAL,YAAa,oDAAoDK,MAAM,GAAG,EAC1E3J,SACI,+DAA+D2J,MAC3D,GACJ,EACJyC,cAAe,kCAAkCzC,MAAM,GAAG,EAC1DwC,YAAa,yBAAyBxC,MAAM,GAAG,EAC/CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACNlO,EAAG,SACHmO,GAAI,YACJrX,EAAG,aACHsX,GAAI,YACJlP,EAAG,WACHmP,GAAI,UACJ/P,EAAG,UACHgQ,GAAI,SACJ5O,EAAG,SACH8O,GAAI,QACJzN,EAAG,UACH0N,GAAI,QACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gXAAyE0I,MAC7E,GACJ,EACAL,YAAa,sOAAkDK,MAAM,GAAG,EACxE3J,SAAU,6RAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,uIAA8BzC,MAAM,GAAG,EACtDwC,YAAa,6FAAuBxC,MAAM,GAAG,EAC7CtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,8EACTC,QAAS,2DACTC,SAAU,6EACVC,QAAS,wEACTC,SAAU,8GACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,6DACRC,KAAM,gFACNlO,EAAG,uCACHmO,GAAI,0CACJrX,EAAG,0DACHsX,GAAI,0CACJlP,EAAG,8CACHmP,GAAI,8BACJ/P,EAAG,wCACHgQ,GAAI,wBACJ5O,EAAG,kCACH8O,GAAI,kBACJzN,EAAG,wCACH0N,GAAI,uBACR,EACA9N,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,yIAAqG0I,MACzG,GACJ,EACAL,YACI,sFAAsFK,MAClF,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SAAU,mHAAyD2J,MAC/D,GACJ,EACAyC,cAAe,uBAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,uBAAuBxC,MAAM,GAAG,EAC7CqgB,mBAAoB,CAAA,EACpBha,cAAe,SACfhC,KAAM,SAAUhY,GACZ,MAAO,QAAQuJ,KAAKvJ,CAAK,CAC7B,EACAmD,SAAU,SAAUsH,EAAOK,EAAS8kB,GAChC,OAAInlB,EAAQ,GACDmlB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAvmB,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,yBACJC,IAAK,+BACLC,KAAM,qCACN2D,EAAG,YACHyc,GAAI,aACJC,IAAK,mBACLC,KAAM,uBACV,EACAlhB,SAAU,CACNC,QAAS,yBACTC,QAAS,0BACTC,SAAU,sCACVC,QAAS,yBACTC,SAAU,6CACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,qBACNlO,EAAG,iBACHmO,GAAI,aACJrX,EAAG,mBACHsX,GAAI,aACJlP,EAAG,oBACHmP,GAAI,cACJ/P,EAAG,mBACHgQ,GAAI,aACJ7N,EAAG,qBACH8N,GAAI,eACJ7O,EAAG,oBACH8O,GAAI,cACJzN,EAAG,oBACH0N,GAAI,aACR,EACAV,uBAAwB,UACxB7Q,QAAS,SAAUhB,GACf,OAAOA,CACX,EACAyE,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,WAAY,CAC3BlQ,OAAQ,sNAA6G0I,MACjH,GACJ,EACAL,YACI,iHAA8DK,MAC1D,GACJ,EACJklB,iBAAkB,CAAA,EAClB7uB,SACI,0JAAyE2J,MACrE,GACJ,EACJyC,cAAe,mEAAqCzC,MAAM,GAAG,EAC7DwC,YAAa,2CAA4BxC,MAAM,GAAG,EAClDqgB,mBAAoB,CAAA,EACpB3qB,eAAgB,CACZ2P,GAAI,QACJC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,yBACV,EACAZ,SAAU,CACNC,QAAS,8BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,yCACTC,SAAU,6BACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,eACRC,KAAM,gBACNlO,EAAG,kCACHmO,GAAI,wBACJrX,EAAG,4BACHsX,GAAI,2BACJlP,EAAG,wBACHmP,GAAI,kBACJ/P,EAAG,kBACHgQ,GAAI,iBACJ5O,EAAG,qBACH8O,GAAI,oBACJzN,EAAG,sBACH0N,GAAI,oBACR,EACAV,uBAAwB,uBACxB7Q,QAAS,SAAUhB,GACf,IAAI/G,EAAI+G,EAAS,GAWjB,OAAOA,GAT6B,GAA5B,CAAC,EAAGA,EAAS,IAAO,IACd,KACM,GAAN/G,EACE,KACM,GAANA,EACE,KACM,GAANA,EACE,KACA,KAExB,EACAwL,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,KAAM,CACrBlQ,OAAQ,gPAA0F0I,MAC9F,GACJ,EACAL,YAAa,oKAAgEK,MAAM,GAAG,EACtF3J,SAAU,gKAAuD2J,MAAM,GAAG,EAC1EyC,cAAe,kGAAsCzC,MAAM,GAAG,EAC9DwC,YAAa,8DAA2BxC,MAAM,GAAG,EACjDtK,eAAgB,CACZ2P,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,0BACV,EACAZ,SAAU,CACNC,QAAS,0BACTC,QAAS,yBACTC,SAAU,uDACVC,QAAS,oBACTC,SAAU,2DACVC,SAAU,GACd,EACAQ,aAAc,CACVC,OAAQ,cACRC,KAAM,qBACNlO,EAAG,wCACHmO,GAAI,gBACJrX,EAAG,6BACHsX,GAAI,4BACJlP,EAAG,mBACHmP,GAAI,kBACJ/P,EAAG,0BACHgQ,GAAI,yBACJ5O,EAAG,gBACH8O,GAAI,eACJzN,EAAG,sBACH0N,GAAI,oBACR,EACAV,uBAAwB,+BACxB7Q,QAAS,yBACTyD,KAAM,CACFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0KAAwC0I,MAC5C,GACJ,EACAL,YAAa,qGAAyCK,MAClD,GACJ,EACA3J,SAAU,uIAA8B2J,MAAM,GAAG,EACjDyC,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,2CACLC,KAAM,+CACN2D,EAAG,WACHyc,GAAI,2BACJC,IAAK,iCACLC,KAAM,oCACV,EACA1f,cAAe,gFACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,iBAAbvH,GAAkC,iBAAbA,GAAkC,iBAAbA,GAEtB,iBAAbA,GAAkC,iBAAbA,GAIb,IAARuH,EAAaA,EAAOA,EAAO,EAE1C,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC1BpR,EAAY,IAAP9T,EAAaK,EACtB,OAAIyT,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,cAEf,EACAhG,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,SAAUqG,GAChB,OAAIA,EAAI/S,KAAK,IAAMvM,KAAKuM,KAAK,EAClB,gBAEA,eAEf,EACA2M,QAAS,mBACTC,SAAU,SAAUmG,GAChB,OAAItf,KAAKuM,KAAK,IAAM+S,EAAI/S,KAAK,EAClB,gBAEA,eAEf,EACA6M,SAAU,GACd,EACAO,uBAAwB,gCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,CACf,CACJ,EACA8R,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNlO,EAAG,eACHmO,GAAI,YACJrX,EAAG,iBACHsX,GAAI,kBACJlP,EAAG,iBACHmP,GAAI,kBACJ/P,EAAG,WACHgQ,GAAI,YACJ7N,EAAG,WACH8N,GAAI,YACJ7O,EAAG,iBACH8O,GAAI,kBACJzN,EAAG,WACH0N,GAAI,WACR,EACA9N,KAAM,CAEFmJ,IAAK,EACLC,IAAK,CACT,CACJ,CAAC,EAIDzV,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0KAAwC0I,MAC5C,GACJ,EACAL,YAAa,qGAAyCK,MAClD,GACJ,EACA3J,SAAU,uIAA8B2J,MAAM,GAAG,EACjDyC,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN2D,EAAG,WACHyc,GAAI,2BACJC,IAAK,iCACLC,KAAM,oCACV,EACA1f,cAAe,gFACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,iBAAbvH,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCuH,EACa,iBAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,iBAAbvH,GAAkC,iBAAbA,EACrBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC1BpR,EAAY,IAAP9T,EAAaK,EACtB,OAAIyT,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACO,OAAPA,EACA,eACAA,EAAK,KACL,eAEA,cAEf,EACAhG,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,mBACTC,SAAU,iBACVC,SAAU,GACd,EACAO,uBAAwB,gCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,CACf,CACJ,EACA8R,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNlO,EAAG,eACHmO,GAAI,YACJrX,EAAG,iBACHsX,GAAI,kBACJlP,EAAG,iBACHmP,GAAI,kBACJ/P,EAAG,WACHgQ,GAAI,YACJ5O,EAAG,iBACH8O,GAAI,kBACJzN,EAAG,WACH0N,GAAI,WACR,CACJ,CAAC,EAIDna,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0KAAwC0I,MAC5C,GACJ,EACAL,YAAa,qGAAyCK,MAClD,GACJ,EACA3J,SAAU,uIAA8B2J,MAAM,GAAG,EACjDyC,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN2D,EAAG,WACHyc,GAAI,2BACJC,IAAK,iCACLC,KAAM,oCACV,EACA1f,cAAe,gFACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,iBAAbvH,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCuH,EACa,iBAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,iBAAbvH,GAAkC,iBAAbA,EACrBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC1BpR,EAAY,IAAP9T,EAAaK,EACtB,OAAIyT,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,cAEf,EACAhG,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,GACd,EACAO,uBAAwB,gCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,CACf,CACJ,EACA8R,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNlO,EAAG,eACHmO,GAAI,YACJrX,EAAG,iBACHsX,GAAI,kBACJlP,EAAG,iBACHmP,GAAI,kBACJ/P,EAAG,WACHgQ,GAAI,YACJ5O,EAAG,iBACH8O,GAAI,kBACJzN,EAAG,WACH0N,GAAI,WACR,CACJ,CAAC,EAIDna,EAAMub,aAAa,QAAS,CACxBlQ,OAAQ,0KAAwC0I,MAC5C,GACJ,EACAL,YAAa,qGAAyCK,MAClD,GACJ,EACA3J,SAAU,uIAA8B2J,MAAM,GAAG,EACjDyC,cAAe,6FAAuBzC,MAAM,GAAG,EAC/CwC,YAAa,mDAAgBxC,MAAM,GAAG,EACtCtK,eAAgB,CACZ2P,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN2D,EAAG,WACHyc,GAAI,2BACJC,IAAK,iCACLC,KAAM,oCACV,EACA1f,cAAe,gFACf8F,aAAc,SAAUpV,EAAMvH,GAI1B,OAHa,KAATuH,IACAA,EAAO,GAEM,iBAAbvH,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCuH,EACa,iBAAbvH,EACQ,IAARuH,EAAaA,EAAOA,EAAO,GACd,iBAAbvH,GAAkC,iBAAbA,EACrBuH,EAAO,GADX,KAAA,CAGX,EACAvH,SAAU,SAAUuH,EAAMK,EAAQ6kB,GAC1BpR,EAAY,IAAP9T,EAAaK,EACtB,OAAIyT,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,cAEf,EACAhG,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,GACd,EACAO,uBAAwB,gCACxB7Q,QAAS,SAAUhB,EAAQyc,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzc,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,CACf,CACJ,EACA8R,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNlO,EAAG,eACHmO,GAAI,YACJrX,EAAG,iBACHsX,GAAI,kBACJlP,EAAG,iBACHmP,GAAI,kBACJ/P,EAAG,WACHgQ,GAAI,YACJ5O,EAAG,iBACH8O,GAAI,kBACJzN,EAAG,WACH0N,GAAI,WACR,CACJ,CAAC,EAEDna,EAAMmC,OAAO,IAAI,EAEVnC,CAEV,CAAE"}
1 \ No newline at end of file
public/lib/moment.min.js+0 -2
@@ -1,2 +0,0 @@
1-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var H;function f(){return H.apply(null,arguments)}function a(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function F(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function o(e){return void 0===e}function u(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i<s;++i)n.push(t(e[i],i));return n}function E(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function l(e,t,n,s){return Pt(e,t,n,s,!0).utc()}function m(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function A(e){if(null==e._isValid){var t=m(e),n=j.call(t.parsedDateParts,function(e){return null!=e}),n=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(n=n&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return n;e._isValid=n}return e._isValid}function I(e){var t=l(NaN);return null!=e?E(m(t),e):m(t).userInvalidated=!0,t}var j=Array.prototype.some||function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1},Z=f.momentProperties=[],z=!1;function $(e,t){var n,s,i,r=Z.length;if(o(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),o(t._i)||(e._i=t._i),o(t._f)||(e._f=t._f),o(t._l)||(e._l=t._l),o(t._strict)||(e._strict=t._strict),o(t._tzm)||(e._tzm=t._tzm),o(t._isUTC)||(e._isUTC=t._isUTC),o(t._offset)||(e._offset=t._offset),o(t._pf)||(e._pf=m(t)),o(t._locale)||(e._locale=t._locale),0<r)for(n=0;n<r;n++)o(i=t[s=Z[n]])||(e[s]=i);return e}function q(e){$(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===z&&(z=!0,f.updateOffset(this),z=!1)}function h(e){return e instanceof q||null!=e&&null!=e._isAMomentObject}function B(e){!1===f.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,a){var o=!0;return E(function(){if(null!=f.deprecationHandler&&f.deprecationHandler(null,r),o){for(var e,t,n=[],s=arguments.length,i=0;i<s;i++){if(e="","object"==typeof arguments[i]){for(t in e+="\n["+i+"] ",arguments[0])c(arguments[0],t)&&(e+=t+": "+arguments[0][t]+", ");e=e.slice(0,-2)}else e=arguments[i];n.push(e)}B(r+"\nArguments: "+Array.prototype.slice.call(n).join("")+"\n"+(new Error).stack),o=!1}return a.apply(this,arguments)},a)}var J={};function Q(e,t){null!=f.deprecationHandler&&f.deprecationHandler(e,t),J[e]||(B(t),J[e]=!0)}function d(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function X(e,t){var n,s=E({},e);for(n in t)c(t,n)&&(F(e[n])&&F(t[n])?(s[n]={},E(s[n],e[n]),E(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)c(e,n)&&!c(t,n)&&F(e[n])&&(s[n]=E({},s[n]));return s}function K(e){null!=e&&this.set(e)}f.suppressDeprecationWarnings=!1,f.deprecationHandler=null;var ee=Object.keys||function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};function r(e,t,n){var s=""+Math.abs(e);return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}var te=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ne=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,se={},ie={};function s(e,t,n,s){var i="string"==typeof s?function(){return this[s]()}:s;e&&(ie[e]=i),t&&(ie[t[0]]=function(){return r(i.apply(this,arguments),t[1],t[2])}),n&&(ie[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function re(e,t){return e.isValid()?(t=ae(t,e.localeData()),se[t]=se[t]||function(s){for(var e,i=s.match(te),t=0,r=i.length;t<r;t++)ie[i[t]]?i[t]=ie[i[t]]:i[t]=(e=i[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var t="",n=0;n<r;n++)t+=d(i[n])?i[n].call(e,s):i[n];return t}}(t),se[t](e)):e.localeData().invalidDate()}function ae(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(ne.lastIndex=0;0<=n&&ne.test(e);)e=e.replace(ne,s),ne.lastIndex=0,--n;return e}var oe={};function t(e,t){var n=e.toLowerCase();oe[n]=oe[n+"s"]=oe[t]=e}function _(e){return"string"==typeof e?oe[e]||oe[e.toLowerCase()]:void 0}function ue(e){var t,n,s={};for(n in e)c(e,n)&&(t=_(n))&&(s[t]=e[n]);return s}var le={};function n(e,t){le[e]=t}function he(e){return e%4==0&&e%100!=0||e%400==0}function y(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var e=+e,t=0;return t=0!=e&&isFinite(e)?y(e):t}function de(t,n){return function(e){return null!=e?(fe(this,t,e),f.updateOffset(this,n),this):ce(this,t)}}function ce(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function fe(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&he(e.year())&&1===e.month()&&29===e.date()?(n=g(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),We(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var i=/\d/,w=/\d\d/,me=/\d{3}/,_e=/\d{4}/,ye=/[+-]?\d{6}/,p=/\d\d?/,ge=/\d\d\d\d?/,we=/\d\d\d\d\d\d?/,pe=/\d{1,3}/,ke=/\d{1,4}/,ve=/[+-]?\d{1,6}/,Me=/\d+/,De=/[+-]?\d+/,Se=/Z|[+-]\d\d:?\d\d/gi,Ye=/Z|[+-]\d\d(?::?\d\d)?/gi,k=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function v(e,n,s){be[e]=d(n)?n:function(e,t){return e&&s?s:n}}function Oe(e,t){return c(be,e)?be[e](t._strict,t._locale):new RegExp(M(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function M(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var be={},xe={};function D(e,n){var t,s,i=n;for("string"==typeof e&&(e=[e]),u(n)&&(i=function(e,t){t[n]=g(e)}),s=e.length,t=0;t<s;t++)xe[e[t]]=i}function Te(e,i){D(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var S,Y=0,O=1,b=2,x=3,T=4,N=5,Ne=6,Pe=7,Re=8;function We(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=(t%(n=12)+n)%n;return e+=(t-n)/12,1==n?he(e)?29:28:31-n%7%2}S=Array.prototype.indexOf||function(e){for(var t=0;t<this.length;++t)if(this[t]===e)return t;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),t("month","M"),n("month",8),v("M",p),v("MM",p,w),v("MMM",function(e,t){return t.monthsShortRegex(e)}),v("MMMM",function(e,t){return t.monthsRegex(e)}),D(["M","MM"],function(e,t){t[O]=g(e)-1}),D(["MMM","MMMM"],function(e,t,n,s){s=n._locale.monthsParse(e,s,n._strict);null!=s?t[O]=s:m(n).invalidMonth=e});var Ce="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ue="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),He=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Fe=k,Le=k;function Ve(e,t){var n;if(e.isValid()){if("string"==typeof t)if(/^\d+$/.test(t))t=g(t);else if(!u(t=e.localeData().monthsParse(t)))return;n=Math.min(e.date(),We(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n)}}function Ge(e){return null!=e?(Ve(this,e),f.updateOffset(this,!0),this):ce(this,"Month")}function Ee(){function e(e,t){return t.length-e.length}for(var t,n=[],s=[],i=[],r=0;r<12;r++)t=l([2e3,r]),n.push(this.monthsShort(t,"")),s.push(this.months(t,"")),i.push(this.months(t,"")),i.push(this.monthsShort(t,""));for(n.sort(e),s.sort(e),i.sort(e),r=0;r<12;r++)n[r]=M(n[r]),s[r]=M(s[r]);for(r=0;r<24;r++)i[r]=M(i[r]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")}function Ae(e){return he(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?r(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),t("year","y"),n("year",1),v("Y",De),v("YY",p,w),v("YYYY",ke,_e),v("YYYYY",ve,ye),v("YYYYYY",ve,ye),D(["YYYYY","YYYYYY"],Y),D("YYYY",function(e,t){t[Y]=2===e.length?f.parseTwoDigitYear(e):g(e)}),D("YY",function(e,t){t[Y]=f.parseTwoDigitYear(e)}),D("Y",function(e,t){t[Y]=parseInt(e,10)}),f.parseTwoDigitYear=function(e){return g(e)+(68<g(e)?1900:2e3)};var Ie=de("FullYear",!0);function je(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}function Ze(e){var t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,t)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function ze(e,t,n){n=7+t-n;return n-(7+Ze(e,0,n).getUTCDay()-t)%7-1}function $e(e,t,n,s,i){var r,t=1+7*(t-1)+(7+n-s)%7+ze(e,s,i),n=t<=0?Ae(r=e-1)+t:t>Ae(e)?(r=e+1,t-Ae(e)):(r=e,t);return{year:r,dayOfYear:n}}function qe(e,t,n){var s,i,r=ze(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+P(i=e.year()-1,t,n):r>P(e.year(),t,n)?(s=r-P(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function P(e,t,n){var s=ze(e,t,n),t=ze(e+1,t,n);return(Ae(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),v("w",p),v("ww",p,w),v("W",p),v("WW",p,w),Te(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=g(e)});function Be(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),v("d",p),v("e",p),v("E",p),v("dd",function(e,t){return t.weekdaysMinRegex(e)}),v("ddd",function(e,t){return t.weekdaysShortRegex(e)}),v("dddd",function(e,t){return t.weekdaysRegex(e)}),Te(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:m(n).invalidWeekday=e}),Te(["d","e","E"],function(e,t,n,s){t[s]=g(e)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Qe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=k,et=k,tt=k;function nt(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=M(this.weekdaysMin(s,"")),n=M(this.weekdaysShort(s,"")),s=M(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function st(){return this.hours()%12||12}function it(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function rt(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,st),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),it("a",!0),it("A",!1),t("hour","h"),n("hour",13),v("a",rt),v("A",rt),v("H",p),v("h",p),v("k",p),v("HH",p,w),v("hh",p,w),v("kk",p,w),v("hmm",ge),v("hmmss",we),v("Hmm",ge),v("Hmmss",we),D(["H","HH"],x),D(["k","kk"],function(e,t,n){e=g(e);t[x]=24===e?0:e}),D(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),D(["h","hh"],function(e,t,n){t[x]=g(e),m(n).bigHour=!0}),D("hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s)),m(n).bigHour=!0}),D("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i)),m(n).bigHour=!0}),D("Hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s))}),D("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i))});k=de("Hours",!0);var at,ot={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:Ue,week:{dow:0,doy:6},weekdays:Je,weekdaysMin:Xe,weekdaysShort:Qe,meridiemParse:/[ap]\.?m?\.?/i},R={},ut={};function lt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=lt(e[r]).split("-")).length,n=(n=lt(e[r+1]))?n.split("-"):null;0<t;){if(s=dt(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s<n;s+=1)if(e[s]!==t[s])return s;return n}(i,n)>=t-1)break;t--}r++}return at}function dt(t){var e;if(void 0===R[t]&&"undefined"!=typeof module&&module&&module.exports&&null!=t.match("^[^/\\\\]*$"))try{e=at._abbr,require("./locale/"+t),ct(e)}catch(e){R[t]=null}return R[t]}function ct(e,t){return e&&((t=o(t)?mt(e):ft(e,t))?at=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),at._abbr}function ft(e,t){if(null===t)return delete R[e],null;var n,s=ot;if(t.abbr=e,null!=R[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=R[e]._config;else if(null!=t.parentLocale)if(null!=R[t.parentLocale])s=R[t.parentLocale]._config;else{if(null==(n=dt(t.parentLocale)))return ut[t.parentLocale]||(ut[t.parentLocale]=[]),ut[t.parentLocale].push({name:e,config:t}),null;s=n._config}return R[e]=new K(X(s,t)),ut[e]&&ut[e].forEach(function(e){ft(e.name,e.config)}),ct(e),R[e]}function mt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return at;if(!a(e)){if(t=dt(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===m(e).overflow&&(t=t[O]<0||11<t[O]?O:t[b]<1||t[b]>We(t[Y],t[O])?b:t[x]<0||24<t[x]||24===t[x]&&(0!==t[T]||0!==t[N]||0!==t[Ne])?x:t[T]<0||59<t[T]?T:t[N]<0||59<t[N]?N:t[Ne]<0||999<t[Ne]?Ne:-1,m(e)._overflowDayOfYear&&(t<Y||b<t)&&(t=b),m(e)._overflowWeeks&&-1===t&&(t=Pe),m(e)._overflowWeekday&&-1===t&&(t=Re),m(e).overflow=t),e}var yt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,gt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wt=/Z|[+-]\d\d(?::?\d\d)?/,pt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],kt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],vt=/^\/?Date\((-?\d+)/i,Mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Dt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function St(e){var t,n,s,i,r,a,o=e._i,u=yt.exec(o)||gt.exec(o),o=pt.length,l=kt.length;if(u){for(m(e).iso=!0,t=0,n=o;t<n;t++)if(pt[t][1].exec(u[1])){i=pt[t][0],s=!1!==pt[t][2];break}if(null==i)e._isValid=!1;else{if(u[3]){for(t=0,n=l;t<n;t++)if(kt[t][1].exec(u[3])){r=(u[2]||" ")+kt[t][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(u[4]){if(!wt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Tt(e)}else e._isValid=!1}}else e._isValid=!1}function Yt(e,t,n,s,i,r){e=[function(e){e=parseInt(e,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(e),Ue.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&e.push(parseInt(r,10)),e}function Ot(e){var t,n,s,i,r=Mt.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));r?(t=Yt(r[4],r[3],r[2],r[5],r[6],r[7]),n=r[1],s=t,i=e,n&&Qe.indexOf(n)!==new Date(s[0],s[1],s[2]).getDay()?(m(i).weekdayMismatch=!0,i._isValid=!1):(e._a=t,e._tzm=(n=r[8],s=r[9],i=r[10],n?Dt[n]:s?0:60*(((n=parseInt(i,10))-(s=n%100))/100)+s),e._d=Ze.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),m(e).rfc2822=!0)):e._isValid=!1}function bt(e,t,n){return null!=e?e:null!=t?t:n}function xt(e){var t,n,s,i,r,a,o,u,l,h,d,c=[];if(!e._d){for(s=e,i=new Date(f.now()),n=s._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[b]&&null==e._a[O]&&(null!=(i=(s=e)._w).GG||null!=i.W||null!=i.E?(u=1,l=4,r=bt(i.GG,s._a[Y],qe(W(),1,4).year),a=bt(i.W,1),((o=bt(i.E,1))<1||7<o)&&(h=!0)):(u=s._locale._week.dow,l=s._locale._week.doy,d=qe(W(),u,l),r=bt(i.gg,s._a[Y],d.year),a=bt(i.w,d.week),null!=i.d?((o=i.d)<0||6<o)&&(h=!0):null!=i.e?(o=i.e+u,(i.e<0||6<i.e)&&(h=!0)):o=u),a<1||a>P(r,u,l)?m(s)._overflowWeeks=!0:null!=h?m(s)._overflowWeekday=!0:(d=$e(r,a,o,u,l),s._a[Y]=d.year,s._dayOfYear=d.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[Y],n[Y]),(e._dayOfYear>Ae(i)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=!0),h=Ze(i,0,e._dayOfYear),e._a[O]=h.getUTCMonth(),e._a[b]=h.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[x]&&0===e._a[T]&&0===e._a[N]&&0===e._a[Ne]&&(e._nextDay=!0,e._a[x]=0),e._d=(e._useUTC?Ze:je).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[x]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(m(e).weekdayMismatch=!0)}}function Tt(e){if(e._f===f.ISO_8601)St(e);else if(e._f===f.RFC_2822)Ot(e);else{e._a=[],m(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],h=l.length,d=0;d<h;d++)n=l[d],(t=(a.match(Oe(n,e))||[])[0])&&(0<(s=a.substr(0,a.indexOf(t))).length&&m(e).unusedInput.push(s),a=a.slice(a.indexOf(t)+t.length),u+=t.length),ie[n]?(t?m(e).empty=!1:m(e).unusedTokens.push(n),s=n,r=e,null!=(i=t)&&c(xe,s)&&xe[s](i,r._a,r,s)):e._strict&&!t&&m(e).unusedTokens.push(n);m(e).charsLeftOver=o-u,0<a.length&&m(e).unusedInput.push(a),e._a[x]<=12&&!0===m(e).bigHour&&0<e._a[x]&&(m(e).bigHour=void 0),m(e).parsedDateParts=e._a.slice(0),m(e).meridiem=e._meridiem,e._a[x]=function(e,t,n){if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((e=e.isPM(n))&&t<12&&(t+=12),t=e||12!==t?t:0):t}(e._locale,e._a[x],e._meridiem),null!==(o=m(e).era)&&(e._a[Y]=e._locale.erasConvertYear(o,e._a[Y])),xt(e),_t(e)}}function Nt(e){var t,n,s,i=e._i,r=e._f;if(e._locale=e._locale||mt(e._l),null===i||void 0===r&&""===i)return I({nullInput:!0});if("string"==typeof i&&(e._i=i=e._locale.preparse(i)),h(i))return new q(_t(i));if(V(i))e._d=i;else if(a(r))!function(e){var t,n,s,i,r,a,o=!1,u=e._f.length;if(0===u)return m(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<u;i++)r=0,a=!1,t=$({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Tt(t),A(t)&&(a=!0),r=(r+=m(t).charsLeftOver)+10*m(t).unusedTokens.length,m(t).score=r,o?r<s&&(s=r,n=t):(null==s||r<s||a)&&(s=r,n=t,a&&(o=!0));E(e,n||t)}(e);else if(r)Tt(e);else if(o(r=(i=e)._i))i._d=new Date(f.now());else V(r)?i._d=new Date(r.valueOf()):"string"==typeof r?(n=i,null!==(t=vt.exec(n._i))?n._d=new Date(+t[1]):(St(n),!1===n._isValid&&(delete n._isValid,Ot(n),!1===n._isValid&&(delete n._isValid,n._strict?n._isValid=!1:f.createFromInputFallback(n))))):a(r)?(i._a=G(r.slice(0),function(e){return parseInt(e,10)}),xt(i)):F(r)?(t=i)._d||(s=void 0===(n=ue(t._i)).day?n.date:n.day,t._a=G([n.year,n.month,s,n.hour,n.minute,n.second,n.millisecond],function(e){return e&&parseInt(e,10)}),xt(t)):u(r)?i._d=new Date(r):f.createFromInputFallback(i);return A(e)||(e._d=null),e}function Pt(e,t,n,s,i){var r={};return!0!==t&&!1!==t||(s=t,t=void 0),!0!==n&&!1!==n||(s=n,n=void 0),(F(e)&&L(e)||a(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=i,r._l=n,r._i=e,r._f=t,r._strict=s,(i=new q(_t(Nt(i=r))))._nextDay&&(i.add(1,"d"),i._nextDay=void 0),i}function W(e,t,n,s){return Pt(e,t,n,s,!1)}f.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),f.ISO_8601=function(){},f.RFC_2822=function(){};ge=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=W.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:I()}),we=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=W.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:I()});function Rt(e,t){var n,s;if(!(t=1===t.length&&a(t[0])?t[0]:t).length)return W();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ct(e){var e=ue(e),t=e.year||0,n=e.quarter||0,s=e.month||0,i=e.week||e.isoWeek||0,r=e.day||0,a=e.hour||0,o=e.minute||0,u=e.second||0,l=e.millisecond||0;this._isValid=function(e){var t,n,s=!1,i=Wt.length;for(t in e)if(c(e,t)&&(-1===S.call(Wt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Wt[n]]){if(s)return!1;parseFloat(e[Wt[n]])!==g(e[Wt[n]])&&(s=!0)}return!0}(e),this._milliseconds=+l+1e3*u+6e4*o+1e3*a*60*60,this._days=+r+7*i,this._months=+s+3*n+12*t,this._data={},this._locale=mt(),this._bubble()}function Ut(e){return e instanceof Ct}function Ht(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){s(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+r(~~(e/60),2)+n+r(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),v("Z",Ye),v("ZZ",Ye),D(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Vt(Ye,e)});var Lt=/([\+\-]|\d\d)/gi;function Vt(e,t){var t=(t||"").match(e);return null===t?null:0===(t=60*(e=((t[t.length-1]||[])+"").match(Lt)||["-",0,0])[1]+g(e[2]))?0:"+"===e[0]?t:-t}function Gt(e,t){var n;return t._isUTC?(t=t.clone(),n=(h(e)||V(e)?e:W(e)).valueOf()-t.valueOf(),t._d.setTime(t._d.valueOf()+n),f.updateOffset(t,!1),t):W(e).local()}function Et(e){return-Math.round(e._d.getTimezoneOffset())}function At(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}f.updateOffset=function(){};var It=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,jt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function C(e,t){var n,s=e,i=null;return Ut(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:u(e)||!isNaN(+e)?(s={},t?s[t]=+e:s.milliseconds=+e):(i=It.exec(e))?(n="-"===i[1]?-1:1,s={y:0,d:g(i[b])*n,h:g(i[x])*n,m:g(i[T])*n,s:g(i[N])*n,ms:g(Ht(1e3*i[Ne]))*n}):(i=jt.exec(e))?(n="-"===i[1]?-1:1,s={y:Zt(i[2],n),M:Zt(i[3],n),w:Zt(i[4],n),d:Zt(i[5],n),h:Zt(i[6],n),m:Zt(i[7],n),s:Zt(i[8],n)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(t=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(W(s.from),W(s.to)),(s={}).ms=t.milliseconds,s.M=t.months),i=new Ct(s),Ut(e)&&c(e,"_locale")&&(i._locale=e._locale),Ut(e)&&c(e,"_isValid")&&(i._isValid=e._isValid),i}function Zt(e,t){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function $t(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(Q(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),qt(this,C(e,t),s),this}}function qt(e,t,n,s){var i=t._milliseconds,r=Ht(t._days),t=Ht(t._months);e.isValid()&&(s=null==s||s,t&&Ve(e,ce(e,"Month")+t*n),r&&fe(e,"Date",ce(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&f.updateOffset(e,r||t))}C.fn=Ct.prototype,C.invalid=function(){return C(NaN)};Ce=$t(1,"add"),Je=$t(-1,"subtract");function Bt(e){return"string"==typeof e||e instanceof String}function Jt(e){return h(e)||V(e)||Bt(e)||u(e)||function(t){var e=a(t),n=!1;e&&(n=0===t.filter(function(e){return!u(e)&&Bt(t)}).length);return e&&n}(e)||function(e){var t,n,s=F(e)&&!L(e),i=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a=r.length;for(t=0;t<a;t+=1)n=r[t],i=i||c(e,n);return s&&i}(e)||null==e}function Qt(e,t){if(e.date()<t.date())return-Qt(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months"),t=t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(1+n,"months")-s);return-(n+t)||0}function Xt(e){return void 0===e?this._locale._abbr:(null!=(e=mt(e))&&(this._locale=e),this)}f.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",f.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";Xe=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}var en=126227808e5;function tn(e,t){return(e%t+t)%t}function nn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-en:new Date(e,t,n).valueOf()}function sn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-en:Date.UTC(e,t,n)}function rn(e,t){return t.erasAbbrRegex(e)}function an(){for(var e=[],t=[],n=[],s=[],i=this.eras(),r=0,a=i.length;r<a;++r)t.push(M(i[r].name)),e.push(M(i[r].abbr)),n.push(M(i[r].narrow)),s.push(M(i[r].name)),s.push(M(i[r].abbr)),s.push(M(i[r].narrow));this._erasRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+t.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+e.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+n.join("|")+")","i")}function on(e,t){s(0,[e,e.length],0,t)}function un(e,t,n,s,i){var r;return null==e?qe(this,s,i).year:(r=P(e,s,i),function(e,t,n,s,i){e=$e(e,t,n,s,i),t=Ze(e.year,0,e.dayOfYear);return this.year(t.getUTCFullYear()),this.month(t.getUTCMonth()),this.date(t.getUTCDate()),this}.call(this,e,t=r<t?r:t,n,s,i))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),v("N",rn),v("NN",rn),v("NNN",rn),v("NNNN",function(e,t){return t.erasNameRegex(e)}),v("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),D(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){s=n._locale.erasParse(e,s,n._strict);s?m(n).era=s:m(n).invalidEra=e}),v("y",Me),v("yy",Me),v("yyy",Me),v("yyyy",Me),v("yo",function(e,t){return t._eraYearOrdinalRegex||Me}),D(["y","yy","yyy","yyyy"],Y),D(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Y]=n._locale.eraYearOrdinalParse(e,i):t[Y]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),on("gggg","weekYear"),on("ggggg","weekYear"),on("GGGG","isoWeekYear"),on("GGGGG","isoWeekYear"),t("weekYear","gg"),t("isoWeekYear","GG"),n("weekYear",1),n("isoWeekYear",1),v("G",De),v("g",De),v("GG",p,w),v("gg",p,w),v("GGGG",ke,_e),v("gggg",ke,_e),v("GGGGG",ve,ye),v("ggggg",ve,ye),Te(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=g(e)}),Te(["gg","GG"],function(e,t,n,s){t[s]=f.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),t("quarter","Q"),n("quarter",7),v("Q",i),D("Q",function(e,t){t[O]=3*(g(e)-1)}),s("D",["DD",2],"Do","date"),t("date","D"),n("date",9),v("D",p),v("DD",p,w),v("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),D(["D","DD"],b),D("Do",function(e,t){t[b]=g(e.match(p)[0])});ke=de("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),t("dayOfYear","DDD"),n("dayOfYear",4),v("DDD",pe),v("DDDD",me),D(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),s("m",["mm",2],0,"minute"),t("minute","m"),n("minute",14),v("m",p),v("mm",p,w),D(["m","mm"],T);var ln,_e=de("Minutes",!1),ve=(s("s",["ss",2],0,"second"),t("second","s"),n("second",15),v("s",p),v("ss",p,w),D(["s","ss"],N),de("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),t("millisecond","ms"),n("millisecond",16),v("S",pe,i),v("SS",pe,w),v("SSS",pe,me),ln="SSSS";ln.length<=9;ln+="S")v(ln,Me);function hn(e,t){t[Ne]=g(1e3*("0."+e))}for(ln="S";ln.length<=9;ln+="S")D(ln,hn);ye=de("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");i=q.prototype;function dn(e){return e}i.add=Ce,i.calendar=function(e,t){1===arguments.length&&(arguments[0]?Jt(arguments[0])?(e=arguments[0],t=void 0):function(e){for(var t=F(e)&&!L(e),n=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i=0;i<s.length;i+=1)n=n||c(e,s[i]);return t&&n}(arguments[0])&&(t=arguments[0],e=void 0):t=e=void 0);var e=e||W(),n=Gt(e,this).startOf("day"),n=f.calendarFormat(this,n)||"sameElse",t=t&&(d(t[n])?t[n].call(this,e):t[n]);return this.format(t||this.localeData().calendar(n,this,W(e)))},i.clone=function(){return new q(this)},i.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=_(t)){case"year":r=Qt(this,s)/12;break;case"month":r=Qt(this,s);break;case"quarter":r=Qt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:y(r)},i.endOf=function(e){var t,n;if(void 0===(e=_(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?sn:nn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-tn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-tn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-tn(t,1e3)-1;break}return this._d.setTime(t),f.updateOffset(this,!0),this},i.format=function(e){return e=e||(this.isUtc()?f.defaultFormatUtc:f.defaultFormat),e=re(this,e),this.localeData().postformat(e)},i.from=function(e,t){return this.isValid()&&(h(e)&&e.isValid()||W(e).isValid())?C({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},i.fromNow=function(e){return this.from(W(),e)},i.to=function(e,t){return this.isValid()&&(h(e)&&e.isValid()||W(e).isValid())?C({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},i.toNow=function(e){return this.to(W(),e)},i.get=function(e){return d(this[e=_(e)])?this[e]():this},i.invalidAt=function(){return m(this).overflow},i.isAfter=function(e,t){return e=h(e)?e:W(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=_(t)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(t).valueOf())},i.isBefore=function(e,t){return e=h(e)?e:W(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=_(t)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(t).valueOf()<e.valueOf())},i.isBetween=function(e,t,n,s){return e=h(e)?e:W(e),t=h(t)?t:W(t),!!(this.isValid()&&e.isValid()&&t.isValid())&&(("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n)))},i.isSame=function(e,t){var e=h(e)?e:W(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(t=_(t)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(t).valueOf()<=e&&e<=this.clone().endOf(t).valueOf()))},i.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},i.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},i.isValid=function(){return A(this)},i.lang=Xe,i.locale=Xt,i.localeData=Kt,i.max=we,i.min=ge,i.parsingFlags=function(){return E({},m(this))},i.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t,n=[];for(t in e)c(e,t)&&n.push({unit:t,priority:le[t]});return n.sort(function(e,t){return e.priority-t.priority}),n}(e=ue(e)),s=n.length,i=0;i<s;i++)this[n[i].unit](e[n[i].unit]);else if(d(this[e=_(e)]))return this[e](t);return this},i.startOf=function(e){var t,n;if(void 0===(e=_(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?sn:nn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=tn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=tn(t,6e4);break;case"second":t=this._d.valueOf(),t-=tn(t,1e3);break}return this._d.setTime(t),f.updateOffset(this,!0),this},i.subtract=Je,i.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},i.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},i.toDate=function(){return new Date(this.valueOf())},i.toISOString=function(e){if(!this.isValid())return null;var t=(e=!0!==e)?this.clone().utc():this;return t.year()<0||9999<t.year()?re(t,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):d(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",re(t,"Z")):re(t,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},i.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t="moment",n="";return this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",n="Z"),t="["+t+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(t+e+"-MM-DD[T]HH:mm:ss.SSS"+(n+'[")]'))},"undefined"!=typeof Symbol&&null!=Symbol.for&&(i[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},i.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},i.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].name;if(t[n].until<=e&&e<=t[n].since)return t[n].name}return""},i.eraNarrow=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].narrow;if(t[n].until<=e&&e<=t[n].since)return t[n].narrow}return""},i.eraAbbr=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].abbr;if(t[n].until<=e&&e<=t[n].since)return t[n].abbr}return""},i.eraYear=function(){for(var e,t,n=this.localeData().eras(),s=0,i=n.length;s<i;++s)if(e=n[s].since<=n[s].until?1:-1,t=this.clone().startOf("day").valueOf(),n[s].since<=t&&t<=n[s].until||n[s].until<=t&&t<=n[s].since)return(this.year()-f(n[s].since).year())*e+n[s].offset;return this.year()},i.year=Ie,i.isLeapYear=function(){return he(this.year())},i.weekYear=function(e){return un.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},i.isoWeekYear=function(e){return un.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},i.quarter=i.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},i.month=Ge,i.daysInMonth=function(){return We(this.year(),this.month())},i.week=i.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},i.isoWeek=i.isoWeeks=function(e){var t=qe(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},i.weeksInYear=function(){var e=this.localeData()._week;return P(this.year(),e.dow,e.doy)},i.weeksInWeekYear=function(){var e=this.localeData()._week;return P(this.weekYear(),e.dow,e.doy)},i.isoWeeksInYear=function(){return P(this.year(),1,4)},i.isoWeeksInISOWeekYear=function(){return P(this.isoWeekYear(),1,4)},i.date=ke,i.day=i.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},i.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},i.isoWeekday=function(e){return this.isValid()?null!=e?(t=e,n=this.localeData(),n="string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t,this.day(this.day()%7?n:n-7)):this.day()||7:null!=e?this:NaN;var t,n},i.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},i.hour=i.hours=k,i.minute=i.minutes=_e,i.second=i.seconds=ve,i.millisecond=i.milliseconds=ye,i.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Et(this);if("string"==typeof e){if(null===(e=Vt(Ye,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Et(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?qt(this,C(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,f.updateOffset(this,!0),this._changeInProgress=null)),this},i.utc=function(e){return this.utcOffset(0,e)},i.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Et(this),"m")),this},i.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Vt(Se,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},i.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?W(e).utcOffset():0,(this.utcOffset()-e)%60==0)},i.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},i.isLocal=function(){return!!this.isValid()&&!this._isUTC},i.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},i.isUtc=At,i.isUTC=At,i.zoneAbbr=function(){return this._isUTC?"UTC":""},i.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},i.dates=e("dates accessor is deprecated. Use date instead.",ke),i.months=e("months accessor is deprecated. Use month instead",Ge),i.years=e("years accessor is deprecated. Use year instead",Ie),i.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),i.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,t={};return $(t,this),(t=Nt(t))._a?(e=(t._isUTC?l:W)(t._a),this._isDSTShifted=this.isValid()&&0<function(e,t,n){for(var s=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),r=0,a=0;a<s;a++)(n&&e[a]!==t[a]||!n&&g(e[a])!==g(t[a]))&&r++;return r+i}(t._a,e.toArray())):this._isDSTShifted=!1,this._isDSTShifted});w=K.prototype;function cn(e,t,n,s){var i=mt(),s=l().set(s,t);return i[n](s,e)}function fn(e,t,n){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");for(var s=[],i=0;i<12;i++)s[i]=cn(e,i,n,"month");return s}function mn(e,t,n,s){t=("boolean"==typeof e?u(t)&&(n=t,t=void 0):(t=e,e=!1,u(n=t)&&(n=t,t=void 0)),t||"");var i,r=mt(),a=e?r._week.dow:0,o=[];if(null!=n)return cn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}w.calendar=function(e,t,n){return d(e=this._calendar[e]||this._calendar.sameElse)?e.call(t,n):e},w.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(te).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},w.invalidDate=function(){return this._invalidDate},w.ordinal=function(e){return this._ordinal.replace("%d",e)},w.preparse=dn,w.postformat=dn,w.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return d(i)?i(e,t,n,s):i.replace(/%d/i,e)},w.pastFuture=function(e,t){return d(e=this._relativeTime[0<e?"future":"past"])?e(t):e.replace(/%s/i,t)},w.set=function(e){var t,n;for(n in e)c(e,n)&&(d(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},w.eras=function(e,t){for(var n,s=this._eras||mt("en")._eras,i=0,r=s.length;i<r;++i){switch(typeof s[i].since){case"string":n=f(s[i].since).startOf("day"),s[i].since=n.valueOf();break}switch(typeof s[i].until){case"undefined":s[i].until=1/0;break;case"string":n=f(s[i].until).startOf("day").valueOf(),s[i].until=n.valueOf();break}}return s},w.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s];break}else if(0<=[r,a,o].indexOf(e))return u[s]},w.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?f(e.since).year():f(e.since).year()+(t-e.offset)*n},w.erasAbbrRegex=function(e){return c(this,"_erasAbbrRegex")||an.call(this),e?this._erasAbbrRegex:this._erasRegex},w.erasNameRegex=function(e){return c(this,"_erasNameRegex")||an.call(this),e?this._erasNameRegex:this._erasRegex},w.erasNarrowRegex=function(e){return c(this,"_erasNarrowRegex")||an.call(this),e?this._erasNarrowRegex:this._erasRegex},w.months=function(e,t){return e?(a(this._months)?this._months:this._months[(this._months.isFormat||He).test(t)?"format":"standalone"])[e.month()]:a(this._months)?this._months:this._months.standalone},w.monthsShort=function(e,t){return e?(a(this._monthsShort)?this._monthsShort:this._monthsShort[He.test(t)?"format":"standalone"])[e.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},w.monthsParse=function(e,t,n){var s,i;if(this._monthsParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=S.call(this._shortMonthsParse,e))?i:null:-1!==(i=S.call(this._longMonthsParse,e))?i:null:"MMM"===t?-1!==(i=S.call(this._shortMonthsParse,e))||-1!==(i=S.call(this._longMonthsParse,e))?i:null:-1!==(i=S.call(this._longMonthsParse,e))||-1!==(i=S.call(this._shortMonthsParse,e))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(i="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},w.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},w.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Fe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},w.week=function(e){return qe(e,this._week.dow,this._week.doy).week},w.firstDayOfYear=function(){return this._week.doy},w.firstDayOfWeek=function(){return this._week.dow},w.weekdays=function(e,t){return t=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"],!0===e?Be(t,this._week.dow):e?t[e.day()]:t},w.weekdaysMin=function(e){return!0===e?Be(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},w.weekdaysShort=function(e){return!0===e?Be(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},w.weekdaysParse=function(e,t,n){var s,i;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=S.call(this._weekdaysParse,e))?i:null:"ddd"===t?-1!==(i=S.call(this._shortWeekdaysParse,e))?i:null:-1!==(i=S.call(this._minWeekdaysParse,e))?i:null:"dddd"===t?-1!==(i=S.call(this._weekdaysParse,e))||-1!==(i=S.call(this._shortWeekdaysParse,e))||-1!==(i=S.call(this._minWeekdaysParse,e))?i:null:"ddd"===t?-1!==(i=S.call(this._shortWeekdaysParse,e))||-1!==(i=S.call(this._weekdaysParse,e))||-1!==(i=S.call(this._minWeekdaysParse,e))?i:null:-1!==(i=S.call(this._minWeekdaysParse,e))||-1!==(i=S.call(this._weekdaysParse,e))||-1!==(i=S.call(this._shortWeekdaysParse,e))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},w.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},w.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=et),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},w.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||nt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=tt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},w.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},w.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ct("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===g(e%100/10)?"th":1==t?"st":2==t?"nd":3==t?"rd":"th")}}),f.lang=e("moment.lang is deprecated. Use moment.locale instead.",ct),f.langData=e("moment.langData is deprecated. Use moment.localeData instead.",mt);var _n=Math.abs;function yn(e,t,n,s){t=C(t,n);return e._milliseconds+=s*t._milliseconds,e._days+=s*t._days,e._months+=s*t._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function wn(e){return 4800*e/146097}function pn(e){return 146097*e/4800}function kn(e){return function(){return this.as(e)}}pe=kn("ms"),me=kn("s"),Ce=kn("m"),we=kn("h"),ge=kn("d"),Je=kn("w"),k=kn("M"),_e=kn("Q"),ve=kn("y");function vn(e){return function(){return this.isValid()?this._data[e]:NaN}}var ye=vn("milliseconds"),ke=vn("seconds"),Ie=vn("minutes"),w=vn("hours"),Mn=vn("days"),Dn=vn("months"),Sn=vn("years");var Yn=Math.round,On={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function bn(e,t,n,s){var i=C(e).abs(),r=Yn(i.as("s")),a=Yn(i.as("m")),o=Yn(i.as("h")),u=Yn(i.as("d")),l=Yn(i.as("M")),h=Yn(i.as("w")),i=Yn(i.as("y")),r=(r<=n.ss?["s",r]:r<n.s&&["ss",r])||a<=1&&["m"]||a<n.m&&["mm",a]||o<=1&&["h"]||o<n.h&&["hh",o]||u<=1&&["d"]||u<n.d&&["dd",u];return(r=(r=null!=n.w?r||h<=1&&["w"]||h<n.w&&["ww",h]:r)||l<=1&&["M"]||l<n.M&&["MM",l]||i<=1&&["y"]||["yy",i])[2]=t,r[3]=0<+e,r[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,r)}var xn=Math.abs;function Tn(e){return(0<e)-(e<0)||+e}function Nn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o=xn(this._milliseconds)/1e3,u=xn(this._days),l=xn(this._months),h=this.asSeconds();return h?(e=y(o/60),t=y(e/60),o%=60,e%=60,n=y(l/12),l%=12,s=o?o.toFixed(3).replace(/\.?0+$/,""):"",i=Tn(this._months)!==Tn(h)?"-":"",r=Tn(this._days)!==Tn(h)?"-":"",a=Tn(this._milliseconds)!==Tn(h)?"-":"",(h<0?"-":"")+"P"+(n?i+n+"Y":"")+(l?i+l+"M":"")+(u?r+u+"D":"")+(t||e||o?"T":"")+(t?a+t+"H":"")+(e?a+e+"M":"")+(o?a+s+"S":"")):"P0D"}var U=Ct.prototype;return U.isValid=function(){return this._isValid},U.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},U.add=function(e,t){return yn(this,e,t,1)},U.subtract=function(e,t){return yn(this,e,t,-1)},U.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=_(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+wn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(pn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},U.asMilliseconds=pe,U.asSeconds=me,U.asMinutes=Ce,U.asHours=we,U.asDays=ge,U.asWeeks=Je,U.asMonths=k,U.asQuarters=_e,U.asYears=ve,U.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},U._bubble=function(){var e=this._milliseconds,t=this._days,n=this._months,s=this._data;return 0<=e&&0<=t&&0<=n||e<=0&&t<=0&&n<=0||(e+=864e5*gn(pn(n)+t),n=t=0),s.milliseconds=e%1e3,e=y(e/1e3),s.seconds=e%60,e=y(e/60),s.minutes=e%60,e=y(e/60),s.hours=e%24,t+=y(e/24),n+=e=y(wn(t)),t-=gn(pn(e)),e=y(n/12),n%=12,s.days=t,s.months=n,s.years=e,this},U.clone=function(){return C(this)},U.get=function(e){return e=_(e),this.isValid()?this[e+"s"]():NaN},U.milliseconds=ye,U.seconds=ke,U.minutes=Ie,U.hours=w,U.days=Mn,U.weeks=function(){return y(this.days()/7)},U.months=Dn,U.years=Sn,U.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,s=On;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof t&&(s=Object.assign({},On,t),null!=t.s&&null==t.ss&&(s.ss=t.s-1)),e=this.localeData(),t=bn(this,!n,s,e),n&&(t=e.pastFuture(+this,t)),e.postformat(t)},U.toISOString=Nn,U.toString=Nn,U.toJSON=Nn,U.locale=Xt,U.localeData=Kt,U.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Nn),U.lang=Xe,s("X",0,0,"unix"),s("x",0,0,"valueOf"),v("x",De),v("X",/[+-]?\d+(\.\d{1,3})?/),D("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),D("x",function(e,t,n){n._d=new Date(g(e))}),f.version="2.29.4",H=W,f.fn=i,f.min=function(){return Rt("isBefore",[].slice.call(arguments,0))},f.max=function(){return Rt("isAfter",[].slice.call(arguments,0))},f.now=function(){return Date.now?Date.now():+new Date},f.utc=l,f.unix=function(e){return W(1e3*e)},f.months=function(e,t){return fn(e,t,"months")},f.isDate=V,f.locale=ct,f.invalid=I,f.duration=C,f.isMoment=h,f.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},f.parseZone=function(){return W.apply(null,arguments).parseZone()},f.localeData=mt,f.isDuration=Ut,f.monthsShort=function(e,t){return fn(e,t,"monthsShort")},f.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},f.defineLocale=ft,f.updateLocale=function(e,t){var n,s;return null!=t?(s=ot,null!=R[e]&&null!=R[e].parentLocale?R[e].set(X(R[e]._config,t)):(t=X(s=null!=(n=dt(e))?n._config:s,t),null==n&&(t.abbr=e),(s=new K(t)).parentLocale=R[e],R[e]=s),ct(e)):null!=R[e]&&(null!=R[e].parentLocale?(R[e]=R[e].parentLocale,e===ct()&&ct(e)):null!=R[e]&&delete R[e]),R[e]},f.locales=function(){return ee(R)},f.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},f.normalizeUnits=_,f.relativeTimeRounding=function(e){return void 0===e?Yn:"function"==typeof e&&(Yn=e,!0)},f.relativeTimeThreshold=function(e,t){return void 0!==On[e]&&(void 0===t?On[e]:(On[e]=t,"s"===e&&(On.ss=t-1),!0))},f.calendarFormat=function(e,t){return(e=e.diff(t,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},f.prototype=i,f.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},f});
2-//# sourceMappingURL=moment.min.js.map
2 \ No newline at end of file
public/lib/moment.min.js.map+0 -1
@@ -1 +0,0 @@
1-{"version":3,"file":"moment.min.js","sources":["../moment.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","i","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","some","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","argLen","slice","join","Error","stack","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","keys","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","s","tokens","addParseToken","tokenLen","addWeekParseToken","_w","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","x","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","d","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","dayOfYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","j","next","loadLocale","arr1","arr2","minl","commonPrefix","oldLocale","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","configFromRFC2822","parsedArray","weekdayStr","parsedInput","getDay","obsOffset","militaryOffset","numOffset","hm","setUTCMinutes","getUTCMinutes","defaults","c","configFromArray","currentDate","weekYear","weekdayOverflow","curWeek","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","GG","W","E","createLocal","_week","gg","temp","_dayOfYear","yearToUse","_nextDay","expectedWeekday","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","skipped","hour","meridiemHour","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","dayOrDate","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","minute","second","millisecond","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","orderLen","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","parseIso","diffRes","base","isBefore","positiveMomentsDifference","momentsDifference","ret","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","property","objectTest","propertyTest","properties","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","adjust","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","prioritizedLen","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","isLocal","prefix","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS"],"mappings":"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"}
1 \ No newline at end of file
public/locales/ar-sa.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "الحد الأقصى لطول الاستجابة (الرموز,الحرف)",
5757 "Multiple swipes per generation": "الضربات الشديدة المتعددة لكل جيل",
5858 "Enable OpenAI completion streaming": "تمكين بث الاكتمال من OpenAI",
59- "Enable Cohere web-search connector": "تمكين موصل بحث الويب Cohere",
60- "Web-search": "البحث في الويب",
61- "Allow the model to use the web-search connector.": "اسمح للنموذج باستخدام موصل بحث الويب.",
6259 "Frequency Penalty": "عقوبة التكرار",
6360 "Presence Penalty": "عقوبة الوجود",
6461 "Count Penalty": "عد ضربة جزاء",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "مثال: 127.0.0.1:5001",
341338 "Authorize": "تفويض",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "احصل على رمز واجهة برمجة التطبيقات الخاص بك لموزع الاتصالات باستخدام تدفق OAuth. سيتم توجيهك إلى openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "واجهة برمجة التطبيقات القديمة (قبل OAI، بدون بث)",
344340 "Bypass status check": "تجاوز فحص الحالة",
345341 "Chat Completion Source": "مصدر استكمال الدردشة",
346342 "Reverse Proxy": "الوكيل العكسي",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "عرض النماذج الخارجية (المقدمة من قبل واجهة برمجة التطبيقات)",
371367 "Get your key from": "احصل على مفتاحك من",
372368 "Anthropic's developer console": "وحدة تحكم المطور في Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "لا تعمل ملفات تعريف الارتباط Slack و Poe هنا، لا داعي للمحاولة.",
374369 "Claude Model": "نموذج Claude",
375370 "Window AI Model": "نموذج Window AI",
376371 "Model Order": "فرز نموذج OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "ضع نماذج OpenAI في مجموعة واحدة، والنماذج الإنسانية في مجموعة أخرى، وما إلى ذلك. ويمكن دمجها مع الفرز.",
382377 "Allow fallback routes": "السماح بمسارات الاحتياط",
383378 "Allow fallback routes Description": "يختار النموذج البديل تلقائيًا إذا كان النموذج المحدد غير قادر على تلبية طلبك.",
384- "openrouter_force_instruct": "هذا الخيار قديم وسيتم إزالته في المستقبل. لاستخدام تنسيق التعليمات، يرجى التبديل إلى OpenRouter ضمن Text Completion API بدلاً من ذلك.",
385- "LEGACY": "إرث",
386- "Force Instruct Mode formatting": "فرض تنسيق وضع التعليمات",
387- "Force_Instruct_Mode_formatting_Description": "إذا تم تمكين وضع التعليمات وهذا، فسيتم تنسيق المطالبة بواسطة SillyTavern باستخدام التيار\n إعدادات التنسيق المتقدمة (باستثناء توجيه موجه النظام). إذا تم تعطيله، فسيتم تنسيق المطالبة بواسطة OpenRouter.",
388379 "Scale API Key": "مفتاح API لـ Scale",
389380 "Clear your cookie": "امسح ملف تعريف الارتباط الخاص بك",
390381 "Alt Method": "طريقة بديلة",
public/locales/de-de.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Maximale Antwortlänge (Tokens)",
5757 "Multiple swipes per generation": "Mehrere Swipes pro Generation",
5858 "Enable OpenAI completion streaming": "OpenAI-Vervollständigungsstreaming aktivieren",
59- "Enable Cohere web-search connector": "Cohere-Websuch-Connector aktivieren",
60- "Web-search": "Web-Suche",
61- "Allow the model to use the web-search connector.": "Erlauben Sie dem Modell, den Websuch-Connector zu verwenden.",
6259 "Frequency Penalty": "Frequenzstrafe",
6360 "Presence Penalty": "Präsenzstrafe",
6461 "Count Penalty": "Strafe zählen",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Beispiel: 127.0.0.1:5001",
341338 "Authorize": "Autorisieren",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Hole dein OpenRouter-API-Token mit OAuth-Fluss. Du wirst zu openrouter.ai weitergeleitet",
343- "Legacy API (pre-OAI, no streaming)": "Legacy-API (vor OAI, kein Streaming)",
344340 "Bypass status check": "Umgehe Statusüberprüfung",
345341 "Chat Completion Source": "Quelle für Chat-Vervollständigung",
346342 "Reverse Proxy": "Reverse-Proxy",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Externe Modelle anzeigen (bereitgestellt von API)",
371367 "Get your key from": "Hol dir deinen Schlüssel von",
372368 "Anthropic's developer console": "Anthropics Entwicklerkonsole",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Slack- und Poe-Cookies funktionieren hier nicht, versuch es erst gar nicht.",
374369 "Claude Model": "Claude-Modell",
375370 "Window AI Model": "Fenster AI-Modell",
376371 "Model Order": "Sortierung des OpenRouter-Modells",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Platzieren Sie OpenAI-Modelle in einer Gruppe, anthropogene Modelle in einer anderen Gruppe usw. Kann mit Sortierung kombiniert werden.",
382377 "Allow fallback routes": "Fallback-Routen zulassen",
383378 "Allow fallback routes Description": "Das alternative Modell wird automatisch ausgewählt, wenn das ausgewählte Modell Ihre Anfrage nicht erfüllen kann.",
384- "openrouter_force_instruct": "Diese Option ist veraltet und wird in Zukunft entfernt. Um die Formatierung mit Anweisungen zu verwenden, wechseln Sie stattdessen zu OpenRouter unter Text Completion API.",
385- "LEGACY": "VERMÄCHTNIS",
386- "Force Instruct Mode formatting": "Formatierung im Force Instruct Mode",
387- "Force_Instruct_Mode_formatting_Description": "Wenn sowohl der Anweisungsmodus als auch dieser aktiviert sind, wird die Eingabeaufforderung von SillyTavern mit den aktuellen erweiterten Formatierungseinstellungen formatiert (außer „Anweisungssystem-Eingabeaufforderung“). Wenn deaktiviert, wird die Eingabeaufforderung von OpenRouter formatiert.",
388379 "Scale API Key": "Scale API-Schlüssel",
389380 "Clear your cookie": "Löschen Sie Ihre Cookies",
390381 "Alt Method": "Alternative Methode",
public/locales/es-es.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Longitud máxima de respuesta (tokens)",
5757 "Multiple swipes per generation": "Múltiples golpes por generación",
5858 "Enable OpenAI completion streaming": "Activar streaming de completado de OpenAI",
59- "Enable Cohere web-search connector": "Habilitar el conector de búsqueda web de Cohere",
60- "Web-search": "Búsqueda Web",
61- "Allow the model to use the web-search connector.": "Permita que el modelo utilice el conector de búsqueda web.",
6259 "Frequency Penalty": "Penalización de frecuencia",
6360 "Presence Penalty": "Penalización de presencia",
6461 "Count Penalty": "Penalización de conteo",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Ejemplo: 127.0.0.1:5001",
341338 "Authorize": "Autorizar",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenga su token de API de OpenRouter utilizando el flujo OAuth. Será redirigido a openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "API heredada (pre-OAI, sin streaming)",
344340 "Bypass status check": "Saltar la verificación del estado",
345341 "Chat Completion Source": "Fuente de Completado de Chat",
346342 "Reverse Proxy": "Proxy inverso",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Mostrar modelos externos (provistos por la API)",
371367 "Get your key from": "Obtén tu clave desde",
372368 "Anthropic's developer console": "la consola de desarrolladores de Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Las cookies de Slack y Poe no funcionarán aquí, no te molestes en intentarlo.",
374369 "Claude Model": "Modelo de Claude",
375370 "Window AI Model": "Modelo de Window AI",
376371 "Model Order": "Clasificación de modelos de OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Coloque los modelos OpenAI en un grupo, los modelos antrópicos en otro grupo, etc. Se puede combinar con la clasificación.",
382377 "Allow fallback routes": "Permitir rutas de respaldo",
383378 "Allow fallback routes Description": "El modelo alternativo se elige automáticamente si el modelo seleccionado no puede cumplir con tu solicitud.",
384- "openrouter_force_instruct": "Esta opción está desactualizada y se eliminará en el futuro. Para utilizar el formato de instrucciones, cambie a OpenRouter en API de finalización de texto.",
385- "LEGACY": "LEGADO",
386- "Force Instruct Mode formatting": "Forzar formato en modo de instrucción",
387- "Force_Instruct_Mode_formatting_Description": "Si tanto el modo de instrucción como este están habilitados, SillyTavern formateará el mensaje usando el formato actual.\n configuraciones de formato avanzadas (excepto instrucciones del mensaje del sistema). Si está deshabilitado, OpenRouter formateará el mensaje.",
388379 "Scale API Key": "Clave API de Scale",
389380 "Clear your cookie": "Limpia tu cookie",
390381 "Alt Method": "Método alternativo",
public/locales/fr-fr.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Longueur maximale de la réponse (tokens)",
5757 "Multiple swipes per generation": "Plusieurs balayages par génération",
5858 "Enable OpenAI completion streaming": "Activer le streaming de complétion OpenAI",
59- "Enable Cohere web-search connector": "Activer le connecteur de recherche Web Cohere",
60- "Web-search": "Recherche Internet",
61- "Allow the model to use the web-search connector.": "Autorisez le modèle à utiliser le connecteur de recherche Web.",
6259 "Frequency Penalty": "Pénalité de fréquence",
6360 "Presence Penalty": "Pénalité de présence",
6461 "Count Penalty": "Pénalité de décompte",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Exemple : 127.0.0.1:5001",
341338 "Authorize": "Autoriser",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenez votre jeton API OpenRouter en utilisant le flux OAuth. Vous serez redirigé vers openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "API héritée (pré-OAI, pas de streaming)",
344340 "Bypass status check": "Contourner la vérification de l'état",
345341 "Chat Completion Source": "Source de complétion de la conversation",
346342 "Reverse Proxy": "Proxy inverse",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Afficher les modèles externes (fournis par l'API)",
371367 "Get your key from": "Obtenez votre clé à partir de",
372368 "Anthropic's developer console": "Console de développement d'Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Les cookies Slack et Poe ne fonctionneront pas ici, ne vous embêtez pas à essayer.",
374369 "Claude Model": "Modèle Claude",
375370 "Window AI Model": "Modèle Window AI",
376371 "Model Order": "Tri des modèles OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Placez les modèles OpenAI dans un groupe, les modèles Anthropic dans un autre groupe, etc. Peut être combiné avec le tri.",
382377 "Allow fallback routes": "Autoriser les itinéraires de secours",
383378 "Allow fallback routes Description": "Le modèle alternatif est automatiquement sélectionné si le modèle choisi ne peut pas répondre à votre demande.",
384- "openrouter_force_instruct": "Cette option est obsolète et sera supprimée à l'avenir. Pour utiliser le formatage des instructions, veuillez plutôt passer à OpenRouter sous API de saisie semi-automatique de texte.",
385- "LEGACY": "HÉRITAGE",
386- "Force Instruct Mode formatting": "Forcer le formatage du mode instruction",
387- "Force_Instruct_Mode_formatting_Description": "Si le mode Instruct et celui-ci sont activés, l'invite sera formatée par SillyTavern en utilisant le mode actuel.\n paramètres de formatage avancés (à l'exception de l'invite système). Si elle est désactivée, l'invite sera formatée par OpenRouter.",
388379 "Scale API Key": "Clé API Scale",
389380 "Clear your cookie": "Effacer vos cookies",
390381 "Alt Method": "Méthode alternative",
public/locales/is-is.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Hámarks lengd svörunar (í táknum)",
5757 "Multiple swipes per generation": "Mörg högg á hverja kynslóð",
5858 "Enable OpenAI completion streaming": "Virkja OpenAI klárastreymi",
59- "Enable Cohere web-search connector": "Virkja Cohere vefleitartengi",
60- "Web-search": "Vefleit",
61- "Allow the model to use the web-search connector.": "Leyfðu líkaninu að nota vefleitartengið.",
6259 "Frequency Penalty": "Tíðnarefning",
6360 "Presence Penalty": "Tilkoma refning",
6461 "Count Penalty": "Telja víti",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Dæmi: 127.0.0.1:5001",
341338 "Authorize": "Heimild",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Fáðu API lykilinn þinn fyrir OpenRouter með því að nota OAuth strauminn. Þú verður endurvísað(ð/ur) á openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "Eldri API (fyrir OAI, engin flæði)",
344340 "Bypass status check": "Hlaupa framhjá stöðutík",
345341 "Chat Completion Source": "Heimild að fullvirkni spjalls",
346342 "Reverse Proxy": "Reverse proxy",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Sýna ytri módel (veitt af API)",
371367 "Get your key from": "Fáðu lykla þína frá",
372368 "Anthropic's developer console": "Uppbyggingaraðilar Forritara stjórnborð",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Slack og Poe kökur virka ekki hér, ekki reyna það.",
374369 "Claude Model": "Claude módel",
375370 "Window AI Model": "Vindauga AI módel",
376371 "Model Order": "OpenRouter líkanaflokkun",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Setjið OpenAI módel í einn hóp, Anthropic módel í annan hóp osfrv. Hægt að sameina við flokkun.",
382377 "Allow fallback routes": "Leyfa bakfallssvæði",
383378 "Allow fallback routes Description": "Veldur hlutleysa vélbúnaðarinn við val þinn ef valið módel getur ekki uppfyllt beiðni þína.",
384- "openrouter_force_instruct": "Þessi valkostur er úreltur og verður fjarlægður í framtíðinni. Til að nota leiðbeiningarsnið skaltu skipta yfir í OpenRouter undir Text Completion API í staðinn.",
385- "LEGACY": "ARFIÐ",
386- "Force Instruct Mode formatting": "Force Instruct Mode formatting",
387- "Force_Instruct_Mode_formatting_Description": "Ef bæði leiðbeiningarhamur og þessi eru virkjuð, verður kvaðningurinn sniðinn af SillyTavern með því að nota núverandi\n háþróaðar sniðstillingar (nema leiðbeiningar um System Prompt). Ef slökkt er á henni verður hvetjan sniðin af OpenRouter.",
388379 "Scale API Key": "Lykill API fyrir Scale",
389380 "Clear your cookie": "Hreinsaðu kökuna þína",
390381 "Alt Method": "Aðferð Bakmenn",
public/locales/it-it.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Lunghezza massima della risposta (token)",
5757 "Multiple swipes per generation": "Più passaggi per generazione",
5858 "Enable OpenAI completion streaming": "Abilita lo streaming di completamento OpenAI",
59- "Enable Cohere web-search connector": "Abilita il connettore di ricerca web Cohere",
60- "Web-search": "Ricerca sul web",
61- "Allow the model to use the web-search connector.": "Consenti al modello di utilizzare il connettore di ricerca web.",
6259 "Frequency Penalty": "Penalità di frequenza",
6360 "Presence Penalty": "Penalità di presenza",
6461 "Count Penalty": "Conte Penalità",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Esempio: 127.0.0.1:5001",
341338 "Authorize": "Autorizzare",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Ottieni il tuo token API di OpenRouter utilizzando il flusso OAuth. Sarai reindirizzato su openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "API legacy (prima di OAI, senza streaming)",
344340 "Bypass status check": "Ignora controllo stato",
345341 "Chat Completion Source": "Fonte di Completamento della Chat",
346342 "Reverse Proxy": "Proxy inverso",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Mostra modelli esterni (forniti dall'API)",
371367 "Get your key from": "Ottieni la tua chiave da",
372368 "Anthropic's developer console": "Console dello sviluppatore di Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "I cookie di Slack e Poe non funzioneranno qui, non provare nemmeno.",
374369 "Claude Model": "Modello Claude",
375370 "Window AI Model": "Modello AI di Window",
376371 "Model Order": "Ordinamento dei modelli OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Metti i modelli OpenAI in un gruppo, i modelli antropici in un altro gruppo, ecc. Può essere combinato con l'ordinamento.",
382377 "Allow fallback routes": "Consenti percorsi alternativi",
383378 "Allow fallback routes Description": "Il modello alternativo viene automaticamente scelto se il modello selezionato non può soddisfare la tua richiesta.",
384- "openrouter_force_instruct": "Questa opzione è obsoleta e verrà rimossa in futuro. Per usare la formattazione instruct, passa a OpenRouter in Text Completion API.",
385- "LEGACY": "EREDITÀ",
386- "Force Instruct Mode formatting": "Forza la formattazione della modalità istruzione",
387- "Force_Instruct_Mode_formatting_Description": "Se sia la modalità Instruct che questa sono abilitate, il prompt verrà formattato da SillyTavern utilizzando il file current\n impostazioni di formattazione avanzate (ad eccezione del prompt di sistema). Se disabilitato, il prompt verrà formattato da OpenRouter.",
388379 "Scale API Key": "Chiave API di Scale",
389380 "Clear your cookie": "Cancella il tuo cookie",
390381 "Alt Method": "Metodo alternativo",
public/locales/ja-jp.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "最大応答長(トークン数)",
5757 "Multiple swipes per generation": "世代ごとに複数のスワイプ",
5858 "Enable OpenAI completion streaming": "OpenAIの完了ストリーミングを有効にする",
59- "Enable Cohere web-search connector": "Cohereウェブ検索コネクタを有効にする",
60- "Web-search": "ウェブ検索",
61- "Allow the model to use the web-search connector.": "モデルが Web 検索コネクタを使用できるようにします。",
6259 "Frequency Penalty": "頻度ペナルティ",
6360 "Presence Penalty": "存在ペナルティ",
6461 "Count Penalty": "カウントペナルティ",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "例: 127.0.0.1:5001",
341338 "Authorize": "承認",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuthフローを使用してOpenRouter APIトークンを取得します。 openrouter.aiにリダイレクトされます",
343- "Legacy API (pre-OAI, no streaming)": "レガシーAPI(OAI以前のもの、ストリーミングなし)",
344340 "Bypass status check": "ステータスのチェックをバイパスする",
345341 "Chat Completion Source": "チャット補完ソース",
346342 "Reverse Proxy": "リバースプロキシ",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "外部モデルを表示(APIで提供される)",
371367 "Get your key from": "キーを取得する",
372368 "Anthropic's developer console": "Anthropicの開発者コンソール",
373- "Slack and Poe cookies will not work here, do not bother trying.": "SlackとPoeのクッキーはここでは機能しませんので、試すのはやめてください。",
374369 "Claude Model": "Claudeモデル",
375370 "Window AI Model": "Window AIモデル",
376371 "Model Order": "OpenRouter モデルのソート",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "OpenAI モデルを 1 つのグループに、Anthropic モデルを別のグループに配置するなどします。ソートと組み合わせることができます。",
382377 "Allow fallback routes": "フォールバックルートを許可",
383378 "Allow fallback routes Description": "選択したモデルが要求を満たせない場合、代替モデルが自動的に選択されます。",
384- "openrouter_force_instruct": "このオプションは古く、将来削除される予定です。指示されたフォーマットを使用するには、代わりにテキスト補完 API の OpenRouter に切り替えてください。",
385- "LEGACY": "遺産",
386- "Force Instruct Mode formatting": "強制指示モードのフォーマット",
387- "Force_Instruct_Mode_formatting_Description": "Instruct Mode とこれが両方とも有効になっている場合、プロンプトは SillyTavern によって現在の高度なフォーマット設定 (instruct System Prompt を除く) を使用してフォーマットされます。無効になっている場合、プロンプトは OpenRouter によってフォーマットされます。",
388379 "Scale API Key": "ScaleのAPIキー",
389380 "Clear your cookie": "クッキーを消去する",
390381 "Alt Method": "代替手法",
public/locales/ko-kr.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "최대 응답 길이 (토큰)",
5757 "Multiple swipes per generation": "세대당 다중 스와이프",
5858 "Enable OpenAI completion streaming": "OpenAI 완성 스트리밍 활성화",
59- "Enable Cohere web-search connector": "Cohere 웹 검색 커넥터 활성화",
60- "Web-search": "웹 서핑",
61- "Allow the model to use the web-search connector.": "모델이 웹 검색 커넥터를 사용하도록 허용합니다.",
6259 "Frequency Penalty": "빈도 패널티",
6360 "Presence Penalty": "존재 패널티",
6461 "Count Penalty": "카운트 페널티",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "예: 127.0.0.1:5001",
341338 "Authorize": "승인하다",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuth 플로우를 사용하여 OpenRouter API 토큰을 가져옵니다. openrouter.ai로 리디렉션됩니다.",
343- "Legacy API (pre-OAI, no streaming)": "레거시 API (OAI 이전, 스트리밍 없음)",
344340 "Bypass status check": "상태 확인 우회",
345341 "Chat Completion Source": "채팅 완성 소스",
346342 "Reverse Proxy": "역방향 프록시",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "외부 모델 표시 (API 제공)",
371367 "Get your key from": "다음에서 키를 받으세요",
372368 "Anthropic's developer console": "Anthropic의 개발자 콘솔",
373- "Slack and Poe cookies will not work here, do not bother trying.": "슬랙과 포 쿠키는 여기서 작동하지 않습니다. 시도하지 마세요.",
374369 "Claude Model": "Claude 모델",
375370 "Window AI Model": "창 AI 모델",
376371 "Model Order": "OpenRouter 모델 정렬",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "OpenAI 모델을 한 그룹에 넣고, Anthropic 모델을 다른 그룹에 두는 등 정렬을 통해 결합할 수 있습니다.",
382377 "Allow fallback routes": "대체 경로 허용",
383378 "Allow fallback routes Description": "선택한 모델이 요청을 처리할 수 없는 경우 대체 모델이 자동으로 선택됩니다.",
384- "openrouter_force_instruct": "이 옵션은 오래되었으며 향후 제거될 예정입니다. 지시 형식을 사용하려면 대신 Text Completion API에서 OpenRouter로 전환하세요.",
385- "LEGACY": "유산",
386- "Force Instruct Mode formatting": "강제 지시 모드 포맷",
387- "Force_Instruct_Mode_formatting_Description": "Instruct Mode와 이 모드가 모두 활성화된 경우 프롬프트는 SillyTavern에 의해 현재 형식을 사용하여 형식화됩니다.\n 고급 형식 설정(시스템 프롬프트 지시 제외) 비활성화된 경우 프롬프트는 OpenRouter에 의해 형식화됩니다.",
388379 "Scale API Key": "Scale API 키",
389380 "Clear your cookie": "쿠키 지우기",
390381 "Alt Method": "대체 방법",
public/locales/nl-nl.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Maximale lengte van het antwoord (tokens)",
5757 "Multiple swipes per generation": "Meerdere swipes per generatie",
5858 "Enable OpenAI completion streaming": "OpenAI voltooiingsstreaming inschakelen",
59- "Enable Cohere web-search connector": "Schakel de Cohere-webzoekconnector in",
60- "Web-search": "Web-zoeken",
61- "Allow the model to use the web-search connector.": "Sta toe dat het model de webzoekconnector gebruikt.",
6259 "Frequency Penalty": "Frequentieboete",
6360 "Presence Penalty": "Aanwezigheidsboete",
6461 "Count Penalty": "Tel straf",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Voorbeeld: 127.0.0.1:5001",
341338 "Authorize": "Toestemming geven",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Haal uw OpenRouter API-token op met behulp van OAuth-flow. U wordt doorgestuurd naar openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "Legacy API (vóór OAI, geen streaming)",
344340 "Bypass status check": "Omzeil statuscontrole",
345341 "Chat Completion Source": "Bron voor Chatvoltooiing",
346342 "Reverse Proxy": "Omgekeerde proxy",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Externe modellen weergeven (geleverd door API)",
371367 "Get your key from": "Haal je sleutel op bij",
372368 "Anthropic's developer console": "Anthropic's ontwikkelaarsconsole",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Slack- en Poe-cookies werken hier niet, probeer het niet eens.",
374369 "Claude Model": "Claude-model",
375370 "Window AI Model": "Window AI-model",
376371 "Model Order": "Sorteren van OpenRouter-modellen",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Plaats OpenAI-modellen in één groep, antropische modellen in een andere groep, enz. Kan worden gecombineerd met sorteren.",
382377 "Allow fallback routes": "Fallback-routes toestaan",
383378 "Allow fallback routes Description": "Het alternatieve model wordt automatisch gekozen als het geselecteerde model niet aan uw verzoek kan voldoen.",
384- "openrouter_force_instruct": "Deze optie is verouderd en zal in de toekomst worden verwijderd. Om instructie-opmaak te gebruiken, schakelt u in plaats daarvan over naar OpenRouter onder Text Completion API.",
385- "LEGACY": "NALATENSCHAP",
386- "Force Instruct Mode formatting": "Forceer de opmaak van de instructiemodus",
387- "Force_Instruct_Mode_formatting_Description": "Als zowel de Instruct-modus als deze zijn ingeschakeld, wordt de prompt door SillyTavern geformatteerd met behulp van de current\n geavanceerde opmaakinstellingen (behalve de opdracht Systeemprompt). Indien uitgeschakeld, wordt de prompt geformatteerd door OpenRouter.",
388379 "Scale API Key": "Scale API-sleutel",
389380 "Clear your cookie": "Wis uw cookie",
390381 "Alt Method": "Alternatieve methode",
public/locales/pt-pt.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Comprimento Máximo da Resposta (tokens)",
5757 "Multiple swipes per generation": "Vários furtos por geração",
5858 "Enable OpenAI completion streaming": "Ativar streaming de conclusão do OpenAI",
59- "Enable Cohere web-search connector": "Ativar o conector de pesquisa na Web Cohere",
60- "Web-search": "Pesquisa na internet",
61- "Allow the model to use the web-search connector.": "Permita que o modelo use o conector de pesquisa na Web.",
6259 "Frequency Penalty": "Pena de Frequência",
6360 "Presence Penalty": "Pena de Presença",
6461 "Count Penalty": "Contar penalidade",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Exemplo: 127.0.0.1:5001",
341338 "Authorize": "Autorizar",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenha seu token da API do OpenRouter usando o fluxo OAuth. Você será redirecionado para openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "API legada (pré-OAI, sem streaming)",
344340 "Bypass status check": "Ignorar verificação de status",
345341 "Chat Completion Source": "Fonte de conclusão de chat",
346342 "Reverse Proxy": "Proxy reverso",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Mostrar modelos externos (fornecidos pela API)",
371367 "Get your key from": "Obtenha sua chave de",
372368 "Anthropic's developer console": "console de desenvolvedor da Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Os cookies do Slack e do Poe não funcionarão aqui, não se preocupe em tentar.",
374369 "Claude Model": "Modelo Claude",
375370 "Window AI Model": "Modelo Window AI",
376371 "Model Order": "Classificação de modelo OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Coloque os modelos OpenAI em um grupo, os modelos antrópicos em outro grupo, etc.",
382377 "Allow fallback routes": "Permitir rotas de fallback",
383378 "Allow fallback routes Description": "O modelo alternativo será escolhido automaticamente se o modelo selecionado não puder atender à sua solicitação.",
384- "openrouter_force_instruct": "Esta opção está desatualizada e será removida no futuro. Para usar a formatação de instruções, mude para OpenRouter em Text Completion API.",
385- "LEGACY": "LEGADO",
386- "Force Instruct Mode formatting": "Forçar formatação do modo de instrução",
387- "Force_Instruct_Mode_formatting_Description": "Se o Modo Instruir e este estiverem habilitados, o prompt será formatado pelo SillyTavern usando o atual\n configurações avançadas de formatação (exceto instruir o prompt do sistema). Se desativado, o prompt será formatado pelo OpenRouter.",
388379 "Scale API Key": "Chave da API Scale",
389380 "Clear your cookie": "Limpe seu cookie",
390381 "Alt Method": "Método Alternativo",
public/locales/ru-ru.json+272 -27
@@ -56,7 +56,7 @@
5656 "Rep. Pen. Slope": "Rep. Pen. Slope",
5757 "Top K": "Top K",
5858 "Top P": "Top P",
5959 "Do Sample": "СделатьВключить образецсэмплинг",
6060 "Add BOS Token": "Добавлять BOS-токен",
6161 "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "Добавлять BOS-токен в начале промпта. Если выключить, ответы могут стать более креативными.",
6262 "Ban EOS Token": "Запретить EOS-токен",
@@ -105,8 +105,8 @@
105105 "API url": "URL-адрес API",
106106 "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Режим обёртки API OpenAI)",
107107 "Register a Horde account for faster queue times": "Заведите учетную запись Horde для ускорения генерации",
108108 "Adjust context size to worker capabilities": "УточнитьПодстраивать размер контекста в соответствии спод возможностямивозможности рабочих машин",
109109 "Adjust response length to worker capabilities": "УточнитьПодстраивать длиннудлину ответа в соответствии спод возможностямивозможности рабочих машин",
110110 "API key": "API-ключ",
111111 "Tabby API key": "Tabby API-ключ",
112112 "Get it here:": "Получить здесь:",
@@ -132,12 +132,11 @@
132132 "Novel AI Model": "Модель NovelAI",
133133 "Make sure you run it with": "Обязательно запускайте его с флагом",
134134 "flag": "",
135135 "API key (optional)": "Ключ API (опциональнонеобязательно)",
136136 "Server url": "URL-адрес сервера",
137137 "Custom model (optional)": "Пользовательская модель (опциональнонеобязательно)",
138138 "Bypass API status check": "Обход проверки статуса API",
139139 "Example: 127.0.0.1:5000": "Пример: http://127.0.0.1:5000",
140- "Legacy API (pre-OAI, no streaming)": "Устаревший API (до OAI, без стриминга)",
141140 "Bypass status check": "Обход проверки статуса",
142141 "Mancer API key": "Ключ от Mancer API",
143142 "to get your OpenAI API key.": "для получения ключа от API OpenAI",
@@ -145,7 +144,6 @@
145144 "OpenAI Model": "Модель OpenAI",
146145 "Get your key from": "Получите ключ в",
147146 "Anthropic's developer console": "консоли разработчика Anthropic",
148- "Slack and Poe cookies will not work here, do not bother trying.": "Cookie от Slack и Poe здесь не подойдут, можете их не пробовать.",
149147 "Claude Model": "Модель Claude",
150148 "Scale API Key": "Ключ от Scale API",
151149 "Alt Method": "Альтернативный метод",
@@ -173,7 +171,7 @@
173171 "Include Names": "Добавлять имена",
174172 "Force for Groups and Personas": "Также для групп и персон",
175173 "System Prompt": "Системный промпт",
176174 "Instruct Mode Sequences": "Строки для Instruct-режима",
177175 "Stop Sequence": "Стоп-строка",
178176 "Context Formatting": "Форматирование контекста",
179177 "(Saved to Context Template)": "(Сохраняется в шаблоне контекста)",
@@ -451,8 +449,8 @@
451449 "Creator's Notes": "Заметки создателя",
452450 "A-Z": "A-Z",
453451 "Z-A": "Z-A",
454452 "Newest": "НовейшиеСначала новые",
455453 "Oldest": "СтарейшиеСначала старые",
456454 "Favorites": "Избранные",
457455 "Recent": "Последние",
458456 "Most chats": "Больше всего чатов",
@@ -561,10 +559,10 @@
561559 "Example: [{{user}} is a 28-year-old Romanian cat girl.]": "Пример:\n [{{user}} is a 28-year-old Romanian cat girl.]",
562560 "Toggle grid view": "Переключить вид сетки",
563561 "Add to Favorites": "Добавить в Избранное",
564562 "Advanced Definition": "Расширенное определениеописание",
565563 "Character Lore": "Лор персонажа",
566564 "Export and Download": "Экспортировать и скачать",
567565 "Duplicate Character": "ДублироватьКлонировать персонажа",
568566 "Create Character": "Создать персонажа",
569567 "Delete Character": "Удалить персонажа",
570568 "View all tags": "Показать все тэги",
@@ -732,19 +730,17 @@
732730 "Context Size": "По размеру контекста",
733731 "Group by vendors": "Сгруппировать по владельцу",
734732 "Group by vendors Description": "Модели от OpenAI попадут в одну группу, от Anthropic - в другую, и т.д. Можно комбинировать с сортировкой.",
735- "LEGACY": "УСТАР.",
736- "Force Instruct Mode formatting": "Включить форматирование для Instruct-режима",
737733 "Allow Jailbreak": "Разрешить джейлбрейк",
738734 "System Prompt Wrapping": "Обрамление для системного промпта",
739735 "System Prompt Prefix": "Префикс системного промпта",
740736 "System Prompt Suffix": "Постфикс системного промпта",
741737 "Chat Messages Wrapping": "Обрамление для сообщений в чате",
742738 "User Message Prefix": "Префикс сообщения пользователя",
743739 "User Message Suffix": "Постфикс сообщения пользователя",
744740 "Assistant Message Prefix": "Префикс сообщения ассистента",
745741 "Assistant Message Suffix": "Постфикс сообщения ассистента",
746742 "System Message Prefix": "Префикс сообщения системы",
747743 "System Message Suffix": "Постфикс сообщения системы",
748744 "System same as User": "Для системы то же самое, что и для пользователя",
749745 "Misc. Sequences": "Прочие строки",
750746 "First Assistant Prefix": "Первый префикс ассистента",
@@ -774,7 +770,6 @@
774770 "Type a message, or /? for help": "Введите сообщение, или /? для получения справки",
775771 "Welcome to SillyTavern!": "Добро пожаловать в SillyTavern!",
776772 "Won't be shared with the character card on export.": "Не попадут в карточку персонажа при экспорте.",
777- "Web-search": "Веб-поиск",
778773 "Persona Name:": "Имя персоны:",
779774 "User first message": "Первое сообщение пользователя",
780775 "extension_token_counter": "Токенов:",
@@ -1202,8 +1197,6 @@
12021197 "Streaming_desc": "Выводить текст последовательно по мере его генерации.\rЕсли параметр выключен, ответы будут отображаться сразу целиком, и только после полного завершения генерации.",
12031198 "Max prompt cost:": "Max prompt cost:",
12041199 "TFS": "TFS",
1205- "Enable Cohere web-search connector": "Enable Cohere web-search connector",
1206- "Allow the model to use the web-search connector.": "Allow the model to use the web-search connector.",
12071200 "Count Penalty": "Count Penalty",
12081201 "Min P": "Min P",
12091202 "NSFW": "NSFW",
@@ -1270,8 +1263,6 @@
12701263 "vLLM Model": "Модель vLLM",
12711264 "Aphrodite Model": "Модель Aphrodite",
12721265 "Peek a password": "Посмотреть пароль",
1273- "openrouter_force_instruct": "This option is outdated and will be removed in the future. To use instruct formatting, please switch to OpenRouter under Text Completion API instead.",
1274- "Force_Instruct_Mode_formatting_Description": "If both Instruct Mode and this are enabled, the prompt will be formatted by SillyTavern using the current\n advanced formatting settings (except instruct System Prompt). If disabled, the prompt will be formatted by OpenRouter.",
12751266 "Clear your cookie": "Clear your cookie",
12761267 "Add Chat Start and Example Separator to a list of stopping strings.": "Использовать Начало чата и Разделитель примеров сообщений в качестве стоп-строк.",
12771268 "context_allow_jailbreak": "Если в карточке есть джейлбрейк И ПРИ ЭТОМ включена опция \"Приоритет джейлбрейку из карточки персонажа\", то этот джейлбрейк добавляется в конец промпта.\nНЕ РЕКОМЕНДУЕТСЯ ДЛЯ МОДЕЛЕЙ TEXT COMPLETION, МОЖЕТ ПОРТИТЬ ВЫХОДНОЙ ТЕКСТ.",
@@ -1694,7 +1685,7 @@
16941685 "Delete Message": "Удалить сообщение",
16951686 "Delete Swipe": "Удалить свайп",
16961687 "Could not get a reply from API. Check your connection settings / API key and try again.": "Не удалось получить ответ от API. Проверьте настройки соединения и API-ключ и повторите попытку.",
16971688 "Connecting To Proxy": "ПодключениеПодключиться к прокси",
16981689 "Are you sure you want to connect to the following proxy URL?": "Вы точно хотите соединиться с прокси по этому адресу?",
16991690 "API connection successful!": "Соединение с API установлено!",
17001691 "Proxy Saved": "Прокси сохранена",
@@ -1708,5 +1699,259 @@
17081699 "chat_rename_1": "Введите новое имя чата:",
17091700 "chat_rename_2": "!!Не используйте имя уже существующего файла, это приведёт к ошибке!!",
17101701 "chat_rename_3": "Будут разрушены связи между чатами-чекпоинтами.",
17111702 "chat_rename_4": "Расширение '.jsonl' дописывать не нужно.",
1703+ "If you're connected to an API, try asking me something!": "Есть соединение с API? Напишите мне что-нибудь!",
1704+ "Connection Profile": "Профиль соединения",
1705+ "View connection profile details": "Посмотреть параметры профиля соединения",
1706+ "Create a new connection profile": "Создать новый профиль соединения",
1707+ "Update a connection profile": "Обновить профиль соединения",
1708+ "Rename a connection profile": "Переименовать профиль соединения",
1709+ "Reload a connection profile": "Перезагрузить профиль соединения",
1710+ "Delete a connection profile": "Удалить профиль соединения",
1711+ "No profile selected": "Профиль не выбран",
1712+ "Creating a Connection Profile": "Создать профиль соединения",
1713+ "Settings Preset": "Пресет настроек",
1714+ "Model": "Модель",
1715+ "Proxy Preset": "Пресет для прокси",
1716+ "Enter a name:": "Введите название:",
1717+ "Are you sure you want to delete the selected profile?": "Вы точно хотите удалить выбранный профиль?",
1718+ "instruct_enabled": "Вкл/выкл Instruct-режим",
1719+ "Instruct Template": "Шаблон Instruct-режима",
1720+ "instruct_template_activation_regex_desc": "Автоматически активировать этот шаблон в момент подключения к API или выбора модели, если название модели соответствует этому рег. выражению.",
1721+ "instruct_bind_to_context": "При включении этой опции Шаблон контекста будет выбираться, исходя из выбранного в текущий момент Шаблона Instruct-режима, либо по вашему желанию.",
1722+ "Master Import": "Глоб. импорт",
1723+ "Import Advanced Formatting settings": "Импорт настроек Расширенного форматирования\nТакже принимает файлы старого формата с Шаблонами контекста и Шаблонами Instruct-режима.",
1724+ "Master Export": "Глоб. экспорт",
1725+ "Export Advanced Formatting settings": "Экспорт настроек Расширенного форматирования",
1726+ "Select your current System Prompt": "Выберите текущий системный промпт",
1727+ "Prompt Content": "Текст промпта",
1728+ "Update current prompt": "Сохранить промпт",
1729+ "Save prompt as": "Сохранить как...",
1730+ "Import template": "Импорт шаблона",
1731+ "Export template": "Экспорт шаблона",
1732+ "Restore current prompt": "Восстановить промпт",
1733+ "comma delimited,no spaces between": "через запятую,без пробелов в промежутках",
1734+ "User Message Sequences": "Строки для сообщений пользователя",
1735+ "Assistant Message Sequences": "Строки для сообщений ассистента",
1736+ "System Message Sequences": "Строки для сообщений системы",
1737+ "System Prompt Sequences": "Строки для системного промпта",
1738+ "sysprompt_enabled": "Вкл/выкл системный промпт",
1739+ "Are you sure you want to delete this alternate greeting?": "Вы точно хотите удалить этот вариант?",
1740+ "Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)": "Содержимое этого поля заменит стандартные Инструкции после истории, применяемые для этого персонажа. (v2 spec: post_history_instructions)",
1741+ "None (disabled)": "Нигде (откл.)",
1742+ "Markdown Hotkeys": "Горячие клавиши для разметки",
1743+ "markdown_hotkeys_desc": "Включить горячие клавиши для вставки символов разметки в некоторых полях ввода. См. '/help hotkeys'.",
1744+ "Save and Update": "Сохранить и обновить",
1745+ "Profile name:": "Название профиля:",
1746+ "API returned an error": "API вернуло ошибку",
1747+ "Failed to save preset": "Не удалось сохранить пресет",
1748+ "Preset name should be unique.": "Название пресета должно быть уникальным.",
1749+ "Invalid file": "Невалидный файл",
1750+ "No preset selected": "Пресет не выбран",
1751+ "Invalid logit bias preset file.": "Файл пресета невалиден.",
1752+ "Preset was not deleted from server": "Пресет не удалён с сервера",
1753+ "Preset deleted": "Пресет удалён",
1754+ "Delete the preset?": "Удалить пресет?",
1755+ "Preset updated": "Пресет сохранён",
1756+ "Entered reverse proxy address is not a valid URL": "Введённый адрес прокси невалиден",
1757+ "An error occurred while counting tokens: Token budget exceeded.": "Ошибка при подсчёте токенов: Превышен бюджет токенов",
1758+ "An error occurred while counting tokens: Invalid character name": "Ошибка при подсчёте токенов: Невалидное имя персонажа",
1759+ "Not enough free tokens for mandatory prompts. Raise your token Limit or disable custom prompts.": "Недостаточно токенов для всех выбранных промптов. Повысьте лимит токенов или отключите часть промптов.",
1760+ "The name of at least one character contained whitespaces or special characters. Please check your user and character name.": "В имени одного из персонажей содержится пробел или иной спецсимвол. Проверьте имена пользователя и персонажа.",
1761+ "An unknown error occurred while counting tokens. Further information may be available in console.": "Неизвестная ошибка при подсчёте токенов. Проверьте консоль, возможно, подробная информация есть там.",
1762+ "Encountered an error while processing your request.": "При обработке вашего запроса возникла ошибка.",
1763+ "Check you have credits available on your": "Убедитесь, что на вашем",
1764+ "OpenAI account quora_error": "аккаунте OpenAI",
1765+ "dot quota_error": "имеется достаточно кредитов.",
1766+ "If you have sufficient credits, please try again later.": "Если кредитов достаточно, то повторите попытку позднее.",
1767+ "Proxy preset '${0}' not found": "Пресет '${0}' не найден",
1768+ "Window.ai returned an error": "Window.ai вернул ошибку",
1769+ "Get it here:": "Загрузите здесь:",
1770+ "Extension is not installed": "Расширение не установлено",
1771+ "Update or remove your reverse proxy settings.": "Измените или удалите ваши настройки прокси.",
1772+ "An error occurred while importing prompts. More info available in console.": "В процессе импорта произошла ошибка. Подробную информацию см. в консоли.",
1773+ "Could not import prompts. Export failed validation.": "Не удалось импортировать промпты. Не пройдена валидация при экспорте.",
1774+ "Prompt import complete.": "Импорт завершён.",
1775+ "Are you sure you want to delete this prompt?": "Вы точно хотите удалить этот промпт?",
1776+ "Existing prompts with the same ID will be overridden. Do you want to proceed?": "Имеющиеся промпты с совпадающими идентификаторами будут перезаписаны. Продолжить?",
1777+ "This will reset the prompt order for this character. You will not lose any prompts.": "Будет сброшен порядок промптов для этого персонажа. Сами промпты вы не потеряете.",
1778+ "Note:": "Примечание:",
1779+ "this chat is temporary and will be deleted as soon as you leave it.": "это временный чат, он будет удалён, как только вы из него выйдете.",
1780+ "help_hotkeys_20": "Горячие клавиши для разметки",
1781+ "help_hotkeys_21": "Работают в окне ввода чата, а также в полях, отмеченных этим значком:",
1782+ "help_hotkeys_22": "**полужирный**",
1783+ "help_hotkeys_23": "*курсив*",
1784+ "help_hotkeys_24": "__подчёркивание__",
1785+ "help_hotkeys_25": "`inline-код`",
1786+ "help_hotkeys_26": "~~зачёркнутый~~",
1787+ "ext_regex_only_format_visual_desc": "Содержимое файла с историей чата останется нетронутым, изменения будут лишь визуальными (в UI).",
1788+ "Could not convert file": "Не удалось сконвертировать файл",
1789+ "Could not upload file": "Не удалось загрузить файл",
1790+ "Could not download file": "Не удалось скачать файл",
1791+ "File is too big. Maximum size is ${0}.": "Слишком большой файл. Максимальный размер: ${0}.",
1792+ "Binary files are not supported. Select a text file or image.": "Бинарные файлы не поддерживаются. Выберите текстовый файл или изображение.",
1793+ "No character or group selected": "Не выбрано ни одного персонажа или группы",
1794+ "Could not delete file": "Не удалось удалить файл",
1795+ "No attachments selected.": "Вложение не выбрано.",
1796+ "Data Bank": "Банк данных",
1797+ "No files were scraped.": "Скрапинг не выполнен.",
1798+ "Scraped ${0} files from ${1} to ${2}.": "Соскраплено из ${0} файлов из ${1} в ${2}.",
1799+ "Check browser console for details.": "Подробности см. в консоли браузера.",
1800+ "Scraping failed": "Ошибка скрапинга",
1801+ "External media has been blocked": "Внешние медиа отключены",
1802+ "Use the 'Ext. Media' button to allow it. Click on this message to dismiss.": "Разрешить можно с помощью кнопки 'Внешн. медиа'. Нажмите на это сообщение, чтобы его скрыть.",
1803+ "Couldn't get CSRF token. Please refresh the page.": "Не удалось получить CSRF токен. Попробуйте перезагрузить страницу.",
1804+ "Error": "Ошибка",
1805+ "API Error": "Ошибка API",
1806+ "Please wait until the chat is saved before switching characters.": "Пожалуйста, дождитесь сохранения чата, прежде чем переключать персонажа.",
1807+ "Your chat is still saving...": "Чат всё ещё сохраняется...",
1808+ "Character ${0} not found in the list": "Персонаж ${0} не найден в списке",
1809+ "Streaming is enabled, but the version of Kobold used does not support token streaming.": "Включён стриминг текста, но ваша версия Kobold не поддерживает стриминг токенов.",
1810+ "Verify that the server is running and accessible.": "Убедитесь, что сервер запущен и доступен по сети.",
1811+ "ST Server cannot be reached": "Не удалось соединиться с сервером ST",
1812+ "You must first select a character to duplicate!": "Вы не выбрали персонажа, которого хотите клонировать!",
1813+ "Character Duplicated": "Персонаж склонирован",
1814+ "No character name provided.": "Вы не ввели имя персонажа.",
1815+ "Rename Character": "Переименование",
1816+ "No character selected.": "Вы не выбрали персонажа.",
1817+ "New name:": "Новое имя:",
1818+ "Same character name provided, so name did not change.": "Введено то же самое имя, ничего не изменилось.",
1819+ "Character renamed and past chats updated!": "Персонаж переименован, а чаты обновлены!",
1820+ "Character renamed!": "Персонаж переименован!",
1821+ "Something went wrong. The page will be reloaded.": "Что-то пошло не так. Страница будет перезагружена.",
1822+ "Past chat could not be updated: ${0}": "Не удалось обновить чат ${0}",
1823+ "Trying to save group chat with regular saveChat function. Aborting to prevent corruption.": "Произошла попытка сохранения группового чата функцией saveChat. Откатываем изменения, чтобы предотвратить потерю данных.",
1824+ "Check the server connection and reload the page to prevent data loss.": "Проверьте связь с сервером и перезагрузите страницу, чтобы избежать потери данных.",
1825+ "Chat could not be saved": "Не удалось сохранить чат",
1826+ "Settings could not be loaded after multiple attempts. Please try again later.": "Не удалось загрузить настройки за несколько попыток. Попробуйте позднее.",
1827+ "Settings could not be saved": "Не удалось сохранить настройки",
1828+ "Could not load chat data. Try reloading the page.": "Не удалось загрузить чат. Попробуйте обновить страницу.",
1829+ "Invalid process (no 'type')": "Невалидный процесс (нет параметра 'type')",
1830+ "Character Deleted: ${0}": "Персонаж удалён: ${0}",
1831+ "Character Created: ${0}": "Персонаж создан: ${0}",
1832+ "Group Created": "Группа создана",
1833+ "Group Deleted": "Группа удалена",
1834+ "Character Imported: ${0}": "Персонаж импортирован: ${0}",
1835+ "Invalid swipe ID: ${0}": "Некорректный идентификатор свайпа: ${0}",
1836+ "No messages to delete swipes from.": "Сообщение, из которого требуется удалить свайп, не найдено.",
1837+ "Can't delete the last swipe.": "Невозможно удалить единственный свайп.",
1838+ "GUI Settings preset is not supported for Horde. Please select another preset.": "Для Horde не поддерживаются пресеты настроек GUI. Пожалуйста, выберите другой пресет.",
1839+ "Embedded lorebook will be removed from this character.": "Встроенный лорбук будет удалён из персонажа.",
1840+ "Name is required": "Введите имя",
1841+ "Cannot create characters while generating. Stop the request and try again.": "Во время генерации ответа создать персонажа невозможно. Остановите запрос и повторите попытку.",
1842+ "Creation aborted": "Процесс создания прерван",
1843+ "Failed to create character": "Не удалось создать персонажа",
1844+ "Something went wrong while saving the character, or the image file provided was in an invalid format. Double check that the image is not a webp.": "Что-то пошло не так в процессе сохранения персонажа, либо вы загрузили файл некорректного формата. Проверьте, что изображение точно не в формате webp.",
1845+ "Context template '${0}' not found": "Шаблон контекста '${0}' не найден",
1846+ "Instruct template '${0}' not found": "Шаблон Instruct-режима '${0}' не найден",
1847+ "Error: ${0} is not a valid API": "Ошибка: ${0} не является валидным API",
1848+ "API set to ${0}, trying to connect..": "Установлено API ${0}, пробуем подключиться...",
1849+ "Unsupported file type: ": "Неподдерживаемый тип файла: ",
1850+ "Cannot import characters while generating. Stop the request and try again.": "Во время генерации ответа импорт персонажа невозможен. Остановите запрос и повторите попытку.",
1851+ "Import aborted": "Процесс импорта прерван",
1852+ "The file is likely invalid or corrupted.": "Вероятно, файл невалиден или повреждён.",
1853+ "Could not import character": "Не удалось импортировать персонажа",
1854+ "Cannot run /impersonate command while the reply is being generated.": "Во время генерации ответа выполнить /impersonate невозможно.",
1855+ "Name must be provided as an argument to rename this chat.": "Для переименования чата необходимо предоставить новое имя в качестве аргумента.",
1856+ "No chat selected that can be renamed.": "Чат, который требуется переименовать, не найден.",
1857+ "Successfully renamed chat to: ${0}": "Чат успешно переименован в: ${0}",
1858+ "Character ${0} not found. Skipping deletion.": "Персонаж ${0} не найден. Удаление пропускается.",
1859+ "Failed to delete character": "При удалении персонажа произошло ошибка",
1860+ "Are you sure you want to duplicate this character?": "Вы точно хотите клонировать этого персонажа?",
1861+ "If you just want to start a new chat with the same character...": "Если вы хотите просто создать новый чат, воспользуйтесь кнопкой \"Начать новый чат\" в меню слева внизу.",
1862+ "THIS IS PERMANENT!": "ОТМЕНИТЬ БУДЕТ НЕВОЗМОЖНО!",
1863+ "Also delete the chat files": "Также удалить файлы чатов",
1864+ "Delete the character?": "Удалить персонажа?",
1865+ "Not a valid number": "Некорректное число",
1866+ "Author's Note depth updated": "Глубина заметок автора обновлена",
1867+ "Author's Note frequency updated": "Частота заметок автора обновлена",
1868+ "Not a valid position": "Некорректная позиция",
1869+ "Author's Note position updated": "Позиция заметок автора обновлена",
1870+ "Something went wrong. Could not save character's author's note.": "Что-то пошло не так. Не удалось сохранить заметки автора для этого персонажа.",
1871+ "Select a character before trying to use Author's Note": "Сначала необходимо выбрать персонажа",
1872+ "Author's Note text updated": "Текст заметок автора обновлён",
1873+ "Group Validation": "Валидация группы",
1874+ "Warning: Listed member ${0} does not exist as a character. It will be removed from the group.": "Предупреждение: персонаж ${0} не существует в виде карточки. Он будет удалён из группы.",
1875+ "Group Chat could not be saved": "Не удалось сохранить групповой чат",
1876+ "Deleted group member swiped. To get a reply, add them back to the group.": "Вы пытаетесь свайпнуть удалённого члена группы. Чтобы получить ответ, добавьте этого персонажа обратно в группу.",
1877+ "Currently no group selected.": "В данный момент не выбрано ни одной группы.",
1878+ "Not so fast! Wait for the characters to stop typing before deleting the group.": "Чуть помедленнее! Перед удалением группы дождитесь, пока персонаж закончит печатать.",
1879+ "Delete the group?": "Удалить группу?",
1880+ "This will also delete all your chats with that group. If you want to delete a single conversation, select a \"View past chats\" option in the lower left menu.": "Вместе с ней будут удалены и все её чаты. Если требуется удалить только один чат, воспользуйтесь кнопкой \"Все чаты\" в меню в левом нижнем углу.",
1881+ "Can't peek a character while group reply is being generated": "Невозможно открыть карточку персонажа во время генерации ответа",
1882+ "Threshold": "Порог",
1883+ "DRY Repetition Penalty": "DRY Штраф за повтор",
1884+ "Multiplier": "Множитель",
1885+ "DRY_Multiplier_desc": "Поставьте в положение > 0, чтобы включить DRY. Определяет величину штрафа для кратчайшей \"штрафуемой\" строки.",
1886+ "DRY_Repetition_Penalty_desc": "DRY налагает штраф на токены, генерация которых приведёт к появлению строки, которая уже была в тексте раньше. Установите множитель = 0, чтобы отключить.",
1887+ "Base": "Основание",
1888+ "DRY_Base_desc": "Определяет, насколько быстро возрастает штраф с увеличением длины строки.",
1889+ "Allowed Length": "Допустимая длина",
1890+ "DRY_Allowed_Length_desc": "Длина повторяющейся строки, при превышении которой DRY начинает налагать штраф.",
1891+ "Invalid data provided for master import": "Глоб. импорт не может быть выполнен по причине невалидности данных",
1892+ "Importing instruct template...": "Импортируем...",
1893+ "Instruct template detected": "Обнаружен шаблон Instruct-режима",
1894+ "Importing as context template...": "Импортируем...",
1895+ "Context template detected": "Обнаружен шаблон контекста",
1896+ "Importing as system prompt...": "Импортируем...",
1897+ "System prompt detected": "Обнаружен системный промпт",
1898+ "Importing as settings preset...": "Импортируем...",
1899+ "Text Completion settings detected": "Обнаружены настройки Text Completion",
1900+ "No valid sections found in imported data": "Не найдено ни одной валидной секции данных",
1901+ "No sections selected for import": "Не выбрано ни одной секции для импорта",
1902+ "Import": "Импортировать",
1903+ "Imported ${0} settings: ${1}": "Импортировано ${0} настроек: ${1}",
1904+ "Export": "Экспортировать",
1905+ "No sections selected for export": "Не выбрано ни одной секции для экспорта",
1906+ "Cannot update GUI preset": "Пресет для GUI обновить невозможно",
1907+ "Template updated": "Шаблон сохранён",
1908+ "Hint: Use a character/group name to bind preset to a specific chat.": "Совет: введите имя персонажа/группы, чтобы привязать пресет к определённому чату.",
1909+ "Preset name:": "Название пресета:",
1910+ "Template name:": "Название шаблона:",
1911+ "Preset saved": "Пресет сохранён",
1912+ "Template saved": "Шаблон сохранён",
1913+ "Preset could not be saved": "Не удалось сохранить пресет",
1914+ "Preset could not be renamed": "Не удалось обновить пресет",
1915+ "Preset renamed": "Пресет переименован",
1916+ "Template renamed": "Шаблон переименован",
1917+ "Cannot delete GUI preset": "Пресет для GUI удалить невозможно",
1918+ "Failed to restore default preset": "Не удалось восстановить пресет по умолчанию",
1919+ "Failed to restore default template": "Не удалось восстановить шаблон по умолчанию",
1920+ "Rename preset": "Переименовать пресет",
1921+ "Rename template": "Переименовать шаблон",
1922+ "Enter a new name:": "Введите новое название:",
1923+ "Preset imported": "Пресет импортирован",
1924+ "Template imported": "Шаблон импортирован",
1925+ "Delete this preset?": "Удалить этот пресет?",
1926+ "Delete this template?": "Удалить этот шаблон?",
1927+ "This action is irreversible and your current settings will be overwritten.": "Отменить это действие невозможно. Ваши текущие настройки будут перезаписаны.",
1928+ "Preset deleted": "Пресет удалён",
1929+ "Template deleted": "Шаблон удалён",
1930+ "Template was not deleted from server": "Шаблон не удалён с сервера",
1931+ "Cannot restore GUI preset": "Пресет для Gui восстановить нельзя",
1932+ "Default preset cannot be restored": "Невозможно восстановить пресет по умолчанию",
1933+ "Default template cannot be restored": "Невозможно восстановить шаблон по умолчанию",
1934+ "Resetting a <b>default preset</b> will restore the default settings": "Сброс <b>стандартного пресета</b> восстановит настройки по умолчанию.",
1935+ "Resetting a <b>default template</b> will restore the default settings.": "Сброс <b>стандартного шаблона</b> восстановит настройки по умолчанию.",
1936+ "Are you sure?": "Вы уверены?",
1937+ "Default preset restored": "Стандартный пресет восстановлен",
1938+ "Default template restored": "Стандартный шаблон восстановлен",
1939+ "Resetting a <b>custom preset</b> will restore to the last saved state.": "Сброс <b>пользовательского пресета</b> откатит его к последнему сохранённому состоянию.",
1940+ "Resetting a <b>custom template</b> will restore to the last saved state.": "Сброс <b>пользовательского шаблона</b> откатит его к последнему сохранённому состоянию.",
1941+ "Preset restored": "Пресет восстановлен",
1942+ "Template restored": "Шаблон восстановлен",
1943+ "Update current template": "Сохранить шаблон",
1944+ "Rename current template": "Переименовать шаблон",
1945+ "Save template as": "Сохранить как...",
1946+ "Restore current template": "Восстановить шаблон",
1947+ "Delete the template": "Удалить шаблон",
1948+ "Rename current prompt": "Переименовать промпт",
1949+ "Select your current Context Template": "Выберите активный шаблон контекста",
1950+ "Select your current Instruct Template": "Выберите активный шаблон Instruct-режима",
1951+ "and connect to an": "и подключитесь к",
1952+ "You can add more": "Можете добавить больше",
1953+ "from other websites": "с других сайтов.",
1954+ "Go to the": "Загляните в",
1955+ "to install additional features.": ", чтобы установить разные дополнительные ресурсы.",
1956+ "or_welcome": "; также доступен"
17121957}
public/locales/uk-ua.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Довжина відповіді (токени)",
5757 "Multiple swipes per generation": "Кілька свайпів за покоління",
5858 "Enable OpenAI completion streaming": "Увімкнути потокове завершення OpenAI",
59- "Enable Cohere web-search connector": "Увімкнути конектор веб-пошуку Cohere",
60- "Web-search": "Веб-пошук",
61- "Allow the model to use the web-search connector.": "Дозвольте моделі використовувати конектор веб-пошуку.",
6259 "Frequency Penalty": "Штраф за частоту",
6360 "Presence Penalty": "Штраф за наявність",
6461 "Count Penalty": "Рахувати пенальті",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Приклад: 127.0.0.1:5001",
341338 "Authorize": "Авторизувати",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Отримайте свій токен API OpenRouter за допомогою OAuth. Вас буде перенаправлено на openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "Застарілий API (до OAI, без потокової передачі)",
344340 "Bypass status check": "Обійти перевірку статусу",
345341 "Chat Completion Source": "Джерело Chat Completion",
346342 "Reverse Proxy": "Зворотний проксі",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Показати зовнішні моделі (надані API)",
371367 "Get your key from": "Отримайте свій ключ з",
372368 "Anthropic's developer console": "консолі розробника Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Файли cookie Slack та Poe тут не працюватимуть, не гайте час.",
374369 "Claude Model": "Модель Claude",
375370 "Window AI Model": "Модель Window AI",
376371 "Model Order": "Сортування моделі OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Помістіть моделі OpenAI в одну групу, моделі Anthropic в іншу групу тощо. Можна поєднати з сортуванням.",
382377 "Allow fallback routes": "Дозволити резервні маршрути",
383378 "Allow fallback routes Description": "Автоматично вибирає альтернативну модель, якщо вибрана модель не може задовольнити ваш запит.",
384- "openrouter_force_instruct": "Цей параметр застарів і буде видалено в майбутньому. Щоб використовувати форматування інструкцій, перейдіть натомість до OpenRouter у розділі Text Completion API.",
385- "LEGACY": "СПАДОК",
386- "Force Instruct Mode formatting": "Примусове форматування в режимі вказівок",
387- "Force_Instruct_Mode_formatting_Description": "Якщо ввімкнути обидва режими Instruction і цей режим, підказка буде відформатована SillyTavern за допомогою поточного\n розширені параметри форматування (крім системного запиту). Якщо вимкнено, запит буде відформатовано OpenRouter.",
388379 "Scale API Key": "Ключ API для Scale",
389380 "Clear your cookie": "Очистіть файл cookie",
390381 "Alt Method": "Альтернативний метод",
public/locales/vi-vn.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "Độ dài phản hồi tối đa (token)",
5757 "Multiple swipes per generation": "Vuốt nhiều lần trong một lần tạo",
5858 "Enable OpenAI completion streaming": "Bật streaming của OpenAI",
59- "Enable Cohere web-search connector": "Bật web tìm kiếm của Cohere",
60- "Web-search": "Tìm kiếm trên web",
61- "Allow the model to use the web-search connector.": "Cho phép model sử dụng trình kết nối tìm kiếm trên web.",
6259 "Frequency Penalty": "Frequency Penalty",
6360 "Presence Penalty": "Presence Penalty",
6461 "Count Penalty": "Count Penalty",
@@ -340,7 +337,6 @@
340337 "Example: 127.0.0.1:5001": "Ví dụ: 127.0.0.1:5001",
341338 "Cho phép": "Ủy quyền",
342339 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai",
343- "Legacy API (pre-OAI, no streaming)": "API cũ (trước OAI, không có streaming)",
344340 "Bypass status check": "Bỏ qua check trạng thái",
345341 "Chat Completion Source": "Nguồn cho Chat Completion",
346342 "Reverse Proxy": "Proxy",
@@ -370,7 +366,6 @@
370366 "Show External models (provided by API)": "Hiện các model ngoài vào (do API cung cấp)",
371367 "Get your key from": "Lấy Key của bạn từ",
372368 "Anthropic's developer console": "developer console của Anthropic",
373- "Slack and Poe cookies will not work here, do not bother trying.": "Cookie Slack và Poe không xài được ở đây, đừng có thử.",
374369 "Claude Model": "Model Claude",
375370 "Window AI Model": "Model Window AI",
376371 "Model Order": "Sắp xếp model OpenRouter",
@@ -381,10 +376,6 @@
381376 "Group by vendors Description": "Xếp các mô hình OpenAI vào một nhóm, các mô hình Anthropic vào một nhóm khác, v.v. Có thể kết hợp với việc sắp xếp.",
382377 "Allow fallback routes": "Cho phép các tuyến đường phụ",
383378 "Allow fallback routes Description": "Bot thay thế tự động nếu mô hình được chọn không thể đáp ứng yêu cầu của bạn.",
384- "openrouter_force_instruct": "Tùy chọn này đã lỗi thời và sẽ bị xóa trong tương lai. Để sử dụng định dạng hướng dẫn, vui lòng chuyển sang OpenRouter trong API hoàn thành văn bản.",
385- "LEGACY": "Cũ",
386- "Force Instruct Mode formatting": "Buộc định dạng Instruct Mode",
387- "Force_Instruct_Mode_formatting_Description": "Nếu cả Instruct Mode và chế độ này được bật, Prompt sẽ được SillyTavern định dạng bằng cách sử dụng\n cài đặt định dạng nâng cao (ngoại trừ hướng dẫn System Nhắc). Nếu bị tắt, Prompt sẽ được OpenRouter định dạng.",
388379 "Scale API Key": "Scale API Key",
389380 "Clear your cookie": "Xóa cookie",
390381 "Alt Method": "Phương pháp thay thế",
public/locales/zh-cn.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "最大回复长度(以词符数计)",
5757 "Multiple swipes per generation": "每次生成多个备选回复",
5858 "Enable OpenAI completion streaming": "启用OpenAI文本补全流式传输",
59- "Enable Cohere web-search connector": "启用 Cohere 网络搜索连接器",
60- "Web-search": "联网搜索",
61- "Allow the model to use the web-search connector.": "允许模型使用联网搜索。",
6259 "Frequency Penalty": "频率惩罚",
6360 "Presence Penalty": "存在惩罚",
6461 "Count Penalty": "计数惩罚",
@@ -354,7 +351,6 @@
354351 "Example: 127.0.0.1:5001": "示例:127.0.0.1:5001",
355352 "Authorize": "授权",
356353 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用OAuth流程获取您的OpenRouter API令牌。您将被重定向到openrouter.ai",
357- "Legacy API (pre-OAI, no streaming)": "旧版API(OAI之前,无流式传输)",
358354 "Bypass status check": "绕过状态检查",
359355 "Chat Completion Source": "聊天补全来源",
360356 "Custom (OpenAI-compatible)": "自定义(兼容 OpenAI)",
@@ -386,7 +382,6 @@
386382 "Show External models (provided by API)": "显示外部模型(由API提供)",
387383 "Get your key from": "从以下位置获取您的密钥",
388384 "Anthropic's developer console": "Anthropic的开发者控制台",
389- "Slack and Poe cookies will not work here, do not bother trying.": "Slack和Poe的cookie在这里不起作用,请不要尝试。",
390385 "Claude Model": "Claude 模型",
391386 "Window AI Model": "Window AI 模型",
392387 "Allow fallback routes Description": "如果所选模型无法响应您的请求,则自动选择备用模型。",
@@ -397,10 +392,6 @@
397392 "Context Size": "上下文大小",
398393 "Group by vendors": "按供应商分组",
399394 "Group by vendors Description": "将 OpenAI 模型放在一组,将 Anthropic 模型放在另一组,等等。可以与排序结合。",
400- "openrouter_force_instruct": "此选项已过时,将来会被删除。要使用指令格式,请改用文本完成 API 下的 OpenRouter。",
401- "LEGACY": "旧版",
402- "Force Instruct Mode formatting": "强制指令模式格式化",
403- "Force_Instruct_Mode_formatting_Description": "如果同时启用了“指示模式”和“系统提示词”,则 SillyTavern 将使用当前\n高级格式设置(指示系统提示词除外)对提示词进行格式化。如果禁用,则 OpenRouter 将对提示词进行格式化。",
404395 "Scale API Key": "Scale API密钥",
405396 "Clear your cookie": "清除你的 Cookie",
406397 "Alt Method": "备用方法",
public/locales/zh-tw.json+0 -9
@@ -56,9 +56,6 @@
5656 "Max Response Length (tokens)": "最大回應長度(符記數)",
5757 "Multiple swipes per generation": "每次生成多次滑動",
5858 "Enable OpenAI completion streaming": "啟用 OpenAI 補充串流",
59- "Enable Cohere web-search connector": "啟用 Cohere 網頁搜尋連接器",
60- "Web-search": "網頁搜尋",
61- "Allow the model to use the web-search connector.": "允許模型使用網頁搜尋連接器",
6259 "Frequency Penalty": "頻率懲罰",
6360 "Presence Penalty": "存在懲罰",
6461 "Count Penalty": "計數懲罰",
@@ -341,7 +338,6 @@
341338 "Example: 127.0.0.1:5001": "範例:127.0.0.1:5001",
342339 "Authorize": "授權",
343340 "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用 OAuth 流程取得您的 OpenRouter API 符記。您將被重新導向到 openrouter.ai",
344- "Legacy API (pre-OAI, no streaming)": "傳統 API(OAI之前,無串流)",
345341 "Bypass status check": "繞過狀態檢查",
346342 "Chat Completion Source": "聊天補充來源",
347343 "Reverse Proxy": "反向代理伺服器",
@@ -371,7 +367,6 @@
371367 "Show External models (provided by API)": "顯示外部模型(由 API 提供)",
372368 "Get your key from": "取得您的鑰匙",
373369 "Anthropic's developer console": "Anthropic 的開發者控制台",
374- "Slack and Poe cookies will not work here, do not bother trying.": "Slack 和 Poe 的 Cookie 在此無效,請勿嘗試。",
375370 "Claude Model": "Claude 模型",
376371 "Window AI Model": "Window AI 模型",
377372 "Model Order": "模型順序",
@@ -382,10 +377,6 @@
382377 "Group by vendors Description": "將 OpenAI 、 Anthropic 等等的模型放各自供應商的群組中。可以與排序功能結合使用。",
383378 "Allow fallback routes": "允許備援路徑",
384379 "Allow fallback routes Description": "如果選擇的模型無法滿足要求,會自動選擇替代模型。",
385- "openrouter_force_instruct": "這個選項已經過時,將來會被移除。如果要使用指令格式,請改在 Text Completion API 中選擇 OpenRouter。",
386- "LEGACY": "遺留",
387- "Force Instruct Mode formatting": "強制指示模式格式化",
388- "Force_Instruct_Mode_formatting_Description": "如果同時啟用「指令模式」和這個選項,\nSillyTavern 會根據目前的進階格式化設定(不包括指令系統提示)來格式化提示詞。\n如果停用這個選項,提示詞將由 OpenRouter 來進行格式化。",
389380 "Scale API Key": "Scale API 金鑰",
390381 "Clear your cookie": "清除您的 Cookie",
391382 "Alt Method": "替代方法",
public/login.html+7 -6
@@ -4,9 +4,9 @@
44<head>
55 <base href="/">
66 <meta charset="utf-8">
7- <meta name="viewport"
7+ <meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content">
8- content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1.0, user-scalable=no">
98 <meta name="apple-mobile-web-app-capable" content="yes">
9+ <meta name="mobile-web-app-capable" content="yes">
1010 <meta name="darkreader-lock">
1111 <meta name="robots" content="noindex, nofollow" />
1212 <style>
@@ -31,8 +31,6 @@
3131 <link href="css/fontawesome.min.css" rel="stylesheet">
3232 <link href="css/solid.min.css" rel="stylesheet">
3333 <link href="css/user.css" rel="stylesheet">
34- <script src="lib/jquery-3.5.1.min.js"></script>
35- <script src="scripts/login.js"></script>
3634 <title>SillyTavern</title>
3735</head>
3836
@@ -65,8 +63,7 @@
6563 <div id="loginButton" class="menu_button">Login</div>
6664 </div>
6765 </div>
6866 <div id="passwordRecoveryBlock" style="display:none;" class="flex-container flexFlowColumn alignItemsCenter">
69- class="flex-container flexFlowColumn alignItemsCenter">
7067 <div id="recoverMessage">
7168 Recovery code has been posted to the server console.
7269 </div>
@@ -84,6 +81,10 @@
8481 </div>
8582 </div>
8683 </div>
84+ </div>
85+
86+ <script src="lib/jquery-3.5.1.min.js"></script>
87+ <script src="scripts/login.js"></script>
8788</body>
8889
8990</html>
public/script.js+406 -218
@@ -1,4 +1,4 @@
11import { humanizedDateTime, favsToHotswap, getMessageTimeStamp, dragElement, isMobile, initRossMods, shouldSendOnEnter, addSafariPatch } from './scripts/RossAscends-mods.js';
22import { userStatsHandler, statMesProcess, initStats } from './scripts/stats.js';
33import {
44 generateKoboldWithStreaming,
@@ -83,6 +83,7 @@ import {
8383 resetMovableStyles,
8484 forceCharacterEditorTokenize,
8585 applyPowerUserSettings,
86+ switchSwipeNumAllMessages,
8687} from './scripts/power-user.js';
8788
8889import {
@@ -96,7 +97,6 @@ import {
9697 openai_messages_count,
9798 chat_completion_sources,
9899 getChatCompletionModel,
99- isOpenRouterWithInstruct,
100100 proxies,
101101 loadProxyPresets,
102102 selected_proxy,
@@ -159,7 +159,7 @@ import {
159159} from './scripts/utils.js';
160160import { debounce_timeout } from './scripts/constants.js';
161161
162162import { ModuleWorkerWrapper, doDailyExtensionUpdatesCheck, extension_settings, getContext, initExtensions, loadExtensionSettings, renderExtensionTemplate, renderExtensionTemplateAsync, runGenerationInterceptors, saveMetadataDebounced, writeExtensionField } from './scripts/extensions.js';
163163import { COMMENT_NAME_DEFAULT, executeSlashCommands, executeSlashCommandsOnChatInput, executeSlashCommandsWithOptions, getSlashCommandsHelp, initDefaultSlashCommands, isExecutingCommandsFromChatInput, pauseScriptExecution, processChatSlashCommands, registerSlashCommand, stopScriptExecution } from './scripts/slash-commands.js';
164164import {
165165 tag_map,
@@ -231,7 +231,7 @@ import { MacrosParser, evaluateMacros, getLastMessageId } from './scripts/macros
231231import { currentUser, setUserControls } from './scripts/user.js';
232232import { POPUP_RESULT, POPUP_TYPE, Popup, callGenericPopup, fixToastrForDialogs } from './scripts/popup.js';
233233import { renderTemplate, renderTemplateAsync } from './scripts/templates.js';
234234import { initScrapers, ScraperManager } from './scripts/scrapers.js';
235235import { SlashCommandParser } from './scripts/slash-commands/SlashCommandParser.js';
236236import { SlashCommand } from './scripts/slash-commands/SlashCommand.js';
237237import { ARGUMENT_TYPE, SlashCommandArgument, SlashCommandNamedArgument } from './scripts/slash-commands/SlashCommandArgument.js';
@@ -245,6 +245,9 @@ import { commonEnumProviders, enumIcons } from './scripts/slash-commands/SlashCo
245245import { initInputMarkdown } from './scripts/input-md-formatting.js';
246246import { AbortReason } from './scripts/util/AbortReason.js';
247247import { initSystemPrompts } from './scripts/sysprompt.js';
248+import { registerExtensionSlashCommands as initExtensionSlashCommands } from './scripts/extensions-slashcommands.js';
249+import { ToolManager } from './scripts/tool-calling.js';
250+import { applyBrowserFixes } from './scripts/browser-fixes.js';
248251
249252//exporting functions and vars for mods
250253export {
@@ -292,10 +295,17 @@ DOMPurify.addHook('afterSanitizeAttributes', function (node) {
292295 }
293296});
294297
295298DOMPurify.addHook('uponSanitizeAttribute', (_node, data, config) => {
296299 if (!config['MESSAGE_SANITIZE']) {
297300 return;
298301 }
302+
303+ /* Retain the classes on UI elements of messages that interact with the main UI */
304+ const permittedNodeTypes = ['BUTTON', 'DIV'];
305+ if (config['MESSAGE_ALLOW_SYSTEM_UI'] && node.classList.contains('menu_button') && permittedNodeTypes.includes(node.nodeName)) {
306+ return;
307+ }
308+
299309 switch (data.attrName) {
300310 case 'class': {
301311 if (data.attrValue) {
@@ -383,8 +393,8 @@ DOMPurify.addHook('uponSanitizeElement', (node, _, config) => {
383393
384394 if (localStorage.getItem(warningShownKey) === null) {
385395 const warningToast = toastr.warning(
386396 't`Use the "'Ext. Media"' button to allow it. Click on this message to dismiss.'`,
387397 't`External media has been blocked'`,
388398 {
389399 timeOut: 0,
390400 preventDuplicates: true,
@@ -462,11 +472,11 @@ export const event_types = {
462472 FILE_ATTACHMENT_DELETED: 'file_attachment_deleted',
463473 WORLDINFO_FORCE_ACTIVATE: 'worldinfo_force_activate',
464474 OPEN_CHARACTER_LIBRARY: 'open_character_library',
465- LLM_FUNCTION_TOOL_REGISTER: 'llm_function_tool_register',
466- LLM_FUNCTION_TOOL_CALL: 'llm_function_tool_call',
467475 ONLINE_STATUS_CHANGED: 'online_status_changed',
468476 IMAGE_SWIPED: 'image_swiped',
469477 CONNECTION_PROFILE_LOADED: 'connection_profile_loaded',
478+ TOOL_CALLS_PERFORMED: 'tool_calls_performed',
479+ TOOL_CALLS_RENDERED: 'tool_calls_rendered',
470480};
471481
472482export const eventSource = new EventEmitter();
@@ -649,6 +659,7 @@ async function getSystemMessages() {
649659 force_avatar: system_avatar,
650660 is_user: false,
651661 is_system: true,
662+ uses_system_ui: true,
652663 mes: await renderTemplateAsync('welcome', { displayVersion }),
653664 },
654665 group: {
@@ -924,11 +935,11 @@ async function firstLoadInit() {
924935 token = tokenData.token;
925936 } catch {
926937 hideLoader();
927938 toastr.error('t`Couldn\'t get CSRF token. Please refresh the page.'`, 't`Error'`, { timeOut: 0, extendedTimeOut: 0, preventDuplicates: true });
928939 throw new Error('Initialization failed');
929940 }
930941
931942 addSafariPatchapplyBrowserFixes();
932943 await getClientVersion();
933944 await readSecretState();
934945 await initLocales();
@@ -936,6 +947,9 @@ async function firstLoadInit() {
936947 initTextGenModels();
937948 initOpenAI();
938949 initSystemPrompts();
950+ initExtensions();
951+ initExtensionSlashCommands();
952+ ToolManager.initToolSlashCommands();
939953 await initPresetManager();
940954 await getSystemMessages();
941955 sendSystemMessage(system_message_types.WELCOME);
@@ -957,6 +971,7 @@ async function firstLoadInit() {
957971 initCfg();
958972 initLogprobs();
959973 initInputMarkdown();
974+ await initScrapers();
960975 doDailyExtensionUpdatesCheck();
961976 await hideLoader();
962977 await fixViewport();
@@ -1137,7 +1152,7 @@ async function getStatusKobold() {
11371152
11381153 // We didn't get a 200 status code, but the endpoint has an explanation. Which means it DID connect, but I digress.
11391154 if (online_status === 'no_connection' && data.response) {
11401155 toastr.error(data.response, 't`API Error'`, { timeOut: 5000, preventDuplicates: true });
11411156 }
11421157 } catch (err) {
11431158 console.error('Error getting status', err);
@@ -1170,7 +1185,6 @@ async function getStatusTextgen() {
11701185 body: JSON.stringify({
11711186 api_server: endpoint,
11721187 api_type: textgen_settings.type,
1173- legacy_api: textgen_settings.legacy_api && textgen_settings.type === OOBA,
11741188 }),
11751189 signal: abortStatusCheck.signal,
11761190 });
@@ -1223,7 +1237,7 @@ async function getStatusTextgen() {
12231237
12241238 // We didn't get a 200 status code, but the endpoint has an explanation. Which means it DID connect, but I digress.
12251239 if (online_status === 'no_connection' && data.response) {
12261240 toastr.error(data.response, 't`API Error'`, { timeOut: 5000, preventDuplicates: true });
12271241 }
12281242 } catch (err) {
12291243 if (err instanceof AbortReason) {
@@ -1275,7 +1289,7 @@ export async function selectCharacterById(id) {
12751289 }
12761290
12771291 if (isChatSaving) {
12781292 toastr.info('t`Please wait until the chat is saved before switching characters.'`, 't`Your chat is still saving...'`);
12791293 return;
12801294 }
12811295
@@ -1629,7 +1643,7 @@ export async function getOneCharacter(avatarUrl) {
16291643 if (indexOf !== -1) {
16301644 characters[indexOf] = getData;
16311645 } else {
16321646 toastr.error(t`Character ${avatarUrl} not found in the list`, 't`Error'`, { timeOut: 5000, preventDuplicates: true });
16331647 }
16341648 }
16351649}
@@ -1881,6 +1895,7 @@ export async function reloadCurrentChat() {
18811895export async function sendTextareaMessage() {
18821896 if (is_send_press) return;
18831897 if (isExecutingCommandsFromChatInput) return;
1898+ if (this_edit_mes_id) return; // don't proceed if editing a message
18841899
18851900 let generateType;
18861901 // "Continue on send" is activated when the user hits "send" (or presses enter) on an empty chat box, and the last
@@ -1911,9 +1926,10 @@ export async function sendTextareaMessage() {
19111926 * @param {boolean} isSystem If the message was sent by the system
19121927 * @param {boolean} isUser If the message was sent by the user
19131928 * @param {number} messageId Message index in chat array
1929+ * @param {object} [sanitizerOverrides] DOMPurify sanitizer option overrides
19141930 * @returns {string} HTML string
19151931 */
19161932export function messageFormatting(mes, ch_name, isSystem, isUser, messageId, sanitizerOverrides = {}) {
19171933 if (!mes) {
19181934 return '';
19191935 }
@@ -1988,15 +2004,33 @@ export function messageFormatting(mes, ch_name, isSystem, isUser, messageId) {
19882004 });
19892005 }
19902006
1991- mes = mes.replace(/```[\s\S]*?```|``[\s\S]*?``|`[\s\S]*?`|(".+?")|(\u201C.+?\u201D)/gm, function (match, p1, p2) {
2007+ mes = mes.replace(
2008+ /```[\s\S]*?```|``[\s\S]*?``|`[\s\S]*?`|(".*?")|(\u201C.*?\u201D)|(\u00AB.*?\u00BB)|(\u300C.*?\u300D)|(\u300E.*?\u300F)|(\uFF02.*?\uFF02)/gm,
2009+ function (match, p1, p2, p3, p4, p5, p6) {
19922010 if (p1) {
1993- return '<q>"' + p1.replace(/"/g, '') + '"</q>';
2011+ // English double quotes
2012+ return `<q>"${p1.slice(1, -1)}"</q>`;
19942013 } else if (p2) {
1995- return '<q>“' + p2.replace(/\u201C|\u201D/g, '') + '”</q>';
2014+ // Curly double quotes “ ”
2015+ return `<q>“${p2.slice(1, -1)}”</q>`;
2016+ } else if (p3) {
2017+ // Guillemets « »
2018+ return `<q>«${p3.slice(1, -1)}»</q>`;
2019+ } else if (p4) {
2020+ // Corner brackets 「 」
2021+ return `<q>「${p4.slice(1, -1)}」</q>`;
2022+ } else if (p5) {
2023+ // White corner brackets 『 』
2024+ return `<q>『${p5.slice(1, -1)}』</q>`;
2025+ } else if (p6) {
2026+ // Fullwidth quotes " "
2027+ return `<q>"${p6.slice(1, -1)}"</q>`;
19962028 } else {
2029+ // Return the original match if no quotes are found
19972030 return match;
19982031 }
1999- });
2032+ },
2033+ );
20002034
20012035 // Restore double quotes in tags
20022036 if (!power_user.encode_tags) {
@@ -2024,7 +2058,7 @@ export function messageFormatting(mes, ch_name, isSystem, isUser, messageId) {
20242058 }
20252059
20262060 /** @type {any} */
20272061 const config = { MESSAGE_SANITIZE: true, ADD_TAGS: ['custom-style'], ...sanitizerOverrides };
20282062 mes = encodeStyleTags(mes);
20292063 mes = DOMPurify.sanitize(mes, config);
20302064 mes = decodeStyleTags(mes);
@@ -2229,6 +2263,18 @@ export function addCopyToCodeBlocks(messageElement) {
22292263}
22302264
22312265
2266+/**
2267+ * Adds a single message to the chat.
2268+ * @param {object} mes Message object
2269+ * @param {object} [options] Options
2270+ * @param {string} [options.type='normal'] Message type
2271+ * @param {number} [options.insertAfter=null] Message ID to insert the new message after
2272+ * @param {boolean} [options.scroll=true] Whether to scroll to the new message
2273+ * @param {number} [options.insertBefore=null] Message ID to insert the new message before
2274+ * @param {number} [options.forceId=null] Force the message ID
2275+ * @param {boolean} [options.showSwipes=true] Whether to show swipe buttons
2276+ * @returns {void}
2277+ */
22322278export function addOneMessage(mes, { type = 'normal', insertAfter = null, scroll = true, insertBefore = null, forceId = null, showSwipes = true } = {}) {
22332279 let messageText = mes['mes'];
22342280 const momentDate = timestampToMoment(mes.send_date);
@@ -2257,7 +2303,7 @@ export function addOneMessage(mes, { type = 'normal', insertAfter = null, scroll
22572303 } else if (this_chid === undefined) {
22582304 avatarImg = system_avatar;
22592305 } else {
22602306 if (characters[this_chid].avatar !== 'none') {
22612307 avatarImg = getThumbnailUrl('avatar', characters[this_chid].avatar);
22622308 } else {
22632309 avatarImg = default_avatar;
@@ -2272,12 +2318,16 @@ export function addOneMessage(mes, { type = 'normal', insertAfter = null, scroll
22722318 avatarImg = mes['force_avatar'];
22732319 }
22742320
2321+ // if mes.uses_system_ui is true, set an override on the sanitizer options
2322+ const sanitizerOverrides = mes.uses_system_ui ? { MESSAGE_ALLOW_SYSTEM_UI: true } : {};
2323+
22752324 messageText = messageFormatting(
22762325 messageText,
22772326 mes.name,
22782327 isSystem,
22792328 mes.is_user,
22802329 chat.indexOf(mes),
2330+ sanitizerOverrides,
22812331 );
22822332 const bias = messageFormatting(mes.extra?.bias ?? '', '', false, false, -1);
22832333 let bookmarkLink = mes?.extra?.bookmark_link ?? '';
@@ -2324,8 +2374,12 @@ export function addOneMessage(mes, { type = 'normal', insertAfter = null, scroll
23242374 newMessage.addClass('smallSysMes');
23252375 }
23262376
2377+ if (Array.isArray(mes?.extra?.tool_invocations)) {
2378+ newMessage.addClass('toolCall');
2379+ }
2380+
23272381 //shows or hides the Prompt display button
23282382 let mesIdToFind = type === 'swipe' ? params.mesId - 1 : params.mesId; //Number(newMessage.attr('mesId'));
23292383
23302384 //if we have itemized messages, and the array isn't null..
23312385 if (params.isUser === false && Array.isArray(itemizedPrompts) && itemizedPrompts.length > 0) {
@@ -2366,6 +2420,13 @@ export function addOneMessage(mes, { type = 'normal', insertAfter = null, scroll
23662420
23672421 addCopyToCodeBlocks(newMessage);
23682422
2423+ // Set the swipes counter for past messages, only visible if 'Show Swipes on All Message' is enabled
2424+ if (!params.isUser && newMessageId !== 0 && newMessageId !== chat.length - 1) {
2425+ const swipesNum = chat[newMessageId].swipes?.length;
2426+ const swipeId = chat[newMessageId].swipe_id + 1;
2427+ newMessage.find('.swipes-counter').text(formatSwipeCounter(swipeId, swipesNum));
2428+ }
2429+
23692430 if (showSwipes) {
23702431 $('#chat .mes').last().addClass('last_mes');
23712432 $('#chat .mes').eq(-2).removeClass('last_mes');
@@ -2574,7 +2635,7 @@ export function getStoppingStrings(isImpersonate, isContinue) {
25742635 result.unshift('\n');
25752636 }
25762637
25772638 return result.filter(x => x).filter(onlyUnique);
25782639}
25792640
25802641/**
@@ -2639,7 +2700,7 @@ export function sendSystemMessage(type, text, extra = {}) {
26392700 newMessage.mes = text;
26402701 }
26412702
26422703 if (type === system_message_types.SLASH_COMMANDS) {
26432704 newMessage.mes = getSlashCommandsHelp();
26442705 }
26452706
@@ -2653,7 +2714,7 @@ export function sendSystemMessage(type, text, extra = {}) {
26532714 chat.push(newMessage);
26542715 addOneMessage(newMessage);
26552716 is_send_press = false;
26562717 if (type === system_message_types.SLASH_COMMANDS) {
26572718 const browser = new SlashCommandBrowser();
26582719 const spinner = document.querySelector('#chat .last_mes .custom-slashHelp');
26592720 const parent = spinner.parentElement;
@@ -2910,6 +2971,7 @@ class StreamingProcessor {
29102971 this.swipes = [];
29112972 /** @type {import('./scripts/logprobs.js').TokenLogprobs[]} */
29122973 this.messageLogprobs = [];
2974+ this.toolCalls = [];
29132975 }
29142976
29152977 #checkDomElements(messageId) {
@@ -2921,6 +2983,13 @@ class StreamingProcessor {
29212983 }
29222984 }
29232985
2986+ #updateMessageBlockVisibility() {
2987+ if (this.messageDom instanceof HTMLElement && Array.isArray(this.toolCalls) && this.toolCalls.length > 0) {
2988+ const shouldHide = ['', '...'].includes(this.result);
2989+ this.messageDom.classList.toggle('displayNone', shouldHide);
2990+ }
2991+ }
2992+
29242993 showMessageButtons(messageId) {
29252994 if (messageId == -1) {
29262995 return;
@@ -2986,6 +3055,7 @@ class StreamingProcessor {
29863055 }
29873056 else {
29883057 this.#checkDomElements(messageId);
3058+ this.#updateMessageBlockVisibility();
29893059 const currentTime = new Date();
29903060 // Don't waste time calculating token count for streaming
29913061 const currentTokenCount = isFinal && power_user.message_token_count_enabled ? getTokenCount(processedText, 0) : 0;
@@ -3124,11 +3194,12 @@ class StreamingProcessor {
31243194 }
31253195
31263196 onStopStreaming() {
31273197 this.onErrorStreamingabortController.abort();
3198+ this.isFinished = true;
31283199 }
31293200
31303201 /**
31313202 * @returns {Generator<{ text: string, swipes: string[], logprobs: import('./scripts/logprobs.js').TokenLogprobs, toolCalls: any[] }, void, void>}
31323203 */
31333204 *nullStreamingGeneration() {
31343205 throw new Error('Generation function for streaming is not hooked up');
@@ -3150,12 +3221,13 @@ class StreamingProcessor {
31503221 try {
31513222 const sw = new Stopwatch(1000 / power_user.streaming_fps);
31523223 const timestamps = [];
31533224 for await (const { text, swipes, logprobs, toolCalls } of this.generator()) {
31543225 timestamps.push(Date.now());
31553226 if (this.isStopped) {
31563227 return;
31573228 }
31583229
3230+ this.toolCalls = toolCalls;
31593231 this.result = text;
31603232 this.swipes = Array.from(swipes ?? []);
31613233 if (logprobs) {
@@ -3168,9 +3240,12 @@ class StreamingProcessor {
31683240 console.warn(`Stream stats: ${timestamps.length} tokens, ${seconds.toFixed(2)} seconds, rate: ${Number(timestamps.length / seconds).toFixed(2)} TPS`);
31693241 }
31703242 catch (err) {
3243+ // in the case of a self-inflicted abort, we have already cleaned up
3244+ if (!this.isFinished) {
31713245 console.error(err);
31723246 this.onErrorStreaming();
3173- return;
3247+ }
3248+ return this.result;
31743249 }
31753250
31763251 this.isFinished = true;
@@ -3338,9 +3413,9 @@ function removeLastMessage() {
33383413 * @param {GenerateOptions} options Generation options
33393414 * @param {boolean} dryRun Whether to actually generate a message or just assemble the prompt
33403415 * @returns {Promise<any>} Returns a promise that resolves when the text is done generating.
33413416 * @typedef {{automatic_trigger?: boolean, force_name2?: boolean, quiet_prompt?: string, quietToLoud?: boolean, skipWIAN?: boolean, force_chid?: number, signal?: AbortSignal, quietImage?: string, quietName?: string, depth?: number }} GenerateOptions
33423417 */
33433418export async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, quietName, depth = 0 } = {}, dryRun = false) {
33443419 console.log('Generate entered');
33453420 setGenerationProgress(0);
33463421 generation_started = new Date();
@@ -3371,16 +3446,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
33713446 await eventSource.emit(event_types.GENERATION_AFTER_COMMANDS, type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage }, dryRun);
33723447
33733448 if (main_api == 'kobold' && kai_settings.streaming_kobold && !kai_flags.can_use_streaming) {
33743449 toastr.error('t`Streaming is enabled, but the version of Kobold used does not support token streaming.'`, undefined, { timeOut: 10000, preventDuplicates: true });
3375- unblockGeneration(type);
3376- return Promise.resolve();
3377- }
3378-
3379- if (main_api === 'textgenerationwebui' &&
3380- textgen_settings.streaming &&
3381- textgen_settings.legacy_api &&
3382- textgen_settings.type === OOBA) {
3383- toastr.error('Streaming is not supported for the Legacy API. Update Ooba and use new API to enable streaming.', undefined, { timeOut: 10000, preventDuplicates: true });
33843450 unblockGeneration(type);
33853451 return Promise.resolve();
33863452 }
@@ -3396,7 +3462,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
33963462
33973463 if (!pingResult) {
33983464 unblockGeneration(type);
33993465 toastr.error('t`Verify that the server is running and accessible.'`, 't`ST Server cannot be reached'`);
34003466 throw new Error('Server unreachable');
34013467 }
34023468
@@ -3559,7 +3625,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
35593625 }
35603626
35613627 // Collect messages with usable content
35623628 letconst coreChatcanUseTools = chatToolManager.filterisToolCallingSupported(x => !x.is_system);
3629+ const canPerformToolCalls = !dryRun && ToolManager.canPerformToolCalls(type) && depth < ToolManager.RECURSE_LIMIT;
3630+ let coreChat = chat.filter(x => !x.is_system || (canUseTools && Array.isArray(x.extra?.tool_invocations)));
35633631 if (type === 'swipe') {
35643632 coreChat.pop();
35653633 }
@@ -3772,7 +3840,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
37723840 if (addUserAlignment) {
37733841 const alignmentMessage = {
37743842 name: name1,
37753843 mes: substituteParams(power_user.instruct.user_alignment_message),
37763844 is_user: true,
37773845 };
37783846 userAlignmentMessage = formatMessageHistoryItem(alignmentMessage, isInstruct, force_output_sequence.FIRST);
@@ -3946,8 +4014,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
39464014
39474015 if (isContinue) {
39484016 // Coping mechanism for OAI spacing
3949- const isForceInstruct = isOpenRouterWithInstruct();
4017+ if (main_api === 'openai' && !cyclePrompt.endsWith(' ')) {
3950- if (main_api === 'openai' && !isForceInstruct && !cyclePrompt.endsWith(' ')) {
39514018 cyclePrompt += oai_settings.continue_postfix;
39524019 continue_mag += oai_settings.continue_postfix;
39534020 }
@@ -4395,7 +4462,31 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
43954462 getMessage = continue_mag + getMessage;
43964463 }
43974464
43984465 ifconst (isStreamFinished = streamingProcessor && !streamingProcessor.isStopped && streamingProcessor.isFinished) {;
4466+ const isStreamWithToolCalls = streamingProcessor && Array.isArray(streamingProcessor.toolCalls) && streamingProcessor.toolCalls.length;
4467+ if (canPerformToolCalls && isStreamFinished && isStreamWithToolCalls) {
4468+ const lastMessage = chat[chat.length - 1];
4469+ const hasToolCalls = ToolManager.hasToolCalls(streamingProcessor.toolCalls);
4470+ const shouldDeleteMessage = type !== 'swipe' && ['', '...'].includes(lastMessage?.mes) && ['', '...'].includes(streamingProcessor?.result);
4471+ hasToolCalls && shouldDeleteMessage && await deleteLastMessage();
4472+ const invocationResult = await ToolManager.invokeFunctionTools(streamingProcessor.toolCalls);
4473+ if (hasToolCalls) {
4474+ if (!invocationResult.invocations.length && shouldDeleteMessage) {
4475+ ToolManager.showToolCallError(invocationResult.errors);
4476+ unblockGeneration(type);
4477+ generatedPromptCache = '';
4478+ streamingProcessor = null;
4479+ return;
4480+ }
4481+
4482+ streamingProcessor = null;
4483+ depth = depth + 1;
4484+ await ToolManager.saveFunctionToolInvocations(invocationResult.invocations);
4485+ return Generate('normal', { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, quietName, depth }, dryRun);
4486+ }
4487+ }
4488+
4489+ if (isStreamFinished) {
43994490 await streamingProcessor.onFinishStreaming(streamingProcessor.messageId, getMessage);
44004491 streamingProcessor = null;
44014492 triggerAutoContinue(messageChunk, isImpersonate);
@@ -4425,7 +4516,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
44254516 generatedPromptCache = '';
44264517
44274518 if (data?.response) {
44284519 toastr.error(data.response, 't`API Error'`, { preventDuplicates: true });
44294520 }
44304521 throw new Error(data?.response);
44314522 }
@@ -4469,6 +4560,25 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
44694560 parseAndSaveLogprobs(data, continue_mag);
44704561 }
44714562
4563+ if (canPerformToolCalls) {
4564+ const hasToolCalls = ToolManager.hasToolCalls(data);
4565+ const shouldDeleteMessage = type !== 'swipe' && ['', '...'].includes(getMessage);
4566+ hasToolCalls && shouldDeleteMessage && await deleteLastMessage();
4567+ const invocationResult = await ToolManager.invokeFunctionTools(data);
4568+ if (hasToolCalls) {
4569+ if (!invocationResult.invocations.length && shouldDeleteMessage) {
4570+ ToolManager.showToolCallError(invocationResult.errors);
4571+ unblockGeneration(type);
4572+ generatedPromptCache = '';
4573+ return;
4574+ }
4575+
4576+ depth = depth + 1;
4577+ await ToolManager.saveFunctionToolInvocations(invocationResult.invocations);
4578+ return Generate('normal', { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, quietName, depth }, dryRun);
4579+ }
4580+ }
4581+
44724582 if (type !== 'quiet') {
44734583 playMessageSound();
44744584 }
@@ -4516,7 +4626,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro
45164626
45174627 function onError(exception) {
45184628 if (typeof exception?.error?.message === 'string') {
45194629 toastr.error(exception.error.message, 't`Error'`, { timeOut: 10000, extendedTimeOut: 20000 });
45204630 }
45214631
45224632 generatedPromptCache = '';
@@ -4535,7 +4645,6 @@ export function stopGeneration() {
45354645 let stopped = false;
45364646 if (streamingProcessor) {
45374647 streamingProcessor.onStopStreaming();
4538- streamingProcessor = null;
45394648 stopped = true;
45404649 }
45414650 if (abortController) {
@@ -4783,7 +4892,7 @@ export function removeMacros(str) {
47834892 * @param {boolean} [compact] Send as a compact display message.
47844893 * @param {string} [name] Name of the user sending the message. Defaults to name1.
47854894 * @param {string} [avatar] Avatar of the user sending the message. Defaults to user_avatar.
47864895 * @returns {Promise<voidany>} A promise that resolves whento the message when it is inserted.
47874896 */
47884897export async function sendMessageAsUser(messageText, messageBias, insertAt = null, compact = false, name = name1, avatar = user_avatar) {
47894898 messageText = getRegexedString(messageText, regex_placement.USER_INPUT);
@@ -4830,6 +4939,8 @@ export async function sendMessageAsUser(messageText, messageBias, insertAt = nul
48304939 await eventSource.emit(event_types.USER_MESSAGE_RENDERED, chat_id);
48314940 await saveChatConditional();
48324941 }
4942+
4943+ return message;
48334944}
48344945
48354946/**
@@ -4865,7 +4976,7 @@ export function getMaxContextSize(overrideResponseLength = null) {
48654976 this_max_context = Math.min(max_context, 8192);
48664977
48674978 // Added special tokens and whatnot
48684979 this_max_context -= 110;
48694980 }
48704981
48714982 this_max_context = this_max_context - (overrideResponseLength || amount_gen);
@@ -4918,7 +5029,7 @@ function addChatsSeparator(mesSendString) {
49185029
49195030async function duplicateCharacter() {
49205031 if (!this_chid) {
49215032 toastr.warning('t`You must first select a character to duplicate!'`);
49225033 return '';
49235034 }
49245035
@@ -4937,7 +5048,7 @@ async function duplicateCharacter() {
49375048 body: JSON.stringify(body),
49385049 });
49395050 if (response.ok) {
49405051 toastr.success('t`Character Duplicated'`);
49415052 const data = await response.json();
49425053 await eventSource.emit(event_types.CHARACTER_DUPLICATED, { oldAvatar: body.avatar_url, newAvatar: data.path });
49435054 await getCharacters();
@@ -5319,7 +5430,7 @@ function extractMessageFromData(data) {
53195430 case 'novel':
53205431 return data.output;
53215432 case 'openai':
53225433 return data?.choices?.[0]?.message?.content ?? data?.choices?.[0]?.text ?? data?.text ?? data?.message?.content?.[0]?.text ?? data?.message?.tool_plan ?? '';
53235434 default:
53245435 return '';
53255436 }
@@ -5426,6 +5537,7 @@ export function cleanUpMessage(getMessage, isImpersonate, isContinue, displayInc
54265537 getMessage = getMessage.substring(0, getMessage.indexOf('<|endoftext|>'));
54275538 }
54285539 const isInstruct = power_user.instruct.enabled && main_api !== 'openai';
5540+ const isNotEmpty = (str) => str && str.trim() !== '';
54295541 if (isInstruct && power_user.instruct.stop_sequence) {
54305542 if (getMessage.indexOf(power_user.instruct.stop_sequence) != -1) {
54315543 getMessage = getMessage.substring(0, getMessage.indexOf(power_user.instruct.stop_sequence));
@@ -5433,7 +5545,7 @@ export function cleanUpMessage(getMessage, isImpersonate, isContinue, displayInc
54335545 }
54345546 // Hana: Only use the first sequence (should be <|model|>)
54355547 // of the prompt before <|user|> (as KoboldAI Lite does it).
54365548 if (isInstruct && isNotEmpty(power_user.instruct.input_sequence)) {
54375549 if (getMessage.indexOf(power_user.instruct.input_sequence) != -1) {
54385550 getMessage = getMessage.substring(0, getMessage.indexOf(power_user.instruct.input_sequence));
54395551 }
@@ -5783,23 +5895,23 @@ export function setSendButtonState(value) {
57835895
57845896export async function renameCharacter(name = null, { silent = false, renameChats = null } = {}) {
57855897 if (!name && silent) {
57865898 toastr.warning('t`No character name provided.'`, 't`Rename Character'`);
57875899 return false;
57885900 }
57895901 if (this_chid === undefined) {
57905902 toastr.warning('t`No character selected.'`, 't`Rename Character'`);
57915903 return false;
57925904 }
57935905
57945906 const oldAvatar = characters[this_chid].avatar;
57955907 const newValue = name || await callGenericPopup('<h3>' + t`New name:` + '</h3>', POPUP_TYPE.INPUT, characters[this_chid].name);
57965908
57975909 if (!newValue) {
57985910 toastr.warning('t`No character name provided.'`, 't`Rename Character'`);
57995911 return false;
58005912 }
58015913 if (newValue === characters[this_chid].name) {
58025914 toastr.info('t`Same character name provided, so name did not change.'`, 't`Rename Character'`);
58035915 return false;
58045916 }
58055917
@@ -5846,9 +5958,9 @@ export async function renameCharacter(name = null, { silent = false, renameChats
58465958 if (renamePastChatsConfirm) {
58475959 await renamePastChats(newAvatar, newValue);
58485960 await reloadCurrentChat();
58495961 toastr.success('t`Character renamed and past chats updated!'`, 't`Rename Character'`);
58505962 } else {
58515963 toastr.success('t`Character renamed!'`, 't`Rename Character'`);
58525964 }
58535965 }
58545966 else {
@@ -5861,8 +5973,8 @@ export async function renameCharacter(name = null, { silent = false, renameChats
58615973 }
58625974 catch (error) {
58635975 // Reloading to prevent data corruption
58645976 if (!silent) await callPopup('t`Something went wrong. The page will be reloaded.'`, 'text');
58655977 else toastr.error('t`Something went wrong. The page will be reloaded.'`, 't`Rename Character'`);
58665978
58675979 console.log('Renaming character error:', error);
58685980 location.reload();
@@ -5919,7 +6031,7 @@ async function renamePastChats(newAvatar, newValue) {
59196031 }
59206032 }
59216033 } catch (error) {
59226034 toastr.error(t`Past chat could not be updated: ${file_name}`);
59236035 console.error(error);
59246036 }
59256037 }
@@ -5968,7 +6080,7 @@ export async function saveChat(chatName, withMetadata, mesId) {
59686080 characters[this_chid]['date_last_chat'] = Date.now();
59696081 chat.forEach(function (item, i) {
59706082 if (item['is_group']) {
59716083 toastr.error('t`Trying to save group chat with regular saveChat function. Aborting to prevent corruption.'`);
59726084 throw new Error('Group chat saved from saveChat');
59736085 }
59746086 /*
@@ -6013,7 +6125,7 @@ export async function saveChat(chatName, withMetadata, mesId) {
60136125 contentType: 'application/json',
60146126 success: function (data) { },
60156127 error: function (jqXHR, exception) {
60166128 toastr.error('t`Check the server connection and reload the page to prevent data loss.'`, 't`Chat could not be saved'`);
60176129 console.log(exception);
60186130 console.log(jqXHR);
60196131 },
@@ -6242,6 +6354,7 @@ export function changeMainAPI() {
62426354 //console.log(selectedVal);
62436355 const apiElements = {
62446356 'koboldhorde': {
6357+ apiStreaming: $('#NULL_SELECTOR'),
62456358 apiSettings: $('#kobold_api-settings'),
62466359 apiConnector: $('#kobold_horde'),
62476360 apiPresets: $('#kobold_api-presets'),
@@ -6250,6 +6363,7 @@ export function changeMainAPI() {
62506363 amountGenElem: $('#amount_gen_block'),
62516364 },
62526365 'kobold': {
6366+ apiStreaming: $('#streaming_kobold_block'),
62536367 apiSettings: $('#kobold_api-settings'),
62546368 apiConnector: $('#kobold_api'),
62556369 apiPresets: $('#kobold_api-presets'),
@@ -6258,6 +6372,7 @@ export function changeMainAPI() {
62586372 amountGenElem: $('#amount_gen_block'),
62596373 },
62606374 'textgenerationwebui': {
6375+ apiStreaming: $('#streaming_textgenerationwebui_block'),
62616376 apiSettings: $('#textgenerationwebui_api-settings'),
62626377 apiConnector: $('#textgenerationwebui_api'),
62636378 apiPresets: $('#textgenerationwebui_api-presets'),
@@ -6266,6 +6381,7 @@ export function changeMainAPI() {
62666381 amountGenElem: $('#amount_gen_block'),
62676382 },
62686383 'novel': {
6384+ apiStreaming: $('#streaming_novel_block'),
62696385 apiSettings: $('#novel_api-settings'),
62706386 apiConnector: $('#novel_api'),
62716387 apiPresets: $('#novel_api-presets'),
@@ -6274,6 +6390,7 @@ export function changeMainAPI() {
62746390 amountGenElem: $('#amount_gen_block'),
62756391 },
62766392 'openai': {
6393+ apiStreaming: $('#NULL_SELECTOR'),
62776394 apiSettings: $('#openai_settings'),
62786395 apiConnector: $('#openai_api'),
62796396 apiPresets: $('#openai_api-presets'),
@@ -6296,12 +6413,14 @@ export function changeMainAPI() {
62966413 apiObj.apiConnector.css('display', 'none');
62976414 apiObj.apiRanges.css('display', 'none');
62986415 apiObj.apiPresets.css('display', 'none');
6416+ apiObj.apiStreaming.css('display', 'none');
62996417 }
63006418
63016419 //then, find and enable the active item.
63026420 //This is split out of the loop so that different apis can share settings divs
63036421 let activeItem = apiElements[selectedVal];
63046422
6423+ activeItem.apiStreaming.css('display', 'block');
63056424 activeItem.apiSettings.css('display', 'block');
63066425 activeItem.apiConnector.css('display', 'block');
63076426 activeItem.apiRanges.css('display', 'block');
@@ -6318,17 +6437,6 @@ export function changeMainAPI() {
63186437 }
63196438
63206439 //custom because streaming has been moved up under response tokens, which exists inside common settings block
6321- if (selectedVal === 'textgenerationwebui') {
6322- $('#streaming_textgenerationwebui_block').css('display', 'block');
6323- } else {
6324- $('#streaming_textgenerationwebui_block').css('display', 'none');
6325- }
6326- if (selectedVal === 'kobold') {
6327- $('#streaming_kobold_block').css('display', 'block');
6328- } else {
6329- $('#streaming_kobold_block').css('display', 'none');
6330- }
6331-
63326440 if (selectedVal === 'novel') {
63336441 $('#ai_module_block_novel').css('display', 'block');
63346442 } else {
@@ -6410,7 +6518,7 @@ export async function getSettings() {
64106518
64116519 if (!response.ok) {
64126520 reloadLoop();
64136521 toastr.error('t`Settings could not be loaded after multiple attempts. Please try again later.'`);
64146522 throw new Error('Error getting settings');
64156523 }
64166524
@@ -6637,7 +6745,7 @@ export async function saveSettings(type) {
66376745 eventSource.emit(event_types.SETTINGS_UPDATED);
66386746 },
66396747 error: function (jqXHR, exception) {
66406748 toastr.error('t`Check the server connection and reload the page to prevent data loss.'`, 't`Settings could not be saved'`);
66416749 console.log(exception);
66426750 console.log(jqXHR);
66436751 },
@@ -6680,7 +6788,10 @@ function updateMessage(div) {
66806788 text = getRegexedString(
66816789 text,
66826790 regexPlacement,
6683- { characterOverride: mes.extra?.type === 'narrator' ? undefined : mes.name },
6791+ {
6792+ characterOverride: mes.extra?.type === 'narrator' ? undefined : mes.name,
6793+ isEdit: true,
6794+ },
66846795 );
66856796
66866797
@@ -6903,7 +7014,7 @@ export async function displayPastChats() {
69037014 const data = await (selected_group ? getGroupPastChats(selected_group) : getPastCharacterChats());
69047015
69057016 if (!data) {
69067017 toastr.error('t`Could not load chat data. Try reloading the page.'`);
69077018 return;
69087019 }
69097020
@@ -7036,7 +7147,7 @@ export function selectRightMenuWithAnimation(selectedMenuId) {
70367147
70377148export function select_rm_info(type, charId, previousCharId = null) {
70387149 if (!type) {
70397150 toastr.error('t`Invalid process (no \'type\')'`);
70407151 return;
70417152 }
70427153 if (type !== 'group_create') {
@@ -7044,20 +7155,20 @@ export function select_rm_info(type, charId, previousCharId = null) {
70447155 }
70457156
70467157 if (type === 'char_delete') {
70477158 toastr.warning(t`Character Deleted: ${displayName}`);
70487159 }
70497160 if (type === 'char_create') {
70507161 toastr.success(t`Character Created: ${displayName}`);
70517162 }
70527163 if (type === 'group_create') {
70537164 toastr.success('t`Group Created'`);
70547165 }
70557166 if (type === 'group_delete') {
70567167 toastr.warning('t`Group Deleted'`);
70577168 }
70587169
70597170 if (type === 'char_import') {
70607171 toastr.success(t`Character Imported: ${displayName}`);
70617172 }
70627173
70637174 selectRightMenuWithAnimation('rm_characters_block');
@@ -7392,7 +7503,7 @@ function onScenarioOverrideRemoveClick() {
73927503 */
73937504export function callPopup(text, type, inputValue = '', { okButton, rows, wide, wider, large, allowHorizontalScrolling, allowVerticalScrolling, cropAspect } = {}) {
73947505 function getOkButtonText() {
73957506 if (['text', 'alternate_greeting', 'char_not_selected'].includes(popup_type)) {
73967507 $dialoguePopupCancel.css('display', 'none');
73977508 return okButton ?? 'Ok';
73987509 } else if (['delete_extension'].includes(popup_type)) {
@@ -7466,7 +7577,6 @@ export function showSwipeButtons() {
74667577 //had to add this to make the swipe counter work
74677578 //(copied from the onclick functions for swipe buttons..
74687579 //don't know why the array isn't set for non-swipe messsages in Generate or addOneMessage..)
7469-
74707580 if (chat[chat.length - 1]['swipe_id'] === undefined) { // if there is no swipe-message in the last spot of the chat array
74717581 chat[chat.length - 1]['swipe_id'] = 0; // set it to id 0
74727582 chat[chat.length - 1]['swipes'] = []; // empty the array
@@ -7475,33 +7585,37 @@ export function showSwipeButtons() {
74757585
74767586 const currentMessage = $('#chat').children().filter(`[mesid="${chat.length - 1}"]`);
74777587 const swipeId = chat[chat.length - 1].swipe_id;
74787588 const swipeCounterText = formatSwipeCounter(`${(swipeId + 1)}\u200B/\u200b${(, chat[chat.length - 1].swipes.length)}`);
7589+ const swipeRight = currentMessage.find('.swipe_right');
7590+ const swipeLeft = currentMessage.find('.swipe_left');
7591+ const swipeCounter = currentMessage.find('.swipes-counter');
74797592
74807593 if (swipeId !== undefined && (chat[chat.length - 1].swipes.length > 1 || swipeId > 0)) {
74817594 currentMessage.children('.swipe_left')swipeLeft.css('display', 'flex');
74827595 }
74837596 //only show right when generate is off, or when next right swipe would not make a generate happen
74847597 if (is_send_press === false || chat[chat.length - 1].swipes.length >= swipeId) {
74857598 currentMessageswipeRight.childrencss('.swipe_rightdisplay', 'flex').css('displayopacity', 'flex0.3');
74867599 currentMessage.children('.swipe_right')swipeCounter.css('opacity', '0.3');
74877600 }
7488- //console.log((chat[chat.length - 1]));
74897601 if ((chat[chat.length - 1].swipes.length - swipeId) === 1) {
7490- //console.log('highlighting R swipe');
7602+ //chevron was moved out of hardcode in HTML to class toggle dependent on last_mes or not
7491- currentMessage.children('.swipe_right').css('opacity', '0.7');
7603+ //necessary for 'swipe_right' div in past messages to have no chevron if 'show swipes for all messages' is turned on
7604+ swipeRight.css('opacity', '0.7');
7605+ swipeCounter.css('opacity', '0.7');
74927606 }
7493- //console.log(swipesCounterHTML);
74947607
7495- $('.swipes-counter').text(swipeCounterText);
7608+ //allows for writing individual swipe counters for past messages
7609+ const lastSwipeCounter = $('.last_mes .swipes-counter');
7610+ lastSwipeCounter.text(swipeCounterText).show();
74967611
74977612 //console.logswitchSwipeNumAllMessages(swipeId);
7498- //console.log(chat[chat.length - 1].swipes.length);
74997613}
75007614
75017615export function hideSwipeButtons() {
7502- //console.log('hideswipebuttons entered');
7616+ $('#chat').find('.swipe_right').hide();
75037617 $('#chat').find('.swipe_rightlast_mes .swipes-counter').csshide('display', 'none');
75047618 $('#chat').find('.swipe_left').csshide('display', 'none');
75057619}
75067620
75077621/**
@@ -7512,25 +7626,25 @@ export function hideSwipeButtons() {
75127626 */
75137627export async function deleteSwipe(swipeId = null) {
75147628 if (swipeId && (isNaN(swipeId) || swipeId < 0)) {
75157629 toastr.warning(t`Invalid swipe ID: ${swipeId + 1}`);
75167630 return;
75177631 }
75187632
75197633 const lastMessage = chat[chat.length - 1];
75207634 if (!lastMessage || !Array.isArray(lastMessage.swipes) || !lastMessage.swipes.length) {
75217635 toastr.warning('t`No messages to delete swipes from.'`);
75227636 return;
75237637 }
75247638
75257639 if (lastMessage.swipes.length <= 1) {
75267640 toastr.warning('t`Can\'t delete the last swipe.'`);
75277641 return;
75287642 }
75297643
75307644 swipeId = swipeId ?? lastMessage.swipe_id;
75317645
75327646 if (swipeId < 0 || swipeId >= lastMessage.swipes.length) {
75337647 toastr.warning(t`Invalid swipe ID: ${swipeId + 1}`);
75347648 return;
75357649 }
75367650
@@ -7669,7 +7783,7 @@ export function setGenerationProgress(progress) {
76697783
76707784function isHordeGenerationNotAllowed() {
76717785 if (main_api == 'koboldhorde' && preset_settings == 'gui') {
76727786 toastr.error('t`GUI Settings preset is not supported for Horde. Please select another preset.'`);
76737787 return true;
76747788 }
76757789
@@ -7718,7 +7832,7 @@ function openCharacterWorldPopup() {
77187832 }
77197833
77207834 $('#character_json_data').val(JSON.stringify(data));
77217835 toastr.info('t`Embedded lorebook will be removed from this character.'`);
77227836 } catch {
77237837 console.error('Failed to parse character JSON data.');
77247838 }
@@ -7829,24 +7943,42 @@ function openAlternateGreetings() {
78297943
78307944 const template = $('#alternate_greetings_template .alternate_grettings').clone();
78317945 const getArray = () => menu_type == 'create' ? create_save.alternate_greetings : characters[chid].data.alternate_greetings;
7946+ const popup = new Popup(template, POPUP_TYPE.TEXT, '', {
7947+ wide: true,
7948+ large: true,
7949+ allowVerticalScrolling: true,
7950+ onClose: async () => {
7951+ if (menu_type !== 'create') {
7952+ await createOrEditCharacter();
7953+ }
7954+ },
7955+ });
78327956
78337957 for (let index = 0; index < getArray().length; index++) {
78347958 addAlternateGreeting(template, getArray()[index], index, getArray, popup);
78357959 }
78367960
78377961 template.find('.add_alternate_greeting').on('click', function () {
78387962 const array = getArray();
78397963 const index = array.length;
78407964 array.push('');
78417965 addAlternateGreeting(template, '', index, getArray, popup);
78427966 updateAlternateGreetingsHintVisibility(template);
78437967 });
78447968
7969+ popup.show();
78457970 updateAlternateGreetingsHintVisibility(template);
7846- callPopup(template, 'alternate_greeting', '', { wide: true, large: true });
78477971}
78487972
7849-function addAlternateGreeting(template, greeting, index, getArray) {
7973+/**
7974+ * Adds an alternate greeting to the template.
7975+ * @param {JQuery<HTMLElement>} template
7976+ * @param {string} greeting
7977+ * @param {number} index
7978+ * @param {() => any[]} getArray
7979+ * @param {Popup} popup
7980+ */
7981+function addAlternateGreeting(template, greeting, index, getArray, popup) {
78507982 const greetingBlock = $('#alternate_greeting_form_template .alternate_greeting').clone();
78517983 greetingBlock.find('.alternate_greeting_text').on('input', async function () {
78527984 const value = $(this).val();
@@ -7854,11 +7986,16 @@ function addAlternateGreeting(template, greeting, index, getArray) {
78547986 array[index] = value;
78557987 }).val(greeting);
78567988 greetingBlock.find('.greeting_index').text(index + 1);
78577989 greetingBlock.find('.delete_alternate_greeting').on('click', async function (event) {
7858- if (confirm('Are you sure you want to delete this alternate greeting?')) {
7990+ event.preventDefault();
7991+ event.stopPropagation();
7992+
7993+ if (confirm(t`Are you sure you want to delete this alternate greeting?`)) {
78597994 const array = getArray();
78607995 array.splice(index, 1);
7996+
78617997 // We need to reopen the popup to update the index numbers
7998+ await popup.complete(POPUP_RESULT.AFFIRMATIVE);
78627999 openAlternateGreetings();
78638000 }
78648001 });
@@ -7886,11 +8023,11 @@ async function createOrEditCharacter(e) {
78868023
78878024 if ($('#form_create').attr('actiontype') == 'createcharacter') {
78888025 if (String($('#character_name_pole').val()).length === 0) {
78898026 toastr.error('t`Name is required'`);
78908027 return;
78918028 }
78928029 if (is_group_generating || is_send_press) {
78938030 toastr.error('t`Cannot create characters while generating. Stop the request and try again.'`, 't`Creation aborted'`);
78948031 return;
78958032 }
78968033 try {
@@ -7974,7 +8111,7 @@ async function createOrEditCharacter(e) {
79748111
79758112 } catch (error) {
79768113 console.error('Error creating character', error);
79778114 toastr.error('t`Failed to create character'`);
79788115 }
79798116 } else {
79808117 try {
@@ -8033,7 +8170,7 @@ async function createOrEditCharacter(e) {
80338170 }
80348171 } catch (error) {
80358172 console.log(error);
80368173 toastr.error('t`Something went wrong while saving the character, or the image file provided was in an invalid format. Double check that the image is not a webp.'`);
80378174 }
80388175 }
80398176}
@@ -8081,6 +8218,10 @@ window['SillyTavern'].getContext = function () {
80818218 substituteParams,
80828219 substituteParamsExtended,
80838220 SlashCommandParser,
8221+ SlashCommand,
8222+ SlashCommandArgument,
8223+ SlashCommandNamedArgument,
8224+ ARGUMENT_TYPE,
80848225 executeSlashCommandsWithOptions,
80858226 /** @deprecated Use SlashCommandParser.addCommandObject() instead */
80868227 registerSlashCommand: registerSlashCommand,
@@ -8091,6 +8232,10 @@ window['SillyTavern'].getContext = function () {
80918232 registerHelper: () => { },
80928233 registerMacro: MacrosParser.registerMacro.bind(MacrosParser),
80938234 unregisterMacro: MacrosParser.unregisterMacro.bind(MacrosParser),
8235+ registerFunctionTool: ToolManager.registerFunctionTool.bind(ToolManager),
8236+ unregisterFunctionTool: ToolManager.unregisterFunctionTool.bind(ToolManager),
8237+ isToolCallingSupported: ToolManager.isToolCallingSupported.bind(ToolManager),
8238+ canPerformToolCalls: ToolManager.canPerformToolCalls.bind(ToolManager),
80948239 registerDebugFunction: registerDebugFunction,
80958240 /** @deprecated Use renderExtensionTemplateAsync instead. */
80968241 renderExtensionTemplate: renderExtensionTemplate,
@@ -8126,6 +8271,20 @@ window['SillyTavern'].getContext = function () {
81268271 };
81278272};
81288273
8274+/**
8275+ * Formats a counter for a swipe view.
8276+ * @param {number} current The current number of items.
8277+ * @param {number} total The total number of items.
8278+ * @returns {string} The formatted counter.
8279+ */
8280+function formatSwipeCounter(current, total) {
8281+ if (isNaN(current) || isNaN(total)) {
8282+ return '';
8283+ }
8284+
8285+ return `${current}\u200b/\u200b${total}`;
8286+}
8287+
81298288function swipe_left() { // when we swipe left..but no generation.
81308289 if (chat.length - 1 === Number(this_edit_mes_id)) {
81318290 closeMessageEditor();
@@ -8313,8 +8472,8 @@ const swipe_right = () => {
83138472 }
83148473
83158474 const currentMessage = $('#chat').children().filter(`[mesid="${chat.length - 1}"]`);
83168475 let this_div = currentMessage.childrenfind('.swipe_right');
83178476 let this_mes_div = this_div.parent().parent();
83188477
83198478 if (chat[chat.length - 1]['swipe_id'] > chat[chat.length - 1]['swipes'].length) { //if we swipe right while generating (the swipe ID is greater than what we are viewing now)
83208479 chat[chat.length - 1]['swipe_id'] = chat[chat.length - 1]['swipes'].length; //show that message slot (will be '...' while generating)
@@ -8324,7 +8483,7 @@ const swipe_right = () => {
83248483 }
83258484 // handles animated transitions when swipe right, specifically height transitions between messages
83268485 if (run_generate || run_swipe_right) {
83278486 let this_mes_block = this_mes_div.childrenfind('.mes_block').children(' .mes_text');
83288487 const this_mes_div_height = this_mes_div[0].scrollHeight;
83298488 const this_mes_block_height = this_mes_block[0].scrollHeight;
83308489
@@ -8452,12 +8611,22 @@ const CONNECT_API_MAP = {
84528611 selected: 'novel',
84538612 button: '#api_button_novel',
84548613 },
8614+ 'koboldcpp': {
8615+ selected: 'textgenerationwebui',
8616+ button: '#api_button_textgenerationwebui',
8617+ type: textgen_types.KOBOLDCPP,
8618+ },
84558619 // KoboldCpp alias
84568620 'kcpp': {
84578621 selected: 'textgenerationwebui',
84588622 button: '#api_button_textgenerationwebui',
84598623 type: textgen_types.KOBOLDCPP,
84608624 },
8625+ 'openai': {
8626+ selected: 'openai',
8627+ button: '#api_button_openai',
8628+ source: chat_completion_sources.OPENAI,
8629+ },
84618630 // OpenAI alias
84628631 'oai': {
84638632 selected: 'openai',
@@ -8515,7 +8684,7 @@ async function selectContextCallback(args, name) {
85158684 const result = fuse.search(name);
85168685
85178686 if (result.length === 0) {
85188687 !quiet && toastr.warning(t`Context template "'${name}"' not found`);
85198688 return '';
85208689 }
85218690
@@ -8535,7 +8704,7 @@ async function selectInstructCallback(args, name) {
85358704 const result = fuse.search(name);
85368705
85378706 if (result.length === 0) {
85388707 !quiet && toastr.warning(t`Instruct template "'${name}"' not found`);
85398708 return '';
85408709 }
85418710
@@ -8587,7 +8756,7 @@ async function connectAPISlash(args, text) {
85878756
85888757 const apiConfig = CONNECT_API_MAP[text.toLowerCase()];
85898758 if (!apiConfig) {
85908759 toastr.error(t`Error: ${text} is not a valid API`);
85918760 return '';
85928761 }
85938762
@@ -8616,7 +8785,7 @@ async function connectAPISlash(args, text) {
86168785 }
86178786
86188787 const quiet = isTrueBoolean(args?.quiet);
86198788 const toast = quiet ? jQuery() : toastr.info(t`API set to ${text}, trying to connect..`);
86208789
86218790 try {
86228791 await waitUntilCondition(() => online_status !== 'no_connection', 10000, 100);
@@ -8655,7 +8824,7 @@ export async function processDroppedFiles(files, data = new Map()) {
86558824 const preservedName = data instanceof Map && data.get(file);
86568825 await importCharacter(file, preservedName);
86578826 } else {
86588827 toastr.warning('t`Unsupported file type: '` + file.name);
86598828 }
86608829 }
86618830}
@@ -8668,7 +8837,7 @@ export async function processDroppedFiles(files, data = new Map()) {
86688837 */
86698838async function importCharacter(file, preserveFileName = '') {
86708839 if (is_group_generating || is_send_press) {
86718840 toastr.error('t`Cannot import characters while generating. Stop the request and try again.'`, 't`Import aborted'`);
86728841 throw new Error('Cannot import character while generating');
86738842 }
86748843
@@ -8695,7 +8864,7 @@ async function importCharacter(file, preserveFileName = '') {
86958864 });
86968865
86978866 if (data.error) {
86988867 toastr.error('t`The file is likely invalid or corrupted.'`, 't`Could not import character'`);
86998868 return;
87008869 }
87018870
@@ -8748,7 +8917,7 @@ async function doImpersonate(args, prompt) {
87488917 await waitUntilCondition(() => !is_send_press && !is_group_generating, 10000, 100);
87498918 } catch {
87508919 console.warn('Timeout waiting for generation unlock');
87518920 toastr.warning('t`Cannot run /impersonate command while the reply is being generated.'`);
87528921 return '';
87538922 }
87548923
@@ -8810,19 +8979,19 @@ async function doDeleteChat() {
88108979
88118980async function doRenameChat(_, chatName) {
88128981 if (!chatName) {
88138982 toastr.warning('t`Name must be provided as an argument to rename this chat.'`);
88148983 return '';
88158984 }
88168985
88178986 const currentChatName = getCurrentChatId();
88188987 if (!currentChatName) {
88198988 toastr.warning('t`No chat selected that can be renamed.'`);
88208989 return '';
88218990 }
88228991
88238992 await renameChat(currentChatName, chatName);
88248993
88258994 toastr.success(t`Successfully renamed chat to: ${chatName}`);
88268995 return '';
88278996}
88288997
@@ -8937,7 +9106,7 @@ export async function deleteCharacter(characterKey, { deleteChats = true } = {})
89379106 for (const key of characterKey) {
89389107 const character = characters.find(x => x.avatar == key);
89399108 if (!character) {
89409109 toastr.warning(t`Character ${key} not found. Skipping deletion.`);
89419110 continue;
89429111 }
89439112
@@ -8954,7 +9123,7 @@ export async function deleteCharacter(characterKey, { deleteChats = true } = {})
89549123 });
89559124
89569125 if (!response.ok) {
89579126 toastr.error(`${response.status} ${response.statusText}`, 't`Failed to delete character'`);
89589127 continue;
89599128 }
89609129
@@ -9006,6 +9175,90 @@ function doTogglePanels() {
90069175 return '';
90079176}
90089177
9178+/**
9179+ * Event handler to open a navbar drawer when a drawer open button is clicked.
9180+ * Handles click events on .drawer-opener elements.
9181+ * Opens the drawer associated with the clicked button according to the data-target attribute.
9182+ * @returns {void}
9183+ */
9184+function doDrawerOpenClick() {
9185+ const targetDrawerID = $(this).attr('data-target');
9186+ const drawer = $(`#${targetDrawerID}`);
9187+ const drawerToggle = drawer.find('.drawer-toggle');
9188+ const drawerWasOpenAlready = drawerToggle.parent().find('.drawer-content').hasClass('openDrawer');
9189+ if (drawerWasOpenAlready || drawer.hasClass('resizing')) { return; }
9190+ doNavbarIconClick.call(drawerToggle);
9191+}
9192+
9193+/**
9194+ * Event handler to open or close a navbar drawer when a navbar icon is clicked.
9195+ * Handles click events on .drawer-toggle elements.
9196+ * @returns {void}
9197+ */
9198+function doNavbarIconClick() {
9199+ var icon = $(this).find('.drawer-icon');
9200+ var drawer = $(this).parent().find('.drawer-content');
9201+ if (drawer.hasClass('resizing')) { return; }
9202+ var drawerWasOpenAlready = $(this).parent().find('.drawer-content').hasClass('openDrawer');
9203+ let targetDrawerID = $(this).parent().find('.drawer-content').attr('id');
9204+ const pinnedDrawerClicked = drawer.hasClass('pinnedOpen');
9205+
9206+ if (!drawerWasOpenAlready) { //to open the drawer
9207+ $('.openDrawer').not('.pinnedOpen').addClass('resizing').slideToggle(200, 'swing', async function () {
9208+ await delay(50); $(this).closest('.drawer-content').removeClass('resizing');
9209+ });
9210+ $('.openIcon').toggleClass('closedIcon openIcon');
9211+ $('.openDrawer').not('.pinnedOpen').toggleClass('closedDrawer openDrawer');
9212+ icon.toggleClass('openIcon closedIcon');
9213+ drawer.toggleClass('openDrawer closedDrawer');
9214+
9215+ //console.log(targetDrawerID);
9216+ if (targetDrawerID === 'right-nav-panel') {
9217+ $(this).closest('.drawer').find('.drawer-content').addClass('resizing').slideToggle({
9218+ duration: 200,
9219+ easing: 'swing',
9220+ start: function () {
9221+ jQuery(this).css('display', 'flex'); //flex needed to make charlist scroll
9222+ },
9223+ complete: async function () {
9224+ favsToHotswap();
9225+ await delay(50);
9226+ $(this).closest('.drawer-content').removeClass('resizing');
9227+ $('#rm_print_characters_block').trigger('scroll');
9228+ },
9229+ });
9230+ } else {
9231+ $(this).closest('.drawer').find('.drawer-content').addClass('resizing').slideToggle(200, 'swing', async function () {
9232+ await delay(50); $(this).closest('.drawer-content').removeClass('resizing');
9233+ });
9234+ }
9235+
9236+ // Set the height of "autoSetHeight" textareas within the drawer to their scroll height
9237+ if (!CSS.supports('field-sizing', 'content')) {
9238+ $(this).closest('.drawer').find('.drawer-content textarea.autoSetHeight').each(async function () {
9239+ await resetScrollHeight($(this));
9240+ return;
9241+ });
9242+ }
9243+
9244+ } else if (drawerWasOpenAlready) { //to close manually
9245+ icon.toggleClass('closedIcon openIcon');
9246+
9247+ if (pinnedDrawerClicked) {
9248+ $(drawer).addClass('resizing').slideToggle(200, 'swing', async function () {
9249+ await delay(50); $(this).removeClass('resizing');
9250+ });
9251+ }
9252+ else {
9253+ $('.openDrawer').not('.pinnedOpen').addClass('resizing').slideToggle(200, 'swing', async function () {
9254+ await delay(50); $(this).closest('.drawer-content').removeClass('resizing');
9255+ });
9256+ }
9257+
9258+ drawer.toggleClass('closedDrawer openDrawer');
9259+ }
9260+}
9261+
90099262function addDebugFunctions() {
90109263 const doBackfill = async () => {
90119264 for (const message of chat) {
@@ -9371,9 +9624,9 @@ jQuery(async function () {
93719624
93729625 ///// SWIPE BUTTON CLICKS ///////
93739626
9374- $(document).on('click', '.swipe_right', swipe_right);
9627+ //limit swiping to only last message clicks
9375-
9628+ $(document).on('click', '.last_mes .swipe_right', swipe_right);
93769629 $(document).on('click', '.last_mes .swipe_left', swipe_left);
93779630
93789631 const debouncedCharacterSearch = debounce((searchQuery) => {
93799632 entitiesFilter.setFilterData(FILTER_TYPES.SEARCH, searchQuery);
@@ -9576,9 +9829,6 @@ jQuery(async function () {
95769829 }, 2000);
95779830 }
95789831 }
9579- if (popup_type == 'alternate_greeting' && menu_type !== 'create') {
9580- createOrEditCharacter();
9581- }
95829832
95839833 if (dialogueResolve) {
95849834 if (popup_type == 'input') {
@@ -9632,12 +9882,7 @@ jQuery(async function () {
96329882
96339883 let deleteChats = false;
96349884
96359885 const confirm = await Popup.show.confirm('t`Delete the character?`, await renderTemplateAsync('deleteConfirm'), `{
9636- <b>THIS IS PERMANENT!<br><br>
9637- <label for="del_char_checkbox" class="checkbox_label justifyCenter">
9638- <input type="checkbox" id="del_char_checkbox" />
9639- <small>Also delete the chat files</small>
9640- </label></b>`, {
96419886 onClose: () => deleteChats = !!$('#del_char_checkbox').prop('checked'),
96429887 });
96439888 if (!confirm) {
@@ -9942,6 +10187,8 @@ jQuery(async function () {
994210187 }
994310188
994410189 else if (id == 'option_continue') {
10190+ if (this_edit_mes_id) return; // don't proceed if editing a message
10191+
994510192 if (is_send_press == false || fromSlashCommand) {
994610193 is_send_press = true;
994710194 Generate('continue', buildOrFillAdditionalArgs());
@@ -10596,69 +10843,8 @@ jQuery(async function () {
1059610843 stopScriptExecution();
1059710844 });
1059810845
1059910846 $('.drawer-toggle'document).on('click', function'.drawer-opener', (doDrawerOpenClick) {;
10600- var icon = $(this).find('.drawer-icon');
10847+ $('.drawer-toggle').on('click', doNavbarIconClick);
10601- var drawer = $(this).parent().find('.drawer-content');
10602- if (drawer.hasClass('resizing')) { return; }
10603- var drawerWasOpenAlready = $(this).parent().find('.drawer-content').hasClass('openDrawer');
10604- let targetDrawerID = $(this).parent().find('.drawer-content').attr('id');
10605- const pinnedDrawerClicked = drawer.hasClass('pinnedOpen');
10606-
10607- if (!drawerWasOpenAlready) { //to open the drawer
10608- $('.openDrawer').not('.pinnedOpen').addClass('resizing').slideToggle(200, 'swing', async function () {
10609- await delay(50); $(this).closest('.drawer-content').removeClass('resizing');
10610- });
10611- $('.openIcon').toggleClass('closedIcon openIcon');
10612- $('.openDrawer').not('.pinnedOpen').toggleClass('closedDrawer openDrawer');
10613- icon.toggleClass('openIcon closedIcon');
10614- drawer.toggleClass('openDrawer closedDrawer');
10615-
10616- //console.log(targetDrawerID);
10617- if (targetDrawerID === 'right-nav-panel') {
10618- $(this).closest('.drawer').find('.drawer-content').addClass('resizing').slideToggle({
10619- duration: 200,
10620- easing: 'swing',
10621- start: function () {
10622- jQuery(this).css('display', 'flex'); //flex needed to make charlist scroll
10623- },
10624- complete: async function () {
10625- favsToHotswap();
10626- await delay(50);
10627- $(this).closest('.drawer-content').removeClass('resizing');
10628- $('#rm_print_characters_block').trigger('scroll');
10629- },
10630- });
10631- } else {
10632- $(this).closest('.drawer').find('.drawer-content').addClass('resizing').slideToggle(200, 'swing', async function () {
10633- await delay(50); $(this).closest('.drawer-content').removeClass('resizing');
10634- });
10635- }
10636-
10637- // Set the height of "autoSetHeight" textareas within the drawer to their scroll height
10638- if (!CSS.supports('field-sizing', 'content')) {
10639- $(this).closest('.drawer').find('.drawer-content textarea.autoSetHeight').each(async function () {
10640- await resetScrollHeight($(this));
10641- return;
10642- });
10643- }
10644-
10645- } else if (drawerWasOpenAlready) { //to close manually
10646- icon.toggleClass('closedIcon openIcon');
10647-
10648- if (pinnedDrawerClicked) {
10649- $(drawer).addClass('resizing').slideToggle(200, 'swing', async function () {
10650- await delay(50); $(this).removeClass('resizing');
10651- });
10652- }
10653- else {
10654- $('.openDrawer').not('.pinnedOpen').addClass('resizing').slideToggle(200, 'swing', async function () {
10655- await delay(50); $(this).closest('.drawer-content').removeClass('resizing');
10656- });
10657- }
10658-
10659- drawer.toggleClass('closedDrawer openDrawer');
10660- }
10661- });
1066210848
1066310849 $('html').on('touchstart mousedown', function (e) {
1066410850 var clickTarget = $(e.target);
@@ -10694,7 +10880,7 @@ jQuery(async function () {
1069410880 $('.openDrawer').not('.pinnedOpen').addClass('resizing').slideToggle(200, 'swing', function () {
1069510881 $(this).closest('.drawer-content').removeClass('resizing');
1069610882 });
1069710883 $('.openIcon').not('.drawerPinnedOpen').toggleClass('closedIcon openIcon');
1069810884 $('.openDrawer').not('.pinnedOpen').toggleClass('closedDrawer openDrawer');
1069910885
1070010886 }
@@ -10706,10 +10892,12 @@ jQuery(async function () {
1070610892 if ($(e.target).hasClass('text_pole')) {
1070710893 return;
1070810894 }
1070910895 varconst icondrawer = $(this).findclosest('.inline-drawer-icon');
10896+ const icon = drawer.find('.inline-drawer-icon');
10897+ const drawerContent = drawer.find('.inline-drawer-content');
1071010898 icon.toggleClass('down up');
1071110899 icon.toggleClass('fa-circle-chevron-down fa-circle-chevron-up');
10712- $(this).closest('.inline-drawer').find('.inline-drawer-content').stop().slideToggle({
10900+ drawerContent.stop().slideToggle({
1071310901 complete: () => {
1071410902 $(this).css('height', '');
1071510903 },
@@ -10717,7 +10905,7 @@ jQuery(async function () {
1071710905
1071810906 // Set the height of "autoSetHeight" textareas within the inline-drawer to their scroll height
1071910907 if (!CSS.supports('field-sizing', 'content')) {
1072010908 $(this).closest('.inline-drawer')drawerContent.find('.inline-drawer-content textarea.autoSetHeight').each(async function () {
1072110909 await resetScrollHeight($(this));
1072210910 return;
1072310911 });
public/scripts/BulkEditOverlay.js+0 -1
@@ -7,7 +7,6 @@ import {
77 event_types,
88 eventSource,
99 getCharacters,
10- getPastCharacterChats,
1110 getRequestHeaders,
1211 buildAvatarList,
1312 characterToEntity,
public/scripts/PromptManager.js+8 -7
@@ -8,6 +8,7 @@ import { debounce, waitUntilCondition, escapeHtml } from './utils.js';
88import { debounce_timeout } from './constants.js';
99import { renderTemplateAsync } from './templates.js';
1010import { Popup } from './popup.js';
11+import { t } from './i18n.js';
1112
1213function debouncePromise(func, delay) {
1314 let timeoutId;
@@ -314,7 +315,7 @@ class PromptManager {
314315 */
315316 init(moduleConfiguration, serviceSettings) {
316317 this.configuration = Object.assign(this.configuration, moduleConfiguration);
317318 this.tokenHandler = this.tokenHandler || new TokenHandler(() => { throw new Error('Token handler not set'); });
318319 this.serviceSettings = serviceSettings;
319320 this.containerElement = document.getElementById(this.configuration.containerIdentifier);
320321
@@ -455,7 +456,7 @@ class PromptManager {
455456
456457 // Delete selected prompt from list form and close edit form
457458 this.handleDeletePrompt = async (event) => {
458459 Popup.show.confirm('t`Are you sure you want to delete this prompt?'`, null).then((userChoice) => {
459460 if (!userChoice) return;
460461 const promptID = document.getElementById(this.configuration.prefix + 'prompt_manager_footer_append_prompt').value;
461462 const prompt = this.getPromptById(promptID);
@@ -531,7 +532,7 @@ class PromptManager {
531532
532533 // Import prompts for the selected character
533534 this.handleImport = () => {
534535 Popup.show.confirm('t`Existing prompts with the same ID will be overridden. Do you want to proceed?'`, null)
535536 .then(userChoice => {
536537 if (!userChoice) return;
537538
@@ -552,7 +553,7 @@ class PromptManager {
552553 const data = JSON.parse(fileContent);
553554 this.import(data);
554555 } catch (err) {
555556 toastr.error('t`An error occurred while importing prompts. More info available in console.'`);
556557 console.log('An error occurred while importing prompts');
557558 console.log(err.toString());
558559 }
@@ -567,7 +568,7 @@ class PromptManager {
567568
568569 // Restore default state of a characters prompt order
569570 this.handleCharacterReset = () => {
570571 Popup.show.confirm('t`This will reset the prompt order for this character. You will not lose any prompts.'`, null)
571572 .then(userChoice => {
572573 if (!userChoice) return;
573574
@@ -1649,7 +1650,7 @@ class PromptManager {
16491650 };
16501651
16511652 if (false === this.validateObject(controlObj, importData)) {
16521653 toastr.warning('t`Could not import prompts. Export failed validation.'`);
16531654 return;
16541655 }
16551656
@@ -1672,7 +1673,7 @@ class PromptManager {
16721673 throw new Error('Prompt order strategy not supported.');
16731674 }
16741675
16751676 toastr.success('t`Prompt import complete.'`);
16761677 this.saveServiceSettings().then(() => this.render());
16771678 }
16781679
public/scripts/RossAscends-mods.js+43 -36
@@ -45,8 +45,11 @@ var LPanelPin = document.getElementById('lm_button_panel_pin');
4545var WIPanelPin = document.getElementById('WI_panel_pin');
4646
4747var RightNavPanel = document.getElementById('right-nav-panel');
48+var RightNavDrawerIcon = document.getElementById('rightNavDrawerIcon');
4849var LeftNavPanel = document.getElementById('left-nav-panel');
50+var LeftNavDrawerIcon = document.getElementById('leftNavDrawerIcon');
4951var WorldInfo = document.getElementById('WorldInfo');
52+var WIDrawerIcon = document.getElementById('WIDrawerIcon');
5053
5154var SelectedCharacterTab = document.getElementById('rm_button_selected_ch');
5255
@@ -56,15 +59,19 @@ let counterNonce = Date.now();
5659
5760const observerConfig = { childList: true, subtree: true };
5861const countTokensDebounced = debounce(RA_CountCharTokens, debounce_timeout.relaxed);
62+const countTokensShortDebounced = debounce(RA_CountCharTokens, debounce_timeout.short);
63+const checkStatusDebounced = debounce(RA_checkOnlineStatus, debounce_timeout.short);
5964
6065const observer = new MutationObserver(function (mutations) {
6166 mutations.forEach(function (mutation) {
67+ if (!(mutation.target instanceof HTMLElement)) {
68+ return;
69+ }
6270 if (mutation.target.classList.contains('online_status_text')) {
6371 RA_checkOnlineStatuscheckStatusDebounced();
6472 } else if (mutation.target.parentNode === SelectedCharacterTab) {
6573 setTimeoutcountTokensShortDebounced(RA_CountCharTokens, 200);
6674 } else if (mutation.target.classList.contains('mes_text')) {
67- if (mutation.target instanceof HTMLElement) {
6875 for (const element of mutation.target.getElementsByTagName('math')) {
6976 element.childNodes.forEach(function (child) {
7077 if (child.nodeType === Node.TEXT_NODE) {
@@ -73,7 +80,6 @@ const observer = new MutationObserver(function (mutations) {
7380 });
7481 }
7582 }
76- }
7783 });
7884});
7985
@@ -115,7 +121,7 @@ export function humanizeGenTime(total_gen_time) {
115121 */
116122var parsedUA = null;
117123
118124export function getParsedUA() {
119125 if (!parsedUA) {
120126 try {
121127 parsedUA = Bowser.parse(navigator.userAgent);
@@ -308,7 +314,7 @@ function RA_checkOnlineStatus() {
308314 if (online_status == 'no_connection') {
309315 const send_textarea = $('#send_textarea');
310316 send_textarea.attr('placeholder', send_textarea.attr('no_connection_text')); //Input bar placeholder tells users they are not connected
311317 //$('#send_form').addClass('no-connection'); //entire input form area is red when not connected
312318 $('#send_but').addClass('displayNone'); //send button is hidden when not connected;
313319 $('#mes_continue').addClass('displayNone'); //continue button is hidden when not connected;
314320 $('#mes_impersonate').addClass('displayNone'); //continue button is hidden when not connected;
@@ -319,7 +325,7 @@ function RA_checkOnlineStatus() {
319325 if (online_status !== undefined && online_status !== 'no_connection') {
320326 const send_textarea = $('#send_textarea');
321327 send_textarea.attr('placeholder', send_textarea.attr('connected_text')); //on connect, placeholder tells user to type message
322328 //$('#send_form').removeClass('no-connection');
323329 $('#API-status-top').removeClass('fa-plug-circle-exclamation redOverlayGlow');
324330 $('#API-status-top').addClass('fa-plug');
325331 connection_made = true;
@@ -711,23 +717,9 @@ export const autoFitSendTextAreaDebounced = debounce(autoFitSendTextArea, deboun
711717
712718// ---------------------------------------------------
713719
714-export function addSafariPatch() {
715- const userAgent = getParsedUA();
716- console.debug('User Agent', userAgent);
717- const isMobileSafari = /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
718- const isDesktopSafari = userAgent?.browser?.name === 'Safari' && userAgent?.platform?.type === 'desktop';
719- const isIOS = userAgent?.os?.name === 'iOS';
720-
721- if (isIOS || isMobileSafari || isDesktopSafari) {
722- document.body.classList.add('safari');
723- }
724-}
725-
726720export function initRossMods() {
727721 // initial status check
728- setTimeout(() => {
722+ checkStatusDebounced();
729- RA_checkOnlineStatus();
730- }, 100);
731723
732724 if (power_user.auto_load_chat) {
733725 RA_autoloadchat();
@@ -737,22 +729,12 @@ export function initRossMods() {
737729 RA_autoconnect();
738730 }
739731
740- if (isMobile()) {
741- const fixFunkyPositioning = () => {
742- console.debug('[Mobile] Device viewport change detected.');
743- document.documentElement.style.position = 'fixed';
744- requestAnimationFrame(() => document.documentElement.style.position = '');
745- };
746- window.addEventListener('resize', fixFunkyPositioning);
747- window.addEventListener('orientationchange', fixFunkyPositioning);
748- }
749-
750732 $('#main_api').change(function () {
751733 var PrevAPI = main_api;
752734 setTimeout(() => RA_autoconnect(PrevAPI), 100);
753735 });
754736
755737 $('#api_button').clickon(function'click', () {=> setTimeoutcheckStatusDebounced(RA_checkOnlineStatus, 100); });
756738
757739 //toggle pin class when lock toggle clicked
758740 $(RPanelPin).on('click', function () {
@@ -760,13 +742,15 @@ export function initRossMods() {
760742 if ($(RPanelPin).prop('checked') == true) {
761743 //console.log('adding pin class to right nav');
762744 $(RightNavPanel).addClass('pinnedOpen');
745+ $(RightNavDrawerIcon).addClass('drawerPinnedOpen');
763746 } else {
764747 //console.log('removing pin class from right nav');
765748 $(RightNavPanel).removeClass('pinnedOpen');
749+ $(RightNavDrawerIcon).removeClass('drawerPinnedOpen');
766750
767751 if ($(RightNavPanel).hasClass('openDrawer') && $('.openDrawer').length > 1) {
768752 $(RightNavPanel).slideToggle(200, 'swing');
769753 //$(rightNavDrawerIconRightNavDrawerIcon).toggleClass('openIcon closedIcon');
770754 $(RightNavPanel).toggleClass('openDrawer closedDrawer');
771755 }
772756 }
@@ -776,13 +760,15 @@ export function initRossMods() {
776760 if ($(LPanelPin).prop('checked') == true) {
777761 //console.log('adding pin class to Left nav');
778762 $(LeftNavPanel).addClass('pinnedOpen');
763+ $(LeftNavDrawerIcon).addClass('drawerPinnedOpen');
779764 } else {
780765 //console.log('removing pin class from Left nav');
781766 $(LeftNavPanel).removeClass('pinnedOpen');
767+ $(LeftNavDrawerIcon).removeClass('drawerPinnedOpen');
782768
783769 if ($(LeftNavPanel).hasClass('openDrawer') && $('.openDrawer').length > 1) {
784770 $(LeftNavPanel).slideToggle(200, 'swing');
785771 //$(leftNavDrawerIconLeftNavDrawerIcon).toggleClass('openIcon closedIcon');
786772 $(LeftNavPanel).toggleClass('openDrawer closedDrawer');
787773 }
788774 }
@@ -793,14 +779,16 @@ export function initRossMods() {
793779 if ($(WIPanelPin).prop('checked') == true) {
794780 console.debug('adding pin class to WI');
795781 $(WorldInfo).addClass('pinnedOpen');
782+ $(WIDrawerIcon).addClass('drawerPinnedOpen');
796783 } else {
797784 console.debug('removing pin class from WI');
798785 $(WorldInfo).removeClass('pinnedOpen');
786+ $(WIDrawerIcon).removeClass('drawerPinnedOpen');
799787
800788 if ($(WorldInfo).hasClass('openDrawer') && $('.openDrawer').length > 1) {
801789 console.debug('closing WI after lock removal');
802790 $(WorldInfo).slideToggle(200, 'swing');
803791 //$(WorldInfoDrawerIconWIDrawerIcon).toggleClass('openIcon closedIcon');
804792 $(WorldInfo).toggleClass('openDrawer closedDrawer');
805793 }
806794 }
@@ -811,20 +799,24 @@ export function initRossMods() {
811799 if (LoadLocalBool('NavLockOn') == true) {
812800 //console.log('setting pin class via local var');
813801 $(RightNavPanel).addClass('pinnedOpen');
802+ $(RightNavDrawerIcon).addClass('drawerPinnedOpen');
814803 }
815804 if ($(RPanelPin).prop('checked')) {
816805 console.debug('setting pin class via checkbox state');
817806 $(RightNavPanel).addClass('pinnedOpen');
807+ $(RightNavDrawerIcon).addClass('drawerPinnedOpen');
818808 }
819809 // read the state of left Nav Lock and apply to leftnav classlist
820810 $(LPanelPin).prop('checked', LoadLocalBool('LNavLockOn'));
821811 if (LoadLocalBool('LNavLockOn') == true) {
822812 //console.log('setting pin class via local var');
823813 $(LeftNavPanel).addClass('pinnedOpen');
814+ $(LeftNavDrawerIcon).addClass('drawerPinnedOpen');
824815 }
825816 if ($(LPanelPin).prop('checked')) {
826817 console.debug('setting pin class via checkbox state');
827818 $(LeftNavPanel).addClass('pinnedOpen');
819+ $(LeftNavDrawerIcon).addClass('drawerPinnedOpen');
828820 }
829821
830822 // read the state of left Nav Lock and apply to leftnav classlist
@@ -832,11 +824,13 @@ export function initRossMods() {
832824 if (LoadLocalBool('WINavLockOn') == true) {
833825 //console.log('setting pin class via local var');
834826 $(WorldInfo).addClass('pinnedOpen');
827+ $(WIDrawerIcon).addClass('drawerPinnedOpen');
835828 }
836829
837830 if ($(WIPanelPin).prop('checked')) {
838831 console.debug('setting pin class via checkbox state');
839832 $(WorldInfo).addClass('pinnedOpen');
833+ $(WIDrawerIcon).addClass('drawerPinnedOpen');
840834 }
841835
842836 //save state of Right nav being open or closed
@@ -917,6 +911,12 @@ export function initRossMods() {
917911 if (!$(e.target).closest('#sheld').length) {
918912 return;
919913 }
914+ if ($('#curEditTextarea').length) {
915+ // Don't swipe while in text edit mode
916+ // the ios selection gestures get picked up
917+ // as swipe gestures
918+ return;
919+ }
920920 var SwipeButR = $('.swipe_right:last');
921921 var SwipeTargetMesClassParent = $(e.target).closest('.last_mes');
922922 if (SwipeTargetMesClassParent !== null) {
@@ -935,6 +935,12 @@ export function initRossMods() {
935935 if (!$(e.target).closest('#sheld').length) {
936936 return;
937937 }
938+ if ($('#curEditTextarea').length) {
939+ // Don't swipe while in text edit mode
940+ // the ios selection gestures get picked up
941+ // as swipe gestures
942+ return;
943+ }
938944 var SwipeButL = $('.swipe_left:last');
939945 var SwipeTargetMesClassParent = $(e.target).closest('.last_mes');
940946 if (SwipeTargetMesClassParent !== null) {
@@ -1026,6 +1032,7 @@ export function initRossMods() {
10261032 const editMesDone = $('.mes_edit_done:visible');
10271033 if (editMesDone.length > 0) {
10281034 console.debug('Accepting edits with Ctrl+Enter');
1035+ $('#send_textarea').focus();
10291036 editMesDone.trigger('click');
10301037 return;
10311038 } else if (is_send_press == false) {
public/scripts/authors-note.js+10 -9
@@ -16,6 +16,7 @@ import { SlashCommandParser } from './slash-commands/SlashCommandParser.js';
1616import { SlashCommand } from './slash-commands/SlashCommand.js';
1717import { ARGUMENT_TYPE, SlashCommandArgument } from './slash-commands/SlashCommandArgument.js';
1818export { MODULE_NAME as NOTE_MODULE_NAME };
19+import { t } from './i18n.js';
1920
2021const MODULE_NAME = '2_floating_prompt'; // <= Deliberate, for sorting lower than memory
2122
@@ -37,7 +38,7 @@ const chara_note_position = {
3738
3839function setNoteTextCommand(_, text) {
3940 $('#extension_floating_prompt').val(text).trigger('input');
4041 toastr.success('t`Author\'s Note text updated'`);
4142 return '';
4243}
4344
@@ -45,12 +46,12 @@ function setNoteDepthCommand(_, text) {
4546 const value = Number(text);
4647
4748 if (Number.isNaN(value)) {
4849 toastr.error('t`Not a valid number'`);
4950 return;
5051 }
5152
5253 $('#extension_floating_depth').val(Math.abs(value)).trigger('input');
5354 toastr.success('t`Author\'s Note depth updated'`);
5455 return '';
5556}
5657
@@ -58,12 +59,12 @@ function setNoteIntervalCommand(_, text) {
5859 const value = Number(text);
5960
6061 if (Number.isNaN(value)) {
6162 toastr.error('t`Not a valid number'`);
6263 return;
6364 }
6465
6566 $('#extension_floating_interval').val(Math.abs(value)).trigger('input');
6667 toastr.success('t`Author\'s Note frequency updated'`);
6768 return '';
6869}
6970
@@ -76,12 +77,12 @@ function setNotePositionCommand(_, text) {
7677 const position = validPositions[text?.trim()];
7778
7879 if (Number.isNaN(position)) {
7980 toastr.error('t`Not a valid position'`);
8081 return;
8182 }
8283
8384 $(`input[name="extension_floating_position"][value="${position}"]`).prop('checked', true).trigger('input');
8485 toastr.info('t`Author\'s Note position updated'`);
8586 return '';
8687}
8788
@@ -206,7 +207,7 @@ function onExtensionFloatingCharaPromptInput() {
206207 extension_settings.note.chara.push(tempCharaNote);
207208 } else {
208209 console.log('Character author\'s note error: No avatar name key could be found.');
209210 toastr.error('t`Something went wrong. Could not save character\'s author\'s note.'`);
210211
211212 // Don't save settings if something went wrong
212213 return;
@@ -397,7 +398,7 @@ function onANMenuItemClick() {
397398 //because this listener takes priority
398399 $('#options').stop().fadeOut(animation_duration);
399400 } else {
400401 toastr.warning('t`Select a character before trying to use Author\'s Note'`, '', { timeOut: 2000 });
401402 }
402403}
403404
public/scripts/browser-fixes.js+86 -0
@@ -0,0 +1,86 @@
1+import { getParsedUA, isMobile } from './RossAscends-mods.js';
2+
3+const isFirefox = () => /firefox/i.test(navigator.userAgent);
4+
5+function sanitizeInlineQuotationOnCopy() {
6+ // STRG+C, STRG+V on firefox leads to duplicate double quotes when inline quotation elements are copied.
7+ // To work around this, take the selection and transform <q> to <span> before calling toString().
8+ document.addEventListener('copy', function (event) {
9+ if (document.activeElement instanceof HTMLInputElement || document.activeElement instanceof HTMLTextAreaElement) {
10+ return;
11+ }
12+
13+ const selection = window.getSelection();
14+ if (!selection.anchorNode?.parentElement.closest('.mes_text')) {
15+ return;
16+ }
17+
18+ const range = selection.getRangeAt(0).cloneContents();
19+ const tempDOM = document.createDocumentFragment();
20+
21+ /**
22+ * Process a node, transforming <q> elements to <span> elements and preserving children.
23+ * @param {Node} node Input node
24+ * @returns {Node} Processed node
25+ */
26+ function processNode(node) {
27+ if (node.nodeType === Node.ELEMENT_NODE && node.nodeName.toLowerCase() === 'q') {
28+ // Transform <q> to <span>, preserve children
29+ const span = document.createElement('span');
30+
31+ [...node.childNodes].forEach(child => {
32+ const processedChild = processNode(child);
33+ span.appendChild(processedChild);
34+ });
35+
36+ return span;
37+ } else {
38+ // Nested structures containing <q> elements are unlikely
39+ return node.cloneNode(true);
40+ }
41+ }
42+
43+ [...range.childNodes].forEach(child => {
44+ const processedChild = processNode(child);
45+ tempDOM.appendChild(processedChild);
46+ });
47+
48+ const newRange = document.createRange();
49+ newRange.selectNodeContents(tempDOM);
50+
51+ event.preventDefault();
52+ event.clipboardData.setData('text/plain', newRange.toString());
53+ });
54+}
55+
56+function addSafariPatch() {
57+ const userAgent = getParsedUA();
58+ console.debug('User Agent', userAgent);
59+ const isMobileSafari = /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
60+ const isDesktopSafari = userAgent?.browser?.name === 'Safari' && userAgent?.platform?.type === 'desktop';
61+ const isIOS = userAgent?.os?.name === 'iOS';
62+
63+ if (isIOS || isMobileSafari || isDesktopSafari) {
64+ document.body.classList.add('safari');
65+ }
66+}
67+
68+function applyBrowserFixes() {
69+ if (isFirefox()) {
70+ sanitizeInlineQuotationOnCopy();
71+ }
72+
73+ if (isMobile()) {
74+ const fixFunkyPositioning = () => {
75+ console.debug('[Mobile] Device viewport change detected.');
76+ document.documentElement.style.position = 'fixed';
77+ requestAnimationFrame(() => document.documentElement.style.position = '');
78+ };
79+ window.addEventListener('resize', fixFunkyPositioning);
80+ window.addEventListener('orientationchange', fixFunkyPositioning);
81+ }
82+
83+ addSafariPatch();
84+}
85+
86+export { isFirefox, applyBrowserFixes };
public/scripts/chats.js+14 -12
@@ -40,6 +40,7 @@ import { POPUP_RESULT, POPUP_TYPE, Popup, callGenericPopup } from './popup.js';
4040import { ScraperManager } from './scrapers.js';
4141import { DragAndDropHandler } from './dragdrop.js';
4242import { renderTemplateAsync } from './templates.js';
43+import { t } from './i18n.js';
4344
4445/**
4546 * @typedef {Object} FileAttachment
@@ -206,7 +207,7 @@ export async function populateFileAttachment(message, inputId = 'file_form_input
206207 const fileText = await converter(file);
207208 base64Data = window.btoa(unescape(encodeURIComponent(fileText)));
208209 } catch (error) {
209210 toastr.error(String(error), 't`Could not convert file'`);
210211 console.error('Could not convert file', error);
211212 }
212213 }
@@ -257,7 +258,7 @@ export async function uploadFileAttachment(fileName, base64Data) {
257258 const responseData = await result.json();
258259 return responseData.path;
259260 } catch (error) {
260261 toastr.error(String(error), 't`Could not upload file'`);
261262 console.error('Could not upload file', error);
262263 }
263264}
@@ -283,7 +284,7 @@ export async function getFileAttachment(url) {
283284 const text = await result.text();
284285 return text;
285286 } catch (error) {
286287 toastr.error(error, 't`Could not download file'`);
287288 console.error('Could not download file', error);
288289 }
289290}
@@ -299,13 +300,13 @@ async function validateFile(file) {
299300 const isBinary = /^[\x00-\x08\x0E-\x1F\x7F-\xFF]*$/.test(fileText);
300301
301302 if (!isImage && file.size > fileSizeLimit) {
302303 toastr.error(t`File is too big. Maximum size is ${humanFileSize(fileSizeLimit)}.`);
303304 return false;
304305 }
305306
306307 // If file is binary
307308 if (isBinary && !isImage && !isConvertible(file.type)) {
308309 toastr.error('t`Binary files are not supported. Select a text file or image.'`);
309310 return false;
310311 }
311312
@@ -521,7 +522,7 @@ async function openExternalMediaOverridesDialog() {
521522 const entityId = getCurrentEntityId();
522523
523524 if (!entityId) {
524525 toastr.info('t`No character or group selected'`);
525526 return;
526527 }
527528
@@ -646,7 +647,7 @@ async function deleteFileFromServer(url, silent = false) {
646647 await eventSource.emit(event_types.FILE_ATTACHMENT_DELETED, url);
647648 return true;
648649 } catch (error) {
649650 toastr.error(String(error), 't`Could not delete file'`);
650651 console.error('Could not delete file', error);
651652 return false;
652653 }
@@ -1054,7 +1055,7 @@ async function openAttachmentManager() {
10541055 const selectedAttachments = document.querySelectorAll('.attachmentListItemCheckboxContainer .attachmentListItemCheckbox:checked');
10551056
10561057 if (selectedAttachments.length === 0) {
10571058 toastr.info('t`No attachments selected.'`, 't`Data Bank'`);
10581059 return;
10591060 }
10601061
@@ -1168,7 +1169,7 @@ async function runScraper(scraperId, target, callback) {
11681169
11691170 if (files.length === 0) {
11701171 console.warn('Scraping returned no files');
11711172 toastr.info('t`No files were scraped.'`, 't`Data Bank'`);
11721173 return;
11731174 }
11741175
@@ -1176,12 +1177,12 @@ async function runScraper(scraperId, target, callback) {
11761177 await uploadFileAttachmentToServer(file, target);
11771178 }
11781179
11791180 toastr.success(t`Scraped ${files.length} files from ${scraperId} to ${target}.`, 't`Data Bank'`);
11801181 callback();
11811182 }
11821183 catch (error) {
11831184 console.error('Scraping failed', error);
11841185 toastr.error('t`Check browser console for details.'`, 't`Scraping failed'`);
11851186 }
11861187}
11871188
@@ -1208,7 +1209,7 @@ export async function uploadFileAttachmentToServer(file, target) {
12081209 const fileText = await converter(file);
12091210 base64Data = window.btoa(unescape(encodeURIComponent(fileText)));
12101211 } catch (error) {
12111212 toastr.error(String(error), 't`Could not convert file'`);
12121213 console.error('Could not convert file', error);
12131214 }
12141215 } else {
@@ -1457,6 +1458,7 @@ jQuery(function () {
14571458 wrapper.classList.add('height100p', 'wide100p', 'flex-container');
14581459 wrapper.classList.add('flexFlowColumn', 'justifyCenter', 'alignitemscenter');
14591460 const textarea = document.createElement('textarea');
1461+ textarea.dataset.for = broId;
14601462 textarea.value = String(contentEditable ? bro[0].innerText : bro.val());
14611463 textarea.classList.add('height100p', 'wide100p', 'maximized_textarea');
14621464 bro.hasClass('monospace') && textarea.classList.add('monospace');
public/scripts/dynamic-styles.js+1 -1
@@ -148,7 +148,7 @@ export function initDynamicStyles() {
148148 // Start observing the head for any new added stylesheets
149149 observer.observe(document.head, {
150150 childList: true,
151151 subtree: true,
152152 });
153153
154154 // Process all stylesheets on initial load
public/scripts/extensions-slashcommands.js+320 -0
@@ -0,0 +1,320 @@
1+import { disableExtension, enableExtension, extension_settings, extensionNames } from './extensions.js';
2+import { SlashCommand } from './slash-commands/SlashCommand.js';
3+import { ARGUMENT_TYPE, SlashCommandArgument, SlashCommandNamedArgument } from './slash-commands/SlashCommandArgument.js';
4+import { SlashCommandClosure } from './slash-commands/SlashCommandClosure.js';
5+import { commonEnumProviders } from './slash-commands/SlashCommandCommonEnumsProvider.js';
6+import { enumTypes, SlashCommandEnumValue } from './slash-commands/SlashCommandEnumValue.js';
7+import { SlashCommandParser } from './slash-commands/SlashCommandParser.js';
8+import { equalsIgnoreCaseAndAccents, isFalseBoolean, isTrueBoolean } from './utils.js';
9+
10+/**
11+ * @param {'enable' | 'disable' | 'toggle'} action - The action to perform on the extension
12+ * @returns {(args: {[key: string]: string | SlashCommandClosure}, extensionName: string | SlashCommandClosure) => Promise<string>}
13+ */
14+function getExtensionActionCallback(action) {
15+ return async (args, extensionName) => {
16+ if (args?.reload instanceof SlashCommandClosure) throw new Error('\'reload\' argument cannot be a closure.');
17+ if (typeof extensionName !== 'string') throw new Error('Extension name must be a string. Closures or arrays are not allowed.');
18+ if (!extensionName) {
19+ toastr.warning(`Extension name must be provided as an argument to ${action} this extension.`);
20+ return '';
21+ }
22+
23+ const reload = !isFalseBoolean(args?.reload);
24+ const internalExtensionName = findExtension(extensionName);
25+ if (!internalExtensionName) {
26+ toastr.warning(`Extension ${extensionName} does not exist.`);
27+ return '';
28+ }
29+
30+ const isEnabled = !extension_settings.disabledExtensions.includes(internalExtensionName);
31+
32+ if (action === 'enable' && isEnabled) {
33+ toastr.info(`Extension ${extensionName} is already enabled.`);
34+ return internalExtensionName;
35+ }
36+
37+ if (action === 'disable' && !isEnabled) {
38+ toastr.info(`Extension ${extensionName} is already disabled.`);
39+ return internalExtensionName;
40+ }
41+
42+ if (action === 'toggle') {
43+ action = isEnabled ? 'disable' : 'enable';
44+ }
45+
46+ if (reload) {
47+ toastr.info(`${action.charAt(0).toUpperCase() + action.slice(1)}ing extension ${extensionName} and reloading...`);
48+
49+ // Clear input, so it doesn't stay because the command didn't "finish",
50+ // and wait for a bit to both show the toast and let the clear bubble through.
51+ $('#send_textarea').val('')[0].dispatchEvent(new Event('input', { bubbles: true }));
52+ await new Promise(resolve => setTimeout(resolve, 100));
53+ }
54+
55+ if (action === 'enable') {
56+ await enableExtension(internalExtensionName, reload);
57+ } else {
58+ await disableExtension(internalExtensionName, reload);
59+ }
60+
61+ toastr.success(`Extension ${extensionName} ${action}d.`);
62+
63+
64+ console.info(`Extension ${action}ed: ${extensionName}`);
65+ if (!reload) {
66+ console.info('Reload not requested, so page needs to be reloaded manually for changes to take effect.');
67+ }
68+
69+ return internalExtensionName;
70+ };
71+}
72+
73+/**
74+ * Finds an extension by name, allowing omission of the "third-party/" prefix.
75+ *
76+ * @param {string} name - The name of the extension to find
77+ * @returns {string?} - The matched extension name or undefined if not found
78+ */
79+function findExtension(name) {
80+ return extensionNames.find(extName => {
81+ return equalsIgnoreCaseAndAccents(extName, name) || equalsIgnoreCaseAndAccents(extName, `third-party/${name}`);
82+ });
83+}
84+
85+/**
86+ * Provides an array of SlashCommandEnumValue objects based on the extension names.
87+ * Each object contains the name of the extension and a description indicating if it is a third-party extension.
88+ *
89+ * @returns {SlashCommandEnumValue[]} An array of SlashCommandEnumValue objects
90+ */
91+const extensionNamesEnumProvider = () => extensionNames.map(name => {
92+ const isThirdParty = name.startsWith('third-party/');
93+ if (isThirdParty) name = name.slice('third-party/'.length);
94+
95+ const description = isThirdParty ? 'third party extension' : null;
96+
97+ return new SlashCommandEnumValue(name, description, !isThirdParty ? enumTypes.name : enumTypes.enum);
98+});
99+
100+export function registerExtensionSlashCommands() {
101+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
102+ name: 'extension-enable',
103+ callback: getExtensionActionCallback('enable'),
104+ returns: 'The internal extension name',
105+ namedArgumentList: [
106+ SlashCommandNamedArgument.fromProps({
107+ name: 'reload',
108+ description: 'Whether to reload the page after enabling the extension',
109+ typeList: [ARGUMENT_TYPE.BOOLEAN],
110+ defaultValue: 'true',
111+ enumList: commonEnumProviders.boolean('trueFalse')(),
112+ }),
113+ ],
114+ unnamedArgumentList: [
115+ SlashCommandArgument.fromProps({
116+ description: 'Extension name',
117+ typeList: [ARGUMENT_TYPE.STRING],
118+ isRequired: true,
119+ enumProvider: extensionNamesEnumProvider,
120+ forceEnum: true,
121+ }),
122+ ],
123+ helpString: `
124+ <div>
125+ Enables a specified extension.
126+ </div>
127+ <div>
128+ By default, the page will be reloaded automatically, stopping any further commands.<br />
129+ If <code>reload=false</code> named argument is passed, the page will not be reloaded, and the extension will stay disabled until refreshed.
130+ The page either needs to be refreshed, or <code>/reload-page</code> has to be called.
131+ </div>
132+ <div>
133+ <strong>Example:</strong>
134+ <ul>
135+ <li>
136+ <pre><code class="language-stscript">/extension-enable Summarize</code></pre>
137+ </li>
138+ </ul>
139+ </div>
140+ `,
141+ }));
142+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
143+ name: 'extension-disable',
144+ callback: getExtensionActionCallback('disable'),
145+ returns: 'The internal extension name',
146+ namedArgumentList: [
147+ SlashCommandNamedArgument.fromProps({
148+ name: 'reload',
149+ description: 'Whether to reload the page after disabling the extension',
150+ typeList: [ARGUMENT_TYPE.BOOLEAN],
151+ defaultValue: 'true',
152+ enumList: commonEnumProviders.boolean('trueFalse')(),
153+ }),
154+ ],
155+ unnamedArgumentList: [
156+ SlashCommandArgument.fromProps({
157+ description: 'Extension name',
158+ typeList: [ARGUMENT_TYPE.STRING],
159+ isRequired: true,
160+ enumProvider: extensionNamesEnumProvider,
161+ forceEnum: true,
162+ }),
163+ ],
164+ helpString: `
165+ <div>
166+ Disables a specified extension.
167+ </div>
168+ <div>
169+ By default, the page will be reloaded automatically, stopping any further commands.<br />
170+ If <code>reload=false</code> named argument is passed, the page will not be reloaded, and the extension will stay enabled until refreshed.
171+ The page either needs to be refreshed, or <code>/reload-page</code> has to be called.
172+ </div>
173+ <div>
174+ <strong>Example:</strong>
175+ <ul>
176+ <li>
177+ <pre><code class="language-stscript">/extension-disable Summarize</code></pre>
178+ </li>
179+ </ul>
180+ </div>
181+ `,
182+ }));
183+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
184+ name: 'extension-toggle',
185+ callback: async (args, extensionName) => {
186+ if (args?.state instanceof SlashCommandClosure) throw new Error('\'state\' argument cannot be a closure.');
187+ if (typeof extensionName !== 'string') throw new Error('Extension name must be a string. Closures or arrays are not allowed.');
188+
189+ const action = isTrueBoolean(args?.state) ? 'enable' :
190+ isFalseBoolean(args?.state) ? 'disable' :
191+ 'toggle';
192+
193+ return await getExtensionActionCallback(action)(args, extensionName);
194+ },
195+ returns: 'The internal extension name',
196+ namedArgumentList: [
197+ SlashCommandNamedArgument.fromProps({
198+ name: 'reload',
199+ description: 'Whether to reload the page after toggling the extension',
200+ typeList: [ARGUMENT_TYPE.BOOLEAN],
201+ defaultValue: 'true',
202+ enumList: commonEnumProviders.boolean('trueFalse')(),
203+ }),
204+ SlashCommandNamedArgument.fromProps({
205+ name: 'state',
206+ description: 'Explicitly set the state of the extension (true to enable, false to disable). If not provided, the state will be toggled to the opposite of the current state.',
207+ typeList: [ARGUMENT_TYPE.BOOLEAN],
208+ enumList: commonEnumProviders.boolean('trueFalse')(),
209+ }),
210+ ],
211+ unnamedArgumentList: [
212+ SlashCommandArgument.fromProps({
213+ description: 'Extension name',
214+ typeList: [ARGUMENT_TYPE.STRING],
215+ isRequired: true,
216+ enumProvider: extensionNamesEnumProvider,
217+ forceEnum: true,
218+ }),
219+ ],
220+ helpString: `
221+ <div>
222+ Toggles the state of a specified extension.
223+ </div>
224+ <div>
225+ By default, the page will be reloaded automatically, stopping any further commands.<br />
226+ If <code>reload=false</code> named argument is passed, the page will not be reloaded, and the extension will stay in its current state until refreshed.
227+ The page either needs to be refreshed, or <code>/reload-page</code> has to be called.
228+ </div>
229+ <div>
230+ <strong>Example:</strong>
231+ <ul>
232+ <li>
233+ <pre><code class="language-stscript">/extension-toggle Summarize</code></pre>
234+ </li>
235+ <li>
236+ <pre><code class="language-stscript">/extension-toggle Summarize state=true</code></pre>
237+ </li>
238+ </ul>
239+ </div>
240+ `,
241+ }));
242+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
243+ name: 'extension-state',
244+ callback: async (_, extensionName) => {
245+ if (typeof extensionName !== 'string') throw new Error('Extension name must be a string. Closures or arrays are not allowed.');
246+ const internalExtensionName = findExtension(extensionName);
247+ if (!internalExtensionName) {
248+ toastr.warning(`Extension ${extensionName} does not exist.`);
249+ return '';
250+ }
251+
252+ const isEnabled = !extension_settings.disabledExtensions.includes(internalExtensionName);
253+ return String(isEnabled);
254+ },
255+ returns: 'The state of the extension, whether it is enabled.',
256+ unnamedArgumentList: [
257+ SlashCommandArgument.fromProps({
258+ description: 'Extension name',
259+ typeList: [ARGUMENT_TYPE.STRING],
260+ isRequired: true,
261+ enumProvider: extensionNamesEnumProvider,
262+ forceEnum: true,
263+ }),
264+ ],
265+ helpString: `
266+ <div>
267+ Returns the state of a specified extension (true if enabled, false if disabled).
268+ </div>
269+ <div>
270+ <strong>Example:</strong>
271+ <ul>
272+ <li>
273+ <pre><code class="language-stscript">/extension-state Summarize</code></pre>
274+ </li>
275+ </ul>
276+ </div>
277+ `,
278+ }));
279+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
280+ name: 'extension-exists',
281+ aliases: ['extension-installed'],
282+ callback: async (_, extensionName) => {
283+ if (typeof extensionName !== 'string') throw new Error('Extension name must be a string. Closures or arrays are not allowed.');
284+ const exists = findExtension(extensionName) !== undefined;
285+ return exists ? 'true' : 'false';
286+ },
287+ returns: 'Whether the extension exists and is installed.',
288+ unnamedArgumentList: [
289+ SlashCommandArgument.fromProps({
290+ description: 'Extension name',
291+ typeList: [ARGUMENT_TYPE.STRING],
292+ isRequired: true,
293+ enumProvider: extensionNamesEnumProvider,
294+ }),
295+ ],
296+ helpString: `
297+ <div>
298+ Checks if a specified extension exists.
299+ </div>
300+ <div>
301+ <strong>Example:</strong>
302+ <ul>
303+ <li>
304+ <pre><code class="language-stscript">/extension-exists SillyTavern-LALib</code></pre>
305+ </li>
306+ </ul>
307+ </div>
308+ `,
309+ }));
310+
311+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
312+ name: 'reload-page',
313+ callback: async () => {
314+ toastr.info('Reloading the page...');
315+ location.reload();
316+ return '';
317+ },
318+ helpString: 'Reloads the current page. All further commands will not be processed.',
319+ }));
320+}
public/scripts/extensions.js+9 -5
@@ -1,5 +1,5 @@
11import { eventSource, event_types, saveSettings, saveSettingsDebounced, getRequestHeaders, animation_duration } from '../script.js';
22import { hideLoader, showLoader } from './loader.js';
33import { POPUP_RESULT, POPUP_TYPE, Popup, callGenericPopup } from './popup.js';
44import { renderTemplate, renderTemplateAsync } from './templates.js';
55import { isSubsetOf, setValueByPath } from './utils.js';
@@ -14,7 +14,9 @@ export {
1414 ModuleWorkerWrapper,
1515};
1616
17+/** @type {string[]} */
1718export let extensionNames = [];
19+
1820let manifests = {};
1921const defaultUrl = 'http://localhost:5100';
2022
@@ -241,7 +243,7 @@ function onEnableExtensionClick() {
241243 enableExtension(name, false);
242244}
243245
244246export async function enableExtension(name, reload = true) {
245247 extension_settings.disabledExtensions = extension_settings.disabledExtensions.filter(x => x !== name);
246248 stateChanged = true;
247249 await saveSettings();
@@ -252,7 +254,7 @@ async function enableExtension(name, reload = true) {
252254 }
253255}
254256
255257export async function disableExtension(name, reload = true) {
256258 extension_settings.disabledExtensions.push(name);
257259 stateChanged = true;
258260 await saveSettings();
@@ -1041,7 +1043,9 @@ export async function openThirdPartyExtensionMenu(suggestUrl = '') {
10411043 await installExtension(url);
10421044}
10431045
1044-jQuery(async function () {
1046+
1047+
1048+export async function initExtensions() {
10451049 await addExtensionsButtonAndMenu();
10461050 $('#extensionsMenuButton').css('display', 'flex');
10471051
@@ -1060,4 +1064,4 @@ jQuery(async function () {
10601064 * @listens #third_party_extension_button#click - The click event of the '#third_party_extension_button' element.
10611065 */
10621066 $('#third_party_extension_button').on('click', () => openThirdPartyExtensionMenu());
10631067});
public/scripts/extensions/assets/index.js+9 -0
@@ -184,6 +184,7 @@ function downloadAssetsList(url) {
184184 const url = isValidUrl(asset['url']) ? asset['url'] : '';
185185 const title = assetType === 'extension' ? `Extension repo/guide: ${url}` : 'Preview in browser';
186186 const previewIcon = (assetType === 'extension' || assetType === 'character') ? 'fa-arrow-up-right-from-square' : 'fa-headphones-simple';
187+ const toolTag = assetType === 'extension' && asset['tool'];
187188
188189 const assetBlock = $('<i></i>')
189190 .append(element)
@@ -193,12 +194,20 @@ function downloadAssetsList(url) {
193194 <a class="asset_preview" href="${url}" target="_blank" title="${title}">
194195 <i class="fa-solid fa-sm ${previewIcon}"></i>
195196 </a>
197+ ${toolTag ? '<span class="tag" title="Adds a function tool"><i class="fa-solid fa-sm fa-wrench"></i> Tool</span>' : ''}
196198 </span>
197199 <small class="asset-description">
198200 ${description}
199201 </small>
200202 </div>`);
201203
204+ assetBlock.find('.tag').on('click', function (e) {
205+ const a = document.createElement('a');
206+ a.href = 'https://docs.sillytavern.app/for-contributors/function-calling/';
207+ a.target = '_blank';
208+ a.click();
209+ });
210+
202211 if (assetType === 'character') {
203212 if (asset.highlight) {
204213 assetBlock.find('.asset-name').append('<i class="fa-solid fa-sm fa-trophy"></i>');
public/scripts/extensions/assets/style.css+9 -0
@@ -164,3 +164,12 @@
164164 gap: 5px;
165165 align-items: center;
166166}
167+
168+.asset-name .tag {
169+ gap: 5px;
170+ align-items: baseline;
171+ font-size: calc(var(--mainFontSize)* 0.8);
172+ cursor: pointer;
173+ opacity: 0.9;
174+ margin-left: 2px;
175+}
public/scripts/extensions/attachments/index.js+21 -0
@@ -1,3 +1,4 @@
1+import { event_types, eventSource, saveSettingsDebounced } from '../../../script.js';
12import { deleteAttachment, getDataBankAttachments, getDataBankAttachmentsForSource, getFileAttachment, uploadFileAttachmentToServer } from '../../chats.js';
23import { extension_settings, renderExtensionTemplateAsync } from '../../extensions.js';
34import { SlashCommand } from '../../slash-commands/SlashCommand.js';
@@ -196,7 +197,27 @@ async function enableDataBankAttachment(args, value) {
196197 return '';
197198}
198199
200+function cleanUpAttachments() {
201+ let shouldSaveSettings = false;
202+ if (extension_settings.character_attachments) {
203+ Object.values(extension_settings.character_attachments).flat().filter(a => a.text).forEach(a => {
204+ shouldSaveSettings = true;
205+ delete a.text;
206+ });
207+ }
208+ if (Array.isArray(extension_settings.attachments)) {
209+ extension_settings.attachments.filter(a => a.text).forEach(a => {
210+ shouldSaveSettings = true;
211+ delete a.text;
212+ });
213+ }
214+ if (shouldSaveSettings) {
215+ saveSettingsDebounced();
216+ }
217+}
218+
199219jQuery(async () => {
220+ eventSource.on(event_types.APP_READY, cleanUpAttachments);
200221 const manageButton = await renderExtensionTemplateAsync('attachments', 'manage-button', {});
201222 const attachButton = await renderExtensionTemplateAsync('attachments', 'attach-button', {});
202223 $('#data_bank_wand_container').append(manageButton);
public/scripts/extensions/caption/index.js+2 -1
@@ -1,6 +1,6 @@
11import { ensureImageFormatSupported, getBase64Async, isTrueBoolean, saveBase64AsFile } from '../../utils.js';
22import { getContext, getApiUrl, doExtrasFetch, extension_settings, modules, renderExtensionTemplateAsync } from '../../extensions.js';
33import { appendMediaToMessage, callPopup, eventSource, event_types, getRequestHeaders, main_api, saveChatConditional, saveSettingsDebounced, substituteParamsExtended } from '../../../script.js';
44import { getMessageTimeStamp } from '../../RossAscends-mods.js';
55import { SECRET_KEYS, secret_state } from '../../secrets.js';
66import { getMultimodalCaption } from '../shared.js';
@@ -403,6 +403,7 @@ jQuery(async function () {
403403 (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'openai' && (secret_state[SECRET_KEYS.OPENAI] || extension_settings.caption.allow_reverse_proxy)) ||
404404 (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'openrouter' && secret_state[SECRET_KEYS.OPENROUTER]) ||
405405 (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'zerooneai' && secret_state[SECRET_KEYS.ZEROONEAI]) ||
406+ (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'groq' && secret_state[SECRET_KEYS.GROQ]) ||
406407 (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'mistral' && (secret_state[SECRET_KEYS.MISTRALAI] || extension_settings.caption.allow_reverse_proxy)) ||
407408 (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'google' && (secret_state[SECRET_KEYS.MAKERSUITE] || extension_settings.caption.allow_reverse_proxy)) ||
408409 (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'anthropic' && (secret_state[SECRET_KEYS.CLAUDE] || extension_settings.caption.allow_reverse_proxy)) ||
public/scripts/extensions/caption/settings.html+10 -1
@@ -21,6 +21,7 @@
2121 <option value="anthropic">Anthropic</option>
2222 <option value="custom" data-i18n="Custom (OpenAI-compatible)">Custom (OpenAI-compatible)</option>
2323 <option value="google">Google AI Studio</option>
24+ <option value="groq">Groq</option>
2425 <option value="koboldcpp">KoboldCpp</option>
2526 <option value="llamacpp">llama.cpp</option>
2627 <option value="mistral">MistralAI</option>
@@ -34,7 +35,7 @@
3435 <div class="flex1 flex-container flexFlowColumn flexNoGap">
3536 <label for="caption_multimodal_model" data-i18n="Model">Model</label>
3637 <select id="caption_multimodal_model" class="flex1 text_pole">
3738 <option data-type="mistral" value="pixtral-12b-latest">pixtral-12b-latest</option>
3839 <option data-type="mistral" value="pixtral-12b-2409">pixtral-12b-2409</option>
3940 <option data-type="zerooneai" value="yi-vision">yi-vision</option>
4041 <option data-type="openai" value="gpt-4-vision-preview">gpt-4-vision-preview</option>
@@ -42,6 +43,8 @@
4243 <option data-type="openai" value="gpt-4o">gpt-4o</option>
4344 <option data-type="openai" value="gpt-4o-mini">gpt-4o-mini</option>
4445 <option data-type="openai" value="chatgpt-4o-latest">chatgpt-4o-latest</option>
46+ <option data-type="anthropic" value="claude-3-5-sonnet-latest">claude-3-5-sonnet-latest</option>
47+ <option data-type="anthropic" value="claude-3-5-sonnet-20241022">claude-3-5-sonnet-20241022</option>
4548 <option data-type="anthropic" value="claude-3-5-sonnet-20240620">claude-3-5-sonnet-20240620</option>
4649 <option data-type="anthropic" value="claude-3-opus-20240229">claude-3-opus-20240229</option>
4750 <option data-type="anthropic" value="claude-3-sonnet-20240229">claude-3-sonnet-20240229</option>
@@ -49,14 +52,20 @@
4952 <option data-type="google" value="gemini-1.5-flash">gemini-1.5-flash</option>
5053 <option data-type="google" value="gemini-1.5-flash-latest">gemini-1.5-flash-latest</option>
5154 <option data-type="google" value="gemini-1.5-flash-001">gemini-1.5-flash-001</option>
55+ <option data-type="google" value="gemini-1.5-flash-002">gemini-1.5-flash-002</option>
5256 <option data-type="google" value="gemini-1.5-flash-exp-0827">gemini-1.5-flash-exp-0827</option>
5357 <option data-type="google" value="gemini-1.5-flash-8b-exp-0827">gemini-1.5-flash-8b-exp-0827</option>
58+ <option data-type="google" value="gemini-1.5-flash-8b-exp-0924">gemini-1.5-flash-8b-exp-0924</option>
5459 <option data-type="google" value="gemini-1.5-pro">gemini-1.5-pro</option>
5560 <option data-type="google" value="gemini-1.5-pro-latest">gemini-1.5-pro-latest</option>
5661 <option data-type="google" value="gemini-1.5-pro-001">gemini-1.5-pro-001</option>
62+ <option data-type="google" value="gemini-1.5-pro-002">gemini-1.5-pro-002</option>
5763 <option data-type="google" value="gemini-1.5-pro-exp-0801">gemini-1.5-pro-exp-0801</option>
5864 <option data-type="google" value="gemini-1.5-pro-exp-0827">gemini-1.5-pro-exp-0827</option>
5965 <option data-type="google" value="gemini-pro-vision">gemini-pro-vision</option>
66+ <option data-type="groq" value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview</option>
67+ <option data-type="groq" value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview</option>
68+ <option data-type="groq" value="llava-v1.5-7b-4096-preview">llava-v1.5-7b-4096-preview</option>
6069 <option data-type="openrouter" value="openai/gpt-4-vision-preview">openai/gpt-4-vision-preview</option>
6170 <option data-type="openrouter" value="openai/gpt-4o">openai/gpt-4o</option>
6271 <option data-type="openrouter" value="openai/gpt-4o-2024-05-13">openai/gpt-4o-2024-05-13</option>
public/scripts/extensions/connection-manager/edit.html+12 -0
@@ -0,0 +1,12 @@
1+<div>
2+ <h3>Included settings:</h3>
3+ <div class="justifyLeft flex-container flexFlowColumn flexNoGap">
4+ {{#each settings}}
5+ <label class="checkbox_label">
6+ <input type="checkbox" value="{{@key}}" name="exclude"{{#if this}} checked{{/if}}>
7+ <span>{{@key}}</span>
8+ </label>
9+ {{/each}}
10+ </div>
11+ <h3 data-i18n="Profile name:">Profile name:</h3>
12+</div>
public/scripts/extensions/connection-manager/index.js+93 -12
@@ -1,6 +1,6 @@
11import { event_types, eventSource, main_api, saveSettingsDebounced } from '../../../script.js';
22import { extension_settings, renderExtensionTemplateAsync } from '../../extensions.js';
33import { callGenericPopup, Popup, POPUP_RESULT, POPUP_TYPE } from '../../popup.js';
44import { SlashCommand } from '../../slash-commands/SlashCommand.js';
55import { SlashCommandAbortController } from '../../slash-commands/SlashCommandAbortController.js';
66import { ARGUMENT_TYPE, SlashCommandArgument, SlashCommandNamedArgument } from '../../slash-commands/SlashCommandArgument.js';
@@ -10,6 +10,7 @@ import { enumTypes, SlashCommandEnumValue } from '../../slash-commands/SlashComm
1010import { SlashCommandParser } from '../../slash-commands/SlashCommandParser.js';
1111import { SlashCommandScope } from '../../slash-commands/SlashCommandScope.js';
1212import { collapseSpaces, getUniqueName, isFalseBoolean, uuidv4 } from '../../utils.js';
13+import { t } from '../../i18n.js';
1314
1415const MODULE_NAME = 'connection-manager';
1516const NONE = '<None>';
@@ -135,6 +136,7 @@ const profilesProvider = () => [
135136 * @property {string} [context] Context Template
136137 * @property {string} [instruct-state] Instruct Mode
137138 * @property {string} [tokenizer] Tokenizer
139+ * @property {string[]} [exclude] Commands to exclude
138140 */
139141
140142/**
@@ -171,8 +173,13 @@ function findProfileByName(value) {
171173async function readProfileFromCommands(mode, profile, cleanUp = false) {
172174 const commands = mode === 'cc' ? CC_COMMANDS : TC_COMMANDS;
173175 const opposingCommands = mode === 'cc' ? TC_COMMANDS : CC_COMMANDS;
176+ const excludeList = Array.isArray(profile.exclude) ? profile.exclude : [];
174177 for (const command of commands) {
175178 try {
179+ if (excludeList.includes(command)) {
180+ continue;
181+ }
182+
176183 const args = getNamedArguments();
177184 const result = await SlashCommandParser.commands[command].callback(args, '');
178185 if (result) {
@@ -208,15 +215,37 @@ async function readProfileFromCommands(mode, profile, cleanUp = false) {
208215async function createConnectionProfile(forceName = null) {
209216 const mode = main_api === 'openai' ? 'cc' : 'tc';
210217 const id = uuidv4();
218+ /** @type {ConnectionProfile} */
211219 const profile = {
212220 id,
213221 mode,
222+ exclude: [],
214223 };
215224
216225 await readProfileFromCommands(mode, profile);
217226
218227 const profileForDisplay = makeFancyProfile(profile);
219228 const template = $(await renderExtensionTemplateAsync(MODULE_NAME, 'profile', { profile: profileForDisplay }));
229+ template.find('input[name="exclude"]').on('input', function () {
230+ const fancyName = String($(this).val());
231+ const keyName = Object.entries(FANCY_NAMES).find(x => x[1] === fancyName)?.[0];
232+ if (!keyName) {
233+ console.warn('Key not found for fancy name:', fancyName);
234+ return;
235+ }
236+
237+ if (!Array.isArray(profile.exclude)) {
238+ profile.exclude = [];
239+ }
240+
241+ const excludeState = !$(this).prop('checked');
242+ if (excludeState) {
243+ profile.exclude.push(keyName);
244+ } else {
245+ const index = profile.exclude.indexOf(keyName);
246+ index !== -1 && profile.exclude.splice(index, 1);
247+ }
248+ });
220249 const isNameTaken = (n) => extension_settings.connectionManager.profiles.some(p => p.name === n);
221250 const suggestedName = getUniqueName(collapseSpaces(`${profile.api ?? ''} ${profile.model ?? ''} - ${profile.preset ?? ''}`), isNameTaken);
222251 const name = forceName ?? await callGenericPopup(template, POPUP_TYPE.INPUT, suggestedName, { rows: 2 });
@@ -230,7 +259,13 @@ async function createConnectionProfile(forceName = null) {
230259 return null;
231260 }
232261
233- profile.name = name;
262+ if (Array.isArray(profile.exclude)) {
263+ for (const command of profile.exclude) {
264+ delete profile[command];
265+ }
266+ }
267+
268+ profile.name = String(name);
234269 return profile;
235270}
236271
@@ -250,7 +285,7 @@ async function deleteConnectionProfile() {
250285 }
251286
252287 const name = extension_settings.connectionManager.profiles[index].name;
253288 const confirm = await Popup.show.confirm('t`Are you sure you want to delete the selected profile?'`, name);
254289
255290 if (!confirm) {
256291 return;
@@ -357,10 +392,14 @@ async function renderDetailsContent(detailsContent) {
357392 const profile = extension_settings.connectionManager.profiles.find(p => p.id === selectedProfile);
358393 if (profile) {
359394 const profileForDisplay = makeFancyProfile(profile);
360395 const templatetemplateParams = await renderExtensionTemplateAsync(MODULE_NAME, 'view', { profile: profileForDisplay });
396+ if (Array.isArray(profile.exclude) && profile.exclude.length > 0) {
397+ templateParams.omitted = profile.exclude.map(e => FANCY_NAMES[e]).join(', ');
398+ }
399+ const template = await renderExtensionTemplateAsync(MODULE_NAME, 'view', templateParams);
361400 detailsContent.innerHTML = template;
362401 } else {
363402 detailsContent.textContent = 't`No profile selected'`;
364403 }
365404}
366405
@@ -472,29 +511,71 @@ async function renderDetailsContent(detailsContent) {
472511 await eventSource.emit(event_types.CONNECTION_PROFILE_LOADED, NONE);
473512 });
474513
475514 const renameButtoneditButton = document.getElementById('rename_connection_profileedit_connection_profile');
476515 renameButtoneditButton.addEventListener('click', async () => {
477516 const selectedProfile = extension_settings.connectionManager.selectedProfile;
478517 const profile = extension_settings.connectionManager.profiles.find(p => p.id === selectedProfile);
479518 if (!profile) {
480519 console.log('No profile selected');
481520 return;
482521 }
522+ if (!Array.isArray(profile.exclude)) {
523+ profile.exclude = [];
524+ }
525+
526+ let saveChanges = false;
527+ const sortByViewOrder = (a, b) => Object.keys(FANCY_NAMES).indexOf(a) - Object.keys(FANCY_NAMES).indexOf(b);
528+ const commands = profile.mode === 'cc' ? CC_COMMANDS : TC_COMMANDS;
529+ const settings = commands.slice().sort(sortByViewOrder).reduce((acc, command) => {
530+ const fancyName = FANCY_NAMES[command];
531+ acc[fancyName] = !profile.exclude.includes(command);
532+ return acc;
533+ }, {});
534+ const template = $(await renderExtensionTemplateAsync(MODULE_NAME, 'edit', { name: profile.name, settings }));
535+ const newName = await callGenericPopup(template, POPUP_TYPE.INPUT, profile.name, {
536+ customButtons: [{
537+ text: t`Save and Update`,
538+ classes: ['popup-button-ok'],
539+ result: POPUP_RESULT.AFFIRMATIVE,
540+ action: () => {
541+ saveChanges = true;
542+ },
543+ }],
544+ });
483545
484- const newName = await Popup.show.input('Enter a new name', null, profile.name, { rows: 2 });
485546 if (!newName) {
486547 return;
487548 }
488549
489550 if (profile.name !== newName && extension_settings.connectionManager.profiles.some(p => p.name === newName)) {
490551 toastr.error('A profile with the same name already exists.');
491552 return;
492553 }
493554
494- profile.name = newName;
555+ const newExcludeList = template.find('input[name="exclude"]:not(:checked)').map(function () {
556+ return Object.entries(FANCY_NAMES).find(x => x[1] === String($(this).val()))?.[0];
557+ }).get();
558+
559+ if (newExcludeList.length !== profile.exclude.length || !newExcludeList.every(e => profile.exclude.includes(e))) {
560+ profile.exclude = newExcludeList;
561+ for (const command of newExcludeList) {
562+ delete profile[command];
563+ }
564+ if (saveChanges) {
565+ await updateConnectionProfile(profile);
566+ } else {
567+ toastr.info('Press "Update" to record them into the profile.', 'Included settings list updated');
568+ }
569+ }
570+
571+ if (profile.name !== newName) {
572+ toastr.success('Connection profile renamed.');
573+ profile.name = String(newName);
574+ }
575+
495576 saveSettingsDebounced();
496577 renderConnectionProfiles(profiles);
497- toastr.success('Connection profile renamed', '', { timeOut: 1500 });
578+ await renderDetailsContent(detailsContent);
498579 });
499580
500581 /** @type {HTMLElement} */
public/scripts/extensions/connection-manager/profile.html+12 -3
@@ -2,11 +2,20 @@
22 <h2 data-i18n="Creating a Connection Profile">
33 Creating a Connection Profile
44 </h2>
55 <uldiv class="justifyLeft flex-container flexFlowColumn flexNoGap">
66 {{#each profile}}
7- <li><strong data-i18n="{{@key}}">{{@key}}:</strong>&nbsp;{{this}}</li>
7+ <label class="checkbox_label">
8+ <input type="checkbox" value="{{@key}}" name="exclude" checked>
9+ <span><strong data-i18n="{{@key}}">{{@key}}:</strong>&nbsp;{{this}}</span>
10+ </label>
811 {{/each}}
912 </uldiv>
13+ <div class="marginTop5">
14+ <small>
15+ <b>Hint:</b>
16+ <i>Click on the setting name to omit it from the profile.</i>
17+ </small>
18+ </div>
1019 <h3 data-i18n="Enter a name:">
1120 Enter a name:
1221 </h3>
public/scripts/extensions/connection-manager/settings.html+1 -1
@@ -13,7 +13,7 @@
1313 <i id="view_connection_profile" class="menu_button fa-solid fa-info-circle" title="View connection profile details" data-i18n="[title]View connection profile details"></i>
1414 <i id="create_connection_profile" class="menu_button fa-solid fa-file-circle-plus" title="Create a new connection profile" data-i18n="[title]Create a new connection profile"></i>
1515 <i id="update_connection_profile" class="menu_button fa-solid fa-save" title="Update a connection profile" data-i18n="[title]Update a connection profile"></i>
1616 <i id="rename_connection_profileedit_connection_profile" class="menu_button fa-solid fa-pencil" title="RenameEdit a connection profile" data-i18n="[title]RenameEdit a connection profile"></i>
1717 <i id="reload_connection_profile" class="menu_button fa-solid fa-recycle" title="Reload a connection profile" data-i18n="[title]Reload a connection profile"></i>
1818 <i id="delete_connection_profile" class="menu_button fa-solid fa-trash-can" title="Delete a connection profile" data-i18n="[title]Delete a connection profile"></i>
1919 </div>
public/scripts/extensions/connection-manager/view.html+5 -0
@@ -3,3 +3,8 @@
33 <li><strong data-i18n="{{@key}}">{{@key}}:</strong>&nbsp;{{this}}</li>
44 {{/each}}
55</ul>
6+{{#if omitted}}
7+<div class="margin5">
8+ <strong data-i18n="Omitted Settings:">Omitted Settings:</strong>&nbsp;<span>{{omitted}}</span>
9+</div>
10+{{/if}}
public/scripts/extensions/expressions/index.js+41 -59
@@ -2,16 +2,17 @@ import { callPopup, eventSource, event_types, generateRaw, getRequestHeaders, ma
22import { dragElement, isMobile } from '../../RossAscends-mods.js';
33import { getContext, getApiUrl, modules, extension_settings, ModuleWorkerWrapper, doExtrasFetch, renderExtensionTemplateAsync } from '../../extensions.js';
44import { loadMovingUIState, power_user } from '../../power-user.js';
55import { onlyUnique, debounce, getCharaFilename, trimToEndSentence, trimToStartSentence, waitUntilCondition, findChar } from '../../utils.js';
66import { hideMutedSprites } from '../../group-chats.js';
77import { isJsonSchemaSupported } from '../../textgen-settings.js';
88import { debounce_timeout } from '../../constants.js';
99import { SlashCommandParser } from '../../slash-commands/SlashCommandParser.js';
1010import { SlashCommand } from '../../slash-commands/SlashCommand.js';
1111import { ARGUMENT_TYPE, SlashCommandArgument, SlashCommandNamedArgument } from '../../slash-commands/SlashCommandArgument.js';
12-import { isFunctionCallingSupported } from '../../openai.js';
1312import { SlashCommandEnumValue, enumTypes } from '../../slash-commands/SlashCommandEnumValue.js';
1413import { commonEnumProviders } from '../../slash-commands/SlashCommandCommonEnumsProvider.js';
14+import { slashCommandReturnHelper } from '../../slash-commands/SlashCommandReturnHelper.js';
15+import { SlashCommandClosure } from '../../slash-commands/SlashCommandClosure.js';
1516export { MODULE_NAME };
1617
1718const MODULE_NAME = 'expressions';
@@ -19,7 +20,6 @@ const UPDATE_INTERVAL = 2000;
1920const STREAMING_UPDATE_INTERVAL = 10000;
2021const TALKINGCHECK_UPDATE_INTERVAL = 500;
2122const DEFAULT_FALLBACK_EXPRESSION = 'joy';
22-const FUNCTION_NAME = 'set_emotion';
2323const DEFAULT_LLM_PROMPT = 'Ignore previous instructions. Classify the emotion of the last message. Output just one word, e.g. "joy" or "anger". Choose only one of the following labels: {{labels}}';
2424const DEFAULT_EXPRESSIONS = [
2525 'talkinghead',
@@ -1015,10 +1015,6 @@ async function getLlmPrompt(labels) {
10151015 return '';
10161016 }
10171017
1018- if (isFunctionCallingSupported()) {
1019- return '';
1020- }
1021-
10221018 const labelsString = labels.map(x => `"${x}"`).join(', ');
10231019 const prompt = substituteParamsExtended(String(extension_settings.expressions.llmPrompt), { labels: labelsString });
10241020 return prompt;
@@ -1054,41 +1050,6 @@ function parseLlmResponse(emotionResponse, labels) {
10541050 throw new Error('Could not parse emotion response ' + emotionResponse);
10551051}
10561052
1057-/**
1058- * Registers the function tool for the LLM API.
1059- * @param {FunctionToolRegister} args Function tool register arguments.
1060- */
1061-function onFunctionToolRegister(args) {
1062- if (inApiCall && extension_settings.expressions.api === EXPRESSION_API.llm && isFunctionCallingSupported()) {
1063- // Only trigger on quiet mode
1064- if (args.type !== 'quiet') {
1065- return;
1066- }
1067-
1068- const emotions = DEFAULT_EXPRESSIONS.filter((e) => e != 'talkinghead');
1069- const jsonSchema = {
1070- $schema: 'http://json-schema.org/draft-04/schema#',
1071- type: 'object',
1072- properties: {
1073- emotion: {
1074- type: 'string',
1075- enum: emotions,
1076- description: `One of the following: ${JSON.stringify(emotions)}`,
1077- },
1078- },
1079- required: [
1080- 'emotion',
1081- ],
1082- };
1083- args.registerFunctionTool(
1084- FUNCTION_NAME,
1085- substituteParams('Sets the label that best describes the current emotional state of {{char}}. Only select one of the enumerated values.'),
1086- jsonSchema,
1087- true,
1088- );
1089- }
1090-}
1091-
10921053function onTextGenSettingsReady(args) {
10931054 // Only call if inside an API call
10941055 if (inApiCall && extension_settings.expressions.api === EXPRESSION_API.llm && isJsonSchemaSupported()) {
@@ -1162,18 +1123,9 @@ export async function getExpressionLabel(text, expressionsApi = extension_settin
11621123
11631124 const expressionsList = await getExpressionsList();
11641125 const prompt = substituteParamsExtended(customPrompt, { labels: expressionsList }) || await getLlmPrompt(expressionsList);
1165- let functionResult = null;
11661126 eventSource.once(event_types.TEXT_COMPLETION_SETTINGS_READY, onTextGenSettingsReady);
1167- eventSource.once(event_types.LLM_FUNCTION_TOOL_REGISTER, onFunctionToolRegister);
1168- eventSource.once(event_types.LLM_FUNCTION_TOOL_CALL, (/** @type {FunctionToolCall} */ args) => {
1169- if (args.name !== FUNCTION_NAME) {
1170- return;
1171- }
1172-
1173- functionResult = args?.arguments;
1174- });
11751127 const emotionResponse = await generateRaw(text, main_api, false, false, prompt);
11761128 return parseLlmResponse(functionResult || emotionResponse, expressionsList);
11771129 }
11781130 // Extras
11791131 default: {
@@ -2105,14 +2057,20 @@ function migrateSettings() {
21052057 }));
21062058 SlashCommandParser.addCommandObject(SlashCommand.fromProps({
21072059 name: 'lastsprite',
21082060 callback: (_, valuename) => lastExpression[String(value).trim()] ?? '',{
2061+ if (typeof name !== 'string') throw new Error('name must be a string');
2062+ const char = findChar({ name: name });
2063+ const sprite = lastExpression[char?.name ?? name] ?? '';
2064+ return sprite;
2065+ },
21092066 returns: 'the last set sprite / expression for the named character.',
21102067 unnamedArgumentList: [
21112068 SlashCommandArgument.fromProps({
21122069 description: 'characterCharacter name - or unique character identifier (avatar key)',
21132070 typeList: [ARGUMENT_TYPE.STRING],
21142071 isRequired: true,
21152072 enumProvider: commonEnumProviders.characters('character'),
2073+ forceEnum: true,
21162074 }),
21172075 ],
21182076 helpString: 'Returns the last set sprite / expression for the named character.',
@@ -2128,18 +2086,42 @@ function migrateSettings() {
21282086 name: 'classify-expressions',
21292087 aliases: ['expressions'],
21302088 callback: async (args) => {
2131- const list = await getExpressionsList();
2089+ /** @type {import('../../slash-commands/SlashCommandReturnHelper.js').SlashCommandReturnType} */
2132- switch (String(args.format).toLowerCase()) {
2090+ // @ts-ignore
2091+ let returnType = args.return;
2092+
2093+ // Old legacy return type handling
2094+ if (args.format) {
2095+ toastr.warning(`Legacy argument 'format' with value '${args.format}' is deprecated. Please use 'return' instead. Routing to the correct return type...`, 'Deprecation warning');
2096+ const type = String(args?.format).toLowerCase().trim();
2097+ switch (type) {
21332098 case 'json':
2134- return JSON.stringify(list);
2099+ returnType = 'object';
2100+ break;
21352101 default:
2136- return list.join(', ');
2102+ returnType = 'pipe';
2103+ break;
2104+ }
21372105 }
2106+
2107+ // Now the actual new return type handling
2108+ const list = await getExpressionsList();
2109+
2110+ return await slashCommandReturnHelper.doReturn(returnType ?? 'pipe', list, { objectToStringFunc: list => list.join(', ') });
21382111 },
21392112 namedArgumentList: [
21402113 SlashCommandNamedArgument.fromProps({
2114+ name: 'return',
2115+ description: 'The way how you want the return value to be provided',
2116+ typeList: [ARGUMENT_TYPE.STRING],
2117+ defaultValue: 'pipe',
2118+ enumList: slashCommandReturnHelper.enumList({ allowObject: true }),
2119+ forceEnum: true,
2120+ }),
2121+ // TODO remove some day
2122+ SlashCommandNamedArgument.fromProps({
21412123 name: 'format',
21422124 description: '!!! DEPRECATED - use "return" instead !!! The format to return the list in: comma-separated plain text or JSON array. Default is plain text.',
21432125 typeList: [ARGUMENT_TYPE.STRING],
21442126 enumList: [
21452127 new SlashCommandEnumValue('plain', null, enumTypes.enum, ', '),
public/scripts/extensions/gallery/index.js+9 -6
@@ -26,9 +26,11 @@ let paginationVisiblePages = 10;
2626let paginationMaxLinesPerPage = 2;
2727let galleryMaxRows = 3;
2828
29-$('body').on('click', '.dragClose', function () {
29+// Remove all draggables associated with the gallery
30- const relatedId = $(this).data('related-id'); // Get the ID of the related draggable
30+$('#movingDivs').on('click', '.dragClose', function () {
31- $(`body > .draggable[id="${relatedId}"]`).remove(); // Remove the associated draggable
31+ const relatedId = $(this).data('related-id');
32+ if (!relatedId) return;
33+ $(`#movingDivs > .draggable[id="${relatedId}"]`).remove();
3234});
3335
3436const CUSTOM_GALLERY_REMOVED_EVENT = 'galleryRemoved';
@@ -290,7 +292,7 @@ function makeMovable(id = 'gallery') {
290292
291293 $('#dragGallery').css('display', 'block');
292294
293295 $('body#movingDivs').append(newElement);
294296
295297 loadMovingUIState();
296298 $(`.draggable[forChar="${id}"]`).css('display', 'block');
@@ -362,8 +364,8 @@ function makeDragImg(id, url) {
362364 }
363365 }
364366
365367 // Step 3: Attach it to the bodymovingDivs container
366368 document.bodygetElementById('movingDivs').appendChild(newElement);
367369
368370 // Step 4: Call dragElement and loadMovingUIState
369371 const appendedElement = document.getElementById(uniqueId);
@@ -439,6 +441,7 @@ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
439441 description: 'character name',
440442 typeList: [ARGUMENT_TYPE.STRING],
441443 enumProvider: commonEnumProviders.characters('character'),
444+ forceEnum: true,
442445 }),
443446 SlashCommandNamedArgument.fromProps({
444447 name: 'group',
public/scripts/extensions/quick-reply/html/settings.html+1 -1
@@ -12,7 +12,7 @@
1212 <input type="checkbox" id="qr--isCombined"><span data-i18n="Combine Quick Replies">Combine Quick Replies</span>
1313 </label>
1414 <label class="flex-container">
1515 <input type="checkbox" id="qr--showPopoutButton"><span data-i18n="Show Popout Button">Show Popout Button (on Desktop)</span>
1616 </label>
1717
1818 <hr>
public/scripts/extensions/quick-reply/style.css+9 -0
@@ -34,6 +34,14 @@
3434 right: 0.25em;
3535 top: 0;
3636}
37+
38+/*hide QR popout for mobile*/
39+@media screen and (max-width: 1000px) {
40+ #qr--bar > #qr--popoutTrigger {
41+ display:none;
42+ }
43+}
44+
3745#qr--bar.popoutVisible {
3846 padding-right: 2.5em;
3947}
@@ -55,6 +63,7 @@
5563 opacity: 0.5;
5664 transition: all 250ms;
5765}
66+
5867#qr--popout > .qr--body {
5968 overflow-y: auto;
6069}
public/scripts/extensions/regex/editor.html+2 -2
@@ -117,7 +117,7 @@
117117 <input type="checkbox" name="disabled" />
118118 <span data-i18n="Disabled">Disabled</span>
119119 </label>
120- <label class="checkbox flex-container">
120+ <label class="checkbox flex-container" title="Run the regex script when the message belonging a to specified role(s) is edited.">
121121 <input type="checkbox" name="run_on_edit" />
122122 <span data-i18n="Run On Edit">Run On Edit</span>
123123 </label>
@@ -132,7 +132,7 @@
132132 <small data-i18n="ext_regex_other_options" data-i18n="Ephemerality">Ephemerality</small>
133133 <span class="fa-solid fa-circle-question note-link-span" title="By default, regex scripts alter the chat file directly and irreversibly.&#13;Enabling either (or both) of the options below will prevent chat file alteration, while still altering the specified item(s)."></span>
134134 </span>
135135 <label class="checkbox flex-container" data-i18n="[title]ext_regex_only_format_visual_desc" title="Chat history file contents won't change, but regex will be applied to the messages displayed in the Chat UI.">
136136 <input type="checkbox" name="only_format_display" />
137137 <span data-i18n="Only Format Display">Alter Chat Display</span>
138138 </label>
public/scripts/extensions/regex/engine.js+7 -2
@@ -44,9 +44,9 @@ function getScopedRegex() {
4444 * @param {regex_placement} placement The placement of the string
4545 * @param {RegexParams} params The parameters to use for the regex script
4646 * @returns {string} The regexed string
4747 * @typedef {{characterOverride?: string, isMarkdown?: boolean, isPrompt?: boolean, isEdit?: boolean, depth?: number }} RegexParams The parameters to use for the regex script
4848 */
4949function getRegexedString(rawString, placement, { characterOverride, isMarkdown, isPrompt, isEdit, depth } = {}) {
5050 // WTF have you passed me?
5151 if (typeof rawString !== 'string') {
5252 console.warn('getRegexedString: rawString is not a string. Returning empty string.');
@@ -68,6 +68,11 @@ function getRegexedString(rawString, placement, { characterOverride, isMarkdown,
6868 // Script applies to all cases when neither "only"s are true, but there's no need to do it when `isMarkdown`, the as source (chat history) should already be changed beforehand
6969 (!script.markdownOnly && !script.promptOnly && !isMarkdown)
7070 ) {
71+ if (isEdit && !script.runOnEdit) {
72+ console.debug(`getRegexedString: Skipping script ${script.scriptName} because it does not run on edit`);
73+ return;
74+ }
75+
7176 // Check if the depth is within the min/max depth
7277 if (typeof depth === 'number' && depth >= 0) {
7378 if (!isNaN(script.minDepth) && script.minDepth !== null && script.minDepth >= 0 && depth < script.minDepth) {
public/scripts/extensions/shared.js+5 -1
@@ -36,7 +36,7 @@ export async function getMultimodalCaption(base64Img, prompt) {
3636 const isVllm = extension_settings.caption.multimodal_api === 'vllm';
3737 const base64Bytes = base64Img.length * 0.75;
3838 const compressionLimit = 2 * 1024 * 1024;
3939 if ((['google', 'openrouter', 'mistral', 'groq'].includes(extension_settings.caption.multimodal_api) && base64Bytes > compressionLimit) || isOoba || isKoboldCpp) {
4040 const maxSide = 1024;
4141 base64Img = await createThumbnail(base64Img, maxSide, maxSide, 'image/jpeg');
4242 }
@@ -135,6 +135,10 @@ function throwIfInvalidModel(useReverseProxy) {
135135 throw new Error('01.AI API key is not set.');
136136 }
137137
138+ if (extension_settings.caption.multimodal_api === 'groq' && !secret_state[SECRET_KEYS.GROQ]) {
139+ throw new Error('Groq API key is not set.');
140+ }
141+
138142 if (extension_settings.caption.multimodal_api === 'google' && !secret_state[SECRET_KEYS.MAKERSUITE] && !useReverseProxy) {
139143 throw new Error('Google AI Studio API key is not set.');
140144 }
public/scripts/extensions/stable-diffusion/index.js+434 -82
@@ -1,8 +1,6 @@
11import {
22 saveSettingsDebounced,
33 systemUserName,
4- hideSwipeButtons,
5- showSwipeButtons,
64 getRequestHeaders,
75 event_types,
86 eventSource,
@@ -20,7 +18,7 @@ import {
2018} from '../../../script.js';
2119import { getApiUrl, getContext, extension_settings, doExtrasFetch, modules, renderExtensionTemplateAsync, writeExtensionField } from '../../extensions.js';
2220import { selected_group } from '../../group-chats.js';
2321import { stringFormat, initScrollHeight, resetScrollHeight, getCharaFilename, saveBase64AsFile, getBase64Async, delay, isTrueBoolean, debounce, isFalseBoolean, deepMerge } from '../../utils.js';
2422import { getMessageTimeStamp, humanizedDateTime } from '../../RossAscends-mods.js';
2523import { SECRET_KEYS, secret_state, writeSecret } from '../../secrets.js';
2624import { getNovelUnlimitedImageGeneration, getNovelAnlas, loadNovelSubscriptionData } from '../../nai-settings.js';
@@ -31,6 +29,8 @@ import { ARGUMENT_TYPE, SlashCommandArgument, SlashCommandNamedArgument } from '
3129import { debounce_timeout } from '../../constants.js';
3230import { SlashCommandEnumValue } from '../../slash-commands/SlashCommandEnumValue.js';
3331import { POPUP_RESULT, POPUP_TYPE, Popup, callGenericPopup } from '../../popup.js';
32+import { commonEnumProviders } from '../../slash-commands/SlashCommandCommonEnumsProvider.js';
33+import { ToolManager } from '../../tool-calling.js';
3434export { MODULE_NAME };
3535
3636const MODULE_NAME = 'sd';
@@ -61,9 +61,11 @@ const initiators = {
6161 interactive: 'interactive',
6262 wand: 'wand',
6363 swipe: 'swipe',
64+ tool: 'tool',
6465};
6566
6667const generationMode = {
68+ TOOL: -2,
6769 MESSAGE: -1,
6870 CHARACTER: 0,
6971 USER: 1,
@@ -86,6 +88,7 @@ const multimodalMap = {
8688};
8789
8890const modeLabels = {
91+ [generationMode.TOOL]: 'Function Tool Prompt Description',
8992 [generationMode.MESSAGE]: 'Chat Message Template',
9093 [generationMode.CHARACTER]: 'Character ("Yourself")',
9194 [generationMode.FACE]: 'Portrait ("Your Face")',
@@ -123,8 +126,12 @@ const messageTrigger = {
123126};
124127
125128const promptTemplates = {
126129 // Not really a prompt template, rather an outcome message template and function tool prompt
127130 [generationMode.MESSAGE]: '[{{char}} sends a picture that contains: {{prompt}}].',
131+ [generationMode.TOOL]: [
132+ 'The text prompt used to generate the image.',
133+ 'Must represent an exhaustive description of the desired image that will allow an artist or a photographer to perfectly recreate it.',
134+ ].join(' '),
128135 [generationMode.CHARACTER]: 'In the next response I want you to provide only a detailed comma-delimited list of keywords and phrases which describe {{char}}. The list must include all of the following items in this order: name, species and race, gender, age, clothing, occupation, physical features and appearances. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase \'full body portrait,\'',
129136 //face-specific prompt
130137 [generationMode.FACE]: 'In the next response I want you to provide only a detailed comma-delimited list of keywords and phrases which describe {{char}}. The list must include all of the following items in this order: name, species and race, gender, age, facial features and expressions, occupation, hair and hair accessories (if any), what they are wearing on their upper body (if anything). Do not describe anything below their neck. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase \'close up facial portrait,\'',
@@ -212,6 +219,7 @@ const defaultSettings = {
212219 // Automatic1111/Horde exclusives
213220 restore_faces: false,
214221 enable_hr: false,
222+ adetailer_face: false,
215223
216224 // Horde settings
217225 horde: false,
@@ -221,11 +229,11 @@ const defaultSettings = {
221229
222230 // Refine mode
223231 refine_mode: false,
224- expand: false,
225232 interactive_mode: false,
226233 multimodal_captioning: false,
227234 snap: false,
228235 free_extend: false,
236+ function_tool: false,
229237
230238 prompts: promptTemplates,
231239
@@ -240,7 +248,7 @@ const defaultSettings = {
240248 drawthings_auth: '',
241249
242250 hr_upscaler: 'Latent',
243251 hr_scale: 21.0,
244252 hr_scale_min: 1.0,
245253 hr_scale_max: 4.0,
246254 hr_scale_step: 0.1,
@@ -260,10 +268,6 @@ const defaultSettings = {
260268 clip_skip: 1,
261269
262270 // NovelAI settings
263- novel_upscale_ratio_min: 1.0,
264- novel_upscale_ratio_max: 4.0,
265- novel_upscale_ratio_step: 0.1,
266- novel_upscale_ratio: 1.0,
267271 novel_anlas_guard: false,
268272 novel_sm: false,
269273 novel_sm_dyn: false,
@@ -295,6 +299,10 @@ const defaultSettings = {
295299const writePromptFieldsDebounced = debounce(writePromptFields, debounce_timeout.relaxed);
296300
297301function processTriggers(chat, _, abort) {
302+ if (extension_settings.sd.function_tool && ToolManager.isToolCallingSupported()) {
303+ return;
304+ }
305+
298306 if (!extension_settings.sd.interactive_mode) {
299307 return;
300308 }
@@ -416,7 +424,6 @@ async function loadSettings() {
416424 $('#sd_hr_scale').val(extension_settings.sd.hr_scale).trigger('input');
417425 $('#sd_denoising_strength').val(extension_settings.sd.denoising_strength).trigger('input');
418426 $('#sd_hr_second_pass_steps').val(extension_settings.sd.hr_second_pass_steps).trigger('input');
419- $('#sd_novel_upscale_ratio').val(extension_settings.sd.novel_upscale_ratio).trigger('input');
420427 $('#sd_novel_anlas_guard').prop('checked', extension_settings.sd.novel_anlas_guard);
421428 $('#sd_novel_sm').prop('checked', extension_settings.sd.novel_sm);
422429 $('#sd_novel_sm_dyn').prop('checked', extension_settings.sd.novel_sm_dyn);
@@ -429,8 +436,8 @@ async function loadSettings() {
429436 $('#sd_horde_sanitize').prop('checked', extension_settings.sd.horde_sanitize);
430437 $('#sd_restore_faces').prop('checked', extension_settings.sd.restore_faces);
431438 $('#sd_enable_hr').prop('checked', extension_settings.sd.enable_hr);
439+ $('#sd_adetailer_face').prop('checked', extension_settings.sd.adetailer_face);
432440 $('#sd_refine_mode').prop('checked', extension_settings.sd.refine_mode);
433- $('#sd_expand').prop('checked', extension_settings.sd.expand);
434441 $('#sd_multimodal_captioning').prop('checked', extension_settings.sd.multimodal_captioning);
435442 $('#sd_auto_url').val(extension_settings.sd.auto_url);
436443 $('#sd_auto_auth').val(extension_settings.sd.auto_auth);
@@ -453,6 +460,7 @@ async function loadSettings() {
453460 $('#sd_interactive_visible').prop('checked', extension_settings.sd.interactive_visible);
454461 $('#sd_stability_style_preset').val(extension_settings.sd.stability_style_preset);
455462 $('#sd_huggingface_model_id').val(extension_settings.sd.huggingface_model_id);
463+ $('#sd_function_tool').prop('checked', extension_settings.sd.function_tool);
456464
457465 for (const style of extension_settings.sd.styles) {
458466 const option = document.createElement('option');
@@ -467,6 +475,7 @@ async function loadSettings() {
467475
468476 toggleSourceControls();
469477 addPromptTemplates();
478+ registerFunctionTool();
470479
471480 await loadSettingOptions();
472481}
@@ -530,6 +539,9 @@ function addPromptTemplates() {
530539 .on('click', () => {
531540 textarea.val(promptTemplates[name]);
532541 extension_settings.sd.prompts[name] = promptTemplates[name];
542+ if (String(name) === String(generationMode.TOOL)) {
543+ registerFunctionTool();
544+ }
533545 saveSettingsDebounced();
534546 });
535547 const container = $('<div></div>')
@@ -644,37 +656,13 @@ async function onSaveStyleClick() {
644656 saveSettingsDebounced();
645657}
646658
647-async function expandPrompt(prompt) {
648- try {
649- const response = await fetch('/api/sd/expand', {
650- method: 'POST',
651- headers: getRequestHeaders(),
652- body: JSON.stringify({ prompt: prompt }),
653- });
654-
655- if (!response.ok) {
656- throw new Error('API returned an error.');
657- }
658-
659- const data = await response.json();
660- return data.prompt;
661- } catch {
662- return prompt;
663- }
664-}
665-
666659/**
667660 * Modifies prompt based on auto-expansion and user inputs.
668661 * @param {string} prompt Prompt to refine
669- * @param {boolean} allowExpand Whether to allow auto-expansion
670662 * @param {boolean} isNegative Whether the prompt is a negative one
671663 * @returns {Promise<string>} Refined prompt
672664 */
673665async function refinePrompt(prompt, allowExpand, isNegative = false) {
674- if (allowExpand && extension_settings.sd.expand) {
675- prompt = await expandPrompt(prompt);
676- }
677-
678666 if (extension_settings.sd.refine_mode) {
679667 const text = isNegative ? '<h3>Review and edit the <i>negative</i> prompt:</h3>' : '<h3>Review and edit the prompt:</h3>';
680668 const refinedPrompt = await callGenericPopup(text + 'Press "Cancel" to abort the image generation.', POPUP_TYPE.INPUT, prompt.trim(), { rows: 5, okButton: 'Continue' });
@@ -800,11 +788,6 @@ function combinePrefixes(str1, str2, macro = '') {
800788 return process(result);
801789}
802790
803-function onExpandInput() {
804- extension_settings.sd.expand = !!$(this).prop('checked');
805- saveSettingsDebounced();
806-}
807-
808791function onRefineModeInput() {
809792 extension_settings.sd.refine_mode = !!$('#sd_refine_mode').prop('checked');
810793 saveSettingsDebounced();
@@ -872,6 +855,11 @@ function onSamplerChange() {
872855 saveSettingsDebounced();
873856}
874857
858+function onADetailerFaceChange() {
859+ extension_settings.sd.adetailer_face = !!$('#sd_adetailer_face').prop('checked');
860+ saveSettingsDebounced();
861+}
862+
875863const resolutionOptions = {
876864 sd_res_512x512: { width: 512, height: 512, name: '512x512 (1:1, icons, profile pictures)' },
877865 sd_res_600x600: { width: 600, height: 600, name: '600x600 (1:1, icons, profile pictures)' },
@@ -945,6 +933,12 @@ async function onSourceChange() {
945933 await loadSettingOptions();
946934}
947935
936+function onFunctionToolInput() {
937+ extension_settings.sd.function_tool = !!$(this).prop('checked');
938+ saveSettingsDebounced();
939+ registerFunctionTool();
940+}
941+
948942async function onOpenAiStyleSelect() {
949943 extension_settings.sd.openai_style = String($('#sd_openai_style').find(':selected').val());
950944 saveSettingsDebounced();
@@ -969,12 +963,6 @@ async function onViewAnlasClick() {
969963 toastr.info(`Free image generation: ${unlimitedGeneration ? 'Yes' : 'No'}`, `Anlas: ${anlas}`);
970964}
971965
972-function onNovelUpscaleRatioInput() {
973- extension_settings.sd.novel_upscale_ratio = Number($('#sd_novel_upscale_ratio').val());
974- $('#sd_novel_upscale_ratio_value').val(extension_settings.sd.novel_upscale_ratio.toFixed(1));
975- saveSettingsDebounced();
976-}
977-
978966function onNovelAnlasGuardInput() {
979967 extension_settings.sd.novel_anlas_guard = !!$('#sd_novel_anlas_guard').prop('checked');
980968 saveSettingsDebounced();
@@ -2225,10 +2213,9 @@ function processReply(str) {
22252213
22262214 str = str.replaceAll('"', '');
22272215 str = str.replaceAll('“', '');
2228- str = str.replaceAll('.', ',');
22292216 str = str.replaceAll('\n', ', ');
22302217 str = str.normalize('NFD');
22312218 str = str.replace(/[^a-zA-Z0-9.,:_(){}<>[\]\-']+/g, ' ');
22322219 str = str.replace(/\s+/g, ' '); // Collapse multiple whitespaces into one
22332220 str = str.trim();
22342221
@@ -2273,6 +2260,25 @@ function getRawLastMessage() {
22732260}
22742261
22752262/**
2263+ * Ensure that the selected option exists in the dropdown.
2264+ * @param {string} setting Setting key
2265+ * @param {string} selector Dropdown selector
2266+ * @returns {void}
2267+ */
2268+function ensureSelectionExists(setting, selector) {
2269+ /** @type {HTMLSelectElement} */
2270+ const selectElement = document.querySelector(selector);
2271+ if (!selectElement) {
2272+ return;
2273+ }
2274+ const options = Array.from(selectElement.options);
2275+ const value = extension_settings.sd[setting];
2276+ if (selectElement.selectedOptions.length && !options.some(option => option.value === value)) {
2277+ extension_settings.sd[setting] = selectElement.selectedOptions[0].value;
2278+ }
2279+}
2280+
2281+/**
22762282 * Generates an image based on the given trigger word.
22772283 * @param {string} initiator The initiator of the image generation
22782284 * @param {Record<string, object>} args Command arguments
@@ -2292,8 +2298,8 @@ async function generatePicture(initiator, args, trigger, message, callback) {
22922298 return;
22932299 }
22942300
2295- extension_settings.sd.sampler = $('#sd_sampler').find(':selected').val();
2301+ ensureSelectionExists('sampler', '#sd_sampler');
2296- extension_settings.sd.model = $('#sd_model').find(':selected').val();
2302+ ensureSelectionExists('model', '#sd_model');
22972303
22982304 trigger = trigger.trim();
22992305 const generationType = getGenerationType(trigger);
@@ -2307,14 +2313,14 @@ async function generatePicture(initiator, args, trigger, message, callback) {
23072313
23082314 if (generationType == generationMode.BACKGROUND) {
23092315 const callbackOriginal = callback;
23102316 callback = async function (prompt, imagePath, generationType, _negativePromptPrefix, _initiator, prefixedPrompt) {
23112317 const imgUrl = `url("${encodeURI(imagePath)}")`;
23122318 eventSource.emit(event_types.FORCE_SET_BACKGROUND, { url: imgUrl, path: imagePath });
23132319
23142320 if (typeof callbackOriginal === 'function') {
23152321 await callbackOriginal(prompt, imagePath, generationType, negativePromptPrefix, initiator, prefixedPrompt);
23162322 } else {
23172323 await sendMessage(prompt, imagePath, generationType, negativePromptPrefix, initiator, prefixedPrompt);
23182324 }
23192325 };
23202326 }
@@ -2441,7 +2447,7 @@ async function getPrompt(generationType, message, trigger, quietPrompt, combineN
24412447 }
24422448
24432449 if (generationType !== generationMode.FREE) {
24442450 prompt = await refinePrompt(prompt, truefalse);
24452451 }
24462452
24472453 return prompt;
@@ -2469,7 +2475,7 @@ function generateFreeModePrompt(trigger, combineNegatives) {
24692475 return message.original_avatar.replace(/\.[^/.]+$/, '');
24702476 }
24712477 }
2472- throw new Error('No usable messages found.');
2478+ return '';
24732479 };
24742480
24752481 const key = getLastCharacterKey();
@@ -2643,7 +2649,9 @@ async function sendGenerationRequest(generationType, prompt, additionalNegativeP
26432649
26442650 const filename = `${characterName}_${humanizedDateTime()}`;
26452651 const base64Image = await saveBase64AsFile(result.data, characterName, filename, result.format);
2646- callback ? callback(prompt, base64Image, generationType, additionalNegativePrefix, initiator) : sendMessage(prompt, base64Image, generationType, additionalNegativePrefix, initiator);
2652+ callback
2653+ ? await callback(prompt, base64Image, generationType, additionalNegativePrefix, initiator, prefixedPrompt)
2654+ : await sendMessage(prompt, base64Image, generationType, additionalNegativePrefix, initiator, prefixedPrompt);
26472655 return base64Image;
26482656}
26492657
@@ -2671,8 +2679,7 @@ async function generateTogetherAIImage(prompt, negativePrompt, signal) {
26712679 });
26722680
26732681 if (result.ok) {
26742682 const data =return await result.json();
2675- return { format: 'jpg', data: data?.output?.choices?.[0]?.image_base64 };
26762683 } else {
26772684 const text = await result.text();
26782685 throw new Error(text);
@@ -2920,11 +2927,7 @@ async function generateHordeImage(prompt, negativePrompt, signal) {
29202927 */
29212928async function generateAutoImage(prompt, negativePrompt, signal) {
29222929 const isValidVae = extension_settings.sd.vae && !['N/A', placeholderVae].includes(extension_settings.sd.vae);
2923- const result = await fetch('/api/sd/generate', {
2930+ let payload = {
2924- method: 'POST',
2925- headers: getRequestHeaders(),
2926- signal: signal,
2927- body: JSON.stringify({
29282931 ...getSdRequestBody(),
29292932 prompt: prompt,
29302933 negative_prompt: negativePrompt,
@@ -2941,20 +2944,41 @@ async function generateAutoImage(prompt, negativePrompt, signal) {
29412944 denoising_strength: extension_settings.sd.denoising_strength,
29422945 hr_second_pass_steps: extension_settings.sd.hr_second_pass_steps,
29432946 seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined,
2944- // For AUTO1111
29452947 override_settings: {
29462948 CLIP_stop_at_last_layers: extension_settings.sd.clip_skip,
29472949 sd_vae: isValidVae ? extension_settings.sd.vae : undefined,
29482950 },
29492951 override_settings_restore_afterwards: true,
29502952 clip_skip: extension_settings.sd.clip_skip, // For SD.Next
2951- clip_skip: extension_settings.sd.clip_skip,
2952- // Ensure generated img is saved to disk
29532953 save_images: true,
29542954 send_images: true,
29552955 do_not_save_grid: false,
29562956 do_not_save_samples: false,
2957- }),
2957+ };
2958+
2959+ // Conditionally add the ADetailer if adetailer_face is enabled
2960+ if (extension_settings.sd.adetailer_face) {
2961+ payload = deepMerge(payload, {
2962+ alwayson_scripts: {
2963+ ADetailer: {
2964+ args: [
2965+ true, // ad_enable
2966+ true, // skip_img2img
2967+ {
2968+ 'ad_model': 'face_yolov8n.pt',
2969+ },
2970+ ],
2971+ },
2972+ },
2973+ });
2974+ }
2975+
2976+ // Make the fetch call with the payload
2977+ const result = await fetch('/api/sd/generate', {
2978+ method: 'POST',
2979+ headers: getRequestHeaders(),
2980+ signal: signal,
2981+ body: JSON.stringify(payload),
29582982 });
29592983
29602984 if (result.ok) {
@@ -3031,7 +3055,7 @@ async function generateNovelImage(prompt, negativePrompt, signal) {
30313055 width: width,
30323056 height: height,
30333057 negative_prompt: negativePrompt,
30343058 upscale_ratio: extension_settings.sd.novel_upscale_ratiohr_scale,
30353059 decrisper: extension_settings.sd.novel_decrisper,
30363060 sm: sm,
30373061 sm_dyn: sm_dyn,
@@ -3431,12 +3455,13 @@ async function onComfyDeleteWorkflowClick() {
34313455 * @param {number} generationType Generation type of the image
34323456 * @param {string} additionalNegativePrefix Additional negative prompt used for the image generation
34333457 * @param {string} initiator The initiator of the image generation
3458+ * @param {string} prefixedPrompt Prompt with an attached specific prefix
34343459 */
34353460async function sendMessage(prompt, image, generationType, additionalNegativePrefix, initiator, prefixedPrompt) {
34363461 const context = getContext();
34373462 const name = context.groupId ? systemUserName : context.name2;
34383463 const template = extension_settings.sd.prompts[generationMode.MESSAGE] || '{{prompt}}';
34393464 const messageText = substituteParamsExtended(template, { char: name, prompt: prompt, prefixedPrompt: prefixedPrompt });
34403465 const message = {
34413466 name: name,
34423467 is_user: false,
@@ -3613,8 +3638,8 @@ async function sdMessageButton(e) {
36133638 try {
36143639 setBusyIcon(true);
36153640 if (hasSavedImage) {
36163641 const prompt = await refinePrompt(message.extra.title, false, false);
36173642 const negative = hasSavedNegative ? await refinePrompt(message.extra.negative, false, true) : '';
36183643 message.extra.title = prompt;
36193644
36203645 const generationType = message?.extra?.generationType ?? generationMode.FREE;
@@ -3756,8 +3781,8 @@ async function onImageSwiped({ message, element, direction }) {
37563781 eventSource.once(CUSTOM_STOP_EVENT, stopListener);
37573782 const callback = () => { };
37583783 const hasNegative = message.extra.negative;
37593784 const prompt = await refinePrompt(message.extra.title, false, false);
37603785 const negativePromptPrefix = hasNegative ? await refinePrompt(message.extra.negative, false, true) : '';
37613786 const characterName = context.groupId
37623787 ? context.groups[Object.keys(context.groups).filter(x => context.groups[x].id === context.groupId)[0]]?.id?.toString()
37633788 : context.characters[context.characterId]?.name;
@@ -3788,12 +3813,121 @@ async function onImageSwiped({ message, element, direction }) {
37883813 await context.saveChat();
37893814}
37903815
3816+/**
3817+ * Applies the command arguments to the extension settings.
3818+ * @typedef {import('../../slash-commands/SlashCommand.js').NamedArguments} NamedArguments
3819+ * @typedef {import('../../slash-commands/SlashCommand.js').NamedArgumentsCapture} NamedArgumentsCapture
3820+ * @param {NamedArguments | NamedArgumentsCapture} args - Command arguments
3821+ * @returns {Record<string, any>} - Current settings before applying the command arguments
3822+ */
3823+function applyCommandArguments(args) {
3824+ const overrideSettings = {};
3825+ const currentSettings = {};
3826+ const settingMap = {
3827+ 'edit': 'refine_mode',
3828+ 'extend': 'free_extend',
3829+ 'multimodal': 'multimodal_captioning',
3830+ 'seed': 'seed',
3831+ 'width': 'width',
3832+ 'height': 'height',
3833+ 'steps': 'steps',
3834+ 'cfg': 'scale',
3835+ 'skip': 'clip_skip',
3836+ 'model': 'model',
3837+ 'sampler': 'sampler',
3838+ 'scheduler': 'scheduler',
3839+ 'vae': 'vae',
3840+ 'upscaler': 'hr_upscaler',
3841+ 'scale': 'hr_scale',
3842+ 'hires': 'enable_hr',
3843+ 'denoise': 'denoising_strength',
3844+ '2ndpass': 'hr_second_pass_steps',
3845+ 'faces': 'restore_faces',
3846+ };
3847+
3848+ for (const [param, setting] of Object.entries(settingMap)) {
3849+ if (args[param] === undefined || defaultSettings[setting] === undefined) {
3850+ continue;
3851+ }
3852+ currentSettings[setting] = extension_settings.sd[setting];
3853+ const value = String(args[param]);
3854+ const type = typeof defaultSettings[setting];
3855+ switch (type) {
3856+ case 'boolean':
3857+ overrideSettings[setting] = isTrueBoolean(value) || !isFalseBoolean(value);
3858+ break;
3859+ case 'number':
3860+ overrideSettings[setting] = Number(value);
3861+ break;
3862+ default:
3863+ overrideSettings[setting] = value;
3864+ break;
3865+ }
3866+ }
3867+
3868+ Object.assign(extension_settings.sd, overrideSettings);
3869+ return currentSettings;
3870+}
3871+
3872+function registerFunctionTool() {
3873+ if (!extension_settings.sd.function_tool) {
3874+ return ToolManager.unregisterFunctionTool('GenerateImage');
3875+ }
3876+
3877+ ToolManager.registerFunctionTool({
3878+ name: 'GenerateImage',
3879+ displayName: 'Generate Image',
3880+ description: [
3881+ 'Generate an image from a given text prompt.',
3882+ 'Use when a user asks to generate an image, imagine a concept or an item, send a picture of a scene, a selfie, etc.',
3883+ ].join(' '),
3884+ parameters: Object.freeze({
3885+ $schema: 'http://json-schema.org/draft-04/schema#',
3886+ type: 'object',
3887+ properties: {
3888+ prompt: {
3889+ type: 'string',
3890+ description: extension_settings.sd.prompts[generationMode.TOOL] || promptTemplates[generationMode.TOOL],
3891+ },
3892+ },
3893+ required: [
3894+ 'prompt',
3895+ ],
3896+ }),
3897+ action: async (args) => {
3898+ if (!isValidState()) throw new Error('Image generation is not configured.');
3899+ if (!args) throw new Error('Missing arguments');
3900+ if (!args.prompt) throw new Error('Missing prompt');
3901+ const url = await generatePicture(initiators.tool, {}, args.prompt);
3902+ return encodeURI(url);
3903+ },
3904+ formatMessage: () => 'Generating an image...',
3905+ });
3906+}
3907+
37913908jQuery(async () => {
37923909 await addSDGenButtons();
37933910
3911+ const getSelectEnumProvider = (id, text) => () => Array.from(document.querySelectorAll(`#${id} > [value]`)).map(x => new SlashCommandEnumValue(x.getAttribute('value'), text ? x.textContent : null));
3912+
37943913 SlashCommandParser.addCommandObject(SlashCommand.fromProps({
37953914 name: 'imagine',
3796- callback: (args, trigger) => generatePicture(initiators.command, args, String(trigger)),
3915+ returns: 'URL of the generated image, or an empty string if the generation failed',
3916+ callback: async (args, trigger) => {
3917+ const currentSettings = applyCommandArguments(args);
3918+
3919+ try {
3920+ return await generatePicture(initiators.command, args, String(trigger));
3921+ } catch (error) {
3922+ console.error('Failed to generate image:', error);
3923+ return '';
3924+ } finally {
3925+ if (Object.keys(currentSettings).length) {
3926+ Object.assign(extension_settings.sd, currentSettings);
3927+ saveSettingsDebounced();
3928+ }
3929+ }
3930+ },
37973931 aliases: ['sd', 'img', 'image'],
37983932 namedArgumentList: [
37993933 new SlashCommandNamedArgument(
@@ -3803,6 +3937,164 @@ jQuery(async () => {
38033937 name: 'negative',
38043938 description: 'negative prompt prefix',
38053939 typeList: [ARGUMENT_TYPE.STRING],
3940+ isRequired: false,
3941+ acceptsMultiple: false,
3942+ }),
3943+ SlashCommandNamedArgument.fromProps({
3944+ name: 'extend',
3945+ description: 'auto-extend free mode prompts with the LLM',
3946+ typeList: [ARGUMENT_TYPE.BOOLEAN],
3947+ enumProvider: commonEnumProviders.boolean('trueFalse'),
3948+ isRequired: false,
3949+ acceptsMultiple: false,
3950+ }),
3951+ SlashCommandNamedArgument.fromProps({
3952+ name: 'edit',
3953+ description: 'edit the prompt before generation',
3954+ typeList: [ARGUMENT_TYPE.BOOLEAN],
3955+ enumProvider: commonEnumProviders.boolean('trueFalse'),
3956+ isRequired: false,
3957+ acceptsMultiple: false,
3958+ }),
3959+ SlashCommandNamedArgument.fromProps({
3960+ name: 'multimodal',
3961+ description: 'use multimodal captioning (for portraits only)',
3962+ typeList: [ARGUMENT_TYPE.BOOLEAN],
3963+ enumProvider: commonEnumProviders.boolean('trueFalse'),
3964+ isRequired: false,
3965+ acceptsMultiple: false,
3966+ }),
3967+ SlashCommandNamedArgument.fromProps({
3968+ name: 'snap',
3969+ description: 'snap auto-adjusted dimensions to the nearest known resolution (portraits and backgrounds only)',
3970+ typeList: [ARGUMENT_TYPE.BOOLEAN],
3971+ enumProvider: commonEnumProviders.boolean('trueFalse'),
3972+ isRequired: false,
3973+ acceptsMultiple: false,
3974+ }),
3975+ SlashCommandNamedArgument.fromProps({
3976+ name: 'seed',
3977+ description: 'random seed',
3978+ isRequired: false,
3979+ typeList: [ARGUMENT_TYPE.NUMBER],
3980+ acceptsMultiple: false,
3981+ }),
3982+ SlashCommandNamedArgument.fromProps({
3983+ name: 'width',
3984+ description: 'image width',
3985+ isRequired: false,
3986+ typeList: [ARGUMENT_TYPE.NUMBER],
3987+ acceptsMultiple: false,
3988+ }),
3989+ SlashCommandNamedArgument.fromProps({
3990+ name: 'height',
3991+ description: 'image height',
3992+ isRequired: false,
3993+ typeList: [ARGUMENT_TYPE.NUMBER],
3994+ acceptsMultiple: false,
3995+ }),
3996+ SlashCommandNamedArgument.fromProps({
3997+ name: 'steps',
3998+ description: 'number of steps',
3999+ isRequired: false,
4000+ typeList: [ARGUMENT_TYPE.NUMBER],
4001+ acceptsMultiple: false,
4002+ }),
4003+ SlashCommandNamedArgument.fromProps({
4004+ name: 'cfg',
4005+ description: 'CFG scale',
4006+ isRequired: false,
4007+ typeList: [ARGUMENT_TYPE.NUMBER],
4008+ acceptsMultiple: false,
4009+ }),
4010+ SlashCommandNamedArgument.fromProps({
4011+ name: 'skip',
4012+ description: 'CLIP skip layers',
4013+ isRequired: false,
4014+ typeList: [ARGUMENT_TYPE.NUMBER],
4015+ acceptsMultiple: false,
4016+ }),
4017+ SlashCommandNamedArgument.fromProps({
4018+ name: 'model',
4019+ description: 'model override',
4020+ isRequired: false,
4021+ typeList: [ARGUMENT_TYPE.STRING],
4022+ acceptsMultiple: false,
4023+ forceEnum: true,
4024+ enumProvider: getSelectEnumProvider('sd_model', true),
4025+ }),
4026+ SlashCommandNamedArgument.fromProps({
4027+ name: 'sampler',
4028+ description: 'sampler override',
4029+ isRequired: false,
4030+ typeList: [ARGUMENT_TYPE.STRING],
4031+ acceptsMultiple: false,
4032+ forceEnum: true,
4033+ enumProvider: getSelectEnumProvider('sd_sampler', false),
4034+ }),
4035+ SlashCommandNamedArgument.fromProps({
4036+ name: 'scheduler',
4037+ description: 'scheduler override',
4038+ isRequired: false,
4039+ typeList: [ARGUMENT_TYPE.STRING],
4040+ acceptsMultiple: false,
4041+ forceEnum: true,
4042+ enumProvider: getSelectEnumProvider('sd_scheduler', false),
4043+ }),
4044+ SlashCommandNamedArgument.fromProps({
4045+ name: 'vae',
4046+ description: 'VAE name override',
4047+ isRequired: false,
4048+ typeList: [ARGUMENT_TYPE.STRING],
4049+ acceptsMultiple: false,
4050+ forceEnum: true,
4051+ enumProvider: getSelectEnumProvider('sd_vae', false),
4052+ }),
4053+ SlashCommandNamedArgument.fromProps({
4054+ name: 'upscaler',
4055+ description: 'upscaler override',
4056+ isRequired: false,
4057+ typeList: [ARGUMENT_TYPE.STRING],
4058+ acceptsMultiple: false,
4059+ forceEnum: true,
4060+ enumProvider: getSelectEnumProvider('sd_hr_upscaler', false),
4061+ }),
4062+ SlashCommandNamedArgument.fromProps({
4063+ name: 'hires',
4064+ description: 'enable high-res fix',
4065+ isRequired: false,
4066+ typeList: [ARGUMENT_TYPE.BOOLEAN],
4067+ acceptsMultiple: false,
4068+ enumProvider: commonEnumProviders.boolean('trueFalse'),
4069+ }),
4070+ SlashCommandNamedArgument.fromProps({
4071+ name: 'scale',
4072+ description: 'upscale amount',
4073+ isRequired: false,
4074+ typeList: [ARGUMENT_TYPE.NUMBER],
4075+ acceptsMultiple: false,
4076+ }),
4077+ SlashCommandNamedArgument.fromProps({
4078+ name: 'denoise',
4079+ description: 'denoising strength',
4080+ isRequired: false,
4081+ typeList: [ARGUMENT_TYPE.NUMBER],
4082+ acceptsMultiple: false,
4083+ }),
4084+ SlashCommandNamedArgument.fromProps({
4085+ name: '2ndpass',
4086+ description: 'second pass steps',
4087+ isRequired: false,
4088+ typeList: [ARGUMENT_TYPE.NUMBER],
4089+ acceptsMultiple: false,
4090+ }),
4091+ SlashCommandNamedArgument.fromProps({
4092+ name: 'faces',
4093+ description: 'restore faces',
4094+ isRequired: false,
4095+ typeList: [ARGUMENT_TYPE.BOOLEAN],
4096+ acceptsMultiple: false,
4097+ enumProvider: commonEnumProviders.boolean('trueFalse'),
38064098 }),
38074099 ],
38084100 unnamedArgumentList: [
@@ -3824,6 +4116,66 @@ jQuery(async () => {
38244116 }));
38254117
38264118 SlashCommandParser.addCommandObject(SlashCommand.fromProps({
4119+ name: 'imagine-source',
4120+ aliases: ['sd-source', 'img-source'],
4121+ returns: 'a name of the current generation source',
4122+ unnamedArgumentList: [
4123+ SlashCommandArgument.fromProps({
4124+ description: 'source name',
4125+ typeList: [ARGUMENT_TYPE.STRING],
4126+ isRequired: false,
4127+ forceEnum: true,
4128+ enumProvider: getSelectEnumProvider('sd_source', true),
4129+ }),
4130+ ],
4131+ helpString: 'If an argument is provided, change the source of the image generation, e.g. <code>/imagine-source comfy</code>. Returns the current source.',
4132+ callback: async (_args, name) => {
4133+ if (!name) {
4134+ return extension_settings.sd.source;
4135+ }
4136+ const isKnownSource = Object.keys(sources).includes(String(name));
4137+ if (!isKnownSource) {
4138+ throw new Error('The value provided is not a valid image generation source.');
4139+ }
4140+ const option = document.querySelector(`#sd_source [value="${name}"]`);
4141+ if (!(option instanceof HTMLOptionElement)) {
4142+ throw new Error('Could not find the source option in the dropdown.');
4143+ }
4144+ option.selected = true;
4145+ await onSourceChange();
4146+ return extension_settings.sd.source;
4147+ },
4148+ }));
4149+
4150+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
4151+ name: 'imagine-style',
4152+ aliases: ['sd-style', 'img-style'],
4153+ returns: 'a name of the current style',
4154+ unnamedArgumentList: [
4155+ SlashCommandArgument.fromProps({
4156+ description: 'style name',
4157+ typeList: [ARGUMENT_TYPE.STRING],
4158+ isRequired: false,
4159+ forceEnum: true,
4160+ enumProvider: getSelectEnumProvider('sd_style', false),
4161+ }),
4162+ ],
4163+ helpString: 'If an argument is provided, change the style of the image generation, e.g. <code>/imagine-style MyStyle</code>. Returns the current style.',
4164+ callback: async (_args, name) => {
4165+ if (!name) {
4166+ return extension_settings.sd.style;
4167+ }
4168+ const option = document.querySelector(`#sd_style [value="${name}"]`);
4169+ if (!(option instanceof HTMLOptionElement)) {
4170+ throw new Error('Could not find the style option in the dropdown.');
4171+ }
4172+ option.selected = true;
4173+ onStyleSelect();
4174+ return extension_settings.sd.style;
4175+ },
4176+ }));
4177+
4178+ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
38274179 name: 'imagine-comfy-workflow',
38284180 callback: changeComfyWorkflow,
38294181 aliases: ['icw'],
@@ -3832,7 +4184,7 @@ jQuery(async () => {
38324184 description: 'workflow name',
38334185 typeList: [ARGUMENT_TYPE.STRING],
38344186 isRequired: true,
3835- enumProvider: () => Array.from(document.querySelectorAll('#sd_comfy_workflow > [value]')).map(x => x.getAttribute('value')).map(workflow => new SlashCommandEnumValue(workflow)),
4187+ enumProvider: getSelectEnumProvider('sd_comfy_workflow', false),
38364188 }),
38374189 ],
38384190 helpString: '(workflowName) - change the workflow to be used for image generation with ComfyUI, e.g. <pre><code>/imagine-comfy-workflow MyWorkflow</code></pre>',
@@ -3858,6 +4210,7 @@ jQuery(async () => {
38584210 $('#sd_horde_sanitize').on('input', onHordeSanitizeInput);
38594211 $('#sd_restore_faces').on('input', onRestoreFacesInput);
38604212 $('#sd_enable_hr').on('input', onHighResFixInput);
4213+ $('#sd_adetailer_face').on('change', onADetailerFaceChange);
38614214 $('#sd_refine_mode').on('input', onRefineModeInput);
38624215 $('#sd_character_prompt').on('input', onCharacterPromptInput);
38634216 $('#sd_character_negative_prompt').on('input', onCharacterNegativePromptInput);
@@ -3874,7 +4227,6 @@ jQuery(async () => {
38744227 $('#sd_hr_scale').on('input', onHrScaleInput);
38754228 $('#sd_denoising_strength').on('input', onDenoisingStrengthInput);
38764229 $('#sd_hr_second_pass_steps').on('input', onHrSecondPassStepsInput);
3877- $('#sd_novel_upscale_ratio').on('input', onNovelUpscaleRatioInput);
38784230 $('#sd_novel_anlas_guard').on('input', onNovelAnlasGuardInput);
38794231 $('#sd_novel_view_anlas').on('click', onViewAnlasClick);
38804232 $('#sd_novel_sm').on('input', onNovelSmInput);
@@ -3887,7 +4239,6 @@ jQuery(async () => {
38874239 $('#sd_comfy_open_workflow_editor').on('click', onComfyOpenWorkflowEditorClick);
38884240 $('#sd_comfy_new_workflow').on('click', onComfyNewWorkflowClick);
38894241 $('#sd_comfy_delete_workflow').on('click', onComfyDeleteWorkflowClick);
3890- $('#sd_expand').on('input', onExpandInput);
38914242 $('#sd_style').on('change', onStyleSelect);
38924243 $('#sd_save_style').on('click', onSaveStyleClick);
38934244 $('#sd_delete_style').on('click', onDeleteStyleClick);
@@ -3908,6 +4259,7 @@ jQuery(async () => {
39084259 $('#sd_stability_key').on('click', onStabilityKeyClick);
39094260 $('#sd_stability_style_preset').on('change', onStabilityStylePresetChange);
39104261 $('#sd_huggingface_model_id').on('input', onHFModelInput);
4262+ $('#sd_function_tool').on('input', onFunctionToolInput);
39114263
39124264 if (!CSS.supports('field-sizing', 'content')) {
39134265 $('.sd_settings .inline-drawer-toggle').on('click', function () {
public/scripts/extensions/stable-diffusion/settings.html+16 -15
@@ -14,9 +14,13 @@
1414 <input id="sd_refine_mode" type="checkbox" />
1515 <span data-i18n="sd_refine_mode_txt">Edit prompts before generation</span>
1616 </label>
17+ <label for="sd_function_tool" class="checkbox_label" data-i18n="[title]sd_function_tool" title="Use the function tool to automatically detect intents to generate images.">
18+ <input id="sd_function_tool" type="checkbox" />
19+ <span data-i18n="sd_function_tool_txt">Use function tool</span>
20+ </label>
1721 <label for="sd_interactive_mode" class="checkbox_label" data-i18n="[title]sd_interactive_mode" title="Automatically generate images when sending messages like 'send me a picture of cat'.">
1822 <input id="sd_interactive_mode" type="checkbox" />
1923 <span data-i18n="sd_interactive_mode_txt">InteractiveUse interactive mode</span>
2024 </label>
2125 <label for="sd_multimodal_captioning" class="checkbox_label" data-i18n="[title]sd_multimodal_captioning" title="Use multimodal captioning to generate prompts for user and character portraits based on their avatars.">
2226 <input id="sd_multimodal_captioning" type="checkbox" />
@@ -27,11 +31,6 @@
2731 <span data-i18n="sd_free_extend_txt">Extend free mode prompts</span>
2832 <small data-i18n="sd_free_extend_small">(interactive/commands)</small>
2933 </label>
30- <label for="sd_expand" class="checkbox_label" data-i18n="[title]sd_expand" title="Automatically extend prompts using text generation model">
31- <input id="sd_expand" type="checkbox" />
32- <span data-i18n="sd_expand_txt">Auto-extend prompts</span>
33- <span class="right_menu_button fa-solid fa-triangle-exclamation" data-i18n="[title]sd_expand_warning" title="May produce unexpected results. Manual prompt editing is recommended."></span>
34- </label>
3534 <label for="sd_snap" class="checkbox_label" data-i18n="[title]sd_snap" title="Snap generation requests with a forced aspect ratio (portraits, backgrounds) to the nearest known resolution, while trying to preserve the absolute pixel counts (recommended for SDXL).">
3635 <input id="sd_snap" type="checkbox" />
3736 <span data-i18n="sd_snap_txt">Snap auto-adjusted resolutions</span>
@@ -308,7 +307,7 @@
308307 </div>
309308
310309 <div class="flex-container">
311310 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="auto,vlad,drawthings,novel">
312311 <small>
313312 <span data-i18n="Upscale by">Upscale by</span>
314313 </small>
@@ -332,14 +331,6 @@
332331 <input class="neo-range-input" type="number" id="sd_hr_second_pass_steps_value" data-for="sd_hr_second_pass_steps" max="{{hr_second_pass_steps_max}}" step="{{hr_second_pass_steps_step}}" value="{{hr_second_pass_steps}}" >
333332 </div>
334333
335- <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="novel">
336- <small>
337- <span data-i18n="Upscale by">Upscale by</span>
338- </small>
339- <input class="neo-range-slider" type="range" id="sd_novel_upscale_ratio" name="sd_novel_upscale_ratio" min="{{novel_upscale_ratio_min}}" max="{{novel_upscale_ratio_max}}" step="{{novel_upscale_ratio_step}}" value="{{novel_upscale_ratio}}" >
340- <input class="neo-range-input" type="number" id="sd_novel_upscale_ratio_value" data-for="sd_novel_upscale_ratio" min="{{novel_upscale_ratio_min}}" max="{{novel_upscale_ratio_max}}" step="{{novel_upscale_ratio_step}}" value="{{novel_upscale_ratio}}" >
341- </div>
342-
343334 <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0 flexBasis48p" data-sd-source="auto,vlad,comfy,horde,drawthings,extras">
344335 <small>
345336 <span data-i18n="CLIP Skip">CLIP Skip</span>
@@ -365,6 +356,16 @@
365356 </label>
366357 </div>
367358
359+ <div class="flex-container marginTopBot5" data-sd-source="auto,vlad">
360+ <label for="sd_adetailer_face" class="flex1 checkbox_label" data-i18n="[title]sd_adetailer_face" title="Use ADetailer with face model during the generation. The ADetailer extension must be installed on the backend.">
361+ <input id="sd_adetailer_face" type="checkbox" />
362+ <small data-i18n="Use ADetailer (Face)">Use ADetailer (Face)</small>
363+ </label>
364+ <div class="flex1">
365+ <!-- I will be useful later! -->
366+ </div>
367+ </div>
368+
368369 <div class="flex-container marginTopBot5" data-sd-source="novel">
369370 <label class="flex1 checkbox_label" data-i18n="[title]SMEA versions of samplers are modified to perform better at high resolution." title="SMEA versions of samplers are modified to perform better at high resolution.">
370371 <input id="sd_novel_sm" type="checkbox" />
public/scripts/extensions/token-counter/index.js+1 -1
@@ -89,7 +89,7 @@ function drawChunks(chunks, ids) {
8989 $('#tokenized_chunks_display').empty();
9090
9191 for (let i = 0; i < chunks.length; i++) {
9292 let chunk = chunks[i].replace(/[Ġ]/g, ' '); // This is a leading space in sentencepiece. More info: Lower one eighth block (U+2581)
9393
9494 // If <0xHEX>, decode it
9595 if (/^<0x[0-9A-F]+>$/i.test(chunk)) {
public/scripts/extensions/tts/cosyvoice.js+206 -0
@@ -0,0 +1,206 @@
1+import { saveTtsProviderSettings } from './index.js';
2+
3+export { CosyVoiceProvider };
4+
5+class CosyVoiceProvider {
6+ //########//
7+ // Config //
8+ //########//
9+
10+ settings;
11+ ready = false;
12+ voices = [];
13+ separator = '. ';
14+ audioElement = document.createElement('audio');
15+
16+ /**
17+ * Perform any text processing before passing to TTS engine.
18+ * @param {string} text Input text
19+ * @returns {string} Processed text
20+ */
21+ processText(text) {
22+ return text;
23+ }
24+
25+ audioFormats = ['wav', 'ogg', 'silk', 'mp3', 'flac'];
26+
27+ languageLabels = {
28+ 'Auto': 'auto',
29+ };
30+
31+ langKey2LangCode = {
32+ 'zh': 'zh-CN',
33+ 'en': 'en-US',
34+ 'ja': 'ja-JP',
35+ 'ko': 'ko-KR',
36+ };
37+
38+ modelTypes = {
39+ CosyVoice: 'CosyVoice',
40+ };
41+
42+ defaultSettings = {
43+ provider_endpoint: 'http://localhost:9880',
44+ format: 'wav',
45+ lang: 'auto',
46+ streaming: false,
47+
48+ };
49+
50+ get settingsHtml() {
51+ let html = `
52+
53+ <label for="tts_endpoint">Provider Endpoint:</label>
54+ <input id="tts_endpoint" type="text" class="text_pole" maxlength="250" height="300" value="${this.defaultSettings.provider_endpoint}"/>
55+ <span>Windows users Use <a target="_blank" href="https://github.com/v3ucn/CosyVoice_For_Windows">CosyVoice_For_Windows</a>(Unofficial).</span><br/>
56+ <span>Macos Users Use <a target="_blank" href="https://github.com/v3ucn/CosyVoice_for_MacOs">CosyVoice_for_MacOs</a>(Unofficial).</span><br/>
57+ <br/>
58+
59+ `;
60+
61+ return html;
62+ }
63+
64+ onSettingsChange() {
65+ // Used when provider settings are updated from UI
66+ this.settings.provider_endpoint = $('#tts_endpoint').val();
67+
68+
69+ saveTtsProviderSettings();
70+ this.changeTTSSettings();
71+ }
72+
73+ async loadSettings(settings) {
74+ // Pupulate Provider UI given input settings
75+ if (Object.keys(settings).length == 0) {
76+ console.info('Using default TTS Provider settings');
77+ }
78+
79+ // Only accept keys defined in defaultSettings
80+ this.settings = this.defaultSettings;
81+
82+ for (const key in settings) {
83+ if (key in this.settings) {
84+ this.settings[key] = settings[key];
85+ } else {
86+ console.debug(`Ignoring non-user-configurable setting: ${key}`);
87+ }
88+ }
89+
90+ // Set initial values from the settings
91+ $('#tts_endpoint').val(this.settings.provider_endpoint);
92+
93+
94+ await this.checkReady();
95+
96+ console.info('ITS: Settings loaded');
97+ }
98+
99+ // Perform a simple readiness check by trying to fetch voiceIds
100+ async checkReady() {
101+ await Promise.allSettled([this.fetchTtsVoiceObjects(), this.changeTTSSettings()]);
102+ }
103+
104+ async onRefreshClick() {
105+ return;
106+ }
107+
108+ //#################//
109+ // TTS Interfaces //
110+ //#################//
111+
112+ async getVoice(voiceName) {
113+
114+
115+
116+ if (this.voices.length == 0) {
117+ this.voices = await this.fetchTtsVoiceObjects();
118+ }
119+
120+
121+
122+ const match = this.voices.filter(
123+ v => v.name == voiceName,
124+ )[0];
125+ console.log(match);
126+ if (!match) {
127+ throw `TTS Voice name ${voiceName} not found`;
128+ }
129+ return match;
130+ }
131+
132+
133+
134+ async generateTts(text, voiceId) {
135+ const response = await this.fetchTtsGeneration(text, voiceId);
136+ return response;
137+ }
138+
139+ //###########//
140+ // API CALLS //
141+ //###########//
142+ async fetchTtsVoiceObjects() {
143+ const response = await fetch(`${this.settings.provider_endpoint}/speakers`);
144+ console.info(response);
145+
146+ if (!response.ok) {
147+ throw new Error(`HTTP ${response.status}: ${await response.json()}`);
148+ }
149+ const responseJson = await response.json();
150+
151+
152+ this.voices = responseJson;
153+
154+ return responseJson;
155+ }
156+
157+ // Each time a parameter is changed, we change the configuration
158+ async changeTTSSettings() {
159+ }
160+
161+ /**
162+ * Fetch TTS generation from the API.
163+ * @param {string} inputText Text to generate TTS for
164+ * @param {string} voiceId Voice ID to use (model_type&speaker_id))
165+ * @returns {Promise<Response|string>} Fetch response
166+ */
167+ async fetchTtsGeneration(inputText, voiceId, lang = null, forceNoStreaming = false) {
168+ console.info(`Generating new TTS for voice_id ${voiceId}`);
169+
170+ const streaming = this.settings.streaming;
171+
172+ const params = {
173+ text: inputText,
174+ speaker: voiceId,
175+ };
176+
177+ if (streaming) {
178+ params['streaming'] = 1;
179+ }
180+
181+ const url = `${this.settings.provider_endpoint}/`;
182+
183+ const response = await fetch(
184+ url,
185+ {
186+ method: 'POST',
187+ headers: {
188+ 'Content-Type': 'application/json',
189+ },
190+ body: JSON.stringify(params), // Convert parameter objects to JSON strings
191+ },
192+ );
193+ if (!response.ok) {
194+ toastr.error(response.statusText, 'TTS Generation Failed');
195+ throw new Error(`HTTP ${response.status}: ${await response.text()}`);
196+ }
197+ return response;
198+ }
199+
200+
201+
202+ // Interface not used
203+ async fetchTtsFromHistory(history_item_id) {
204+ return Promise.resolve(history_item_id);
205+ }
206+}
public/scripts/extensions/tts/google-translate.js+140 -0
@@ -0,0 +1,140 @@
1+import { getRequestHeaders } from '../../../script.js';
2+import { splitRecursive } from '../../utils.js';
3+import { getPreviewString, saveTtsProviderSettings } from './index.js';
4+export { GoogleTranslateTtsProvider };
5+
6+class GoogleTranslateTtsProvider {
7+ settings;
8+ voices = [];
9+ separator = ' . ';
10+ audioElement = document.createElement('audio');
11+
12+ defaultSettings = {
13+ region: '',
14+ voiceMap: {},
15+ };
16+
17+ get settingsHtml() {
18+ return '';
19+ }
20+
21+ onSettingsChange() {
22+ this.voices = [];
23+ saveTtsProviderSettings();
24+ }
25+
26+ async loadSettings(settings) {
27+ // Populate Provider UI given input settings
28+ if (Object.keys(settings).length == 0) {
29+ console.info('Using default TTS Provider settings');
30+ }
31+
32+ // Only accept keys defined in defaultSettings
33+ this.settings = this.defaultSettings;
34+
35+ for (const key in settings) {
36+ if (key in this.settings) {
37+ this.settings[key] = settings[key];
38+ } else {
39+ throw `Invalid setting passed to TTS Provider: ${key}`;
40+ }
41+ }
42+
43+ try {
44+ await this.checkReady();
45+ console.debug('Google Translate TTS: Settings loaded');
46+ } catch {
47+ console.debug('Google Translate TTS: Settings loaded, but not ready');
48+ }
49+ }
50+
51+ // Perform a simple readiness check by trying to fetch voiceIds
52+ async checkReady() {
53+ await this.fetchTtsVoiceObjects();
54+ }
55+
56+ async onRefreshClick() {
57+ await this.checkReady();
58+ }
59+
60+ //#################//
61+ // TTS Interfaces //
62+ //#################//
63+
64+ async getVoice(voiceName) {
65+ if (this.voices.length == 0) {
66+ this.voices = await this.fetchTtsVoiceObjects();
67+ }
68+ const match = this.voices.filter(
69+ voice => voice.name == voiceName || voice.voice_id == voiceName,
70+ )[0];
71+ if (!match) {
72+ throw `TTS Voice name ${voiceName} not found`;
73+ }
74+ return match;
75+ }
76+
77+ async generateTts(text, voiceId) {
78+ const response = await this.fetchTtsGeneration(text, voiceId);
79+ return response;
80+ }
81+
82+ //###########//
83+ // API CALLS //
84+ //###########//
85+ async fetchTtsVoiceObjects() {
86+ const response = await fetch('/api/google/list-voices', {
87+ method: 'POST',
88+ headers: getRequestHeaders(),
89+ body: JSON.stringify({}),
90+ });
91+
92+ if (!response.ok) {
93+ throw new Error(`HTTP ${response.status}: ${await response.text()}`);
94+ }
95+ let responseJson = await response.json();
96+ responseJson = Object.entries(responseJson)
97+ .sort((a, b) => a[1].localeCompare(b[1]))
98+ .map(x => ({ name: x[1], voice_id: x[0], preview_url: false, lang: x[0] }));
99+ return responseJson;
100+ }
101+
102+ /**
103+ * Preview TTS for a given voice ID.
104+ * @param {string} id Voice ID
105+ */
106+ async previewTtsVoice(id) {
107+ this.audioElement.pause();
108+ this.audioElement.currentTime = 0;
109+ const voice = await this.getVoice(id);
110+ const text = getPreviewString(voice.lang);
111+ const response = await this.fetchTtsGeneration(text, id);
112+ if (!response.ok) {
113+ throw new Error(`HTTP ${response.status}: ${await response.text()}`);
114+ }
115+
116+ const audio = await response.blob();
117+ const url = URL.createObjectURL(audio);
118+ this.audioElement.src = url;
119+ this.audioElement.play();
120+ this.audioElement.onended = () => URL.revokeObjectURL(url);
121+ }
122+
123+ async fetchTtsGeneration(text, voiceId) {
124+ const response = await fetch('/api/google/generate-voice', {
125+ method: 'POST',
126+ headers: getRequestHeaders(),
127+ body: JSON.stringify({
128+ text: splitRecursive(text, 200),
129+ voice: voiceId,
130+ }),
131+ });
132+
133+ if (!response.ok) {
134+ toastr.error(response.statusText, 'TTS Generation Failed');
135+ throw new Error(`HTTP ${response.status}: ${await response.text()}`);
136+ }
137+
138+ return response;
139+ }
140+}
public/scripts/extensions/tts/gpt-sovits-v2.js+226 -0
@@ -0,0 +1,226 @@
1+import { saveTtsProviderSettings } from './index.js';
2+
3+export { GptSovitsV2Provider };
4+
5+class GptSovitsV2Provider {
6+ //########//
7+ // Config //
8+ //########//
9+
10+ settings;
11+ ready = false;
12+ voices = [];
13+ separator = '. ';
14+ audioElement = document.createElement('audio');
15+
16+ /**
17+ * Perform any text processing before passing to TTS engine.
18+ * @param {string} text Input text
19+ * @returns {string} Processed text
20+ */
21+ processText(text) {
22+ return text;
23+ }
24+
25+ audioFormats = ['wav', 'ogg', 'silk', 'mp3', 'flac'];
26+
27+ languageLabels = {
28+ 'Auto': 'auto',
29+ };
30+
31+ langKey2LangCode = {
32+ 'zh': 'zh-CN',
33+ 'en': 'en-US',
34+ 'ja': 'ja-JP',
35+ 'ko': 'ko-KR',
36+ };
37+
38+
39+ defaultSettings = {
40+ provider_endpoint: 'http://localhost:9880',
41+ format: 'wav',
42+ lang: 'auto',
43+ streaming: false,
44+ text_lang: 'zh',
45+ prompt_lang: 'zh',
46+
47+ };
48+
49+ get settingsHtml() {
50+ let html = `
51+
52+ <label for="tts_endpoint">Provider Endpoint:</label>
53+ <input id="tts_endpoint" type="text" class="text_pole" maxlength="250" height="300" value="${this.defaultSettings.provider_endpoint}"/>
54+ <span>Use <a target="_blank" href="https://github.com/v3ucn/GPT-SoVITS-V2">GPT-SoVITS-V2</a>(Unofficial).</span><br/>
55+ <label for="text_lang">Text Lang(Inference text language):</label>
56+ <input id="text_lang" type="text" class="text_pole" maxlength="250" height="300" value="${this.defaultSettings.text_lang}"/>
57+ <label for="text_lang">Prompt Lang(Reference audio text language):</label>
58+ <input id="prompt_lang" type="text" class="text_pole" maxlength="250" height="300" value="${this.defaultSettings.prompt_lang}"/>
59+ <br/>
60+
61+ `;
62+
63+ return html;
64+ }
65+
66+ onSettingsChange() {
67+ // Used when provider settings are updated from UI
68+ this.settings.provider_endpoint = $('#tts_endpoint').val();
69+ this.settings.text_lang = $('#text_lang').val();
70+ this.settings.prompt_lang = $('#prompt_lang').val();
71+
72+
73+ saveTtsProviderSettings();
74+ this.changeTTSSettings();
75+ }
76+
77+ async loadSettings(settings) {
78+ // Pupulate Provider UI given input settings
79+ if (Object.keys(settings).length == 0) {
80+ console.info('Using default TTS Provider settings');
81+ }
82+
83+ // Only accept keys defined in defaultSettings
84+ this.settings = this.defaultSettings;
85+
86+ for (const key in settings) {
87+ if (key in this.settings) {
88+ this.settings[key] = settings[key];
89+ } else {
90+ console.debug(`Ignoring non-user-configurable setting: ${key}`);
91+ }
92+ }
93+
94+ // Set initial values from the settings
95+ $('#tts_endpoint').val(this.settings.provider_endpoint);
96+ $('#text_lang').val(this.settings.text_lang);
97+ $('#prompt_lang').val(this.settings.prompt_lang);
98+
99+
100+ await this.checkReady();
101+
102+ console.info('ITS: Settings loaded');
103+ }
104+
105+ // Perform a simple readiness check by trying to fetch voiceIds
106+ async checkReady() {
107+ await Promise.allSettled([this.fetchTtsVoiceObjects(), this.changeTTSSettings()]);
108+ }
109+
110+ async onRefreshClick() {
111+ return;
112+ }
113+
114+ //#################//
115+ // TTS Interfaces //
116+ //#################//
117+
118+ async getVoice(voiceName) {
119+
120+
121+
122+ if (this.voices.length == 0) {
123+ this.voices = await this.fetchTtsVoiceObjects();
124+ }
125+
126+
127+
128+ const match = this.voices.filter(
129+ v => v.name == voiceName,
130+ )[0];
131+ console.log(match);
132+ if (!match) {
133+ throw `TTS Voice name ${voiceName} not found`;
134+ }
135+ return match;
136+ }
137+
138+
139+
140+ async generateTts(text, voiceId) {
141+ const response = await this.fetchTtsGeneration(text, voiceId);
142+ return response;
143+ }
144+
145+ //###########//
146+ // API CALLS //
147+ //###########//
148+ async fetchTtsVoiceObjects() {
149+ const response = await fetch(`${this.settings.provider_endpoint}/speakers`);
150+ console.info(response);
151+
152+ if (!response.ok) {
153+ throw new Error(`HTTP ${response.status}: ${await response.json()}`);
154+ }
155+ const responseJson = await response.json();
156+
157+
158+ this.voices = responseJson;
159+
160+ return responseJson;
161+ }
162+
163+ // Each time a parameter is changed, we change the configuration
164+ async changeTTSSettings() {
165+ }
166+
167+ /**
168+ * Fetch TTS generation from the API.
169+ * @param {string} inputText Text to generate TTS for
170+ * @param {string} voiceId Voice ID to use (model_type&speaker_id))
171+ * @returns {Promise<Response|string>} Fetch response
172+ */
173+
174+
175+
176+
177+ async fetchTtsGeneration(inputText, voiceId, lang = null, forceNoStreaming = false) {
178+ console.info(`Generating new TTS for voice_id ${voiceId}`);
179+
180+ function replaceSpeaker(text) {
181+ return text.replace(/\[.*?\]/gu, '');
182+ }
183+
184+ let prompt_text = replaceSpeaker(voiceId);
185+
186+ const streaming = this.settings.streaming;
187+
188+ const params = {
189+ text: inputText,
190+ prompt_text: prompt_text,
191+ ref_audio_path: './参考音频/' + voiceId + '.wav',
192+ text_lang: this.settings.text_lang,
193+ prompt_lang: this.settings.prompt_lang,
194+ text_split_method: 'cut5',
195+ batch_size: 1,
196+ media_type: 'ogg',
197+ streaming_mode: 'true',
198+ };
199+
200+
201+ const url = `${this.settings.provider_endpoint}/`;
202+
203+ const response = await fetch(
204+ url,
205+ {
206+ method: 'POST',
207+ headers: {
208+ 'Content-Type': 'application/json',
209+ },
210+ body: JSON.stringify(params), // Convert parameter objects to JSON strings
211+ },
212+ );
213+ if (!response.ok) {
214+ toastr.error(response.statusText, 'TTS Generation Failed');
215+ throw new Error(`HTTP ${response.status}: ${await response.text()}`);
216+ }
217+ return response;
218+ }
219+
220+
221+
222+ // Interface not used
223+ async fetchTtsFromHistory(history_item_id) {
224+ return Promise.resolve(history_item_id);
225+ }
226+}
public/scripts/extensions/tts/index.js+7 -1
@@ -4,6 +4,7 @@ import { delay, escapeRegex, getBase64Async, getStringHash, onlyUnique } from '.
44import { EdgeTtsProvider } from './edge.js';
55import { ElevenLabsTtsProvider } from './elevenlabs.js';
66import { SileroTtsProvider } from './silerotts.js';
7+import { GptSovitsV2Provider } from './gpt-sovits-v2.js';
78import { CoquiTtsProvider } from './coqui.js';
89import { SystemTtsProvider } from './system.js';
910import { NovelTtsProvider } from './novel.js';
@@ -15,6 +16,7 @@ import { VITSTtsProvider } from './vits.js';
1516import { GSVITtsProvider } from './gsvi.js';
1617import { SBVits2TtsProvider } from './sbvits2.js';
1718import { AllTalkTtsProvider } from './alltalk.js';
19+import { CosyVoiceProvider } from './cosyvoice.js';
1820import { SpeechT5TtsProvider } from './speecht5.js';
1921import { AzureTtsProvider } from './azure.js';
2022import { SlashCommandParser } from '../../slash-commands/SlashCommandParser.js';
@@ -24,6 +26,7 @@ import { debounce_timeout } from '../../constants.js';
2426import { SlashCommandEnumValue, enumTypes } from '../../slash-commands/SlashCommandEnumValue.js';
2527import { enumIcons } from '../../slash-commands/SlashCommandCommonEnumsProvider.js';
2628import { POPUP_TYPE, callGenericPopup } from '../../popup.js';
29+import { GoogleTranslateTtsProvider } from './google-translate.js';
2730export { talkingAnimation };
2831
2932const UPDATE_INTERVAL = 1000;
@@ -86,9 +89,12 @@ const ttsProviders = {
8689 AllTalk: AllTalkTtsProvider,
8790 Azure: AzureTtsProvider,
8891 Coqui: CoquiTtsProvider,
92+ 'CosyVoice (Unofficial)': CosyVoiceProvider,
8993 Edge: EdgeTtsProvider,
9094 ElevenLabs: ElevenLabsTtsProvider,
95+ 'Google Translate': GoogleTranslateTtsProvider,
9196 GSVI: GSVITtsProvider,
97+ 'GPT-SoVITS-V2 (Unofficial)': GptSovitsV2Provider,
9298 Novel: NovelTtsProvider,
9399 OpenAI: OpenAITtsProvider,
94100 'OpenAI Compatible': OpenAICompatibleTtsProvider,
@@ -470,7 +476,7 @@ async function processTtsQueue() {
470476 }
471477
472478 if (extension_settings.tts.narrate_quoted_only) {
473479 const special_quotes = /[“”«»「」『』""]/g; // Extend this regex to include other special quotes
474480 text = text.replace(special_quotes, '"');
475481 const matches = text.match(/".*?"/g); // Matches text inside double quotes, non-greedily
476482 const partJoiner = (ttsProvider?.separator || ' ... ');
public/scripts/extensions/vectors/index.js+57 -72
@@ -36,6 +36,7 @@ import { generateWebLlmChatPrompt, isWebLlmSupported } from '../shared.js';
3636/**
3737 * @typedef {object} HashedMessage
3838 * @property {string} text - The hashed message text
39+ * @property {number} hash - The hash used as the vector key
3940 */
4041
4142const MODULE_NAME = 'vectors';
@@ -96,6 +97,8 @@ const settings = {
9697
9798const moduleWorker = new ModuleWorkerWrapper(synchronizeChat);
9899
100+const cachedSummaries = new Map();
101+
99102/**
100103 * Gets the Collection ID for a file embedded in the chat.
101104 * @param {string} fileUrl URL of the file
@@ -118,6 +121,10 @@ async function onVectorizeAllClick() {
118121 return;
119122 }
120123
124+ // Clear all cached summaries to ensure that new ones are created
125+ // upon request of a full vectorise
126+ cachedSummaries.clear();
127+
121128 const batchSize = 5;
122129 const elapsedLog = [];
123130 let finished = false;
@@ -200,11 +207,10 @@ function splitByChunks(items) {
200207
201208/**
202209 * Summarizes messages using the Extras API method.
203210 * @param {HashedMessage[]} hashedMessages Array ofelement hashed messagesmessage
204211 * @returns {Promise<HashedMessage[]boolean>} Summarized messagesSucess
205212 */
206213async function summarizeExtra(hashedMessageselement) {
207- for (const element of hashedMessages) {
208214 try {
209215 const url = new URL(getApiUrl());
210216 url.pathname = '/api/summarize';
@@ -228,42 +234,37 @@ async function summarizeExtra(hashedMessages) {
228234 }
229235 catch (error) {
230236 console.log(error);
231- }
237+ return false;
232238 }
233239
234240 return hashedMessagestrue;
235241}
236242
237243/**
238244 * Summarizes messages using the main API method.
239245 * @param {HashedMessage[]} hashedMessages Array ofelement hashed messagesmessage
240246 * @returns {Promise<HashedMessage[]boolean>} Summarized messagesSucess
241247 */
242248async function summarizeMain(hashedMessageselement) {
243- for (const element of hashedMessages) {
244249 element.text = await generateRaw(element.text, '', false, false, settings.summary_prompt);
245- }
250+ return true;
246-
247- return hashedMessages;
248251}
249252
250253/**
251254 * Summarizes messages using WebLLM.
252255 * @param {HashedMessage[]} hashedMessages Array ofelement hashed messagesmessage
253256 * @returns {Promise<HashedMessage[]boolean>} Summarized messagesSucess
254257 */
255258async function summarizeWebLLM(hashedMessageselement) {
256259 if (!isWebLlmSupported()) {
257260 console.warn('Vectors: WebLLM is not supported');
258261 return hashedMessagesfalse;
259262 }
260263
261- for (const element of hashedMessages) {
262264 const messages = [{ role: 'system', content: settings.summary_prompt }, { role: 'user', content: element.text }];
263265 element.text = await generateWebLlmChatPrompt(messages);
264- }
265266
266267 return hashedMessagestrue;
267268}
268269
269270/**
@@ -273,16 +274,35 @@ async function summarizeWebLLM(hashedMessages) {
273274 * @returns {Promise<HashedMessage[]>} Summarized messages
274275 */
275276async function summarize(hashedMessages, endpoint = 'main') {
277+ for (const element of hashedMessages) {
278+ const cachedSummary = cachedSummaries.get(element.hash);
279+ if (!cachedSummary) {
280+ let success = true;
276281 switch (endpoint) {
277282 case 'main':
278283 return success = await summarizeMain(hashedMessageselement);
284+ break;
279285 case 'extras':
280286 return success = await summarizeExtra(hashedMessageselement);
287+ break;
281288 case 'webllm':
282289 return success = await summarizeWebLLM(hashedMessageselement);
290+ break;
283291 default:
284292 console.error('Unsupported endpoint', endpoint);
293+ success = false;
294+ break;
285295 }
296+ if (success) {
297+ cachedSummaries.set(element.hash, element.text);
298+ } else {
299+ break;
300+ }
301+ } else {
302+ element.text = cachedSummary;
303+ }
304+ }
305+ return hashedMessages;
286306}
287307
288308async function synchronizeChat(batchSize = 5) {
@@ -307,16 +327,15 @@ async function synchronizeChat(batchSize = 5) {
307327 return -1;
308328 }
309329
310330 letconst hashedMessages = context.chat.filter(x => !x.is_system).map(x => ({ text: String(substituteParams(x.mes)), hash: getStringHash(substituteParams(x.mes)), index: context.chat.indexOf(x) }));
311331 const hashesInCollection = await getSavedHashes(chatId);
312332
313- if (settings.summarize) {
333+ let newVectorItems = hashedMessages.filter(x => !hashesInCollection.includes(x.hash));
314- hashedMessages = await summarize(hashedMessages, settings.summary_source);
315- }
316-
317- const newVectorItems = hashedMessages.filter(x => !hashesInCollection.includes(x.hash));
318334 const deletedHashes = hashesInCollection.filter(x => !hashedMessages.some(y => y.hash === x));
319335
336+ if (settings.summarize) {
337+ newVectorItems = await summarize(newVectorItems, settings.summary_source);
338+ }
320339
321340 if (newVectorItems.length > 0) {
322341 const chunkedBatch = splitByChunks(newVectorItems.slice(0, batchSize));
@@ -466,13 +485,13 @@ async function ingestDataBankAttachments(source) {
466485 }
467486
468487 // Download and process the file
469488 file.textconst fileText = await getFileAttachment(file.url);
470489 console.log(`Vectors: Retrieved file ${file.name} from Data Bank`);
471490 // Convert kilobytes to string length
472491 const thresholdLength = settings.size_threshold_db * 1024;
473492 // Use chunk size from settings if file is larger than threshold
474493 const chunkSize = file.size > thresholdLength ? settings.chunk_size_db : -1;
475494 await vectorizeFile(file.textfileText, file.name, collectionId, chunkSize, settings.overlap_percent_db);
476495 }
477496
478497 return dataBankCollectionIds;
@@ -687,25 +706,17 @@ const onChatEvent = debounce(async () => await moduleWorker.update(), debounce_t
687706 * @returns {Promise<string>} Text to query
688707 */
689708async function getQueryText(chat, initiator) {
690709 let queryTexthashedMessages = '';chat
691- let i = 0;
710+ .map(x => ({ text: String(substituteParams(x.mes)), hash: getStringHash(substituteParams(x.mes)) }))
692-
711+ .filter(x => x.text)
693- let hashedMessages = chat.map(x => ({ text: String(substituteParams(x.mes)) }));
712+ .reverse()
713+ .slice(0, settings.query);
694714
695715 if (initiator === 'chat' && settings.enabled_chats && settings.summarize && settings.summarize_sent) {
696716 hashedMessages = await summarize(hashedMessages, settings.summary_source);
697717 }
698718
699- for (const message of hashedMessages.slice().reverse()) {
719+ const queryText = hashedMessages.map(x => x.text).join('\n');
700- if (message.text) {
701- queryText += message.text + '\n';
702- i++;
703- }
704-
705- if (i === settings.query) {
706- break;
707- }
708- }
709720
710721 return collapseNewlines(queryText).trim();
711722}
@@ -999,25 +1010,6 @@ async function purgeAllVectorIndexes() {
9991010 }
10001011}
10011012
1002-async function isModelScopesEnabled() {
1003- try {
1004- const response = await fetch('/api/vector/scopes-enabled', {
1005- method: 'GET',
1006- headers: getVectorHeaders(),
1007- });
1008-
1009- if (!response.ok) {
1010- return false;
1011- }
1012-
1013- const data = await response.json();
1014- return data?.enabled ?? false;
1015- } catch (error) {
1016- console.error('Vectors: Failed to check model scopes', error);
1017- return false;
1018- }
1019-}
1020-
10211013function toggleSettings() {
10221014 $('#vectors_files_settings').toggle(!!settings.enabled_files);
10231015 $('#vectors_chats_settings').toggle(!!settings.enabled_chats);
@@ -1282,7 +1274,6 @@ jQuery(async () => {
12821274 }
12831275
12841276 Object.assign(settings, extension_settings.vectors);
1285- const scopesEnabled = await isModelScopesEnabled();
12861277
12871278 // Migrate from TensorFlow to Transformers
12881279 settings.source = settings.source !== 'local' ? settings.source : 'transformers';
@@ -1294,7 +1285,6 @@ jQuery(async () => {
12941285 saveSettingsDebounced();
12951286 toggleSettings();
12961287 });
1297- $('#vectors_modelWarning').hide();
12981288 $('#vectors_enabled_files').prop('checked', settings.enabled_files).on('input', () => {
12991289 settings.enabled_files = $('#vectors_enabled_files').prop('checked');
13001290 Object.assign(extension_settings.vectors, settings);
@@ -1334,31 +1324,26 @@ jQuery(async () => {
13341324 saveSettingsDebounced();
13351325 });
13361326 $('#vectors_togetherai_model').val(settings.togetherai_model).on('change', () => {
1337- !scopesEnabled && $('#vectors_modelWarning').show();
13381327 settings.togetherai_model = String($('#vectors_togetherai_model').val());
13391328 Object.assign(extension_settings.vectors, settings);
13401329 saveSettingsDebounced();
13411330 });
13421331 $('#vectors_openai_model').val(settings.openai_model).on('change', () => {
1343- !scopesEnabled && $('#vectors_modelWarning').show();
13441332 settings.openai_model = String($('#vectors_openai_model').val());
13451333 Object.assign(extension_settings.vectors, settings);
13461334 saveSettingsDebounced();
13471335 });
13481336 $('#vectors_cohere_model').val(settings.cohere_model).on('change', () => {
1349- !scopesEnabled && $('#vectors_modelWarning').show();
13501337 settings.cohere_model = String($('#vectors_cohere_model').val());
13511338 Object.assign(extension_settings.vectors, settings);
13521339 saveSettingsDebounced();
13531340 });
13541341 $('#vectors_ollama_model').val(settings.ollama_model).on('input', () => {
1355- !scopesEnabled && $('#vectors_modelWarning').show();
13561342 settings.ollama_model = String($('#vectors_ollama_model').val());
13571343 Object.assign(extension_settings.vectors, settings);
13581344 saveSettingsDebounced();
13591345 });
13601346 $('#vectors_vllm_model').val(settings.vllm_model).on('input', () => {
1361- !scopesEnabled && $('#vectors_modelWarning').show();
13621347 settings.vllm_model = String($('#vectors_vllm_model').val());
13631348 Object.assign(extension_settings.vectors, settings);
13641349 saveSettingsDebounced();
@@ -1545,7 +1530,7 @@ jQuery(async () => {
15451530 saveSettingsDebounced();
15461531 });
15471532
15481533 $('#vectors_force_chunk_delimiter').propval('checked', settings.force_chunk_delimiter).on('input', () => {
15491534 settings.force_chunk_delimiter = String($('#vectors_force_chunk_delimiter').val());
15501535 Object.assign(extension_settings.vectors, settings);
15511536 saveSettingsDebounced();
public/scripts/extensions/vectors/settings.html+0 -8
@@ -96,14 +96,6 @@
9696 </i>
9797 </div>
9898
99- <small id="vectors_modelWarning">
100- <i class="fa-solid fa-exclamation-triangle"></i>
101- <span>
102- Set <code>vectors.enableModelScopes</code> to true in config.yaml to switch between vectorization models without needing to purge existing vectors.
103- This option will soon be enabled by default.
104- </span>
105- </small>
106-
10799 <div class="flex-container alignItemsCenter" id="nomicai_apiKey">
108100 <label for="api_key_nomicai" class="flex1">
109101 <span data-i18n="NomicAI API Key">NomicAI API Key</span>
public/scripts/group-chats.js+11 -11
@@ -70,12 +70,12 @@ import {
7070 animation_duration,
7171 depth_prompt_role_default,
7272 shouldAutoContinue,
73- this_chid,
7473} from '../script.js';
7574import { printTagList, createTagMapFromList, applyTagsOnCharacterSelect, tag_map, applyTagsOnGroupSelect } from './tags.js';
7675import { FILTER_TYPES, FilterHelper } from './filters.js';
7776import { isExternalMediaAllowed } from './chats.js';
7877import { POPUP_TYPE, Popup, callGenericPopup } from './popup.js';
78+import { t } from './i18n.js';
7979
8080export {
8181 selected_group,
@@ -189,8 +189,8 @@ async function validateGroup(group) {
189189 group.members = group.members.filter(member => {
190190 const character = characters.find(x => x.avatar === member || x.name === member);
191191 if (!character) {
192192 const msg = t`Warning: Listed member ${member} does not exist as a character. It will be removed from the group.`;
193193 toastr.warning(msg, 't`Group Validation'`);
194194 console.warn(msg);
195195 dirty = true;
196196 }
@@ -522,7 +522,7 @@ async function saveGroupChat(groupId, shouldSaveGroup) {
522522 });
523523
524524 if (!response.ok) {
525525 toastr.error('t`Check the server connection and reload the page to prevent data loss.'`, 't`Group Chat could not be saved'`);
526526 console.error('Group chat could not be saved', response);
527527 return;
528528 }
@@ -837,7 +837,7 @@ async function generateGroupWrapper(by_auto_mode, type = null, params = {}) {
837837 activatedMembers = activateSwipe(group.members);
838838
839839 if (activatedMembers.length === 0) {
840840 toastr.warning('t`Deleted group member swiped. To get a reply, add them back to the group.'`);
841841 throw new Error('Deleted group member swiped');
842842 }
843843 }
@@ -1368,15 +1368,15 @@ function isGroupMemberDisabled(avatarId) {
13681368
13691369async function onDeleteGroupClick() {
13701370 if (!openGroupId) {
13711371 toastr.warning('t`Currently no group selected.'`);
13721372 return;
13731373 }
13741374 if (is_group_generating) {
13751375 toastr.warning('t`Not so fast! Wait for the characters to stop typing before deleting the group.'`);
13761376 return;
13771377 }
13781378
13791379 const confirm = await Popup.show.confirm('t`Delete the group?'`, '<p>' + t`This will also delete all your chats with that group. If you want to delete a single conversation, select a "View past chats" option in the lower left menu.` + '</p>');
13801380 if (confirm) {
13811381 deleteGroup(openGroupId);
13821382 }
@@ -1630,7 +1630,7 @@ function updateFavButtonState(state) {
16301630
16311631export async function openGroupById(groupId) {
16321632 if (isChatSaving) {
16331633 toastr.info('t`Please wait until the chat is saved before switching characters.'`, 't`Your chat is still saving...'`);
16341634 return;
16351635 }
16361636
@@ -1659,7 +1659,7 @@ export async function openGroupById(groupId) {
16591659
16601660function openCharacterDefinition(characterSelect) {
16611661 if (is_group_generating) {
16621662 toastr.warning('t`Can\'t peek a character while group reply is being generated'`);
16631663 console.warn('Can\'t peek a character def while group reply is being generated');
16641664 return;
16651665 }
@@ -1908,7 +1908,7 @@ export async function saveGroupBookmarkChat(groupId, name, metadata, mesId) {
19081908 });
19091909
19101910 if (!response.ok) {
19111911 toastr.error('t`Check the server connection and reload the page to prevent data loss.'`, 't`Group chat could not be saved'`);
19121912 console.error('Group chat could not be saved', response);
19131913 }
19141914}
public/scripts/i18n.js+1 -0
@@ -215,6 +215,7 @@ function addLanguagesToDropdown() {
215215}
216216
217217export async function initLocales() {
218+ moment.locale(localeFile);
218219 langs = await fetch('/locales/lang.json').then(response => response.json());
219220 localeData = await getLocaleData(localeFile);
220221 applyLocale();
public/scripts/instruct-mode.js+4 -2
@@ -384,6 +384,10 @@ export function formatInstructModeChat(name, mes, isUser, isNarrator, forceAvata
384384 * @returns {string} Formatted instruct mode system prompt.
385385 */
386386export function formatInstructModeSystemPrompt(systemPrompt) {
387+ if (!systemPrompt) {
388+ return '';
389+ }
390+
387391 const separator = power_user.instruct.wrap ? '\n' : '';
388392
389393 if (power_user.instruct.system_sequence_prefix) {
@@ -550,11 +554,9 @@ export function formatInstructModePrompt(name, isImpersonate, promptBias, name1,
550554 * @param {string} name Preset name.
551555 */
552556function selectMatchingContextTemplate(name) {
553- let foundMatch = false;
554557 for (const context_preset of context_presets) {
555558 // If context template matches the instruct preset
556559 if (context_preset.name === name) {
557- foundMatch = true;
558560 selectContextPreset(context_preset.name, { isAuto: true });
559561 break;
560562 }
public/scripts/kai-settings.js+1 -1
@@ -188,7 +188,7 @@ export async function generateKoboldWithStreaming(generate_data, signal) {
188188 if (data?.token) {
189189 text += data.token;
190190 }
191191 yield { text, swipes: [], toolCalls: [] };
192192 }
193193 };
194194}
public/scripts/login.js+7 -1
@@ -180,7 +180,13 @@ function displayError(message) {
180180 * Preserves the query string.
181181 */
182182function redirectToHome() {
183- window.location.href = '/' + window.location.search;
183+ // After a login theres no need to preserve the
184+ // noauto (if present)
185+ const urlParams = new URLSearchParams(window.location.search);
186+
187+ urlParams.delete('noauto');
188+
189+ window.location.href = '/' + urlParams.toString();
184190}
185191
186192/**
public/scripts/logprobs.js+4 -4
@@ -160,7 +160,7 @@ function renderTopLogprobs() {
160160 let matched = false;
161161 for (const [token, probability, log] of candidates) {
162162 const container = $('<button class="flex-container flexFlowColumn logprobs_top_candidate"></button>');
163163 const tokenNormalized = String(token).replace(/^[Ġ]/g, ' ');
164164
165165 if (token === selectedToken || tokenNormalized === selectedToken) {
166166 matched = true;
@@ -230,7 +230,7 @@ function onAlternativeClicked(tokenLogprobs, alternative) {
230230 const replaceIndex = messageLogprobs.findIndex(x => x === tokenLogprobs);
231231
232232 const tokens = messageLogprobs.slice(0, replaceIndex + 1).map(({ token }) => token);
233233 tokens[replaceIndex] = String(alternative).replace(/^[Ġ]/g, ' ').replace(/Ċ/g, '\n');
234234
235235 const prefix = continueFrom || '';
236236 const prompt = prefix + tokens.join('');
@@ -343,7 +343,7 @@ function createSwipe(messageId, prompt) {
343343 * @returns {string}
344344 */
345345function toVisibleWhitespace(input) {
346346 return input.replace(/ /g, '·').replace(/[Ġ]/g, '·').replace(/\n]/g, '↵');
347347}
348348
349349/**
@@ -362,7 +362,7 @@ function withVirtualWhitespace(text, span) {
362362 if (text.match(/\s$/)) {
363363 result.push($(document.createTextNode('\u200b')));
364364 }
365365 if (text.match(/^[Ġ]/)) {
366366 result.unshift(document.createTextNode('\u200b'));
public/scripts/macros.js+0 -0
public/scripts/nai-settings.js+0 -0
public/scripts/openai.js+0 -0
public/scripts/popup.js+0 -0
public/scripts/power-user.js+0 -0
public/scripts/preset-manager.js+0 -0
public/scripts/scrapers.js+0 -0
public/scripts/secrets.js+0 -0
public/scripts/slash-commands.js+0 -0
public/scripts/slash-commands/SlashCommand.js+0 -0
public/scripts/slash-commands/SlashCommandClosure.js+0 -0
public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js+0 -0
public/scripts/slash-commands/SlashCommandReturnHelper.js+0 -0
public/scripts/sse-stream.js+0 -0
public/scripts/tags.js+0 -0
public/scripts/templates/assistantNote.html+0 -0
public/scripts/templates/deleteConfirm.html+0 -0
public/scripts/templates/duplicateConfirm.html+0 -0
public/scripts/templates/hotkeys.html+0 -0
public/scripts/templates/quotaError.html+0 -0
public/scripts/templates/welcome.html+0 -0
public/scripts/templates/worldInfoKeywordHeaders.html+0 -0
public/scripts/textgen-models.js+0 -0
public/scripts/textgen-settings.js+0 -0
public/scripts/tokenizers.js+0 -0
public/scripts/tool-calling.js+0 -0
public/scripts/user.js+0 -0
public/scripts/utils.js+0 -0
public/scripts/variables.js+0 -0
public/scripts/world-info.js+0 -0
public/style.css+0 -0
recover.js+0 -0
server.js+0 -0
src/additional-headers.js+0 -0
src/character-card-parser.js+0 -0
src/cohere-stream.js+0 -0
src/constants.js+0 -0
src/endpoints/anthropic.js+0 -0
src/endpoints/assets.js+0 -0
src/endpoints/avatars.js+0 -0
src/endpoints/azure.js+0 -0
src/endpoints/backends/chat-completions.js+0 -0
src/endpoints/backends/kobold.js+0 -0
src/endpoints/backends/scale-alt.js+0 -0
src/endpoints/backends/text-completions.js+0 -0
src/endpoints/backgrounds.js+0 -0
src/endpoints/caption.js+0 -0
src/endpoints/characters.js+0 -0
src/endpoints/chats.js+0 -0
src/endpoints/classify.js+0 -0
src/endpoints/content-manager.js+0 -0
src/endpoints/extensions.js+0 -0
src/endpoints/files.js+0 -0
src/endpoints/google.js+0 -0
src/endpoints/groups.js+0 -0
src/endpoints/horde.js+0 -0
src/endpoints/images.js+0 -0
src/endpoints/moving-ui.js+0 -0
src/endpoints/novelai.js+0 -0
src/endpoints/openai.js+0 -0
src/endpoints/openrouter.js+0 -0
src/endpoints/presets.js+0 -0
src/endpoints/quick-replies.js+0 -0
src/endpoints/search.js+0 -0
src/endpoints/secrets.js+0 -0
src/endpoints/settings.js+0 -0
src/endpoints/speech.js+0 -0
src/endpoints/sprites.js+0 -0
src/endpoints/stable-diffusion.js+0 -0
src/endpoints/stats.js+0 -0
src/endpoints/themes.js+0 -0
src/endpoints/thumbnails.js+0 -0
src/endpoints/tokenizers.js+0 -0
src/endpoints/translate.js+0 -0
src/endpoints/users-admin.js+0 -0
src/endpoints/users-private.js+0 -0
src/endpoints/users-public.js+0 -0
src/endpoints/vectors.js+0 -0
src/endpoints/worldinfo.js+0 -0
src/express-common.js+0 -0
src/middleware/basicAuth.js+0 -0
src/middleware/multerMonkeyPatch.js+0 -0
src/middleware/whitelist.js+0 -0
src/plugin-loader.js+0 -0
src/polyfill.js+0 -0
src/prompt-converters.js+0 -0
src/request-proxy.js+0 -0
src/transformers.mjs+0 -0
src/users.js+0 -0
src/util.js+0 -0
src/validator/TavernCardValidator.js+0 -0
src/vectors/cohere-vectors.js+0 -0
src/vectors/embedding.js+0 -0
src/vectors/extras-vectors.js+0 -0
src/vectors/llamacpp-vectors.js+0 -0
src/vectors/makersuite-vectors.js+0 -0
src/vectors/nomicai-vectors.js+0 -0
src/vectors/ollama-vectors.js+0 -0
src/vectors/openai-vectors.js+0 -0
src/vectors/vllm-vectors.js+0 -0
Diff truncated