diff --git a/backend/app/api/routes/printers.py b/backend/app/api/routes/printers.py index e8f891284..7790218b9 100644 --- a/backend/app/api/routes/printers.py +++ b/backend/app/api/routes/printers.py @@ -19,6 +19,8 @@ from backend.app.schemas.printer import ( PrinterResponse, PrinterStatus, HMSErrorResponse, + AMSUnit, + AMSTray, ) from backend.app.services.printer_manager import printer_manager from backend.app.services.bambu_ftp import ( @@ -145,6 +147,42 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) for e in (state.hms_errors or []) ] + # Parse AMS data from raw_data + ams_units = [] + vt_tray = None + ams_exists = False + raw_data = state.raw_data or {} + + if "ams" in raw_data: + ams_exists = True + for ams_data in raw_data["ams"]: + trays = [] + for tray_data in ams_data.get("tray", []): + trays.append(AMSTray( + id=tray_data.get("id", 0), + tray_color=tray_data.get("tray_color"), + tray_type=tray_data.get("tray_type"), + remain=tray_data.get("remain", 0), + k=tray_data.get("k"), + )) + ams_units.append(AMSUnit( + id=ams_data.get("id", 0), + humidity=ams_data.get("humidity"), + temp=ams_data.get("temp"), + tray=trays, + )) + + # Virtual tray (external spool holder) - comes from vt_tray in raw_data + if "vt_tray" in raw_data: + vt_data = raw_data["vt_tray"] + vt_tray = AMSTray( + id=254, # Virtual tray ID + tray_color=vt_data.get("tray_color"), + tray_type=vt_data.get("tray_type"), + remain=vt_data.get("remain", 0), + k=vt_data.get("k"), + ) + return PrinterStatus( id=printer_id, name=printer.name, @@ -160,6 +198,9 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) temperatures=state.temperatures, cover_url=cover_url, hms_errors=hms_errors, + ams=ams_units, + ams_exists=ams_exists, + vt_tray=vt_tray, ) diff --git a/backend/app/schemas/printer.py b/backend/app/schemas/printer.py index 559d3a2c6..fb5890e1c 100644 --- a/backend/app/schemas/printer.py +++ b/backend/app/schemas/printer.py @@ -43,6 +43,21 @@ class HMSErrorResponse(BaseModel): severity: int # 1=fatal, 2=serious, 3=common, 4=info +class AMSTray(BaseModel): + id: int + tray_color: str | None = None + tray_type: str | None = None + remain: int = 0 + k: float | None = None # Pressure advance value + + +class AMSUnit(BaseModel): + id: int + humidity: int | None = None + temp: float | None = None + tray: list[AMSTray] = [] + + class PrinterStatus(BaseModel): id: int name: str @@ -58,3 +73,6 @@ class PrinterStatus(BaseModel): temperatures: dict | None = None cover_url: str | None = None hms_errors: list[HMSErrorResponse] = [] + ams: list[AMSUnit] = [] + ams_exists: bool = False + vt_tray: AMSTray | None = None # Virtual tray / external spool diff --git a/backend/app/services/bambu_mqtt.py b/backend/app/services/bambu_mqtt.py index a944ce3de..fff8e944a 100644 --- a/backend/app/services/bambu_mqtt.py +++ b/backend/app/services/bambu_mqtt.py @@ -179,6 +179,17 @@ class BambuMQTTClient: f"gcode_file: {print_data.get('gcode_file')}, subtask_name: {print_data.get('subtask_name')}" ) + # Handle AMS data that comes inside print key + if "ams" in print_data: + try: + self._handle_ams_data(print_data["ams"]) + except Exception as e: + logger.error(f"[{self.serial_number}] Error handling AMS data from print: {e}") + + # Handle vt_tray (virtual tray / external spool) data + if "vt_tray" in print_data: + self.state.raw_data["vt_tray"] = print_data["vt_tray"] + # Check for K-profile response (extrusion_cali) if "command" in print_data: logger.debug(f"[{self.serial_number}] Received command response: {print_data.get('command')}") @@ -187,7 +198,7 @@ class BambuMQTTClient: self._update_state(print_data) - def _handle_ams_data(self, ams_data: list): + def _handle_ams_data(self, ams_data): """Handle AMS data changes for Spoolman integration. This is called when we receive top-level AMS data in MQTT messages. @@ -195,15 +206,22 @@ class BambuMQTTClient: """ import hashlib - # Store AMS data in raw_data so it's accessible via API - if "ams" not in self.state.raw_data: - self.state.raw_data["ams"] = ams_data + # Handle nested ams structure: {"ams": {"ams": [...]}} or {"ams": [...]} + if isinstance(ams_data, dict) and "ams" in ams_data: + ams_list = ams_data["ams"] + elif isinstance(ams_data, list): + ams_list = ams_data else: - self.state.raw_data["ams"] = ams_data + logger.warning(f"[{self.serial_number}] Unexpected AMS data format: {type(ams_data)}") + return + + # Store AMS data in raw_data so it's accessible via API + self.state.raw_data["ams"] = ams_list + logger.debug(f"[{self.serial_number}] Stored AMS data with {len(ams_list)} units") # Create a hash of relevant AMS data to detect changes ams_hash_data = [] - for ams_unit in ams_data: + for ams_unit in ams_list: for tray in ams_unit.get("tray", []): # Include fields that matter for filament tracking ams_hash_data.append( @@ -217,7 +235,7 @@ class BambuMQTTClient: self._previous_ams_hash = ams_hash if self.on_ams_change: logger.info(f"[{self.serial_number}] AMS data changed, triggering sync callback") - self.on_ams_change(ams_data) + self.on_ams_change(ams_list) def _update_state(self, data: dict): """Update printer state from message data.""" @@ -306,11 +324,14 @@ class BambuMQTTClient: severity=severity if severity > 0 else 3, )) - # Preserve AMS data when updating raw_data (AMS comes at top level, not in print) + # Preserve AMS and vt_tray data when updating raw_data ams_data = self.state.raw_data.get("ams") + vt_tray_data = self.state.raw_data.get("vt_tray") self.state.raw_data = data if ams_data is not None: self.state.raw_data["ams"] = ams_data + if vt_tray_data is not None: + self.state.raw_data["vt_tray"] = vt_tray_data # Log state transitions for debugging if "gcode_state" in data: diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index ed9d20438..602e5f6b1 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -41,6 +41,21 @@ export interface HMSError { severity: number; // 1=fatal, 2=serious, 3=common, 4=info } +export interface AMSTray { + id: number; + tray_color: string | null; + tray_type: string | null; + remain: number; + k: number | null; // Pressure advance value +} + +export interface AMSUnit { + id: number; + humidity: number | null; + temp: number | null; + tray: AMSTray[]; +} + export interface PrinterStatus { id: number; name: string; @@ -62,6 +77,9 @@ export interface PrinterStatus { } | null; cover_url: string | null; hms_errors: HMSError[]; + ams: AMSUnit[]; + ams_exists: boolean; + vt_tray: AMSTray | null; // Virtual tray / external spool } export interface PrinterCreate { diff --git a/frontend/src/components/control/AMSPanel.tsx b/frontend/src/components/control/AMSPanel.tsx index 1dfd2ab1e..3f847e17f 100644 --- a/frontend/src/components/control/AMSPanel.tsx +++ b/frontend/src/components/control/AMSPanel.tsx @@ -1,59 +1,16 @@ import { useState } from 'react'; import { useMutation } from '@tanstack/react-query'; import { api } from '../../api/client'; -import type { PrinterStatus } from '../../api/client'; -import { Package, Loader2, ArrowDown, ArrowUp } from 'lucide-react'; +import type { PrinterStatus, AMSUnit } from '../../api/client'; +import { Package, Loader2, ArrowDown, ArrowUp, Droplets, Thermometer } from 'lucide-react'; interface AMSPanelProps { printerId: number; status: PrinterStatus | null | undefined; } -interface AMSTray { - id: number; - color: string; - type: string; - remain: number; - active: boolean; -} - -interface AMSUnit { - id: number; - trays: AMSTray[]; -} - -// Parse AMS data from raw_data in status -function parseAMSData(status: PrinterStatus | null | undefined): AMSUnit[] { - // AMS data comes from raw MQTT data - // This is a simplified parser - actual data structure may vary - const rawData = (status as { raw_data?: { ams?: unknown[] } })?.raw_data; - if (!rawData?.ams) return []; - - try { - return (rawData.ams as Array<{ - id?: number; - tray?: Array<{ - id?: number; - tray_color?: string; - tray_type?: string; - remain?: number; - }>; - }>).map((unit) => ({ - id: unit.id ?? 0, - trays: (unit.tray ?? []).map((tray) => ({ - id: tray.id ?? 0, - color: tray.tray_color ?? 'FFFFFF', - type: tray.tray_type ?? 'Unknown', - remain: tray.remain ?? 0, - active: false, // Would need additional MQTT data to determine - })), - })); - } catch { - return []; - } -} - -function hexToRgb(hex: string): string { +function hexToRgb(hex: string | null): string { + if (!hex) return 'rgb(128, 128, 128)'; // Handle RRGGBBAA format const cleanHex = hex.replace('#', '').substring(0, 6); const r = parseInt(cleanHex.substring(0, 2), 16) || 128; @@ -65,7 +22,7 @@ function hexToRgb(hex: string): string { export function AMSPanel({ printerId, status }: AMSPanelProps) { const isConnected = status?.connected ?? false; const isPrinting = status?.state === 'RUNNING'; - const amsUnits = parseAMSData(status); + const amsUnits: AMSUnit[] = status?.ams ?? []; const [selectedTray, setSelectedTray] = useState(null); @@ -116,14 +73,28 @@ export function AMSPanel({ printerId, status }: AMSPanelProps) { {/* AMS Units */} {amsUnits.map((unit) => (
- {amsUnits.length > 1 && ( -
AMS {unit.id + 1}
- )} +
+ AMS {unit.id + 1} +
+ {unit.humidity !== null && ( + + + {unit.humidity}% + + )} + {unit.temp !== null && ( + + + {unit.temp}°C + + )} +
+
- {unit.trays.map((tray) => { + {unit.tray.map((tray) => { const globalTrayId = unit.id * 4 + tray.id; const isSelected = selectedTray === globalTrayId; - const isEmpty = tray.type === 'NONE' || !tray.type; + const isEmpty = !tray.tray_type || tray.tray_type === '' || tray.tray_type === 'NONE'; return (
{/* Type */} -
- {isEmpty ? '--' : tray.type} +
+ {isEmpty ? '--' : tray.tray_type}
{/* Remaining */} @@ -168,11 +139,6 @@ export function AMSPanel({ printerId, status }: AMSPanelProps) {
)} - - {/* Active Indicator */} - {tray.active && ( -
- )} ); })} diff --git a/mockup/control-page-mockup.html b/mockup/control-page-mockup.html new file mode 100644 index 000000000..6252b695c --- /dev/null +++ b/mockup/control-page-mockup.html @@ -0,0 +1,1026 @@ + + + + + + BambuTrack Control Page Mockup + + + + +
+ + + +
+ + +
+ +
+
+
+ +
+ 📷 Camera Feed +
+
+
+ + +
+
+ + +
+ + +
+ +
+
Temperature
+
+
+
🔥L
+
+ 22 + /0°C +
+
+
+
🔥R
+
+ 21 + /0°C +
+
+
+
🛏️
+
+ 21 + /0°C +
+
+
+
📦
+
+ 21 + /0°C +
+
+
+
+ + + +
+
+ + +
+
Print Speed
+
+ + + + +
+
+ + +
+
Movement
+
+
+
+ + + + + +
+
+ +
+ + Z + +
+ +
+ + + +
+ +
+
+ + +
+
+ 🖨️
Extruder +
+
+ + +
+
+
+
+ + +
+
AMS
+ + +
+
+
+
+
+
+
+
+ 1 +
+
+
+
+
+
+
+
+ 2 +
+
+
+
+
+
+
+
+ 3 +
+
+ + +
+
+ AMS 1 + 💧 18% · 🌡️ 24°C +
+
+
+
+
+
PLA
+
A1
+
+
+
+
+
+
PETG
+
A2
+
+
+
+
+
+
PETG
+
A3
+
+
+
+
+
+
PLA
+
A4
+
+
+
+
+ + +
+ Ext +
+ ? + Spool +
+
🎞️ External Spool Holder
+
+ + +
+ + +
+ + +
+
HUB
+
Ready - Select a slot to load
+
+
+
+
+ + diff --git a/mockup/control-page-v10.html b/mockup/control-page-v10.html new file mode 100644 index 000000000..648f5d19d --- /dev/null +++ b/mockup/control-page-v10.html @@ -0,0 +1,923 @@ + + + + + + BambuTrack Control - v10 + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ 23 + /0 °C +
+
+
+ 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+
+
+
+
+
+ 0 +
+
+ + +
+ +
+
+
17 %
+
☀
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
14 %
+
☀
+
+
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+ Sup.PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + diff --git a/mockup/control-page-v11.html b/mockup/control-page-v11.html new file mode 100644 index 000000000..b8b3c6349 --- /dev/null +++ b/mockup/control-page-v11.html @@ -0,0 +1,936 @@ + + + + + + BambuTrack Control - v11 + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ 23 + /0 °C +
+
+
+ 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+
+
+
+
+
+ 0 +
+
+ + +
+ +
+
+
17 %
+
☀
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
14 %
+
☀
+
+
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+ Sup.PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + diff --git a/mockup/control-page-v12.html b/mockup/control-page-v12.html new file mode 100644 index 000000000..b9554693d --- /dev/null +++ b/mockup/control-page-v12.html @@ -0,0 +1,1174 @@ + + + + + + BambuTrack Control - v12 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+
+
17%
+
25°C
+
☀
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
14%
+
24°C
+
☀
+
+
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
22%
+
26°C
+
☀
+
+
+
C1↓
+
C2↓
+
C3↓
+
C4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
19%
+
25°C
+
☀
+
+
+
D1↓
+
D2↓
+
D3↓
+
D4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
12%
+
28°C
+
+
+
HT1↓
+
+
+
+
+ ABS +
+
+
+
+
+
+
+
+
+
+ +
+
+
15%
+
27°C
+
+
+
HT2↓
+
+
+
+
+ ASA +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + diff --git a/mockup/control-page-v13.html b/mockup/control-page-v13.html new file mode 100644 index 000000000..987159ef4 --- /dev/null +++ b/mockup/control-page-v13.html @@ -0,0 +1,1138 @@ + + + + + + BambuTrack Control - v13 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+ + +
+
+
+
+
+
+
+
+ AMS 1 +
+
+
+
+
+
+
+
+ AMS 2 +
+
+
+
+
+
+
+
+ AMS 3 +
+
+
+
+
+
+ HT 1 +
+
+
+
+
+
+ HT 2 +
+
+ + +
+ +
+ +
+
18 %
+
☼
+
+ + +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ + +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+ + +
+
Ext
+
+
+
+ ? + ⁄ +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+ + +
+ + +
+
+
+
+ + diff --git a/mockup/control-page-v14.html b/mockup/control-page-v14.html new file mode 100644 index 000000000..c82758bb2 --- /dev/null +++ b/mockup/control-page-v14.html @@ -0,0 +1,1055 @@ + + + + + + BambuTrack Control - v14 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
+
18%
+
☼
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+ + +
+
Ext
+
?
/
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ + +
+
Right Nozzle
+ + +
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
+
14%
+
☼
+
+
+
C1↓
+
C2↓
+
C3↓
+
C4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ + +
+
Ext
+
?
/
+
+
+
+ + +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v15.html b/mockup/control-page-v15.html new file mode 100644 index 000000000..0d3a6828c --- /dev/null +++ b/mockup/control-page-v15.html @@ -0,0 +1,1091 @@ + + + + + + BambuTrack Control - v15 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + +
+
+
18%
+
☼
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+ + +
+
Ext
+
?
/
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ + +
+
Right Nozzle
+ + +
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + +
+
+
14%
+
☼
+
+
+
E1↓
+
E2↓
+
E3↓
+
E4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ + +
+
Ext
+
?
/
+
+
+
+ + +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v16.html b/mockup/control-page-v16.html new file mode 100644 index 000000000..99cf831c5 --- /dev/null +++ b/mockup/control-page-v16.html @@ -0,0 +1,1206 @@ + + + + + + BambuTrack Control - v16 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+
+
+
+
+
+
+ 0 +
+
+ + +
+ +
+
+
18 %
+
☼
+
+ +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
Ext
+
+
+
+ ? + ⁄ +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+ + +
+ +
+
+
14 %
+
☼
+
+ +
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
Ext
+
+
+
+ ? + ⁄ +
+
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+ + +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v17.html b/mockup/control-page-v17.html new file mode 100644 index 000000000..2cdd283ea --- /dev/null +++ b/mockup/control-page-v17.html @@ -0,0 +1,1032 @@ + + + + + + BambuTrack Control - v18 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ + +
+ + +
+ + +
+ + +
+ +
+
+
+
+
+ + diff --git a/mockup/control-page-v18.html b/mockup/control-page-v18.html new file mode 100644 index 000000000..15aa037b9 --- /dev/null +++ b/mockup/control-page-v18.html @@ -0,0 +1,1061 @@ + + + + + + BambuTrack Control - v19 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+ + +
+ +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v19.html b/mockup/control-page-v19.html new file mode 100644 index 000000000..edda9b66b --- /dev/null +++ b/mockup/control-page-v19.html @@ -0,0 +1,1061 @@ + + + + + + BambuTrack Control - v20 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+ + +
+ +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v2.html b/mockup/control-page-v2.html new file mode 100644 index 000000000..7bcb058f2 --- /dev/null +++ b/mockup/control-page-v2.html @@ -0,0 +1,1123 @@ + + + + + + BambuTrack Control - Bambu Studio Style + + + + +
+ + + +
+ +
+ +
+
+
+ + +
+ 📷 Camera Feed +
+ + +
+ + +
+ +
+ +
+
+ 🔥 + L + 22 + /0°C +
+
+ 🔥 + R + 21 + /0°C +
+
+ 🛏️ + 21 + /0°C +
+
+ 📦 + 21 + /0°C +
+
+
+ + + +
+
+ + +
+ +
+ + + + +
+
+ + +
+ +
+ +
+
+
▲
+
▼
+
◀
+
▶
+ +
+
+ + +
+ + Z + +
+ + +
+ + + +
+ + +
+
+ + +
+
+ + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + +
+ + + +
+
+
+
+
+
+
+
+
+
+
+ / +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ 1 +
+
+
+
+
+
+ 2 +
+
+
+
+
+
+ 3 +
+
+ +
+
+ AMS 1 + 💧 18% · 🌡 24°C +
+
+
+
+ + + + +
+
+
PLA
+
A1
+
+
+
+
+ + + + +
+
+
PETG
+
A2
+
+
+
+
+ + + + +
+
+
PETG
+
A3
+
+
+
+
+ + + + +
+
+
PLA
+
A4
+
+
+
+
+ + +
+ Ext +
+ ? + Spool +
+
+ + + + + + + + + + +
+
+ + +
+ + +
+ + +
+
+
+
HUB
+
+
+
Ready - Select a slot to load
+
+
+
+
+ + diff --git a/mockup/control-page-v20.html b/mockup/control-page-v20.html new file mode 100644 index 000000000..fe4298183 --- /dev/null +++ b/mockup/control-page-v20.html @@ -0,0 +1,1131 @@ + + + + + + BambuTrack Control - v20 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + diff --git a/mockup/control-page-v21.html b/mockup/control-page-v21.html new file mode 100644 index 000000000..71345a7c1 --- /dev/null +++ b/mockup/control-page-v21.html @@ -0,0 +1,1108 @@ + + + + + + BambuTrack Control - v21 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + diff --git a/mockup/control-page-v22.html b/mockup/control-page-v22.html new file mode 100644 index 000000000..950167cbe --- /dev/null +++ b/mockup/control-page-v22.html @@ -0,0 +1,1119 @@ + + + + + + BambuTrack Control - v22 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1
+
A2
+
A3
+
A4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1
+
B2
+
B3
+
B4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+
+ + diff --git a/mockup/control-page-v23.html b/mockup/control-page-v23.html new file mode 100644 index 000000000..7f2441da4 --- /dev/null +++ b/mockup/control-page-v23.html @@ -0,0 +1,1127 @@ + + + + + + BambuTrack Control - v23 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1
+
A2
+
A3
+
A4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1
+
B2
+
B3
+
B4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ +
+
+ + +
+
+ + +
+
+
+ + +
+
+
+
+
+
+ + diff --git a/mockup/control-page-v24.html b/mockup/control-page-v24.html new file mode 100644 index 000000000..f95cd234b --- /dev/null +++ b/mockup/control-page-v24.html @@ -0,0 +1,1136 @@ + + + + + + BambuTrack Control - v24 + + + +
+ +
+
+ Camera + + + +
+
+
+ +
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1
+
A2
+
A3
+
A4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1
+
B2
+
B3
+
B4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ +
+
+ + +
+
+ + +
+
+
+ + +
+
+
+
+
+
+ + diff --git a/mockup/control-page-v25.html b/mockup/control-page-v25.html new file mode 100644 index 000000000..a94595a56 --- /dev/null +++ b/mockup/control-page-v25.html @@ -0,0 +1,1155 @@ + + + + + + BambuTrack Control - v25 + + + +
+ +
+
+ + + + +
+
+ Camera Feed +
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+
+
+ + 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+ +
+
Left Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
A1
+
A2
+
A3
+
A4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
Right Nozzle
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ + +
+
+
14 %
+
☼
+
+ +
+
B1
+
B2
+
B3
+
B4
+
+ +
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ +
+
+ + +
+
+
+
+
+
+ + diff --git a/mockup/control-page-v3.html b/mockup/control-page-v3.html new file mode 100644 index 000000000..2ae9ee970 --- /dev/null +++ b/mockup/control-page-v3.html @@ -0,0 +1,1082 @@ + + + + + + BambuTrack Control - With Bambu Assets + + + + +
+ + + +
+ +
+ +
+
+
+ + +
+ + + Camera Feed + +
+ + +
+ + +
+ +
+ +
+
+
+ L + 22 + /0°C +
+
+
+ R + 21 + /0°C +
+
+
+ 21 + /0°C +
+
+
+ 21 + /0°C +
+
+
+ + + +
+
+ + +
+ +
+ + + + +
+
+ + +
+ +
+ +
+
+ + + + + +
+
+ + +
+ + Z + +
+ + +
+ + + +
+ + +
+
+ + +
+
+ Extruder +
+
+ + +
+
+
+
+ + +
+ + + +
+
+
+
+
+
+
+
+
+
+
+ / +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+ 1 +
+
+
+
+
+
+ 2 +
+
+
+
+
+
+ 3 +
+
+ + +
+
+ AMS 1 +
+ 18% + · + 🌡 24°C +
+
+
+
+
+ +
+
+
PLA
+
A1
+
+
+
+
+ +
+
+
PETG
+
A2
+
+
+
+
+ +
+
+
PETG
+
A3
+
+
+
+
+ +
+
+
PLA
+
A4
+
+
+
+
+ + +
+ Ext +
+ ? + Spool +
+
+ Spool holder +
+
+ + +
+ + +
+ + +
+
+ AMS +
+
HUB
+
Ready - Select a slot to load
+
+
+
+
+ + diff --git a/mockup/control-page-v4.html b/mockup/control-page-v4.html new file mode 100644 index 000000000..79a384dd8 --- /dev/null +++ b/mockup/control-page-v4.html @@ -0,0 +1,1051 @@ + + + + + + BambuTrack Control - Bambu Studio Exact + + + +
+ +
+
+ Camera + + + + +
+ +
+ Camera Feed +
+ + +
+ + +
+
+ Control + + + +
+ +
+ +
+
+
+ L + 22 + /0 + °C +
+
+
+ R + 21 + /0 + °C +
+
+
+ 21 + /0 + °C +
+
+
+ 21 + /0 + °C +
+
+ + +
+
+ + Air Condition +
+
+ + 100% +
+
+ Lamp +
+
+
+ + +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ +
+ + + Bed + + +
+ +
+
+ + +
+
+ +
+ Extruder +
+ + +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ + 18 % +
+
+ ☀ +
+
+ +
+ A1 + A2 + A3 + A4 + + Ext +
+ +
+
+
+
+ +
+
+
PLA
+
+
+
+
+ +
+
+
PETG
+
+
+
+
+ +
+
+
PETG
+
+
+
+
+ +
+
+
PLA
+
+
+
+ +
+
+ ? + ∠ +
+
+ +
+
+
+ + +
+ +
+ + +
+ + +
+
+
+
HUB
+
+
+
+
+
+
+
+ + diff --git a/mockup/control-page-v5.html b/mockup/control-page-v5.html new file mode 100644 index 000000000..5a3d237d2 --- /dev/null +++ b/mockup/control-page-v5.html @@ -0,0 +1,952 @@ + + + + + + BambuTrack Control - Exact Match + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+
+
+ L + 22 + /0 °C +
+
+
+ R + 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+ + +
+
Air Condition
+
100%
+
Lamp
+
+ + +
+
+
+ Y + -Y + -X + X + + + + + +
+
+ +
+ + + Bed + + +
+ +
+
+ + +
+
+ Extruder +
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
0
+
+
+
+
+
+
+
+
+
0
+
+
+ + +
+ +
+
18 %
+
☀
+
+ + +
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
Ext
+
+ + +
+ +
+
+
+ +
+
+
PLA
+
+
+
+
+ +
+
+
PETG
+
+
+
+
+ +
+
+
PETG
+
+
+
+
+ +
+
+
PLA
+
+
+
+ + +
+
+ ? + ∠ +
+
+ +
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+ +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v6-multi-ams.html b/mockup/control-page-v6-multi-ams.html new file mode 100644 index 000000000..0d113cea1 --- /dev/null +++ b/mockup/control-page-v6-multi-ams.html @@ -0,0 +1,690 @@ + + + + + + BambuTrack Control - v6 Multi-AMS + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+
+
+ L + 22 + /0 °C +
+
+
+ R + 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+ + +
+
Air Condition
+
100%
+
Lamp
+
+ + +
+
+
+ Y + -Y + -X + X + + + + + +
+
+ +
+
+ + +
+
Bed
+
+ + +
+
+ +
+
+ + +
+
+ Extruder +
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+
+
+
+
+
+ AMS 1 +
+ +
+
+
+
+
+
+
+ AMS 2 +
+ +
+
+
+
+
+
+
+ AMS 3 +
+ +
+
+
+
+ HT 1 +
+ +
+
+
+
+ HT 2 +
+
+ + +
+ +
+
18 %
+
☼
+
+ + +
+ +
+ +
+
+
A1 ↓
+
+
+
A2 ↓
+
+
+
A3 ↓
+
+
+
A4 ↓
+
+
+ + +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
Ext
+
+
+
+ ? + ∠ +
+
+
+
+ +
+
+
+
+
+ + +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v6.html b/mockup/control-page-v6.html new file mode 100644 index 000000000..95c73e2d6 --- /dev/null +++ b/mockup/control-page-v6.html @@ -0,0 +1,1125 @@ + + + + + + BambuTrack Control - v6 Exact Match + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+
+
+ L + 22 + /0 °C +
+
+
+ R + 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+ + +
+
Air Condition
+
100%
+
Lamp
+
+ + +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ +
+
+ + +
+
Bed
+
+ + +
+
+ +
+
+ + +
+
+ Extruder +
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+
+
+
+
+
+ 0 +
+
+ + +
+ +
+
18 %
+
☼
+
+ + +
+ +
+ +
+
+
A1 ↓
+
+
+
A2 ↓
+
+
+
A3 ↓
+
+
+
A4 ↓
+
+
+ + +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
Ext
+
+
+
+ ? + ∠ +
+
+
+
+ +
+
+
+
+
+ + +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v7.html b/mockup/control-page-v7.html new file mode 100644 index 000000000..a5caae1ca --- /dev/null +++ b/mockup/control-page-v7.html @@ -0,0 +1,654 @@ + + + + + + BambuTrack Control - v7 + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+
+
+ L + 22 + /0 °C +
+
+
+ R + 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+ + +
+
Air Condition
+
100%
+
Lamp
+
+ + +
+
+
+ Y + -Y + -X + X + + + + + +
+
+ +
+
+ + +
+
Bed
+
+ + +
+
+ +
+
+ + +
+
+ Extruder +
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ AMS 1 +
+
+
+
+
+
+
+
+ AMS 2 +
+
+
+
+
+
+
+
+ AMS 3 +
+
+
+
+
+ HT 1 +
+
+
+
+
+ HT 2 +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
Ext
+
+
+
+ ? + ∠ +
+
+
+
+ +
+
+
+
+
+ +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v8.html b/mockup/control-page-v8.html new file mode 100644 index 000000000..472e22ff9 --- /dev/null +++ b/mockup/control-page-v8.html @@ -0,0 +1,652 @@ + + + + + + BambuTrack Control - v8 + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+
+
+ L + 22 + /0 °C +
+
+
+ R + 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+
+ 21 + /0 °C +
+
+ + +
+
Air Condition
+
100%
+
Lamp
+
+ + +
+
+
+ Y + -Y + -X + X + + + + + +
+
+ +
+
+ + +
+
Bed
+
+ + +
+
+ +
+
+ + +
+
+ Extruder +
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ AMS 1 +
+
+
+
+
+
+
+
+ AMS 2 +
+
+
+
+
+
+
+
+ AMS 3 +
+
+
+
+
+ HT 1 +
+
+
+
+
+ HT 2 +
+
+ + +
+
+
18 %
+
☼
+
+ +
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+ +
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
Ext
+
+
+
+ ? + ∠ +
+
+
+
+ +
+
+
+
+
+ +
+ + +
+ + +
+
+
+
+
+ + diff --git a/mockup/control-page-v9.html b/mockup/control-page-v9.html new file mode 100644 index 000000000..b2ffd8ff1 --- /dev/null +++ b/mockup/control-page-v9.html @@ -0,0 +1,924 @@ + + + + + + BambuTrack Control - v9 + + + +
+ +
+
+ Camera + + + + +
+
Camera Feed
+
+ +
+ + +
+
+ Control + + + +
+ +
+ +
+ +
+
+
+ L + 24 + /0 °C +
+
+
+ R + 23 + /0 °C +
+
+
+ 23 + /0 °C +
+
+
+ 23 + /0 °C +
+ + +
+
Air Condition
+
+
+
100%
+
Lamp
+
+
+ + +
+
+ + +
+ +
+
+
+
+ Y + -Y + -X + X + + + + + +
+
+
+ + + Bed + + +
+
+ +
+ +
+ + Extruder +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 +
+
+
+
+
+
+
+ 0 +
+
+ + +
+ +
+
+
17 %
+
☀
+
+
+
A1↓
+
A2↓
+
A3↓
+
A4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
14 %
+
☀
+
+
+
B1↓
+
B2↓
+
B3↓
+
B4↓
+
+
+
+
+ PLA +
+
+
+
+
+ PETG +
+
+
+
+
+ PLA +
+
+
+
+
+ Sup.PLA +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + diff --git a/mockup/icons/ams-ht.png b/mockup/icons/ams-ht.png new file mode 100644 index 000000000..56370b7fc Binary files /dev/null and b/mockup/icons/ams-ht.png differ diff --git a/mockup/icons/ams-ht.xcf b/mockup/icons/ams-ht.xcf new file mode 100644 index 000000000..33ffde230 Binary files /dev/null and b/mockup/icons/ams-ht.xcf differ diff --git a/mockup/icons/ams-settings.svg b/mockup/icons/ams-settings.svg new file mode 100644 index 000000000..7578d938e --- /dev/null +++ b/mockup/icons/ams-settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/ams.png b/mockup/icons/ams.png new file mode 100644 index 000000000..217f7645d Binary files /dev/null and b/mockup/icons/ams.png differ diff --git a/mockup/icons/ams.xcf b/mockup/icons/ams.xcf new file mode 100644 index 000000000..d0e0a6b11 Binary files /dev/null and b/mockup/icons/ams.xcf differ diff --git a/mockup/icons/chamber.svg b/mockup/icons/chamber.svg new file mode 100644 index 000000000..35c805812 --- /dev/null +++ b/mockup/icons/chamber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/dual-extruder.png b/mockup/icons/dual-extruder.png new file mode 100644 index 000000000..37055084b Binary files /dev/null and b/mockup/icons/dual-extruder.png differ diff --git a/mockup/icons/dual-extruder.xcf b/mockup/icons/dual-extruder.xcf new file mode 100644 index 000000000..72446f266 Binary files /dev/null and b/mockup/icons/dual-extruder.xcf differ diff --git a/mockup/icons/extruder-left-right.png b/mockup/icons/extruder-left-right.png new file mode 100644 index 000000000..276368be7 Binary files /dev/null and b/mockup/icons/extruder-left-right.png differ diff --git a/mockup/icons/extruder-left-right.xcf b/mockup/icons/extruder-left-right.xcf new file mode 100644 index 000000000..3318df7c1 Binary files /dev/null and b/mockup/icons/extruder-left-right.xcf differ diff --git a/mockup/icons/eye.svg b/mockup/icons/eye.svg new file mode 100644 index 000000000..ab6299190 --- /dev/null +++ b/mockup/icons/eye.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mockup/icons/heatbed.svg b/mockup/icons/heatbed.svg new file mode 100644 index 000000000..cb8c96ca6 --- /dev/null +++ b/mockup/icons/heatbed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/home.svg b/mockup/icons/home.svg new file mode 100644 index 000000000..7724a92a1 --- /dev/null +++ b/mockup/icons/home.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mockup/icons/hotend.svg b/mockup/icons/hotend.svg new file mode 100644 index 000000000..4898efb77 --- /dev/null +++ b/mockup/icons/hotend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/lamp.svg b/mockup/icons/lamp.svg new file mode 100644 index 000000000..e0b714d49 --- /dev/null +++ b/mockup/icons/lamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/micro-sd.svg b/mockup/icons/micro-sd.svg new file mode 100644 index 000000000..ce6e441ec --- /dev/null +++ b/mockup/icons/micro-sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/reload.svg b/mockup/icons/reload.svg new file mode 100644 index 000000000..5d3fae2f4 --- /dev/null +++ b/mockup/icons/reload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/settings.svg b/mockup/icons/settings.svg new file mode 100644 index 000000000..a4c852ffe --- /dev/null +++ b/mockup/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/single-extruder1.png b/mockup/icons/single-extruder1.png new file mode 100644 index 000000000..c31be02f5 Binary files /dev/null and b/mockup/icons/single-extruder1.png differ diff --git a/mockup/icons/single-extruder1.xcf b/mockup/icons/single-extruder1.xcf new file mode 100644 index 000000000..89526299f Binary files /dev/null and b/mockup/icons/single-extruder1.xcf differ diff --git a/mockup/icons/single-extruder2.png b/mockup/icons/single-extruder2.png new file mode 100644 index 000000000..4f470eb78 Binary files /dev/null and b/mockup/icons/single-extruder2.png differ diff --git a/mockup/icons/single-extruder2.xcf b/mockup/icons/single-extruder2.xcf new file mode 100644 index 000000000..6d6e59103 Binary files /dev/null and b/mockup/icons/single-extruder2.xcf differ diff --git a/mockup/icons/snowflake.svg b/mockup/icons/snowflake.svg new file mode 100644 index 000000000..91eb0e6d7 --- /dev/null +++ b/mockup/icons/snowflake.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mockup/icons/speed.svg b/mockup/icons/speed.svg new file mode 100644 index 000000000..5af93bce8 --- /dev/null +++ b/mockup/icons/speed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/ventilation.svg b/mockup/icons/ventilation.svg new file mode 100644 index 000000000..689089968 --- /dev/null +++ b/mockup/icons/ventilation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/video-camera.svg b/mockup/icons/video-camera.svg new file mode 100644 index 000000000..11b170197 --- /dev/null +++ b/mockup/icons/video-camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mockup/icons/water.svg b/mockup/icons/water.svg new file mode 100644 index 000000000..4beef68b2 --- /dev/null +++ b/mockup/icons/water.svg @@ -0,0 +1,2 @@ + + diff --git a/mockup/icons/webcam.svg b/mockup/icons/webcam.svg new file mode 100644 index 000000000..78e3b7717 --- /dev/null +++ b/mockup/icons/webcam.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/index-CLsUm3wk.js b/static/assets/index-BarB10XI.js similarity index 79% rename from static/assets/index-CLsUm3wk.js rename to static/assets/index-BarB10XI.js index 0185c3728..9cd1bdb7e 100644 --- a/static/assets/index-CLsUm3wk.js +++ b/static/assets/index-BarB10XI.js @@ -1,18 +1,18 @@ -function Bte(t,e){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var Ay=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ys(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var xA={exports:{}},Eg={};var jj;function Hte(){if(jj)return Eg;jj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Eg.Fragment=e,Eg.jsx=n,Eg.jsxs=n,Eg}var Fj;function Vte(){return Fj||(Fj=1,xA.exports=Hte()),xA.exports}var m=Vte(),vA={exports:{}},Kt={};var zj;function $te(){if(zj)return Kt;zj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),p=Symbol.iterator;function g(B){return B===null||typeof B!="object"?null:(B=p&&B[p]||B["@@iterator"],typeof B=="function"?B:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function x(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function(B,X){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,X,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}var E=w.prototype=new M;E.constructor=w,_(E,x.prototype),E.isPureReactComponent=!0;var T=Array.isArray;function P(){}var N={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function C(B,X,ae){var ce=ae.ref;return{$$typeof:t,type:B,key:X,ref:ce!==void 0?ce:null,props:ae}}function D(B,X){return C(B.type,X,B.props)}function F(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function I(B){var X={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ae){return X[ae]})}var q=/\/+/g;function L(B,X){return typeof B=="object"&&B!==null&&B.key!=null?I(""+B.key):X.toString(36)}function H(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(P,P):(B.status="pending",B.then(function(X){B.status==="pending"&&(B.status="fulfilled",B.value=X)},function(X){B.status==="pending"&&(B.status="rejected",B.reason=X)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function V(B,X,ae,ce,xe){var ie=typeof B;(ie==="undefined"||ie==="boolean")&&(B=null);var ve=!1;if(B===null)ve=!0;else switch(ie){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(B.$$typeof){case t:case e:ve=!0;break;case u:return ve=B._init,V(ve(B._payload),X,ae,ce,xe)}}if(ve)return xe=xe(B),ve=ce===""?"."+L(B,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(q,"$&/")+"/"),V(xe,X,ae,"",function(we){return we})):xe!=null&&(F(xe)&&(xe=D(xe,ae+(xe.key==null||B&&B.key===xe.key?"":(""+xe.key).replace(q,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var Pe=ce===""?".":ce+":";if(T(B))for(var pe=0;pe>>1,se=V[Z];if(0>>1;Zr(ae,K))cer(xe,ae)?(V[Z]=xe,V[ce]=K,Z=ce):(V[Z]=ae,V[X]=K,Z=X);else if(cer(xe,K))V[Z]=xe,V[ce]=K,Z=ce;else break e}}return G}function r(V,G){var K=V.sortIndex-G.sortIndex;return K!==0?K:V.id-G.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,p=3,g=!1,y=!1,_=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function E(V){for(var G=n(c);G!==null;){if(G.callback===null)i(c);else if(G.startTime<=V)i(c),G.sortIndex=G.expirationTime,e(l,G);else break;G=n(c)}}function T(V){if(_=!1,E(V),!y)if(n(l)!==null)y=!0,P||(P=!0,I());else{var G=n(c);G!==null&&H(T,G.startTime-V)}}var P=!1,N=-1,U=5,C=-1;function D(){return v?!0:!(t.unstable_now()-CV&&D());){var Z=f.callback;if(typeof Z=="function"){f.callback=null,p=f.priorityLevel;var se=Z(f.expirationTime<=V);if(V=t.unstable_now(),typeof se=="function"){f.callback=se,E(V),G=!0;break t}f===n(l)&&i(l),E(V)}else i(l);f=n(l)}if(f!==null)G=!0;else{var B=n(c);B!==null&&H(T,B.startTime-V),G=!1}}break e}finally{f=null,p=K,g=!1}G=void 0}}finally{G?I():P=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,L=q.port2;q.port1.onmessage=F,I=function(){L.postMessage(null)}}else I=function(){x(F,0)};function H(V,G){N=x(function(){V(t.unstable_now())},G)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Z?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(_?(M(N),N=-1):_=!0,H(T,K-Z))):(V.sortIndex=se,e(l,V),y||g||(y=!0,P||(P=!0,I()))),V},t.unstable_shouldYield=D,t.unstable_wrapCallback=function(V){var G=p;return function(){var K=p;p=G;try{return V.apply(this,arguments)}finally{p=K}}}})(_A)),_A}var Vj;function qte(){return Vj||(Vj=1,bA.exports=Wte()),bA.exports}var SA={exports:{}},qr={};var $j;function Xte(){if($j)return qr;$j=1;var t=hm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),SA.exports=Xte(),SA.exports}var Wj;function Kte(){if(Wj)return Ag;Wj=1;var t=qte(),e=hm(),n=nG();function i(d){var h="https://react.dev/errors/"+d;if(1se||(d.current=Z[se],Z[se]=null,se--)}function ae(d,h){se++,Z[se]=d.current,d.current=h}var ce=B(null),xe=B(null),ie=B(null),ve=B(null);function Pe(d,h){switch(ae(ie,h),ae(xe,d),ae(ce,null),h.nodeType){case 9:case 11:d=(d=h.documentElement)&&(d=d.namespaceURI)?oj(d):0;break;default:if(d=h.tagName,h=h.namespaceURI)h=oj(h),d=lj(h,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function pe(){X(ce),X(xe),X(ie)}function we(d){d.memoizedState!==null&&ae(ve,d);var h=ce.current,b=lj(h,d.type);h!==b&&(ae(xe,d),ae(ce,b))}function ze(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),_g._currentValue=K)}var ue,ht;function z(d){if(ue===void 0)try{throw Error()}catch(b){var h=b.stack.trim().match(/\n( *(at )?)/);ue=h&&h[1]||"",ht=-1i[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var Ay=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ys(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var xA={exports:{}},Ag={};var jj;function Hte(){if(jj)return Ag;jj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Ag.Fragment=e,Ag.jsx=n,Ag.jsxs=n,Ag}var Fj;function Vte(){return Fj||(Fj=1,xA.exports=Hte()),xA.exports}var m=Vte(),vA={exports:{}},Kt={};var zj;function $te(){if(zj)return Kt;zj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),p=Symbol.iterator;function g(B){return B===null||typeof B!="object"?null:(B=p&&B[p]||B["@@iterator"],typeof B=="function"?B:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function x(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function(B,X){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,X,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}var E=w.prototype=new M;E.constructor=w,_(E,x.prototype),E.isPureReactComponent=!0;var T=Array.isArray;function P(){}var N={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function C(B,X,ae){var ce=ae.ref;return{$$typeof:t,type:B,key:X,ref:ce!==void 0?ce:null,props:ae}}function k(B,X){return C(B.type,X,B.props)}function F(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function I(B){var X={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ae){return X[ae]})}var q=/\/+/g;function L(B,X){return typeof B=="object"&&B!==null&&B.key!=null?I(""+B.key):X.toString(36)}function H(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(P,P):(B.status="pending",B.then(function(X){B.status==="pending"&&(B.status="fulfilled",B.value=X)},function(X){B.status==="pending"&&(B.status="rejected",B.reason=X)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function V(B,X,ae,ce,xe){var ie=typeof B;(ie==="undefined"||ie==="boolean")&&(B=null);var ve=!1;if(B===null)ve=!0;else switch(ie){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(B.$$typeof){case t:case e:ve=!0;break;case u:return ve=B._init,V(ve(B._payload),X,ae,ce,xe)}}if(ve)return xe=xe(B),ve=ce===""?"."+L(B,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(q,"$&/")+"/"),V(xe,X,ae,"",function(we){return we})):xe!=null&&(F(xe)&&(xe=k(xe,ae+(xe.key==null||B&&B.key===xe.key?"":(""+xe.key).replace(q,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var Pe=ce===""?".":ce+":";if(T(B))for(var pe=0;pe>>1,se=V[Z];if(0>>1;Zr(ae,K))cer(xe,ae)?(V[Z]=xe,V[ce]=K,Z=ce):(V[Z]=ae,V[X]=K,Z=X);else if(cer(xe,K))V[Z]=xe,V[ce]=K,Z=ce;else break e}}return G}function r(V,G){var K=V.sortIndex-G.sortIndex;return K!==0?K:V.id-G.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,p=3,g=!1,y=!1,_=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function E(V){for(var G=n(c);G!==null;){if(G.callback===null)i(c);else if(G.startTime<=V)i(c),G.sortIndex=G.expirationTime,e(l,G);else break;G=n(c)}}function T(V){if(_=!1,E(V),!y)if(n(l)!==null)y=!0,P||(P=!0,I());else{var G=n(c);G!==null&&H(T,G.startTime-V)}}var P=!1,N=-1,U=5,C=-1;function k(){return v?!0:!(t.unstable_now()-CV&&k());){var Z=f.callback;if(typeof Z=="function"){f.callback=null,p=f.priorityLevel;var se=Z(f.expirationTime<=V);if(V=t.unstable_now(),typeof se=="function"){f.callback=se,E(V),G=!0;break t}f===n(l)&&i(l),E(V)}else i(l);f=n(l)}if(f!==null)G=!0;else{var B=n(c);B!==null&&H(T,B.startTime-V),G=!1}}break e}finally{f=null,p=K,g=!1}G=void 0}}finally{G?I():P=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,L=q.port2;q.port1.onmessage=F,I=function(){L.postMessage(null)}}else I=function(){x(F,0)};function H(V,G){N=x(function(){V(t.unstable_now())},G)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Z?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(_?(M(N),N=-1):_=!0,H(T,K-Z))):(V.sortIndex=se,e(l,V),y||g||(y=!0,P||(P=!0,I()))),V},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(V){var G=p;return function(){var K=p;p=G;try{return V.apply(this,arguments)}finally{p=K}}}})(_A)),_A}var Vj;function qte(){return Vj||(Vj=1,bA.exports=Wte()),bA.exports}var SA={exports:{}},qr={};var $j;function Xte(){if($j)return qr;$j=1;var t=pm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),SA.exports=Xte(),SA.exports}var Wj;function Kte(){if(Wj)return Tg;Wj=1;var t=qte(),e=pm(),n=nG();function i(d){var h="https://react.dev/errors/"+d;if(1se||(d.current=Z[se],Z[se]=null,se--)}function ae(d,h){se++,Z[se]=d.current,d.current=h}var ce=B(null),xe=B(null),ie=B(null),ve=B(null);function Pe(d,h){switch(ae(ie,h),ae(xe,d),ae(ce,null),h.nodeType){case 9:case 11:d=(d=h.documentElement)&&(d=d.namespaceURI)?oj(d):0;break;default:if(d=h.tagName,h=h.namespaceURI)h=oj(h),d=lj(h,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function pe(){X(ce),X(xe),X(ie)}function we(d){d.memoizedState!==null&&ae(ve,d);var h=ce.current,b=lj(h,d.type);h!==b&&(ae(xe,d),ae(ce,b))}function ze(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),Sg._currentValue=K)}var ue,ht;function z(d){if(ue===void 0)try{throw Error()}catch(b){var h=b.stack.trim().match(/\n( *(at )?)/);ue=h&&h[1]||"",ht=-1)":-1R||_e[S]!==Fe[R]){var Je=` `+_e[S].replace(" at new "," at ");return d.displayName&&Je.includes("")&&(Je=Je.replace("",d.displayName)),Je}while(1<=S&&0<=R);break}}}finally{W=!1,Error.prepareStackTrace=b}return(b=d?d.displayName||d.name:"")?z(b):""}function J(d,h){switch(d.tag){case 26:case 27:case 5:return z(d.type);case 16:return z("Lazy");case 13:return d.child!==h&&h!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return re(d.type,!1);case 11:return re(d.type.render,!1);case 1:return re(d.type,!0);case 31:return z("Activity");default:return""}}function ee(d){try{var h="",b=null;do h+=J(d,b),b=d,d=d.return;while(d);return h}catch(S){return` Error generating stack: `+S.message+` -`+S.stack}}var oe=Object.prototype.hasOwnProperty,De=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,te=t.unstable_shouldYield,j=t.unstable_requestPaint,O=t.unstable_now,Y=t.unstable_getCurrentPriorityLevel,me=t.unstable_ImmediatePriority,ye=t.unstable_UserBlockingPriority,he=t.unstable_NormalPriority,Ze=t.unstable_LowPriority,Le=t.unstable_IdlePriority,Xe=t.log,at=t.unstable_setDisableYieldValue,Ie=null,Re=null;function pt(d){if(typeof Xe=="function"&&at(d),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Ie,d)}catch{}}var nt=Math.clz32?Math.clz32:de,tt=Math.log,ut=Math.LN2;function de(d){return d>>>=0,d===0?32:31-(tt(d)/ut|0)|0}var it=256,fe=262144,Oe=4194304;function Me(d){var h=d&42;if(h!==0)return h;switch(d&-d){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return d&261888;case 262144:case 524288:case 1048576:case 2097152:return d&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return d&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return d}}function ge(d,h,b){var S=d.pendingLanes;if(S===0)return 0;var R=0,k=d.suspendedLanes,$=d.pingedLanes;d=d.warmLanes;var ne=S&134217727;return ne!==0?(S=ne&~k,S!==0?R=Me(S):($&=ne,$!==0?R=Me($):b||(b=ne&~d,b!==0&&(R=Me(b))))):(ne=S&~k,ne!==0?R=Me(ne):$!==0?R=Me($):b||(b=S&~d,b!==0&&(R=Me(b)))),R===0?0:h!==0&&h!==R&&(h&k)===0&&(k=R&-R,b=h&-h,k>=b||k===32&&(b&4194048)!==0)?h:R}function Be(d,h){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&h)===0}function ct(d,h){switch(d){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bt(){var d=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),d}function Rt(d){for(var h=[],b=0;31>b;b++)h.push(d);return h}function on(d,h){d.pendingLanes|=h,h!==268435456&&(d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0)}function kt(d,h,b,S,R,k){var $=d.pendingLanes;d.pendingLanes=b,d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0,d.expiredLanes&=b,d.entangledLanes&=b,d.errorRecoveryDisabledLanes&=b,d.shellSuspendCounter=0;var ne=d.entanglements,_e=d.expirationTimes,Fe=d.hiddenUpdates;for(b=$&~b;0"u")return null;try{return d.activeElement||d.body}catch{return d.body}}var Ti=/[\n"\\]/g;function Cn(d){return d.replace(Ti,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function Js(d,h,b,S,R,k,$,ne){d.name="",$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"?d.type=$:d.removeAttribute("type"),h!=null?$==="number"?(h===0&&d.value===""||d.value!=h)&&(d.value=""+cn(h)):d.value!==""+cn(h)&&(d.value=""+cn(h)):$!=="submit"&&$!=="reset"||d.removeAttribute("value"),h!=null?mr(d,$,cn(h)):b!=null?mr(d,$,cn(b)):S!=null&&d.removeAttribute("value"),R==null&&k!=null&&(d.defaultChecked=!!k),R!=null&&(d.checked=R&&typeof R!="function"&&typeof R!="symbol"),ne!=null&&typeof ne!="function"&&typeof ne!="symbol"&&typeof ne!="boolean"?d.name=""+cn(ne):d.removeAttribute("name")}function Pn(d,h,b,S,R,k,$,ne){if(k!=null&&typeof k!="function"&&typeof k!="symbol"&&typeof k!="boolean"&&(d.type=k),h!=null||b!=null){if(!(k!=="submit"&&k!=="reset"||h!=null)){Xt(d);return}b=b!=null?""+cn(b):"",h=h!=null?""+cn(h):b,ne||h===d.value||(d.value=h),d.defaultValue=h}S=S??R,S=typeof S!="function"&&typeof S!="symbol"&&!!S,d.checked=ne?d.checked:!!S,d.defaultChecked=!!S,$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"&&(d.name=$),Xt(d)}function mr(d,h,b){h==="number"&&yi(d.ownerDocument)===d||d.defaultValue===""+b||(d.defaultValue=""+b)}function Qi(d,h,b,S){if(d=d.options,h){h={};for(var R=0;R"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),xM=!1;if(cl)try{var Fm={};Object.defineProperty(Fm,"passive",{get:function(){xM=!0}}),window.addEventListener("test",Fm,Fm),window.removeEventListener("test",Fm,Fm)}catch{xM=!1}var Dc=null,vM=null,vv=null;function lL(){if(vv)return vv;var d,h=vM,b=h.length,S,R="value"in Dc?Dc.value:Dc.textContent,k=R.length;for(d=0;d=Hm),pL=" ",mL=!1;function gL(d,h){switch(d){case"keyup":return cee.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function xL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var Kf=!1;function dee(d,h){switch(d){case"compositionend":return xL(h);case"keypress":return h.which!==32?null:(mL=!0,pL);case"textInput":return d=h.data,d===pL&&mL?null:d;default:return null}}function fee(d,h){if(Kf)return d==="compositionend"||!wM&&gL(d,h)?(d=lL(),vv=vM=Dc=null,Kf=!1,d):null;switch(d){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:b,offset:h-d};d=S}e:{for(;b;){if(b.nextSibling){b=b.nextSibling;break e}b=b.parentNode}b=void 0}b=EL(b)}}function TL(d,h){return d&&h?d===h?!0:d&&d.nodeType===3?!1:h&&h.nodeType===3?TL(d,h.parentNode):"contains"in d?d.contains(h):d.compareDocumentPosition?!!(d.compareDocumentPosition(h)&16):!1:!1}function CL(d){d=d!=null&&d.ownerDocument!=null&&d.ownerDocument.defaultView!=null?d.ownerDocument.defaultView:window;for(var h=yi(d.document);h instanceof d.HTMLIFrameElement;){try{var b=typeof h.contentWindow.location.href=="string"}catch{b=!1}if(b)d=h.contentWindow;else break;h=yi(d.document)}return h}function AM(d){var h=d&&d.nodeName&&d.nodeName.toLowerCase();return h&&(h==="input"&&(d.type==="text"||d.type==="search"||d.type==="tel"||d.type==="url"||d.type==="password")||h==="textarea"||d.contentEditable==="true")}var bee=cl&&"documentMode"in document&&11>=document.documentMode,Yf=null,TM=null,Wm=null,CM=!1;function NL(d,h,b){var S=b.window===b?b.document:b.nodeType===9?b:b.ownerDocument;CM||Yf==null||Yf!==yi(S)||(S=Yf,"selectionStart"in S&&AM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),Wm&&Gm(Wm,S)||(Wm=S,S=dy(TM,"onSelect"),0>=$,R-=$,Co=1<<32-nt(h)+R|b<Qt?(xn=Dt,Dt=null):xn=Dt.sibling;var wn=Ve(ke,Dt,je[Qt],rt);if(wn===null){Dt===null&&(Dt=xn);break}d&&Dt&&wn.alternate===null&&h(ke,Dt),Ee=k(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn,Dt=xn}if(Qt===je.length)return b(ke,Dt),yn&&dl(ke,Qt),It;if(Dt===null){for(;QtQt?(xn=Dt,Dt=null):xn=Dt.sibling;var eu=Ve(ke,Dt,wn.value,rt);if(eu===null){Dt===null&&(Dt=xn);break}d&&Dt&&eu.alternate===null&&h(ke,Dt),Ee=k(eu,Ee,Qt),Sn===null?It=eu:Sn.sibling=eu,Sn=eu,Dt=xn}if(wn.done)return b(ke,Dt),yn&&dl(ke,Qt),It;if(Dt===null){for(;!wn.done;Qt++,wn=je.next())wn=st(ke,wn.value,rt),wn!==null&&(Ee=k(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return yn&&dl(ke,Qt),It}for(Dt=S(Dt);!wn.done;Qt++,wn=je.next())wn=Ye(Dt,ke,Qt,wn.value,rt),wn!==null&&(d&&wn.alternate!==null&&Dt.delete(wn.key===null?Qt:wn.key),Ee=k(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return d&&Dt.forEach(function(zte){return h(ke,zte)}),yn&&dl(ke,Qt),It}function jn(ke,Ee,je,rt){if(typeof je=="object"&&je!==null&&je.type===_&&je.key===null&&(je=je.props.children),typeof je=="object"&&je!==null){switch(je.$$typeof){case g:e:{for(var It=je.key;Ee!==null;){if(Ee.key===It){if(It=je.type,It===_){if(Ee.tag===7){b(ke,Ee.sibling),rt=R(Ee,je.props.children),rt.return=ke,ke=rt;break e}}else if(Ee.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===U&&Sd(It)===Ee.type){b(ke,Ee.sibling),rt=R(Ee,je.props),Qm(rt,je),rt.return=ke,ke=rt;break e}b(ke,Ee);break}else h(ke,Ee);Ee=Ee.sibling}je.type===_?(rt=xd(je.props.children,ke.mode,rt,je.key),rt.return=ke,ke=rt):(rt=Cv(je.type,je.key,je.props,null,ke.mode,rt),Qm(rt,je),rt.return=ke,ke=rt)}return $(ke);case y:e:{for(It=je.key;Ee!==null;){if(Ee.key===It)if(Ee.tag===4&&Ee.stateNode.containerInfo===je.containerInfo&&Ee.stateNode.implementation===je.implementation){b(ke,Ee.sibling),rt=R(Ee,je.children||[]),rt.return=ke,ke=rt;break e}else{b(ke,Ee);break}else h(ke,Ee);Ee=Ee.sibling}rt=LM(je,ke.mode,rt),rt.return=ke,ke=rt}return $(ke);case U:return je=Sd(je),jn(ke,Ee,je,rt)}if(H(je))return Nt(ke,Ee,je,rt);if(I(je)){if(It=I(je),typeof It!="function")throw Error(i(150));return je=It.call(je),Bt(ke,Ee,je,rt)}if(typeof je.then=="function")return jn(ke,Ee,Lv(je),rt);if(je.$$typeof===w)return jn(ke,Ee,Pv(ke,je),rt);Iv(ke,je)}return typeof je=="string"&&je!==""||typeof je=="number"||typeof je=="bigint"?(je=""+je,Ee!==null&&Ee.tag===6?(b(ke,Ee.sibling),rt=R(Ee,je),rt.return=ke,ke=rt):(b(ke,Ee),rt=OM(je,ke.mode,rt),rt.return=ke,ke=rt),$(ke)):b(ke,Ee)}return function(ke,Ee,je,rt){try{Zm=0;var It=jn(ke,Ee,je,rt);return oh=null,It}catch(Dt){if(Dt===sh||Dt===kv)throw Dt;var Sn=Wa(29,Dt,null,ke.mode);return Sn.lanes=rt,Sn.return=ke,Sn}finally{}}}var Md=QL(!0),JL=QL(!1),Uc=!1;function qM(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function XM(d,h){d=d.updateQueue,h.updateQueue===d&&(h.updateQueue={baseState:d.baseState,firstBaseUpdate:d.firstBaseUpdate,lastBaseUpdate:d.lastBaseUpdate,shared:d.shared,callbacks:null})}function jc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function Fc(d,h,b){var S=d.updateQueue;if(S===null)return null;if(S=S.shared,(Tn&2)!==0){var R=S.pending;return R===null?h.next=h:(h.next=R.next,R.next=h),S.pending=h,h=Tv(d),IL(d,null,b),h}return Av(d,S,h,b),Tv(d)}function Jm(d,h,b){if(h=h.updateQueue,h!==null&&(h=h.shared,(b&4194048)!==0)){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}function KM(d,h){var b=d.updateQueue,S=d.alternate;if(S!==null&&(S=S.updateQueue,b===S)){var R=null,k=null;if(b=b.firstBaseUpdate,b!==null){do{var $={lane:b.lane,tag:b.tag,payload:b.payload,callback:null,next:null};k===null?R=k=$:k=k.next=$,b=b.next}while(b!==null);k===null?R=k=h:k=k.next=h}else R=k=h;b={baseState:S.baseState,firstBaseUpdate:R,lastBaseUpdate:k,shared:S.shared,callbacks:S.callbacks},d.updateQueue=b;return}d=b.lastBaseUpdate,d===null?b.firstBaseUpdate=h:d.next=h,b.lastBaseUpdate=h}var YM=!1;function eg(){if(YM){var d=ah;if(d!==null)throw d}}function tg(d,h,b,S){YM=!1;var R=d.updateQueue;Uc=!1;var k=R.firstBaseUpdate,$=R.lastBaseUpdate,ne=R.shared.pending;if(ne!==null){R.shared.pending=null;var _e=ne,Fe=_e.next;_e.next=null,$===null?k=Fe:$.next=Fe,$=_e;var Je=d.alternate;Je!==null&&(Je=Je.updateQueue,ne=Je.lastBaseUpdate,ne!==$&&(ne===null?Je.firstBaseUpdate=Fe:ne.next=Fe,Je.lastBaseUpdate=_e))}if(k!==null){var st=R.baseState;$=0,Je=Fe=_e=null,ne=k;do{var Ve=ne.lane&-536870913,Ye=Ve!==ne.lane;if(Ye?(gn&Ve)===Ve:(S&Ve)===Ve){Ve!==0&&Ve===rh&&(YM=!0),Je!==null&&(Je=Je.next={lane:0,tag:ne.tag,payload:ne.payload,callback:null,next:null});e:{var Nt=d,Bt=ne;Ve=h;var jn=b;switch(Bt.tag){case 1:if(Nt=Bt.payload,typeof Nt=="function"){st=Nt.call(jn,st,Ve);break e}st=Nt;break e;case 3:Nt.flags=Nt.flags&-65537|128;case 0:if(Nt=Bt.payload,Ve=typeof Nt=="function"?Nt.call(jn,st,Ve):Nt,Ve==null)break e;st=f({},st,Ve);break e;case 2:Uc=!0}}Ve=ne.callback,Ve!==null&&(d.flags|=64,Ye&&(d.flags|=8192),Ye=R.callbacks,Ye===null?R.callbacks=[Ve]:Ye.push(Ve))}else Ye={lane:Ve,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},Je===null?(Fe=Je=Ye,_e=st):Je=Je.next=Ye,$|=Ve;if(ne=ne.next,ne===null){if(ne=R.shared.pending,ne===null)break;Ye=ne,ne=Ye.next,Ye.next=null,R.lastBaseUpdate=Ye,R.shared.pending=null}}while(!0);Je===null&&(_e=st),R.baseState=_e,R.firstBaseUpdate=Fe,R.lastBaseUpdate=Je,k===null&&(R.shared.lanes=0),$c|=$,d.lanes=$,d.memoizedState=st}}function eI(d,h){if(typeof d!="function")throw Error(i(191,d));d.call(h)}function tI(d,h){var b=d.callbacks;if(b!==null)for(d.callbacks=null,d=0;dk?k:8;var $=V.T,ne={};V.T=ne,mE(d,!1,h,b);try{var _e=R(),Fe=V.S;if(Fe!==null&&Fe(ne,_e),_e!==null&&typeof _e=="object"&&typeof _e.then=="function"){var Je=Nee(_e,S);rg(d,h,Je,Za(d))}else rg(d,h,S,Za(d))}catch(st){rg(d,h,{then:function(){},status:"rejected",reason:st},Za())}finally{G.p=k,$!==null&&ne.types!==null&&($.types=ne.types),V.T=$}}function Lee(){}function hE(d,h,b,S){if(d.tag!==5)throw Error(i(476));var R=kI(d).queue;DI(d,R,h,K,b===null?Lee:function(){return OI(d),b(S)})}function kI(d){var h=d.memoizedState;if(h!==null)return h;h={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ml,lastRenderedState:K},next:null};var b={};return h.next={memoizedState:b,baseState:b,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ml,lastRenderedState:b},next:null},d.memoizedState=h,d=d.alternate,d!==null&&(d.memoizedState=h),h}function OI(d){var h=kI(d);h.next===null&&(h=d.alternate.memoizedState),rg(d,h.next.queue,{},Za())}function pE(){return kr(_g)}function LI(){return Ni().memoizedState}function II(){return Ni().memoizedState}function Iee(d){for(var h=d.return;h!==null;){switch(h.tag){case 24:case 3:var b=Za();d=jc(b);var S=Fc(h,d,b);S!==null&&(Na(S,h,b),Jm(S,h,b)),h={cache:VM()},d.payload=h;return}h=h.return}}function Uee(d,h,b){var S=Za();b={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null},Wv(d)?jI(h,b):(b=DM(d,h,b,S),b!==null&&(Na(b,d,S),FI(b,h,S)))}function UI(d,h,b){var S=Za();rg(d,h,b,S)}function rg(d,h,b,S){var R={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null};if(Wv(d))jI(h,R);else{var k=d.alternate;if(d.lanes===0&&(k===null||k.lanes===0)&&(k=h.lastRenderedReducer,k!==null))try{var $=h.lastRenderedState,ne=k($,b);if(R.hasEagerState=!0,R.eagerState=ne,Ga(ne,$))return Av(d,h,R,0),qn===null&&Ev(),!1}catch{}finally{}if(b=DM(d,h,R,S),b!==null)return Na(b,d,S),FI(b,h,S),!0}return!1}function mE(d,h,b,S){if(S={lane:2,revertLane:qE(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},Wv(d)){if(h)throw Error(i(479))}else h=DM(d,b,S,2),h!==null&&Na(h,d,2)}function Wv(d){var h=d.alternate;return d===Zt||h!==null&&h===Zt}function jI(d,h){ch=Fv=!0;var b=d.pending;b===null?h.next=h:(h.next=b.next,b.next=h),d.pending=h}function FI(d,h,b){if((b&4194048)!==0){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}var ag={readContext:kr,use:Hv,useCallback:bi,useContext:bi,useEffect:bi,useImperativeHandle:bi,useLayoutEffect:bi,useInsertionEffect:bi,useMemo:bi,useReducer:bi,useRef:bi,useState:bi,useDebugValue:bi,useDeferredValue:bi,useTransition:bi,useSyncExternalStore:bi,useId:bi,useHostTransitionStatus:bi,useFormState:bi,useActionState:bi,useOptimistic:bi,useMemoCache:bi,useCacheRefresh:bi};ag.useEffectEvent=bi;var zI={readContext:kr,use:Hv,useCallback:function(d,h){return ca().memoizedState=[d,h===void 0?null:h],d},useContext:kr,useEffect:wI,useImperativeHandle:function(d,h,b){b=b!=null?b.concat([d]):null,$v(4194308,4,TI.bind(null,h,d),b)},useLayoutEffect:function(d,h){return $v(4194308,4,d,h)},useInsertionEffect:function(d,h){$v(4,2,d,h)},useMemo:function(d,h){var b=ca();h=h===void 0?null:h;var S=d();if(Ed){pt(!0);try{d()}finally{pt(!1)}}return b.memoizedState=[S,h],S},useReducer:function(d,h,b){var S=ca();if(b!==void 0){var R=b(h);if(Ed){pt(!0);try{b(h)}finally{pt(!1)}}}else R=h;return S.memoizedState=S.baseState=R,d={pending:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:R},S.queue=d,d=d.dispatch=Uee.bind(null,Zt,d),[S.memoizedState,d]},useRef:function(d){var h=ca();return d={current:d},h.memoizedState=d},useState:function(d){d=lE(d);var h=d.queue,b=UI.bind(null,Zt,h);return h.dispatch=b,[d.memoizedState,b]},useDebugValue:dE,useDeferredValue:function(d,h){var b=ca();return fE(b,d,h)},useTransition:function(){var d=lE(!1);return d=DI.bind(null,Zt,d.queue,!0,!1),ca().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,h,b){var S=Zt,R=ca();if(yn){if(b===void 0)throw Error(i(407));b=b()}else{if(b=h(),qn===null)throw Error(i(349));(gn&127)!==0||oI(S,h,b)}R.memoizedState=b;var k={value:b,getSnapshot:h};return R.queue=k,wI(cI.bind(null,S,k,d),[d]),S.flags|=2048,dh(9,{destroy:void 0},lI.bind(null,S,k,b,h),null),b},useId:function(){var d=ca(),h=qn.identifierPrefix;if(yn){var b=No,S=Co;b=(S&~(1<<32-nt(S)-1)).toString(32)+b,h="_"+h+"R_"+b,b=zv++,0<\/script>",k=k.removeChild(k.firstChild);break;case"select":k=typeof S.is=="string"?$.createElement("select",{is:S.is}):$.createElement("select"),S.multiple?k.multiple=!0:S.size&&(k.size=S.size);break;default:k=typeof S.is=="string"?$.createElement(R,{is:S.is}):$.createElement(R)}}k[hi]=h,k[Ai]=S;e:for($=h.child;$!==null;){if($.tag===5||$.tag===6)k.appendChild($.stateNode);else if($.tag!==4&&$.tag!==27&&$.child!==null){$.child.return=$,$=$.child;continue}if($===h)break e;for(;$.sibling===null;){if($.return===null||$.return===h)break e;$=$.return}$.sibling.return=$.return,$=$.sibling}h.stateNode=k;e:switch(Lr(k,R,S),R){case"button":case"input":case"select":case"textarea":S=!!S.autoFocus;break e;case"img":S=!0;break e;default:S=!1}S&&xl(h)}}return ti(h),NE(h,h.type,d===null?null:d.memoizedProps,h.pendingProps,b),null;case 6:if(d&&h.stateNode!=null)d.memoizedProps!==S&&xl(h);else{if(typeof S!="string"&&h.stateNode===null)throw Error(i(166));if(d=ie.current,nh(h)){if(d=h.stateNode,b=h.memoizedProps,S=null,R=Dr,R!==null)switch(R.tag){case 27:case 5:S=R.memoizedProps}d[hi]=h,d=!!(d.nodeValue===b||S!==null&&S.suppressHydrationWarning===!0||aj(d.nodeValue,b)),d||Lc(h,!0)}else d=fy(d).createTextNode(S),d[hi]=h,h.stateNode=d}return ti(h),null;case 31:if(b=h.memoizedState,d===null||d.memoizedState!==null){if(S=nh(h),b!==null){if(d===null){if(!S)throw Error(i(318));if(d=h.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(i(557));d[hi]=h}else vd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),d=!1}else b=FM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=b),d=!0;if(!d)return h.flags&256?(Xa(h),h):(Xa(h),null);if((h.flags&128)!==0)throw Error(i(558))}return ti(h),null;case 13:if(S=h.memoizedState,d===null||d.memoizedState!==null&&d.memoizedState.dehydrated!==null){if(R=nh(h),S!==null&&S.dehydrated!==null){if(d===null){if(!R)throw Error(i(318));if(R=h.memoizedState,R=R!==null?R.dehydrated:null,!R)throw Error(i(317));R[hi]=h}else vd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),R=!1}else R=FM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=R),R=!0;if(!R)return h.flags&256?(Xa(h),h):(Xa(h),null)}return Xa(h),(h.flags&128)!==0?(h.lanes=b,h):(b=S!==null,d=d!==null&&d.memoizedState!==null,b&&(S=h.child,R=null,S.alternate!==null&&S.alternate.memoizedState!==null&&S.alternate.memoizedState.cachePool!==null&&(R=S.alternate.memoizedState.cachePool.pool),k=null,S.memoizedState!==null&&S.memoizedState.cachePool!==null&&(k=S.memoizedState.cachePool.pool),k!==R&&(S.flags|=2048)),b!==d&&b&&(h.child.flags|=8192),Zv(h,h.updateQueue),ti(h),null);case 4:return pe(),d===null&&ZE(h.stateNode.containerInfo),ti(h),null;case 10:return hl(h.type),ti(h),null;case 19:if(X(Ci),S=h.memoizedState,S===null)return ti(h),null;if(R=(h.flags&128)!==0,k=S.rendering,k===null)if(R)og(S,!1);else{if(_i!==0||d!==null&&(d.flags&128)!==0)for(d=h.child;d!==null;){if(k=jv(d),k!==null){for(h.flags|=128,og(S,!1),d=k.updateQueue,h.updateQueue=d,Zv(h,d),h.subtreeFlags=0,d=b,b=h.child;b!==null;)UL(b,d),b=b.sibling;return ae(Ci,Ci.current&1|2),yn&&dl(h,S.treeForkCount),h.child}d=d.sibling}S.tail!==null&&O()>ny&&(h.flags|=128,R=!0,og(S,!1),h.lanes=4194304)}else{if(!R)if(d=jv(k),d!==null){if(h.flags|=128,R=!0,d=d.updateQueue,h.updateQueue=d,Zv(h,d),og(S,!0),S.tail===null&&S.tailMode==="hidden"&&!k.alternate&&!yn)return ti(h),null}else 2*O()-S.renderingStartTime>ny&&b!==536870912&&(h.flags|=128,R=!0,og(S,!1),h.lanes=4194304);S.isBackwards?(k.sibling=h.child,h.child=k):(d=S.last,d!==null?d.sibling=k:h.child=k,S.last=k)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=O(),d.sibling=null,b=Ci.current,ae(Ci,R?b&1|2:b&1),yn&&dl(h,S.treeForkCount),d):(ti(h),null);case 22:case 23:return Xa(h),QM(),S=h.memoizedState!==null,d!==null?d.memoizedState!==null!==S&&(h.flags|=8192):S&&(h.flags|=8192),S?(b&536870912)!==0&&(h.flags&128)===0&&(ti(h),h.subtreeFlags&6&&(h.flags|=8192)):ti(h),b=h.updateQueue,b!==null&&Zv(h,b.retryQueue),b=null,d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),S=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(S=h.memoizedState.cachePool.pool),S!==b&&(h.flags|=2048),d!==null&&X(_d),null;case 24:return b=null,d!==null&&(b=d.memoizedState.cache),h.memoizedState.cache!==b&&(h.flags|=2048),hl(Ii),ti(h),null;case 25:return null;case 30:return null}throw Error(i(156,h.tag))}function Hee(d,h){switch(UM(h),h.tag){case 1:return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 3:return hl(Ii),pe(),d=h.flags,(d&65536)!==0&&(d&128)===0?(h.flags=d&-65537|128,h):null;case 26:case 27:case 5:return ze(h),null;case 31:if(h.memoizedState!==null){if(Xa(h),h.alternate===null)throw Error(i(340));vd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 13:if(Xa(h),d=h.memoizedState,d!==null&&d.dehydrated!==null){if(h.alternate===null)throw Error(i(340));vd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 19:return X(Ci),null;case 4:return pe(),null;case 10:return hl(h.type),null;case 22:case 23:return Xa(h),QM(),d!==null&&X(_d),d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 24:return hl(Ii),null;case 25:return null;default:return null}}function uU(d,h){switch(UM(h),h.tag){case 3:hl(Ii),pe();break;case 26:case 27:case 5:ze(h);break;case 4:pe();break;case 31:h.memoizedState!==null&&Xa(h);break;case 13:Xa(h);break;case 19:X(Ci);break;case 10:hl(h.type);break;case 22:case 23:Xa(h),QM(),d!==null&&X(_d);break;case 24:hl(Ii)}}function lg(d,h){try{var b=h.updateQueue,S=b!==null?b.lastEffect:null;if(S!==null){var R=S.next;b=R;do{if((b.tag&d)===d){S=void 0;var k=b.create,$=b.inst;S=k(),$.destroy=S}b=b.next}while(b!==R)}}catch(ne){kn(h,h.return,ne)}}function Hc(d,h,b){try{var S=h.updateQueue,R=S!==null?S.lastEffect:null;if(R!==null){var k=R.next;S=k;do{if((S.tag&d)===d){var $=S.inst,ne=$.destroy;if(ne!==void 0){$.destroy=void 0,R=h;var _e=b,Fe=ne;try{Fe()}catch(Je){kn(R,_e,Je)}}}S=S.next}while(S!==k)}}catch(Je){kn(h,h.return,Je)}}function dU(d){var h=d.updateQueue;if(h!==null){var b=d.stateNode;try{tI(h,b)}catch(S){kn(d,d.return,S)}}}function fU(d,h,b){b.props=Ad(d.type,d.memoizedProps),b.state=d.memoizedState;try{b.componentWillUnmount()}catch(S){kn(d,h,S)}}function cg(d,h){try{var b=d.ref;if(b!==null){switch(d.tag){case 26:case 27:case 5:var S=d.stateNode;break;case 30:S=d.stateNode;break;default:S=d.stateNode}typeof b=="function"?d.refCleanup=b(S):b.current=S}}catch(R){kn(d,h,R)}}function Ro(d,h){var b=d.ref,S=d.refCleanup;if(b!==null)if(typeof S=="function")try{S()}catch(R){kn(d,h,R)}finally{d.refCleanup=null,d=d.alternate,d!=null&&(d.refCleanup=null)}else if(typeof b=="function")try{b(null)}catch(R){kn(d,h,R)}else b.current=null}function hU(d){var h=d.type,b=d.memoizedProps,S=d.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":b.autoFocus&&S.focus();break e;case"img":b.src?S.src=b.src:b.srcSet&&(S.srcset=b.srcSet)}}catch(R){kn(d,d.return,R)}}function RE(d,h,b){try{var S=d.stateNode;ute(S,d.type,b,h),S[Ai]=h}catch(R){kn(d,d.return,R)}}function pU(d){return d.tag===5||d.tag===3||d.tag===26||d.tag===27&&Kc(d.type)||d.tag===4}function PE(d){e:for(;;){for(;d.sibling===null;){if(d.return===null||pU(d.return))return null;d=d.return}for(d.sibling.return=d.return,d=d.sibling;d.tag!==5&&d.tag!==6&&d.tag!==18;){if(d.tag===27&&Kc(d.type)||d.flags&2||d.child===null||d.tag===4)continue e;d.child.return=d,d=d.child}if(!(d.flags&2))return d.stateNode}}function DE(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?(b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b).insertBefore(d,h):(h=b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b,h.appendChild(d),b=b._reactRootContainer,b!=null||h.onclick!==null||(h.onclick=ll));else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode,h=null),d=d.child,d!==null))for(DE(d,h,b),d=d.sibling;d!==null;)DE(d,h,b),d=d.sibling}function Qv(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?b.insertBefore(d,h):b.appendChild(d);else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode),d=d.child,d!==null))for(Qv(d,h,b),d=d.sibling;d!==null;)Qv(d,h,b),d=d.sibling}function mU(d){var h=d.stateNode,b=d.memoizedProps;try{for(var S=d.type,R=h.attributes;R.length;)h.removeAttributeNode(R[0]);Lr(h,S,b),h[hi]=d,h[Ai]=b}catch(k){kn(d,d.return,k)}}var vl=!1,Fi=!1,kE=!1,gU=typeof WeakSet=="function"?WeakSet:Set,xr=null;function Vee(d,h){if(d=d.containerInfo,eA=yy,d=CL(d),AM(d)){if("selectionStart"in d)var b={start:d.selectionStart,end:d.selectionEnd};else e:{b=(b=d.ownerDocument)&&b.defaultView||window;var S=b.getSelection&&b.getSelection();if(S&&S.rangeCount!==0){b=S.anchorNode;var R=S.anchorOffset,k=S.focusNode;S=S.focusOffset;try{b.nodeType,k.nodeType}catch{b=null;break e}var $=0,ne=-1,_e=-1,Fe=0,Je=0,st=d,Ve=null;t:for(;;){for(var Ye;st!==b||R!==0&&st.nodeType!==3||(ne=$+R),st!==k||S!==0&&st.nodeType!==3||(_e=$+S),st.nodeType===3&&($+=st.nodeValue.length),(Ye=st.firstChild)!==null;)Ve=st,st=Ye;for(;;){if(st===d)break t;if(Ve===b&&++Fe===R&&(ne=$),Ve===k&&++Je===S&&(_e=$),(Ye=st.nextSibling)!==null)break;st=Ve,Ve=st.parentNode}st=Ye}b=ne===-1||_e===-1?null:{start:ne,end:_e}}else b=null}b=b||{start:0,end:0}}else b=null;for(tA={focusedElem:d,selectionRange:b},yy=!1,xr=h;xr!==null;)if(h=xr,d=h.child,(h.subtreeFlags&1028)!==0&&d!==null)d.return=h,xr=d;else for(;xr!==null;){switch(h=xr,k=h.alternate,d=h.flags,h.tag){case 0:if((d&4)!==0&&(d=h.updateQueue,d=d!==null?d.events:null,d!==null))for(b=0;b title"))),Lr(k,S,b),k[hi]=d,Te(k),S=k;break e;case"link":var $=Sj("link","href",R).get(S+(b.href||""));if($){for(var ne=0;ne<$.length;ne++)if(k=$[ne],k.getAttribute("href")===(b.href==null||b.href===""?null:b.href)&&k.getAttribute("rel")===(b.rel==null?null:b.rel)&&k.getAttribute("title")===(b.title==null?null:b.title)&&k.getAttribute("crossorigin")===(b.crossOrigin==null?null:b.crossOrigin)){$.splice(ne,1);break t}}k=R.createElement(S),Lr(k,S,b),R.head.appendChild(k);break;case"meta":if($=Sj("meta","content",R).get(S+(b.content||""))){for(ne=0;ne<$.length;ne++)if(k=$[ne],k.getAttribute("content")===(b.content==null?null:""+b.content)&&k.getAttribute("name")===(b.name==null?null:b.name)&&k.getAttribute("property")===(b.property==null?null:b.property)&&k.getAttribute("http-equiv")===(b.httpEquiv==null?null:b.httpEquiv)&&k.getAttribute("charset")===(b.charSet==null?null:b.charSet)){$.splice(ne,1);break t}}k=R.createElement(S),Lr(k,S,b),R.head.appendChild(k);break;default:throw Error(i(468,S))}k[hi]=d,Te(k),S=k}d.stateNode=S}else wj(R,d.type,d.stateNode);else d.stateNode=_j(R,S,d.memoizedProps);else k!==S?(k===null?b.stateNode!==null&&(b=b.stateNode,b.parentNode.removeChild(b)):k.count--,S===null?wj(R,d.type,d.stateNode):_j(R,S,d.memoizedProps)):S===null&&d.stateNode!==null&&RE(d,d.memoizedProps,b.memoizedProps)}break;case 27:Aa(h,d),Ta(d),S&512&&(Fi||b===null||Ro(b,b.return)),b!==null&&S&4&&RE(d,d.memoizedProps,b.memoizedProps);break;case 5:if(Aa(h,d),Ta(d),S&512&&(Fi||b===null||Ro(b,b.return)),d.flags&32){R=d.stateNode;try{To(R,"")}catch(Nt){kn(d,d.return,Nt)}}S&4&&d.stateNode!=null&&(R=d.memoizedProps,RE(d,R,b!==null?b.memoizedProps:R)),S&1024&&(kE=!0);break;case 6:if(Aa(h,d),Ta(d),S&4){if(d.stateNode===null)throw Error(i(162));S=d.memoizedProps,b=d.stateNode;try{b.nodeValue=S}catch(Nt){kn(d,d.return,Nt)}}break;case 3:if(my=null,R=to,to=hy(h.containerInfo),Aa(h,d),to=R,Ta(d),S&4&&b!==null&&b.memoizedState.isDehydrated)try{wh(h.containerInfo)}catch(Nt){kn(d,d.return,Nt)}kE&&(kE=!1,wU(d));break;case 4:S=to,to=hy(d.stateNode.containerInfo),Aa(h,d),Ta(d),to=S;break;case 12:Aa(h,d),Ta(d);break;case 31:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 13:Aa(h,d),Ta(d),d.child.flags&8192&&d.memoizedState!==null!=(b!==null&&b.memoizedState!==null)&&(ty=O()),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 22:R=d.memoizedState!==null;var _e=b!==null&&b.memoizedState!==null,Fe=vl,Je=Fi;if(vl=Fe||R,Fi=Je||_e,Aa(h,d),Fi=Je,vl=Fe,Ta(d),S&8192)e:for(h=d.stateNode,h._visibility=R?h._visibility&-2:h._visibility|1,R&&(b===null||_e||vl||Fi||Td(d)),b=null,h=d;;){if(h.tag===5||h.tag===26){if(b===null){_e=b=h;try{if(k=_e.stateNode,R)$=k.style,typeof $.setProperty=="function"?$.setProperty("display","none","important"):$.display="none";else{ne=_e.stateNode;var st=_e.memoizedProps.style,Ve=st!=null&&st.hasOwnProperty("display")?st.display:null;ne.style.display=Ve==null||typeof Ve=="boolean"?"":(""+Ve).trim()}}catch(Nt){kn(_e,_e.return,Nt)}}}else if(h.tag===6){if(b===null){_e=h;try{_e.stateNode.nodeValue=R?"":_e.memoizedProps}catch(Nt){kn(_e,_e.return,Nt)}}}else if(h.tag===18){if(b===null){_e=h;try{var Ye=_e.stateNode;R?fj(Ye,!0):fj(_e.stateNode,!1)}catch(Nt){kn(_e,_e.return,Nt)}}}else if((h.tag!==22&&h.tag!==23||h.memoizedState===null||h===d)&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===d)break e;for(;h.sibling===null;){if(h.return===null||h.return===d)break e;b===h&&(b=null),h=h.return}b===h&&(b=null),h.sibling.return=h.return,h=h.sibling}S&4&&(S=d.updateQueue,S!==null&&(b=S.retryQueue,b!==null&&(S.retryQueue=null,Jv(d,b))));break;case 19:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 30:break;case 21:break;default:Aa(h,d),Ta(d)}}function Ta(d){var h=d.flags;if(h&2){try{for(var b,S=d.return;S!==null;){if(pU(S)){b=S;break}S=S.return}if(b==null)throw Error(i(160));switch(b.tag){case 27:var R=b.stateNode,k=PE(d);Qv(d,k,R);break;case 5:var $=b.stateNode;b.flags&32&&(To($,""),b.flags&=-33);var ne=PE(d);Qv(d,ne,$);break;case 3:case 4:var _e=b.stateNode.containerInfo,Fe=PE(d);DE(d,Fe,_e);break;default:throw Error(i(161))}}catch(Je){kn(d,d.return,Je)}d.flags&=-3}h&4096&&(d.flags&=-4097)}function wU(d){if(d.subtreeFlags&1024)for(d=d.child;d!==null;){var h=d;wU(h),h.tag===5&&h.flags&1024&&h.stateNode.reset(),d=d.sibling}}function bl(d,h){if(h.subtreeFlags&8772)for(h=h.child;h!==null;)xU(d,h.alternate,h),h=h.sibling}function Td(d){for(d=d.child;d!==null;){var h=d;switch(h.tag){case 0:case 11:case 14:case 15:Hc(4,h,h.return),Td(h);break;case 1:Ro(h,h.return);var b=h.stateNode;typeof b.componentWillUnmount=="function"&&fU(h,h.return,b),Td(h);break;case 27:vg(h.stateNode);case 26:case 5:Ro(h,h.return),Td(h);break;case 22:h.memoizedState===null&&Td(h);break;case 30:Td(h);break;default:Td(h)}d=d.sibling}}function _l(d,h,b){for(b=b&&(h.subtreeFlags&8772)!==0,h=h.child;h!==null;){var S=h.alternate,R=d,k=h,$=k.flags;switch(k.tag){case 0:case 11:case 15:_l(R,k,b),lg(4,k);break;case 1:if(_l(R,k,b),S=k,R=S.stateNode,typeof R.componentDidMount=="function")try{R.componentDidMount()}catch(Fe){kn(S,S.return,Fe)}if(S=k,R=S.updateQueue,R!==null){var ne=S.stateNode;try{var _e=R.shared.hiddenCallbacks;if(_e!==null)for(R.shared.hiddenCallbacks=null,R=0;R<_e.length;R++)eI(_e[R],ne)}catch(Fe){kn(S,S.return,Fe)}}b&&$&64&&dU(k),cg(k,k.return);break;case 27:mU(k);case 26:case 5:_l(R,k,b),b&&S===null&&$&4&&hU(k),cg(k,k.return);break;case 12:_l(R,k,b);break;case 31:_l(R,k,b),b&&$&4&&bU(R,k);break;case 13:_l(R,k,b),b&&$&4&&_U(R,k);break;case 22:k.memoizedState===null&&_l(R,k,b),cg(k,k.return);break;case 30:break;default:_l(R,k,b)}h=h.sibling}}function OE(d,h){var b=null;d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),d=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(d=h.memoizedState.cachePool.pool),d!==b&&(d!=null&&d.refCount++,b!=null&&Km(b))}function LE(d,h){d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Km(d))}function no(d,h,b,S){if(h.subtreeFlags&10256)for(h=h.child;h!==null;)MU(d,h,b,S),h=h.sibling}function MU(d,h,b,S){var R=h.flags;switch(h.tag){case 0:case 11:case 15:no(d,h,b,S),R&2048&&lg(9,h);break;case 1:no(d,h,b,S);break;case 3:no(d,h,b,S),R&2048&&(d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Km(d)));break;case 12:if(R&2048){no(d,h,b,S),d=h.stateNode;try{var k=h.memoizedProps,$=k.id,ne=k.onPostCommit;typeof ne=="function"&&ne($,h.alternate===null?"mount":"update",d.passiveEffectDuration,-0)}catch(_e){kn(h,h.return,_e)}}else no(d,h,b,S);break;case 31:no(d,h,b,S);break;case 13:no(d,h,b,S);break;case 23:break;case 22:k=h.stateNode,$=h.alternate,h.memoizedState!==null?k._visibility&2?no(d,h,b,S):ug(d,h):k._visibility&2?no(d,h,b,S):(k._visibility|=2,fh(d,h,b,S,(h.subtreeFlags&10256)!==0||!1)),R&2048&&OE($,h);break;case 24:no(d,h,b,S),R&2048&&LE(h.alternate,h);break;default:no(d,h,b,S)}}function fh(d,h,b,S,R){for(R=R&&((h.subtreeFlags&10256)!==0||!1),h=h.child;h!==null;){var k=d,$=h,ne=b,_e=S,Fe=$.flags;switch($.tag){case 0:case 11:case 15:fh(k,$,ne,_e,R),lg(8,$);break;case 23:break;case 22:var Je=$.stateNode;$.memoizedState!==null?Je._visibility&2?fh(k,$,ne,_e,R):ug(k,$):(Je._visibility|=2,fh(k,$,ne,_e,R)),R&&Fe&2048&&OE($.alternate,$);break;case 24:fh(k,$,ne,_e,R),R&&Fe&2048&&LE($.alternate,$);break;default:fh(k,$,ne,_e,R)}h=h.sibling}}function ug(d,h){if(h.subtreeFlags&10256)for(h=h.child;h!==null;){var b=d,S=h,R=S.flags;switch(S.tag){case 22:ug(b,S),R&2048&&OE(S.alternate,S);break;case 24:ug(b,S),R&2048&&LE(S.alternate,S);break;default:ug(b,S)}h=h.sibling}}var dg=8192;function hh(d,h,b){if(d.subtreeFlags&dg)for(d=d.child;d!==null;)EU(d,h,b),d=d.sibling}function EU(d,h,b){switch(d.tag){case 26:hh(d,h,b),d.flags&dg&&d.memoizedState!==null&&Rte(b,to,d.memoizedState,d.memoizedProps);break;case 5:hh(d,h,b);break;case 3:case 4:var S=to;to=hy(d.stateNode.containerInfo),hh(d,h,b),to=S;break;case 22:d.memoizedState===null&&(S=d.alternate,S!==null&&S.memoizedState!==null?(S=dg,dg=16777216,hh(d,h,b),dg=S):hh(d,h,b));break;default:hh(d,h,b)}}function AU(d){var h=d.alternate;if(h!==null&&(d=h.child,d!==null)){h.child=null;do h=d.sibling,d.sibling=null,d=h;while(d!==null)}}function fg(d){var h=d.deletions;if((d.flags&16)!==0){if(h!==null)for(var b=0;bjn&&($=jn,jn=Bt,Bt=$);var ke=AL(ne,Bt),Ee=AL(ne,jn);if(ke&&Ee&&(Ye.rangeCount!==1||Ye.anchorNode!==ke.node||Ye.anchorOffset!==ke.offset||Ye.focusNode!==Ee.node||Ye.focusOffset!==Ee.offset)){var je=st.createRange();je.setStart(ke.node,ke.offset),Ye.removeAllRanges(),Bt>jn?(Ye.addRange(je),Ye.extend(Ee.node,Ee.offset)):(je.setEnd(Ee.node,Ee.offset),Ye.addRange(je))}}}}for(st=[],Ye=ne;Ye=Ye.parentNode;)Ye.nodeType===1&&st.push({element:Ye,left:Ye.scrollLeft,top:Ye.scrollTop});for(typeof ne.focus=="function"&&ne.focus(),ne=0;neb?32:b,V.T=null,b=zE,zE=null;var k=Wc,$=wl;if(Ji=0,gh=Wc=null,wl=0,(Tn&6)!==0)throw Error(i(331));var ne=Tn;if(Tn|=4,TU(k.current),MU(k,k.current,$,b),Tn=ne,mg(0,!1),Re&&typeof Re.onPostCommitFiberRoot=="function")try{Re.onPostCommitFiberRoot(Ie,k)}catch{}return!0}finally{G.p=R,V.T=S,GU(d,h)}}function qU(d,h,b){h=gs(b,h),h=yE(d.stateNode,h,2),d=Fc(d,h,2),d!==null&&(on(d,2),Po(d))}function kn(d,h,b){if(d.tag===3)qU(d,d,b);else for(;h!==null;){if(h.tag===3){qU(h,d,b);break}else if(h.tag===1){var S=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof S.componentDidCatch=="function"&&(Gc===null||!Gc.has(S))){d=gs(b,d),b=XI(2),S=Fc(h,b,2),S!==null&&(KI(b,S,h,d),on(S,2),Po(S));break}}h=h.return}}function $E(d,h,b){var S=d.pingCache;if(S===null){S=d.pingCache=new Wee;var R=new Set;S.set(h,R)}else R=S.get(h),R===void 0&&(R=new Set,S.set(h,R));R.has(b)||(IE=!0,R.add(b),d=Zee.bind(null,d,h,b),h.then(d,d))}function Zee(d,h,b){var S=d.pingCache;S!==null&&S.delete(h),d.pingedLanes|=d.suspendedLanes&b,d.warmLanes&=~b,qn===d&&(gn&b)===b&&(_i===4||_i===3&&(gn&62914560)===gn&&300>O()-ty?(Tn&2)===0&&xh(d,0):UE|=b,mh===gn&&(mh=0)),Po(d)}function XU(d,h){h===0&&(h=bt()),d=gd(d,h),d!==null&&(on(d,h),Po(d))}function Qee(d){var h=d.memoizedState,b=0;h!==null&&(b=h.retryLane),XU(d,b)}function Jee(d,h){var b=0;switch(d.tag){case 31:case 13:var S=d.stateNode,R=d.memoizedState;R!==null&&(b=R.retryLane);break;case 19:S=d.stateNode;break;case 22:S=d.stateNode._retryCache;break;default:throw Error(i(314))}S!==null&&S.delete(h),XU(d,b)}function ete(d,h){return De(d,h)}var ly=null,yh=null,GE=!1,cy=!1,WE=!1,Xc=0;function Po(d){d!==yh&&d.next===null&&(yh===null?ly=yh=d:yh=yh.next=d),cy=!0,GE||(GE=!0,nte())}function mg(d,h){if(!WE&&cy){WE=!0;do for(var b=!1,S=ly;S!==null;){if(d!==0){var R=S.pendingLanes;if(R===0)var k=0;else{var $=S.suspendedLanes,ne=S.pingedLanes;k=(1<<31-nt(42|d)+1)-1,k&=R&~($&~ne),k=k&201326741?k&201326741|1:k?k|2:0}k!==0&&(b=!0,QU(S,k))}else k=gn,k=ge(S,S===qn?k:0,S.cancelPendingCommit!==null||S.timeoutHandle!==-1),(k&3)===0||Be(S,k)||(b=!0,QU(S,k));S=S.next}while(b);WE=!1}}function tte(){KU()}function KU(){cy=GE=!1;var d=0;Xc!==0&&fte()&&(d=Xc);for(var h=O(),b=null,S=ly;S!==null;){var R=S.next,k=YU(S,h);k===0?(S.next=null,b===null?ly=R:b.next=R,R===null&&(yh=b)):(b=S,(d!==0||(k&3)!==0)&&(cy=!0)),S=R}Ji!==0&&Ji!==5||mg(d),Xc!==0&&(Xc=0)}function YU(d,h){for(var b=d.suspendedLanes,S=d.pingedLanes,R=d.expirationTimes,k=d.pendingLanes&-62914561;0ne)break;var Je=_e.transferSize,st=_e.initiatorType;Je&&sj(st)&&(_e=_e.responseEnd,$+=Je*(_e"u"?null:document;function vj(d,h,b){var S=bh;if(S&&typeof h=="string"&&h){var R=Cn(h);R='link[rel="'+d+'"][href="'+R+'"]',typeof b=="string"&&(R+='[crossorigin="'+b+'"]'),xj.has(R)||(xj.add(R),d={rel:d,crossOrigin:b,href:h},S.querySelector(R)===null&&(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function _te(d){Ml.D(d),vj("dns-prefetch",d,null)}function Ste(d,h){Ml.C(d,h),vj("preconnect",d,h)}function wte(d,h,b){Ml.L(d,h,b);var S=bh;if(S&&d&&h){var R='link[rel="preload"][as="'+Cn(h)+'"]';h==="image"&&b&&b.imageSrcSet?(R+='[imagesrcset="'+Cn(b.imageSrcSet)+'"]',typeof b.imageSizes=="string"&&(R+='[imagesizes="'+Cn(b.imageSizes)+'"]')):R+='[href="'+Cn(d)+'"]';var k=R;switch(h){case"style":k=_h(d);break;case"script":k=Sh(d)}Ss.has(k)||(d=f({rel:"preload",href:h==="image"&&b&&b.imageSrcSet?void 0:d,as:h},b),Ss.set(k,d),S.querySelector(R)!==null||h==="style"&&S.querySelector(yg(k))||h==="script"&&S.querySelector(bg(k))||(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function Mte(d,h){Ml.m(d,h);var b=bh;if(b&&d){var S=h&&typeof h.as=="string"?h.as:"script",R='link[rel="modulepreload"][as="'+Cn(S)+'"][href="'+Cn(d)+'"]',k=R;switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":k=Sh(d)}if(!Ss.has(k)&&(d=f({rel:"modulepreload",href:d},h),Ss.set(k,d),b.querySelector(R)===null)){switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(b.querySelector(bg(k)))return}S=b.createElement("link"),Lr(S,"link",d),Te(S),b.head.appendChild(S)}}}function Ete(d,h,b){Ml.S(d,h,b);var S=bh;if(S&&d){var R=Ce(S).hoistableStyles,k=_h(d);h=h||"default";var $=R.get(k);if(!$){var ne={loading:0,preload:null};if($=S.querySelector(yg(k)))ne.loading=5;else{d=f({rel:"stylesheet",href:d,"data-precedence":h},b),(b=Ss.get(k))&&lA(d,b);var _e=$=S.createElement("link");Te(_e),Lr(_e,"link",d),_e._p=new Promise(function(Fe,Je){_e.onload=Fe,_e.onerror=Je}),_e.addEventListener("load",function(){ne.loading|=1}),_e.addEventListener("error",function(){ne.loading|=2}),ne.loading|=4,py($,h,S)}$={type:"stylesheet",instance:$,count:1,state:ne},R.set(k,$)}}}function Ate(d,h){Ml.X(d,h);var b=bh;if(b&&d){var S=Ce(b).hoistableScripts,R=Sh(d),k=S.get(R);k||(k=b.querySelector(bg(R)),k||(d=f({src:d,async:!0},h),(h=Ss.get(R))&&cA(d,h),k=b.createElement("script"),Te(k),Lr(k,"link",d),b.head.appendChild(k)),k={type:"script",instance:k,count:1,state:null},S.set(R,k))}}function Tte(d,h){Ml.M(d,h);var b=bh;if(b&&d){var S=Ce(b).hoistableScripts,R=Sh(d),k=S.get(R);k||(k=b.querySelector(bg(R)),k||(d=f({src:d,async:!0,type:"module"},h),(h=Ss.get(R))&&cA(d,h),k=b.createElement("script"),Te(k),Lr(k,"link",d),b.head.appendChild(k)),k={type:"script",instance:k,count:1,state:null},S.set(R,k))}}function yj(d,h,b,S){var R=(R=ie.current)?hy(R):null;if(!R)throw Error(i(446));switch(d){case"meta":case"title":return null;case"style":return typeof b.precedence=="string"&&typeof b.href=="string"?(h=_h(b.href),b=Ce(R).hoistableStyles,S=b.get(h),S||(S={type:"style",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};case"link":if(b.rel==="stylesheet"&&typeof b.href=="string"&&typeof b.precedence=="string"){d=_h(b.href);var k=Ce(R).hoistableStyles,$=k.get(d);if($||(R=R.ownerDocument||R,$={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},k.set(d,$),(k=R.querySelector(yg(d)))&&!k._p&&($.instance=k,$.state.loading=5),Ss.has(d)||(b={rel:"preload",as:"style",href:b.href,crossOrigin:b.crossOrigin,integrity:b.integrity,media:b.media,hrefLang:b.hrefLang,referrerPolicy:b.referrerPolicy},Ss.set(d,b),k||Cte(R,d,b,$.state))),h&&S===null)throw Error(i(528,""));return $}if(h&&S!==null)throw Error(i(529,""));return null;case"script":return h=b.async,b=b.src,typeof b=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=Sh(b),b=Ce(R).hoistableScripts,S=b.get(h),S||(S={type:"script",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,d))}}function _h(d){return'href="'+Cn(d)+'"'}function yg(d){return'link[rel="stylesheet"]['+d+"]"}function bj(d){return f({},d,{"data-precedence":d.precedence,precedence:null})}function Cte(d,h,b,S){d.querySelector('link[rel="preload"][as="style"]['+h+"]")?S.loading=1:(h=d.createElement("link"),S.preload=h,h.addEventListener("load",function(){return S.loading|=1}),h.addEventListener("error",function(){return S.loading|=2}),Lr(h,"link",b),Te(h),d.head.appendChild(h))}function Sh(d){return'[src="'+Cn(d)+'"]'}function bg(d){return"script[async]"+d}function _j(d,h,b){if(h.count++,h.instance===null)switch(h.type){case"style":var S=d.querySelector('style[data-href~="'+Cn(b.href)+'"]');if(S)return h.instance=S,Te(S),S;var R=f({},b,{"data-href":b.href,"data-precedence":b.precedence,href:null,precedence:null});return S=(d.ownerDocument||d).createElement("style"),Te(S),Lr(S,"style",R),py(S,b.precedence,d),h.instance=S;case"stylesheet":R=_h(b.href);var k=d.querySelector(yg(R));if(k)return h.state.loading|=4,h.instance=k,Te(k),k;S=bj(b),(R=Ss.get(R))&&lA(S,R),k=(d.ownerDocument||d).createElement("link"),Te(k);var $=k;return $._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(k,"link",S),h.state.loading|=4,py(k,b.precedence,d),h.instance=k;case"script":return k=Sh(b.src),(R=d.querySelector(bg(k)))?(h.instance=R,Te(R),R):(S=b,(R=Ss.get(k))&&(S=f({},b),cA(S,R)),d=d.ownerDocument||d,R=d.createElement("script"),Te(R),Lr(R,"link",S),d.head.appendChild(R),h.instance=R);case"void":return null;default:throw Error(i(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(S=h.instance,h.state.loading|=4,py(S,b.precedence,d));return h.instance}function py(d,h,b){for(var S=b.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),R=S.length?S[S.length-1]:null,k=R,$=0;$ title"):null)}function Nte(d,h,b){if(b===1||h.itemProp!=null)return!1;switch(d){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return d=h.disabled,typeof h.precedence=="string"&&d==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function Mj(d){return!(d.type==="stylesheet"&&(d.state.loading&3)===0)}function Rte(d,h,b,S){if(b.type==="stylesheet"&&(typeof S.media!="string"||matchMedia(S.media).matches!==!1)&&(b.state.loading&4)===0){if(b.instance===null){var R=_h(S.href),k=h.querySelector(yg(R));if(k){h=k._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(d.count++,d=gy.bind(d),h.then(d,d)),b.state.loading|=4,b.instance=k,Te(k);return}k=h.ownerDocument||h,S=bj(S),(R=Ss.get(R))&&lA(S,R),k=k.createElement("link"),Te(k);var $=k;$._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(k,"link",S),b.instance=k}d.stylesheets===null&&(d.stylesheets=new Map),d.stylesheets.set(b,h),(h=b.state.preload)&&(b.state.loading&3)===0&&(d.count++,b=gy.bind(d),h.addEventListener("load",b),h.addEventListener("error",b))}}var uA=0;function Pte(d,h){return d.stylesheets&&d.count===0&&vy(d,d.stylesheets),0uA?50:800)+h);return d.unsuspend=b,function(){d.unsuspend=null,clearTimeout(S),clearTimeout(R)}}:null}function gy(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)vy(this,this.stylesheets);else if(this.unsuspend){var d=this.unsuspend;this.unsuspend=null,d()}}}var xy=null;function vy(d,h){d.stylesheets=null,d.unsuspend!==null&&(d.count++,xy=new Map,h.forEach(Dte,d),xy=null,gy.call(d))}function Dte(d,h){if(!(h.state.loading&4)){var b=xy.get(d);if(b)var S=b.get(null);else{b=new Map,xy.set(d,b);for(var R=d.querySelectorAll("link[data-precedence],style[data-precedence]"),k=0;k"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),yA.exports=Kte(),yA.exports}var Zte=Yte();const Vt=t=>typeof t=="string",Tg=()=>{let t,e;const n=new Promise((i,r)=>{t=i,e=r});return n.resolve=t,n.reject=e,n},Xj=t=>t==null?"":""+t,Qte=(t,e,n)=>{t.forEach(i=>{e[i]&&(n[i]=e[i])})},Jte=/###/g,Kj=t=>t&&t.indexOf("###")>-1?t.replace(Jte,"."):t,Yj=t=>!t||Vt(t),u0=(t,e,n)=>{const i=Vt(e)?e.split("."):e;let r=0;for(;r{const{obj:i,k:r}=u0(t,e,Object);if(i!==void 0||e.length===1){i[r]=n;return}let a=e[e.length-1],s=e.slice(0,e.length-1),o=u0(t,s,Object);for(;o.obj===void 0&&s.length;)a=`${s[s.length-1]}.${a}`,s=s.slice(0,s.length-1),o=u0(t,s,Object),o?.obj&&typeof o.obj[`${o.k}.${a}`]<"u"&&(o.obj=void 0);o.obj[`${o.k}.${a}`]=n},ene=(t,e,n,i)=>{const{obj:r,k:a}=u0(t,e,Object);r[a]=r[a]||[],r[a].push(n)},R_=(t,e)=>{const{obj:n,k:i}=u0(t,e);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},tne=(t,e,n)=>{const i=R_(t,n);return i!==void 0?i:R_(e,n)},iG=(t,e,n)=>{for(const i in e)i!=="__proto__"&&i!=="constructor"&&(i in t?Vt(t[i])||t[i]instanceof String||Vt(e[i])||e[i]instanceof String?n&&(t[i]=e[i]):iG(t[i],e[i],n):t[i]=e[i]);return t},Mh=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var nne={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const ine=t=>Vt(t)?t.replace(/[&<>"'\/]/g,e=>nne[e]):t;class rne{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const n=this.regExpMap.get(e);if(n!==void 0)return n;const i=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,i),this.regExpQueue.push(e),i}}const ane=[" ",",","?","!",";"],sne=new rne(20),one=(t,e,n)=>{e=e||"",n=n||"";const i=ane.filter(s=>e.indexOf(s)<0&&n.indexOf(s)<0);if(i.length===0)return!0;const r=sne.getRegExp(`(${i.map(s=>s==="?"?"\\?":s).join("|")})`);let a=!r.test(t);if(!a){const s=t.indexOf(n);s>0&&!r.test(t.substring(0,s))&&(a=!0)}return a},cN=(t,e,n=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const i=e.split(n);let r=t;for(let a=0;a-1&&lt?.replace("_","-"),lne={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){console?.[t]?.apply?.(console,e)}};class P_{constructor(e,n={}){this.init(e,n)}init(e,n={}){this.prefix=n.prefix||"i18next:",this.logger=e||lne,this.options=n,this.debug=n.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,n,i,r){return r&&!this.debug?null:(Vt(e[0])&&(e[0]=`${i}${this.prefix} ${e[0]}`),this.logger[n](e))}create(e){return new P_(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new P_(this.logger,e)}}var Ho=new P_;let zS=class{constructor(){this.observers={}}on(e,n){return e.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(n)||0;this.observers[i].set(n,r+1)}),this}off(e,n){if(this.observers[e]){if(!n){delete this.observers[e];return}this.observers[e].delete(n)}}emit(e,...n){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([r,a])=>{for(let s=0;s{for(let s=0;s-1&&this.options.ns.splice(n,1)}getResource(e,n,i,r={}){const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let o;e.indexOf(".")>-1?o=e.split("."):(o=[e,n],i&&(Array.isArray(i)?o.push(...i):Vt(i)&&a?o.push(...i.split(a)):o.push(i)));const l=R_(this.data,o);return!l&&!n&&!i&&e.indexOf(".")>-1&&(e=o[0],n=o[1],i=o.slice(2).join(".")),l||!s||!Vt(i)?l:cN(this.data?.[e]?.[n],i,a)}addResource(e,n,i,r,a={silent:!1}){const s=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let o=[e,n];i&&(o=o.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(o=e.split("."),r=n,n=o[1]),this.addNamespaces(n),Zj(this.data,o,r),a.silent||this.emit("added",e,n,i,r)}addResources(e,n,i,r={silent:!1}){for(const a in i)(Vt(i[a])||Array.isArray(i[a]))&&this.addResource(e,n,a,i[a],{silent:!0});r.silent||this.emit("added",e,n,i)}addResourceBundle(e,n,i,r,a,s={silent:!1,skipCopy:!1}){let o=[e,n];e.indexOf(".")>-1&&(o=e.split("."),r=i,i=n,n=o[1]),this.addNamespaces(n);let l=R_(this.data,o)||{};s.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?iG(l,i,a):l={...l,...i},Zj(this.data,o,l),s.silent||this.emit("added",e,n,i)}removeResourceBundle(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}hasResourceBundle(e,n){return this.getResource(e,n)!==void 0}getResourceBundle(e,n){return n||(n=this.options.defaultNS),this.getResource(e,n)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var rG={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,n,i,r){return t.forEach(a=>{e=this.processors[a]?.process(e,n,i,r)??e}),e}};const aG=Symbol("i18next/PATH_KEY");function cne(){const t=[],e=Object.create(null);let n;return e.get=(i,r)=>(n?.revoke?.(),r===aG?t:(t.push(r),n=Proxy.revocable(i,e),n.proxy)),Proxy.revocable(Object.create(null),e).proxy}function uN(t,e){const{[aG]:n}=t(cne());return n.join(e?.keySeparator??".")}const Jj={},wA=t=>!Vt(t)&&typeof t!="boolean"&&typeof t!="number";class D_ extends zS{constructor(e,n={}){super(),Qte(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Ho.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,n={interpolation:{}}){const i={...n};if(e==null)return!1;const r=this.resolve(e,i);if(r?.res===void 0)return!1;const a=wA(r.res);return!(i.returnObjects===!1&&a)}extractFromKey(e,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const s=i&&e.indexOf(i)>-1,o=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!one(e,i,r);if(s&&!o){const l=e.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:e,namespaces:Vt(a)?[a]:a};const c=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),e=c.join(r)}return{key:e,namespaces:Vt(a)?[a]:a}}translate(e,n,i){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),e==null)return"";typeof e=="function"&&(e=uN(e,{...this.options,...r})),Array.isArray(e)||(e=[String(e)]);const a=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:o,namespaces:l}=this.extractFromKey(e[e.length-1],r),c=l[l.length-1];let u=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;u===void 0&&(u=":");const f=r.lng||this.language,p=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()==="cimode")return p?a?{res:`${c}${u}${o}`,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:`${c}${u}${o}`:a?{res:o,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:o;const g=this.resolve(e,r);let y=g?.res;const _=g?.usedKey||o,v=g?.exactUsedKey||o,x=["[object Number]","[object Function]","[object RegExp]"],M=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,w=!this.i18nFormat||this.i18nFormat.handleAsObject,E=r.count!==void 0&&!Vt(r.count),T=D_.hasDefaultValue(r),P=E?this.pluralResolver.getSuffix(f,r.count,r):"",N=r.ordinal&&E?this.pluralResolver.getSuffix(f,r.count,{ordinal:!1}):"",U=E&&!r.ordinal&&r.count===0,C=U&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${P}`]||r[`defaultValue${N}`]||r.defaultValue;let D=y;w&&!y&&T&&(D=C);const F=wA(D),I=Object.prototype.toString.apply(D);if(w&&D&&F&&x.indexOf(I)<0&&!(Vt(M)&&Array.isArray(D))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const q=this.options.returnedObjectHandler?this.options.returnedObjectHandler(_,D,{...r,ns:l}):`key '${o} (${this.language})' returned an object instead of string.`;return a?(g.res=q,g.usedParams=this.getUsedParamsDetails(r),g):q}if(s){const q=Array.isArray(D),L=q?[]:{},H=q?v:_;for(const V in D)if(Object.prototype.hasOwnProperty.call(D,V)){const G=`${H}${s}${V}`;T&&!y?L[V]=this.translate(G,{...r,defaultValue:wA(C)?C[V]:void 0,joinArrays:!1,ns:l}):L[V]=this.translate(G,{...r,joinArrays:!1,ns:l}),L[V]===G&&(L[V]=D[V])}y=L}}else if(w&&Vt(M)&&Array.isArray(y))y=y.join(M),y&&(y=this.extendTranslation(y,e,r,i));else{let q=!1,L=!1;!this.isValidLookup(y)&&T&&(q=!0,y=C),this.isValidLookup(y)||(L=!0,y=o);const V=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&L?void 0:y,G=T&&C!==y&&this.options.updateMissing;if(L||q||G){if(this.logger.log(G?"updateKey":"missingKey",f,c,o,G?C:y),s){const B=this.resolve(o,{...r,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let K=[];const Z=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Z&&Z[0])for(let B=0;B{const ce=T&&ae!==y?ae:V;this.options.missingKeyHandler?this.options.missingKeyHandler(B,c,X,ce,G,r):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(B,c,X,ce,G,r),this.emit("missingKey",B,c,X,y)};this.options.saveMissing&&(this.options.saveMissingPlurals&&E?K.forEach(B=>{const X=this.pluralResolver.getSuffixes(B,r);U&&r[`defaultValue${this.options.pluralSeparator}zero`]&&X.indexOf(`${this.options.pluralSeparator}zero`)<0&&X.push(`${this.options.pluralSeparator}zero`),X.forEach(ae=>{se([B],o+ae,r[`defaultValue${ae}`]||C)})}):se(K,o,C))}y=this.extendTranslation(y,e,r,g,i),L&&y===o&&this.options.appendNamespaceToMissingKey&&(y=`${c}${u}${o}`),(L||q)&&this.options.parseMissingKeyHandler&&(y=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${u}${o}`:o,q?y:void 0,r))}return a?(g.res=y,g.usedParams=this.getUsedParamsDetails(r),g):y}extendTranslation(e,n,i,r,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const l=Vt(e)&&(i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(l){const f=e.match(this.interpolator.nestingRegexp);c=f&&f.length}let u=i.replace&&!Vt(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(u={...this.options.interpolation.defaultVariables,...u}),e=this.interpolator.interpolate(e,u,i.lng||this.language||r.usedLng,i),l){const f=e.match(this.interpolator.nestingRegexp),p=f&&f.length;ca?.[0]===f[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${f[0]} in key: ${n[0]}`),null):this.translate(...f,n),i)),i.interpolation&&this.interpolator.reset()}const s=i.postProcess||this.options.postProcess,o=Vt(s)?[s]:s;return e!=null&&o?.length&&i.applyPostProcessor!==!1&&(e=rG.handle(o,e,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),e}resolve(e,n={}){let i,r,a,s,o;return Vt(e)&&(e=[e]),e.forEach(l=>{if(this.isValidLookup(i))return;const c=this.extractFromKey(l,n),u=c.key;r=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const p=n.count!==void 0&&!Vt(n.count),g=p&&!n.ordinal&&n.count===0,y=n.context!==void 0&&(Vt(n.context)||typeof n.context=="number")&&n.context!=="",_=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(v=>{this.isValidLookup(i)||(o=v,!Jj[`${_[0]}-${v}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(Jj[`${_[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${_.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),_.forEach(x=>{if(this.isValidLookup(i))return;s=x;const M=[u];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(M,u,x,v,n);else{let E;p&&(E=this.pluralResolver.getSuffix(x,n.count,n));const T=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(n.ordinal&&E.indexOf(P)===0&&M.push(u+E.replace(P,this.options.pluralSeparator)),M.push(u+E),g&&M.push(u+T)),y){const N=`${u}${this.options.contextSeparator||"_"}${n.context}`;M.push(N),p&&(n.ordinal&&E.indexOf(P)===0&&M.push(N+E.replace(P,this.options.pluralSeparator)),M.push(N+E),g&&M.push(N+T))}}let w;for(;w=M.pop();)this.isValidLookup(i)||(a=w,i=this.getResource(x,v,w,n))}))})}),{res:i,usedKey:r,exactUsedKey:a,usedLng:s,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,n,i,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,n,i,r):this.resourceStore.getResource(e,n,i,r)}getUsedParamsDetails(e={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=e.replace&&!Vt(e.replace);let r=i?e.replace:e;if(i&&typeof e.count<"u"&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const a of n)delete r[a]}return r}static hasDefaultValue(e){const n="defaultValue";for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&n===i.substring(0,n.length)&&e[i]!==void 0)return!0;return!1}}class e4{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ho.create("languageUtils")}getScriptPartFromCode(e){if(e=O0(e),!e||e.indexOf("-")<0)return null;const n=e.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(e){if(e=O0(e),!e||e.indexOf("-")<0)return e;const n=e.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(e){if(Vt(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let n;return e.forEach(i=>{if(n)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&e.forEach(i=>{if(n)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return n=r;const a=this.getLanguagePartFromCode(i);if(this.isSupportedCode(a))return n=a;n=this.options.supportedLngs.find(s=>{if(s===a)return s;if(!(s.indexOf("-")<0&&a.indexOf("-")<0)&&(s.indexOf("-")>0&&a.indexOf("-")<0&&s.substring(0,s.indexOf("-"))===a||s.indexOf(a)===0&&a.length>1))return s})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(e,n){if(!e)return[];if(typeof e=="function"&&(e=e(n)),Vt(e)&&(e=[e]),Array.isArray(e))return e;if(!n)return e.default||[];let i=e[n];return i||(i=e[this.getScriptPartFromCode(n)]),i||(i=e[this.formatLanguageCode(n)]),i||(i=e[this.getLanguagePartFromCode(n)]),i||(i=e.default),i||[]}toResolveHierarchy(e,n){const i=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],e),r=[],a=s=>{s&&(this.isSupportedCode(s)?r.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return Vt(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(e))):Vt(e)&&a(this.formatLanguageCode(e)),i.forEach(s=>{r.indexOf(s)<0&&a(this.formatLanguageCode(s))}),r}}const t4={zero:0,one:1,two:2,few:3,many:4,other:5},n4={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class une{constructor(e,n={}){this.languageUtils=e,this.options=n,this.logger=Ho.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,n){this.rules[e]=n}clearCache(){this.pluralRulesCache={}}getRule(e,n={}){const i=O0(e==="dev"?"en":e),r=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:i,type:r});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let s;try{s=new Intl.PluralRules(i,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),n4;if(!e.match(/-|_/))return n4;const l=this.languageUtils.getLanguagePartFromCode(e);s=this.getRule(l,n)}return this.pluralRulesCache[a]=s,s}needsPlural(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,n,i={}){return this.getSuffixes(e,i).map(r=>`${n}${r}`)}getSuffixes(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((r,a)=>t4[r]-t4[a]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(e,n,i={}){const r=this.getRule(e,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",n,i))}}const i4=(t,e,n,i=".",r=!0)=>{let a=tne(t,e,n);return!a&&r&&Vt(n)&&(a=cN(t,n,i),a===void 0&&(a=cN(e,n,i))),a},MA=t=>t.replace(/\$/g,"$$$$");class dne{constructor(e={}){this.logger=Ho.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(n=>n),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:r,prefix:a,prefixEscaped:s,suffix:o,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:g,nestingSuffix:y,nestingSuffixEscaped:_,nestingOptionsSeparator:v,maxReplaces:x,alwaysFormat:M}=e.interpolation;this.escape=n!==void 0?n:ine,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=a?Mh(a):s||"{{",this.suffix=o?Mh(o):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=p?Mh(p):g||Mh("$t("),this.nestingSuffix=y?Mh(y):_||Mh(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=x||1e3,this.alwaysFormat=M!==void 0?M:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(n,i)=>n?.source===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,n,i,r){let a,s,o;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=g=>{if(g.indexOf(this.formatSeparator)<0){const x=i4(n,l,g,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,i,{...r,...n,interpolationkey:g}):x}const y=g.split(this.formatSeparator),_=y.shift().trim(),v=y.join(this.formatSeparator).trim();return this.format(i4(n,l,_,this.options.keySeparator,this.options.ignoreJSONStructure),v,i,{...r,...n,interpolationkey:_})};this.resetRegExp();const u=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=r?.interpolation?.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:g=>MA(g)},{regex:this.regexp,safeValue:g=>this.escapeValue?MA(this.escape(g)):MA(g)}].forEach(g=>{for(o=0;a=g.regex.exec(e);){const y=a[1].trim();if(s=c(y),s===void 0)if(typeof u=="function"){const v=u(e,a,r);s=Vt(v)?v:""}else if(r&&Object.prototype.hasOwnProperty.call(r,y))s="";else if(f){s=a[0];continue}else this.logger.warn(`missed to pass in variable ${y} for interpolating ${e}`),s="";else!Vt(s)&&!this.useRawValueToEscape&&(s=Xj(s));const _=g.safeValue(s);if(e=e.replace(a[0],_),f?(g.regex.lastIndex+=s.length,g.regex.lastIndex-=a[0].length):g.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,n,i={}){let r,a,s;const o=(l,c)=>{const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let p=`{${f[1]}`;l=f[0],p=this.interpolate(p,s);const g=p.match(/'/g),y=p.match(/"/g);((g?.length??0)%2===0&&!y||y.length%2!==0)&&(p=p.replace(/'/g,'"'));try{s=JSON.parse(p),c&&(s={...c,...s})}catch(_){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,_),`${l}${u}${p}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,l};for(;r=this.nestingRegexp.exec(e);){let l=[];s={...i},s=s.replace&&!Vt(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;const c=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(l=r[1].slice(c).split(this.formatSeparator).map(u=>u.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),a=n(o.call(this,r[1].trim(),s),s),a&&r[0]===e&&!Vt(a))return a;Vt(a)||(a=Xj(a)),a||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),a=""),l.length&&(a=l.reduce((u,f)=>this.format(u,f,i.lng,{...i,interpolationkey:r[1].trim()}),a.trim())),e=e.replace(r[0],a),this.regexp.lastIndex=0}return e}}const fne=t=>{let e=t.toLowerCase().trim();const n={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);e==="currency"&&r.indexOf(":")<0?n.currency||(n.currency=r.trim()):e==="relativetime"&&r.indexOf(":")<0?n.range||(n.range=r.trim()):r.split(";").forEach(s=>{if(s){const[o,...l]=s.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=o.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:e,formatOptions:n}},r4=t=>{const e={};return(n,i,r)=>{let a=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(a={...a,[r.interpolationkey]:void 0});const s=i+JSON.stringify(a);let o=e[s];return o||(o=t(O0(i),r),e[s]=o),o(n)}},hne=t=>(e,n,i)=>t(O0(n),i)(e);class pne{constructor(e={}){this.logger=Ho.create("formatter"),this.options=e,this.init(e)}init(e,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?r4:hne;this.formats={number:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a});return o=>s.format(o)}),currency:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a,style:"currency"});return o=>s.format(o)}),datetime:i((r,a)=>{const s=new Intl.DateTimeFormat(r,{...a});return o=>s.format(o)}),relativetime:i((r,a)=>{const s=new Intl.RelativeTimeFormat(r,{...a});return o=>s.format(o,a.range||"day")}),list:i((r,a)=>{const s=new Intl.ListFormat(r,{...a});return o=>s.format(o)})}}add(e,n){this.formats[e.toLowerCase().trim()]=n}addCached(e,n){this.formats[e.toLowerCase().trim()]=r4(n)}format(e,n,i,r={}){const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(o=>o.indexOf(")")>-1)){const o=a.findIndex(l=>l.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,o)].join(this.formatSeparator)}return a.reduce((o,l)=>{const{formatName:c,formatOptions:u}=fne(l);if(this.formats[c]){let f=o;try{const p=r?.formatParams?.[r.interpolationkey]||{},g=p.locale||p.lng||r.locale||r.lng||i;f=this.formats[c](o,g,{...u,...r,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return o},e)}}const mne=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class gne extends zS{constructor(e,n,i,r={}){super(),this.backend=e,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=Ho.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(i,r.backend,r)}queueLoad(e,n,i,r){const a={},s={},o={},l={};return e.forEach(c=>{let u=!0;n.forEach(f=>{const p=`${c}|${f}`;!i.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?s[p]===void 0&&(s[p]=!0):(this.state[p]=1,u=!1,s[p]===void 0&&(s[p]=!0),a[p]===void 0&&(a[p]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(o[c]=!0)}),(Object.keys(a).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(a),pending:Object.keys(s),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(l)}}loaded(e,n,i){const r=e.split("|"),a=r[0],s=r[1];n&&this.emit("failedLoading",a,s,n),!n&&i&&this.store.addResourceBundle(a,s,i,void 0,void 0,{skipCopy:!0}),this.state[e]=n?-1:2,n&&i&&(this.state[e]=0);const o={};this.queue.forEach(l=>{ene(l.loaded,[a],s),mne(l,e),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{o[c]||(o[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{o[c][f]===void 0&&(o[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",o),this.queue=this.queue.filter(l=>!l.done)}read(e,n,i,r=0,a=this.retryTimeout,s){if(!e.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:n,fcName:i,tried:r,wait:a,callback:s});return}this.readingCalls++;const o=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&r{this.read.call(this,e,n,i,r+1,a*2,s)},a);return}s(c,u)},l=this.backend[i].bind(this.backend);if(l.length===2){try{const c=l(e,n);c&&typeof c.then=="function"?c.then(u=>o(null,u)).catch(o):o(null,c)}catch(c){o(c)}return}return l(e,n,o)}prepareLoading(e,n,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();Vt(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Vt(n)&&(n=[n]);const a=this.queueLoad(e,n,i,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(s=>{this.loadOne(s)})}load(e,n,i){this.prepareLoading(e,n,{},i)}reload(e,n,i){this.prepareLoading(e,n,{reload:!0},i)}loadOne(e,n=""){const i=e.split("|"),r=i[0],a=i[1];this.read(r,a,"read",void 0,void 0,(s,o)=>{s&&this.logger.warn(`${n}loading namespace ${a} for language ${r} failed`,s),!s&&o&&this.logger.log(`${n}loaded namespace ${a} for language ${r}`,o),this.loaded(e,s,o)})}saveMissing(e,n,i,r,a,s={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend?.create){const l={...s,isUpdate:a},c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(e,n,i,r,l):u=c(e,n,i,r),u&&typeof u.then=="function"?u.then(f=>o(null,f)).catch(o):o(null,u)}catch(u){o(u)}else c(e,n,i,r,o,l)}!e||!e[0]||this.store.addResource(e[0],n,i,r)}}}const a4=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),Vt(t[1])&&(e.defaultValue=t[1]),Vt(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const n=t[3]||t[2];Object.keys(n).forEach(i=>{e[i]=n[i]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),s4=t=>(Vt(t.ns)&&(t.ns=[t.ns]),Vt(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Vt(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),Ty=()=>{},xne=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(n=>{typeof t[n]=="function"&&(t[n]=t[n].bind(t))})};class d0 extends zS{constructor(e={},n){if(super(),this.options=s4(e),this.services={},this.logger=Ho,this.modules={external:[]},xne(this),n&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,n),this;setTimeout(()=>{this.init(e,n)},0)}}init(e={},n){this.isInitializing=!0,typeof e=="function"&&(n=e,e={}),e.defaultNS==null&&e.ns&&(Vt(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=a4();this.options={...i,...this.options,...s4(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);const r=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?Ho.init(r(this.modules.logger),this.options):Ho.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=pne;const u=new e4(this.options);this.store=new Qj(this.options.resources,this.options);const f=this.services;f.logger=Ho,f.resourceStore=this.store,f.languageUtils=u,f.pluralResolver=new une(u,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=r(c),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new dne(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new gne(r(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(g,...y)=>{this.emit(g,...y)}),this.modules.languageDetector&&(f.languageDetector=r(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=r(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new D_(this.services,this.options),this.translator.on("*",(g,...y)=>{this.emit(g,...y)}),this.modules.external.forEach(g=>{g.init&&g.init(this)})}if(this.format=this.options.interpolation.format,n||(n=Ty),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...u)=>this.store[c](...u)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...u)=>(this.store[c](...u),this)});const o=Tg(),l=()=>{const c=(u,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),o.resolve(f),n(u,f)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?l():setTimeout(l,0),o}loadResources(e,n=Ty){let i=n;const r=Vt(e)?e:this.language;if(typeof e=="function"&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],s=o=>{if(!o||o==="cimode")return;this.services.languageUtils.toResolveHierarchy(o).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};r?s(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload?.forEach?.(o=>s(o)),this.services.backendConnector.load(a,this.options.ns,o=>{!o&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(o)})}else i(null)}reloadResources(e,n,i){const r=Tg();return typeof e=="function"&&(i=e,e=void 0),typeof n=="function"&&(i=n,n=void 0),e||(e=this.languages),n||(n=this.options.ns),i||(i=Ty),this.services.backendConnector.reload(e,n,a=>{r.resolve(),i(a)}),r}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&rG.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,n){this.isLanguageChangingTo=e;const i=Tg();this.emit("languageChanging",e);const r=o=>{this.language=o,this.languages=this.services.languageUtils.toResolveHierarchy(o),this.resolvedLanguage=void 0,this.setResolvedLanguage(o)},a=(o,l)=>{l?this.isLanguageChangingTo===e&&(r(l),this.translator.changeLanguage(l),this.isLanguageChangingTo=void 0,this.emit("languageChanged",l),this.logger.log("languageChanged",l)):this.isLanguageChangingTo=void 0,i.resolve((...c)=>this.t(...c)),n&&n(o,(...c)=>this.t(...c))},s=o=>{!e&&!o&&this.services.languageDetector&&(o=[]);const l=Vt(o)?o:o&&o[0],c=this.store.hasLanguageSomeTranslations(l)?l:this.services.languageUtils.getBestMatchFromCodes(Vt(o)?[o]:o);c&&(this.language||r(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector?.cacheUserLanguage?.(c)),this.loadResources(c,u=>{a(u,c)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),i}getFixedT(e,n,i){const r=(a,s,...o)=>{let l;typeof s!="object"?l=this.options.overloadTranslationOptionHandler([a,s].concat(o)):l={...s},l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||i||r.keyPrefix);const c=this.options.keySeparator||".";let u;return l.keyPrefix&&Array.isArray(a)?u=a.map(f=>(typeof f=="function"&&(f=uN(f,{...this.options,...s})),`${l.keyPrefix}${c}${f}`)):(typeof a=="function"&&(a=uN(a,{...this.options,...s})),u=l.keyPrefix?`${l.keyPrefix}${c}${a}`:a),this.t(u,l)};return Vt(e)?r.lng=e:r.lngs=e,r.ns=n,r.keyPrefix=i,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const s=(o,l)=>{const c=this.services.backendConnector.state[`${o}|${l}`];return c===-1||c===0||c===2};if(n.precheck){const o=n.precheck(this,s);if(o!==void 0)return o}return!!(this.hasResourceBundle(i,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(i,e)&&(!r||s(a,e)))}loadNamespaces(e,n){const i=Tg();return this.options.ns?(Vt(e)&&(e=[e]),e.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),n&&n(r)}),i):(n&&n(),Promise.resolve())}loadLanguages(e,n){const i=Tg();Vt(e)&&(e=[e]);const r=this.options.preload||[],a=e.filter(s=>r.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return a.length?(this.options.preload=r.concat(a),this.loadResources(s=>{i.resolve(),n&&n(s)}),i):(n&&n(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const r=new Intl.Locale(e);if(r&&r.getTextInfo){const a=r.getTextInfo();if(a&&a.direction)return a.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services?.languageUtils||new e4(a4());return e.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(i.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},n){const i=new d0(e,n);return i.createInstance=d0.createInstance,i}cloneInstance(e={},n=Ty){const i=e.forkResourceStore;i&&delete e.forkResourceStore;const r={...this.options,...e,isClone:!0},a=new d0(r);if((e.debug!==void 0||e.prefix!==void 0)&&(a.logger=a.logger.clone(e)),["store","services","language"].forEach(o=>{a[o]=this[o]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i){const o=Object.keys(this.store.data).reduce((l,c)=>(l[c]={...this.store.data[c]},l[c]=Object.keys(l[c]).reduce((u,f)=>(u[f]={...l[c][f]},u),l[c]),l),{});a.store=new Qj(o,r),a.services.resourceStore=a.store}return a.translator=new D_(a.services,r),a.translator.on("*",(o,...l)=>{a.emit(o,...l)}),a.init(r,n),a.translator.options=r,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const wa=d0.createInstance();wa.createInstance;wa.dir;wa.init;wa.loadResources;wa.reloadResources;wa.use;wa.changeLanguage;wa.getFixedT;wa.t;wa.exists;wa.setDefaultNamespace;wa.hasLoadedNamespace;wa.loadNamespaces;wa.loadLanguages;const vne=(t,e,n,i)=>{const r=[n,{code:e,...i||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(r,"warn","react-i18next::",!0);_f(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...r):console?.warn&&console.warn(...r)},o4={},sG=(t,e,n,i)=>{_f(n)&&o4[n]||(_f(n)&&(o4[n]=new Date),vne(t,e,n,i))},oG=(t,e)=>()=>{if(t.isInitialized)e();else{const n=()=>{setTimeout(()=>{t.off("initialized",n)},0),e()};t.on("initialized",n)}},dN=(t,e,n)=>{t.loadNamespaces(e,oG(t,n))},l4=(t,e,n,i)=>{if(_f(n)&&(n=[n]),t.options.preload&&t.options.preload.indexOf(e)>-1)return dN(t,n,i);n.forEach(r=>{t.options.ns.indexOf(r)<0&&t.options.ns.push(r)}),t.loadLanguages(e,oG(t,i))},yne=(t,e,n={})=>!e.languages||!e.languages.length?(sG(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:n.lng,precheck:(i,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,t))return!1}}),_f=t=>typeof t=="string",bne=t=>typeof t=="object"&&t!==null,_ne=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Sne={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},wne=t=>Sne[t],Mne=t=>t.replace(_ne,wne);let fN={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Mne};const Ene=(t={})=>{fN={...fN,...t}},Ane=()=>fN;let lG;const Tne=t=>{lG=t},Cne=()=>lG,Nne={type:"3rdParty",init(t){Ene(t.options.react),Tne(t)}},Rne=A.createContext();class Pne{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var EA={exports:{}},AA={};var c4;function Dne(){if(c4)return AA;c4=1;var t=hm();function e(f,p){return f===p&&(f!==0||1/f===1/p)||f!==f&&p!==p}var n=typeof Object.is=="function"?Object.is:e,i=t.useState,r=t.useEffect,a=t.useLayoutEffect,s=t.useDebugValue;function o(f,p){var g=p(),y=i({inst:{value:g,getSnapshot:p}}),_=y[0].inst,v=y[1];return a(function(){_.value=g,_.getSnapshot=p,l(_)&&v({inst:_})},[f,g,p]),r(function(){return l(_)&&v({inst:_}),f(function(){l(_)&&v({inst:_})})},[f]),s(g),g}function l(f){var p=f.getSnapshot;f=f.value;try{var g=p();return!n(f,g)}catch{return!0}}function c(f,p){return p()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?c:o;return AA.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:u,AA}var u4;function cG(){return u4||(u4=1,EA.exports=Dne()),EA.exports}var xP=cG();const kne=(t,e)=>_f(e)?e:bne(e)&&_f(e.defaultValue)?e.defaultValue:Array.isArray(t)?t[t.length-1]:t,One={t:kne,ready:!1},Lne=()=>()=>{},vP=(t,e={})=>{const{i18n:n}=e,{i18n:i,defaultNS:r}=A.useContext(Rne)||{},a=n||i||Cne();a&&!a.reportNamespaces&&(a.reportNamespaces=new Pne),a||sG(a,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const s=A.useMemo(()=>({...Ane(),...a?.options?.react,...e}),[a,e]),{useSuspense:o,keyPrefix:l}=s,c=r||a?.options?.defaultNS,u=_f(c)?[c]:c||["translation"],f=A.useMemo(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(f);const p=A.useRef(0),g=A.useCallback(C=>{if(!a)return Lne;const{bindI18n:D,bindI18nStore:F}=s,I=()=>{p.current+=1,C()};return D&&a.on(D,I),F&&a.store.on(F,I),()=>{D&&D.split(" ").forEach(q=>a.off(q,I)),F&&F.split(" ").forEach(q=>a.store.off(q,I))}},[a,s]),y=A.useRef(),_=A.useCallback(()=>{if(!a)return One;const C=!!(a.isInitialized||a.initializedStoreOnce)&&f.every(H=>yne(H,a,s)),D=e.lng||a.language,F=p.current,I=y.current;if(I&&I.ready===C&&I.lng===D&&I.keyPrefix===l&&I.revision===F)return I;const L={t:a.getFixedT(D,s.nsMode==="fallback"?f:f[0],l),ready:C,lng:D,keyPrefix:l,revision:F};return y.current=L,L},[a,f,l,s,e.lng]),[v,x]=A.useState(0),{t:M,ready:w}=xP.useSyncExternalStore(g,_,_);A.useEffect(()=>{if(a&&!w&&!o){const C=()=>x(D=>D+1);e.lng?l4(a,e.lng,f,C):dN(a,f,C)}},[a,e.lng,f,w,o,v]);const E=a||{},T=A.useRef(null),P=A.useRef(),N=C=>{const D=Object.getOwnPropertyDescriptors(C);D.__original&&delete D.__original;const F=Object.create(Object.getPrototypeOf(C),D);if(!Object.prototype.hasOwnProperty.call(F,"__original"))try{Object.defineProperty(F,"__original",{value:C,writable:!1,enumerable:!1,configurable:!1})}catch{}return F},U=A.useMemo(()=>{const C=E,D=C?.language;let F=C;C&&(T.current&&T.current.__original===C?P.current!==D?(F=N(C),T.current=F,P.current=D):F=T.current:(F=N(C),T.current=F,P.current=D));const I=[M,F,w];return I.t=M,I.i18n=F,I.ready=w,I},[M,E,w,E.resolvedLanguage,E.language,E.languages]);if(a&&o&&!w)throw new Promise(C=>{const D=()=>C();e.lng?l4(a,e.lng,f,D):dN(a,f,D)});return U},{slice:Ine,forEach:Une}=[];function jne(t){return Une.call(Ine.call(arguments,1),e=>{if(e)for(const n in e)t[n]===void 0&&(t[n]=e[n])}),t}function Fne(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(t))}const d4=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,zne=function(t,e){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(e);let a=`${t}=${r}`;if(i.maxAge>0){const s=i.maxAge-0;if(Number.isNaN(s))throw new Error("maxAge should be a Number");a+=`; Max-Age=${Math.floor(s)}`}if(i.domain){if(!d4.test(i.domain))throw new TypeError("option domain is invalid");a+=`; Domain=${i.domain}`}if(i.path){if(!d4.test(i.path))throw new TypeError("option path is invalid");a+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(a+="; HttpOnly"),i.secure&&(a+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(a+="; Partitioned"),a},f4={create(t,e,n,i){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+n*60*1e3)),i&&(r.domain=i),document.cookie=zne(t,e,r)},read(t){const e=`${t}=`,n=document.cookie.split(";");for(let i=0;i-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const a=i.substring(1).split("&");for(let s=0;s0&&a[s].substring(0,o)===e&&(n=a[s].substring(o+1))}}return n}},Vne={name:"hash",lookup(t){let{lookupHash:e,lookupFromHashIndex:n}=t,i;if(typeof window<"u"){const{hash:r}=window.location;if(r&&r.length>2){const a=r.substring(1);if(e){const s=a.split("&");for(let o=0;o0&&s[o].substring(0,l)===e&&(i=s[o].substring(l+1))}}if(i)return i;if(!i&&n>-1){const s=r.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?s[typeof n=="number"?n:0]?.replace("/",""):void 0}}}return i}};let Eh=null;const h4=()=>{if(Eh!==null)return Eh;try{if(Eh=typeof window<"u"&&window.localStorage!==null,!Eh)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{Eh=!1}return Eh};var $ne={name:"localStorage",lookup(t){let{lookupLocalStorage:e}=t;if(e&&h4())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupLocalStorage:n}=e;n&&h4()&&window.localStorage.setItem(n,t)}};let Ah=null;const p4=()=>{if(Ah!==null)return Ah;try{if(Ah=typeof window<"u"&&window.sessionStorage!==null,!Ah)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{Ah=!1}return Ah};var Gne={name:"sessionStorage",lookup(t){let{lookupSessionStorage:e}=t;if(e&&p4())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupSessionStorage:n}=e;n&&p4()&&window.sessionStorage.setItem(n,t)}},Wne={name:"navigator",lookup(t){const e=[];if(typeof navigator<"u"){const{languages:n,userLanguage:i,language:r}=navigator;if(n)for(let a=0;a0?e:void 0}},qne={name:"htmlTag",lookup(t){let{htmlTag:e}=t,n;const i=e||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(n=i.getAttribute("lang")),n}},Xne={name:"path",lookup(t){let{lookupFromPathIndex:e}=t;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?n[typeof e=="number"?e:0]?.replace("/",""):void 0}},Kne={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:e}=t;const n=typeof e=="number"?e+1:1,i=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(i)return i[n]}};let uG=!1;try{document.cookie,uG=!0}catch{}const dG=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];uG||dG.splice(1,1);const Yne=()=>({order:dG,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class fG{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,n)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=jne(n,this.options||{},Yne()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(Bne),this.addDetector(Hne),this.addDetector($ne),this.addDetector(Gne),this.addDetector(Wne),this.addDetector(qne),this.addDetector(Xne),this.addDetector(Kne),this.addDetector(Vne)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return e.forEach(i=>{if(this.detectors[i]){let r=this.detectors[i].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(n=n.concat(r))}}),n=n.filter(i=>i!=null&&!Fne(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||n.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(e,this.options)}))}}fG.type="languageDetector";const Zne={nav:{printers:"Printers",control:"Control",archives:"Archives",queue:"Queue",stats:"Statistics",profiles:"Profiles",maintenance:"Maintenance",settings:"Settings",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",update:"Update",updateAvailable:"Update available: v{{version}}",viewOnGithub:"View on GitHub",keyboardShortcuts:"Keyboard shortcuts (?)",switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode"},common:{save:"Save",cancel:"Cancel",delete:"Delete",edit:"Edit",add:"Add",close:"Close",confirm:"Confirm",loading:"Loading...",error:"Error",success:"Success",warning:"Warning",enabled:"Enabled",disabled:"Disabled",yes:"Yes",no:"No",on:"On",off:"Off",all:"All",none:"None",search:"Search",filter:"Filter",sort:"Sort",refresh:"Refresh",download:"Download",upload:"Upload",actions:"Actions",status:"Status",name:"Name",description:"Description",date:"Date",time:"Time",hours:"hours",minutes:"minutes",seconds:"seconds",noPrinters:"No printers configured",noData:"No data available",required:"Required",optional:"Optional"},printers:{title:"Printers",addPrinter:"Add Printer",editPrinter:"Edit Printer",deletePrinter:"Delete Printer",printerName:"Printer Name",serialNumber:"Serial Number",ipAddress:"IP Address",accessCode:"Access Code",model:"Model",nozzleCount:"Nozzle Count",autoArchive:"Auto Archive",status:{idle:"Idle",printing:"Printing",paused:"Paused",offline:"Offline",error:"Error",finished:"Finished",unknown:"Unknown"},temperatures:{nozzle:"Nozzle",bed:"Bed",chamber:"Chamber"},progress:"{{percent}}% complete",timeRemaining:"{{time}} remaining",deleteConfirm:'Are you sure you want to delete "{{name}}"?',maintenanceOk:"Maintenance OK",maintenanceWarning:"{{count}} warning",maintenanceWarning_plural:"{{count}} warnings",maintenanceDue:"{{count}} due",maintenanceDue_plural:"{{count}} due"},archives:{title:"Print Archives",searchPlaceholder:"Search archives...",filterByPrinter:"Filter by printer",filterByStatus:"Filter by status",sortBy:"Sort by",sortNewest:"Newest first",sortOldest:"Oldest first",sortName:"Name",sortDuration:"Duration",noArchives:"No archives found",printTime:"Print Time",filamentUsed:"Filament Used",cost:"Cost",reprint:"Reprint",preview:"Preview",deleteArchive:"Delete Archive",deleteConfirm:"Are you sure you want to delete this archive?",favorite:"Favorite",unfavorite:"Remove from favorites",viewDetails:"View Details",status:{completed:"Completed",failed:"Failed",stopped:"Stopped"}},queue:{title:"Print Queue",addToQueue:"Add to Queue",clearQueue:"Clear Queue",emptyQueue:"Queue is empty",position:"Position",scheduledTime:"Scheduled Time",moveUp:"Move Up",moveDown:"Move Down",remove:"Remove",startNow:"Start Now",status:{pending:"Pending",printing:"Printing",completed:"Completed",failed:"Failed",cancelled:"Cancelled"}},stats:{title:"Statistics",overview:"Overview",totalPrints:"Total Prints",successRate:"Success Rate",totalPrintTime:"Total Print Time",totalFilament:"Total Filament Used",totalCost:"Total Cost",averagePrintTime:"Average Print Time",printsPerDay:"Prints per Day",byPrinter:"By Printer",byMaterial:"By Material",byMonth:"By Month",last7Days:"Last 7 Days",last30Days:"Last 30 Days",last90Days:"Last 90 Days",allTime:"All Time"},profiles:{title:"Filament Profiles",addProfile:"Add Profile",editProfile:"Edit Profile",deleteProfile:"Delete Profile",material:"Material",brand:"Brand",color:"Color",diameter:"Diameter",density:"Density",costPerKg:"Cost per kg",spoolWeight:"Spool Weight",noProfiles:"No profiles configured",deleteConfirm:"Are you sure you want to delete this profile?"},maintenance:{title:"Maintenance",overview:"Overview",allOk:"All maintenance up to date",dueCount:"{{count}} item due",dueCount_plural:"{{count}} items due",warningCount:"{{count}} warning",warningCount_plural:"{{count}} warnings",totalPrintTime:"Total Print Time",nextMaintenance:"Next Maintenance",nothingDue:"Nothing due",tasks:"Tasks",lastPerformed:"Last performed",interval:"Interval",hoursRemaining:"{{hours}}h remaining",hoursOverdue:"{{hours}}h overdue",markDone:"Mark as Done",performMaintenance:"Perform Maintenance",history:"History",noHistory:"No maintenance history",editPrintHours:"Edit Print Hours",currentHours:"Current Hours",types:{lubricateRails:"Lubricate Linear Rails",cleanNozzle:"Clean Nozzle/Hotend",checkBelts:"Check Belt Tension",cleanBuildPlate:"Clean Build Plate",checkExtruder:"Check Extruder Gears",checkCooling:"Check Cooling Fans",generalInspection:"General Inspection"}},settings:{title:"Settings",general:"General",appearance:"Appearance",notifications:"Notifications",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Language",languageDescription:"Select your preferred language",theme:"Theme",themeLight:"Light",themeDark:"Dark",themeSystem:"System",defaultView:"Default View",defaultViewDescription:"Page to show when opening the app",checkForUpdates:"Check for Updates",autoUpdate:"Auto Update",currentVersion:"Current Version",latestVersion:"Latest Version",upToDate:"You are up to date",updateAvailable:"Update available",notificationLanguage:"Notification Language",notificationLanguageDescription:"Language for push notifications",notificationProviders:"Notification Providers",addProvider:"Add Provider",editProvider:"Edit Provider",providerType:"Provider Type",testNotification:"Test Notification",testSuccess:"Test notification sent successfully",testFailed:"Failed to send test notification",quietHours:"Quiet Hours",quietHoursDescription:"Do not disturb during these hours",quietHoursStart:"Start",quietHoursEnd:"End",events:{title:"Notification Events",printStart:"Print Started",printComplete:"Print Completed",printFailed:"Print Failed",printStopped:"Print Stopped",printProgress:"Progress Milestones",printProgressDescription:"Notify at 25%, 50%, 75%",printerOffline:"Printer Offline",printerError:"Printer Error",filamentLow:"Low Filament",maintenanceDue:"Maintenance Due",maintenanceDueDescription:"Notify when maintenance is needed"},smartPlug:{title:"Smart Plugs",add:"Add Smart Plug",edit:"Edit Smart Plug",name:"Name",ipAddress:"IP Address",linkedPrinter:"Linked Printer",autoOn:"Auto Power On",autoOnDescription:"Turn on when print starts",autoOff:"Auto Power Off",autoOffDescription:"Turn off after print completes",offDelay:"Off Delay",offDelayMinutes:"Minutes after print",offDelayTemp:"When nozzle below temperature",currentState:"Current State",turnOn:"Turn On",turnOff:"Turn Off"},spoolmanEnabled:"Enable Spoolman Integration",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Connected",spoolmanDisconnected:"Disconnected"},notification:{printStarted:{title:"Print Started",body:"{{printer}}: {{filename}} has started printing"},printCompleted:{title:"Print Completed",body:"{{printer}}: {{filename}} completed successfully"},printFailed:{title:"Print Failed",body:"{{printer}}: {{filename}} has failed"},printStopped:{title:"Print Stopped",body:"{{printer}}: {{filename}} was stopped"},printProgress:{title:"Print Progress",body:"{{printer}}: {{filename}} is {{percent}}% complete"},printerOffline:{title:"Printer Offline",body:"{{printer}} is offline"},printerError:{title:"Printer Error",body:"{{printer}}: {{error}}"},filamentLow:{title:"Low Filament",body:"{{printer}}: Filament is running low"},maintenanceDue:{title:"Maintenance Due",body:"{{printer}}: {{items}} need attention"}},errors:{generic:"Something went wrong",networkError:"Network error. Please check your connection.",notFound:"Not found",unauthorized:"Unauthorized",serverError:"Server error",validationError:"Please check your input",printerConnectionFailed:"Failed to connect to printer",saveFailed:"Failed to save changes",deleteFailed:"Failed to delete",loadFailed:"Failed to load data"},confirm:{delete:"Are you sure you want to delete this?",unsavedChanges:"You have unsaved changes. Are you sure you want to leave?",clearQueue:"Are you sure you want to clear the queue?"}},Qne={nav:{printers:"Drucker",control:"Steuerung",archives:"Archiv",queue:"Warteschlange",stats:"Statistiken",profiles:"Profile",maintenance:"Wartung",settings:"Einstellungen",collapseSidebar:"Seitenleiste einklappen",expandSidebar:"Seitenleiste ausklappen",update:"Update",updateAvailable:"Update verfügbar: v{{version}}",viewOnGithub:"Auf GitHub ansehen",keyboardShortcuts:"Tastaturkürzel (?)",switchToLight:"Zum hellen Modus wechseln",switchToDark:"Zum dunklen Modus wechseln"},common:{save:"Speichern",cancel:"Abbrechen",delete:"Löschen",edit:"Bearbeiten",add:"Hinzufügen",close:"Schließen",confirm:"Bestätigen",loading:"Lädt...",error:"Fehler",success:"Erfolg",warning:"Warnung",enabled:"Aktiviert",disabled:"Deaktiviert",yes:"Ja",no:"Nein",on:"An",off:"Aus",all:"Alle",none:"Keine",search:"Suchen",filter:"Filtern",sort:"Sortieren",refresh:"Aktualisieren",download:"Herunterladen",upload:"Hochladen",actions:"Aktionen",status:"Status",name:"Name",description:"Beschreibung",date:"Datum",time:"Zeit",hours:"Stunden",minutes:"Minuten",seconds:"Sekunden",noPrinters:"Keine Drucker konfiguriert",noData:"Keine Daten verfügbar",required:"Erforderlich",optional:"Optional"},printers:{title:"Drucker",addPrinter:"Drucker hinzufügen",editPrinter:"Drucker bearbeiten",deletePrinter:"Drucker löschen",printerName:"Druckername",serialNumber:"Seriennummer",ipAddress:"IP-Adresse",accessCode:"Zugangscode",model:"Modell",nozzleCount:"Düsenanzahl",autoArchive:"Automatische Archivierung",status:{idle:"Bereit",printing:"Druckt",paused:"Pausiert",offline:"Offline",error:"Fehler",finished:"Fertig",unknown:"Unbekannt"},temperatures:{nozzle:"Düse",bed:"Druckbett",chamber:"Kammer"},progress:"{{percent}}% abgeschlossen",timeRemaining:"Noch {{time}}",deleteConfirm:'Möchten Sie "{{name}}" wirklich löschen?',maintenanceOk:"Wartung OK",maintenanceWarning:"{{count}} Warnung",maintenanceWarning_plural:"{{count}} Warnungen",maintenanceDue:"{{count}} fällig",maintenanceDue_plural:"{{count}} fällig"},archives:{title:"Druckarchiv",searchPlaceholder:"Archiv durchsuchen...",filterByPrinter:"Nach Drucker filtern",filterByStatus:"Nach Status filtern",sortBy:"Sortieren nach",sortNewest:"Neueste zuerst",sortOldest:"Älteste zuerst",sortName:"Name",sortDuration:"Dauer",noArchives:"Keine Archive gefunden",printTime:"Druckzeit",filamentUsed:"Verbrauchtes Filament",cost:"Kosten",reprint:"Erneut drucken",preview:"Vorschau",deleteArchive:"Archiv löschen",deleteConfirm:"Möchten Sie dieses Archiv wirklich löschen?",favorite:"Favorit",unfavorite:"Aus Favoriten entfernen",viewDetails:"Details anzeigen",status:{completed:"Abgeschlossen",failed:"Fehlgeschlagen",stopped:"Gestoppt"}},queue:{title:"Druckwarteschlange",addToQueue:"Zur Warteschlange hinzufügen",clearQueue:"Warteschlange leeren",emptyQueue:"Warteschlange ist leer",position:"Position",scheduledTime:"Geplante Zeit",moveUp:"Nach oben",moveDown:"Nach unten",remove:"Entfernen",startNow:"Jetzt starten",status:{pending:"Ausstehend",printing:"Druckt",completed:"Abgeschlossen",failed:"Fehlgeschlagen",cancelled:"Abgebrochen"}},stats:{title:"Statistiken",overview:"Übersicht",totalPrints:"Gesamtdrucke",successRate:"Erfolgsrate",totalPrintTime:"Gesamtdruckzeit",totalFilament:"Gesamtverbrauch Filament",totalCost:"Gesamtkosten",averagePrintTime:"Durchschnittliche Druckzeit",printsPerDay:"Drucke pro Tag",byPrinter:"Nach Drucker",byMaterial:"Nach Material",byMonth:"Nach Monat",last7Days:"Letzte 7 Tage",last30Days:"Letzte 30 Tage",last90Days:"Letzte 90 Tage",allTime:"Gesamt"},profiles:{title:"Filament-Profile",addProfile:"Profil hinzufügen",editProfile:"Profil bearbeiten",deleteProfile:"Profil löschen",material:"Material",brand:"Marke",color:"Farbe",diameter:"Durchmesser",density:"Dichte",costPerKg:"Kosten pro kg",spoolWeight:"Spulengewicht",noProfiles:"Keine Profile konfiguriert",deleteConfirm:"Möchten Sie dieses Profil wirklich löschen?"},maintenance:{title:"Wartung",overview:"Übersicht",allOk:"Alle Wartungen aktuell",dueCount:"{{count}} Aufgabe fällig",dueCount_plural:"{{count}} Aufgaben fällig",warningCount:"{{count}} Warnung",warningCount_plural:"{{count}} Warnungen",totalPrintTime:"Gesamtdruckzeit",nextMaintenance:"Nächste Wartung",nothingDue:"Nichts fällig",tasks:"Aufgaben",lastPerformed:"Zuletzt durchgeführt",interval:"Intervall",hoursRemaining:"{{hours}}h verbleibend",hoursOverdue:"{{hours}}h überfällig",markDone:"Als erledigt markieren",performMaintenance:"Wartung durchführen",history:"Verlauf",noHistory:"Kein Wartungsverlauf",editPrintHours:"Druckstunden bearbeiten",currentHours:"Aktuelle Stunden",types:{lubricateRails:"Linearschienen schmieren",cleanNozzle:"Düse/Hotend reinigen",checkBelts:"Riemenspannung prüfen",cleanBuildPlate:"Druckbett reinigen",checkExtruder:"Extruderzahnräder prüfen",checkCooling:"Kühlungslüfter prüfen",generalInspection:"Allgemeine Inspektion"}},settings:{title:"Einstellungen",general:"Allgemein",appearance:"Erscheinungsbild",notifications:"Benachrichtigungen",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Sprache",languageDescription:"Wählen Sie Ihre bevorzugte Sprache",theme:"Design",themeLight:"Hell",themeDark:"Dunkel",themeSystem:"System",defaultView:"Standardansicht",defaultViewDescription:"Seite, die beim Öffnen der App angezeigt wird",checkForUpdates:"Nach Updates suchen",autoUpdate:"Automatische Updates",currentVersion:"Aktuelle Version",latestVersion:"Neueste Version",upToDate:"Sie sind auf dem neuesten Stand",updateAvailable:"Update verfügbar",notificationLanguage:"Benachrichtigungssprache",notificationLanguageDescription:"Sprache für Push-Benachrichtigungen",notificationProviders:"Benachrichtigungsanbieter",addProvider:"Anbieter hinzufügen",editProvider:"Anbieter bearbeiten",providerType:"Anbietertyp",testNotification:"Testbenachrichtigung",testSuccess:"Testbenachrichtigung erfolgreich gesendet",testFailed:"Testbenachrichtigung konnte nicht gesendet werden",quietHours:"Ruhezeiten",quietHoursDescription:"Keine Störungen während dieser Zeiten",quietHoursStart:"Beginn",quietHoursEnd:"Ende",events:{title:"Benachrichtigungsereignisse",printStart:"Druck gestartet",printComplete:"Druck abgeschlossen",printFailed:"Druck fehlgeschlagen",printStopped:"Druck gestoppt",printProgress:"Fortschrittsmeldungen",printProgressDescription:"Bei 25%, 50%, 75% benachrichtigen",printerOffline:"Drucker offline",printerError:"Druckerfehler",filamentLow:"Filament niedrig",maintenanceDue:"Wartung fällig",maintenanceDueDescription:"Benachrichtigen, wenn Wartung erforderlich"},smartPlug:{title:"Smart Plugs",add:"Smart Plug hinzufügen",edit:"Smart Plug bearbeiten",name:"Name",ipAddress:"IP-Adresse",linkedPrinter:"Verknüpfter Drucker",autoOn:"Automatisch einschalten",autoOnDescription:"Einschalten beim Druckstart",autoOff:"Automatisch ausschalten",autoOffDescription:"Ausschalten nach Druckende",offDelay:"Ausschaltverzögerung",offDelayMinutes:"Minuten nach Druck",offDelayTemp:"Wenn Düse unter Temperatur",currentState:"Aktueller Status",turnOn:"Einschalten",turnOff:"Ausschalten"},spoolmanEnabled:"Spoolman-Integration aktivieren",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Verbunden",spoolmanDisconnected:"Nicht verbunden"},notification:{printStarted:{title:"Druck gestartet",body:"{{printer}}: {{filename}} wird gedruckt"},printCompleted:{title:"Druck abgeschlossen",body:"{{printer}}: {{filename}} erfolgreich abgeschlossen"},printFailed:{title:"Druck fehlgeschlagen",body:"{{printer}}: {{filename}} ist fehlgeschlagen"},printStopped:{title:"Druck gestoppt",body:"{{printer}}: {{filename}} wurde gestoppt"},printProgress:{title:"Druckfortschritt",body:"{{printer}}: {{filename}} ist zu {{percent}}% abgeschlossen"},printerOffline:{title:"Drucker offline",body:"{{printer}} ist offline"},printerError:{title:"Druckerfehler",body:"{{printer}}: {{error}}"},filamentLow:{title:"Filament niedrig",body:"{{printer}}: Filament geht zur Neige"},maintenanceDue:{title:"Wartung fällig",body:"{{printer}}: {{items}} benötigen Aufmerksamkeit"}},errors:{generic:"Etwas ist schiefgelaufen",networkError:"Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",notFound:"Nicht gefunden",unauthorized:"Nicht autorisiert",serverError:"Serverfehler",validationError:"Bitte überprüfen Sie Ihre Eingabe",printerConnectionFailed:"Verbindung zum Drucker fehlgeschlagen",saveFailed:"Speichern fehlgeschlagen",deleteFailed:"Löschen fehlgeschlagen",loadFailed:"Laden der Daten fehlgeschlagen"},confirm:{delete:"Möchten Sie dies wirklich löschen?",unsavedChanges:"Sie haben ungespeicherte Änderungen. Möchten Sie wirklich verlassen?",clearQueue:"Möchten Sie die Warteschlange wirklich leeren?"}},Jne={en:{translation:Zne},de:{translation:Qne}};wa.use(fG).use(Nne).init({resources:Jne,fallbackLng:"en",supportedLngs:["en","de"],detection:{order:["localStorage","navigator","htmlTag"],lookupLocalStorage:"bambutrack_language",caches:["localStorage"]},interpolation:{escapeValue:!1},react:{useSuspense:!1}});const m4=[{code:"en",name:"English",nativeName:"English"},{code:"de",name:"German",nativeName:"Deutsch"}];var g4="popstate";function eie(t={}){function e(i,r){let{pathname:a,search:s,hash:o}=i.location;return hN("",{pathname:a,search:s,hash:o},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function n(i,r){return typeof r=="string"?r:L0(r)}return nie(e,n,null,t)}function mi(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function Ws(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function tie(){return Math.random().toString(36).substring(2,10)}function x4(t,e){return{usr:t.state,key:t.key,idx:e}}function hN(t,e,n=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?pm(e):e,state:n,key:e&&e.key||i||tie()}}function L0({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function pm(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let i=t.indexOf("?");i>=0&&(e.search=t.substring(i),t=t.substring(0,i)),t&&(e.pathname=t)}return e}function nie(t,e,n,i={}){let{window:r=document.defaultView,v5Compat:a=!1}=i,s=r.history,o="POP",l=null,c=u();c==null&&(c=0,s.replaceState({...s.state,idx:c},""));function u(){return(s.state||{idx:null}).idx}function f(){o="POP";let v=u(),x=v==null?null:v-c;c=v,l&&l({action:o,location:_.location,delta:x})}function p(v,x){o="PUSH";let M=hN(_.location,v,x);c=u()+1;let w=x4(M,c),E=_.createHref(M);try{s.pushState(w,"",E)}catch(T){if(T instanceof DOMException&&T.name==="DataCloneError")throw T;r.location.assign(E)}a&&l&&l({action:o,location:_.location,delta:1})}function g(v,x){o="REPLACE";let M=hN(_.location,v,x);c=u();let w=x4(M,c),E=_.createHref(M);s.replaceState(w,"",E),a&&l&&l({action:o,location:_.location,delta:0})}function y(v){return iie(v)}let _={get action(){return o},get location(){return t(r,s)},listen(v){if(l)throw new Error("A history only accepts one active listener");return r.addEventListener(g4,f),l=v,()=>{r.removeEventListener(g4,f),l=null}},createHref(v){return e(r,v)},createURL:y,encodeLocation(v){let x=y(v);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:p,replace:g,go(v){return s.go(v)}};return _}function iie(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),mi(n,"No window.location.(origin|href) available to create URL");let i=typeof t=="string"?t:L0(t);return i=i.replace(/ $/,"%20"),!e&&i.startsWith("//")&&(i=n+i),new URL(i,n)}function hG(t,e,n="/"){return rie(t,e,n,!1)}function rie(t,e,n,i){let r=typeof e=="string"?pm(e):e,a=cc(r.pathname||"/",n);if(a==null)return null;let s=pG(t);aie(s);let o=null;for(let l=0;o==null&&l{let u={relativePath:c===void 0?s.path||"":c,caseSensitive:s.caseSensitive===!0,childrenIndex:o,route:s};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(i)&&l)return;mi(u.relativePath.startsWith(i),`Absolute route path "${u.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(i.length)}let f=tc([i,u.relativePath]),p=n.concat(u);s.children&&s.children.length>0&&(mi(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),pG(s.children,e,p,f,l)),!(s.path==null&&!s.index)&&e.push({path:f,score:fie(f,s.index),routesMeta:p})};return t.forEach((s,o)=>{if(s.path===""||!s.path?.includes("?"))a(s,o);else for(let l of mG(s.path))a(s,o,!0,l)}),e}function mG(t){let e=t.split("/");if(e.length===0)return[];let[n,...i]=e,r=n.endsWith("?"),a=n.replace(/\?$/,"");if(i.length===0)return r?[a,""]:[a];let s=mG(i.join("/")),o=[];return o.push(...s.map(l=>l===""?a:[a,l].join("/"))),r&&o.push(...s),o.map(l=>t.startsWith("/")&&l===""?"/":l)}function aie(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:hie(e.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}var sie=/^:[\w-]+$/,oie=3,lie=2,cie=1,uie=10,die=-2,v4=t=>t==="*";function fie(t,e){let n=t.split("/"),i=n.length;return n.some(v4)&&(i+=die),e&&(i+=lie),n.filter(r=>!v4(r)).reduce((r,a)=>r+(sie.test(a)?oie:a===""?cie:uie),i)}function hie(t,e){return t.length===e.length&&t.slice(0,-1).every((i,r)=>i===e[r])?t[t.length-1]-e[e.length-1]:0}function pie(t,e,n=!1){let{routesMeta:i}=t,r={},a="/",s=[];for(let o=0;o{if(u==="*"){let y=o[p]||"";s=a.slice(0,a.length-y.length).replace(/(.)\/+$/,"$1")}const g=o[p];return f&&!g?c[u]=void 0:c[u]=(g||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:s,pattern:t}}function mie(t,e=!1,n=!0){Ws(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],r="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,o,l)=>(i.push({paramName:o,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(i.push({paramName:"*"}),r+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?r+="\\/*$":t!==""&&t!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,e?void 0:"i"),i]}function gie(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Ws(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function cc(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,i=t.charAt(n);return i&&i!=="/"?null:t.slice(n)||"/"}var xie=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,vie=t=>xie.test(t);function yie(t,e="/"){let{pathname:n,search:i="",hash:r=""}=typeof t=="string"?pm(t):t,a;if(n)if(vie(n))a=n;else{if(n.includes("//")){let s=n;n=n.replace(/\/\/+/g,"/"),Ws(!1,`Pathnames cannot have embedded double slashes - normalizing ${s} -> ${n}`)}n.startsWith("/")?a=y4(n.substring(1),"/"):a=y4(n,e)}else a=e;return{pathname:a,search:Sie(i),hash:wie(r)}}function y4(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(r=>{r===".."?n.length>1&&n.pop():r!=="."&&n.push(r)}),n.length>1?n.join("/"):"/"}function TA(t,e,n,i){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(i)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bie(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function gG(t){let e=bie(t);return e.map((n,i)=>i===e.length-1?n.pathname:n.pathnameBase)}function xG(t,e,n,i=!1){let r;typeof t=="string"?r=pm(t):(r={...t},mi(!r.pathname||!r.pathname.includes("?"),TA("?","pathname","search",r)),mi(!r.pathname||!r.pathname.includes("#"),TA("#","pathname","hash",r)),mi(!r.search||!r.search.includes("#"),TA("#","search","hash",r)));let a=t===""||r.pathname==="",s=a?"/":r.pathname,o;if(s==null)o=n;else{let f=e.length-1;if(!i&&s.startsWith("..")){let p=s.split("/");for(;p[0]==="..";)p.shift(),f-=1;r.pathname=p.join("/")}o=f>=0?e[f]:"/"}let l=yie(r,o),c=s&&s!=="/"&&s.endsWith("/"),u=(a||s===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var tc=t=>t.join("/").replace(/\/\/+/g,"/"),_ie=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Sie=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,wie=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Mie(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var vG=["POST","PUT","PATCH","DELETE"];new Set(vG);var Eie=["GET",...vG];new Set(Eie);var mm=A.createContext(null);mm.displayName="DataRouter";var BS=A.createContext(null);BS.displayName="DataRouterState";A.createContext(!1);var yG=A.createContext({isTransitioning:!1});yG.displayName="ViewTransition";var Aie=A.createContext(new Map);Aie.displayName="Fetchers";var Tie=A.createContext(null);Tie.displayName="Await";var rl=A.createContext(null);rl.displayName="Navigation";var Tx=A.createContext(null);Tx.displayName="Location";var al=A.createContext({outlet:null,matches:[],isDataRoute:!1});al.displayName="Route";var yP=A.createContext(null);yP.displayName="RouteError";function Cie(t,{relative:e}={}){mi(Cx(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:i}=A.useContext(rl),{hash:r,pathname:a,search:s}=Nx(t,{relative:e}),o=a;return n!=="/"&&(o=a==="/"?n:tc([n,a])),i.createHref({pathname:o,search:s,hash:r})}function Cx(){return A.useContext(Tx)!=null}function Sc(){return mi(Cx(),"useLocation() may be used only in the context of a component."),A.useContext(Tx).location}var bG="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function _G(t){A.useContext(rl).static||A.useLayoutEffect(t)}function HS(){let{isDataRoute:t}=A.useContext(al);return t?Vie():Nie()}function Nie(){mi(Cx(),"useNavigate() may be used only in the context of a component.");let t=A.useContext(mm),{basename:e,navigator:n}=A.useContext(rl),{matches:i}=A.useContext(al),{pathname:r}=Sc(),a=JSON.stringify(gG(i)),s=A.useRef(!1);return _G(()=>{s.current=!0}),A.useCallback((l,c={})=>{if(Ws(s.current,bG),!s.current)return;if(typeof l=="number"){n.go(l);return}let u=xG(l,JSON.parse(a),r,c.relative==="path");t==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:tc([e,u.pathname])),(c.replace?n.replace:n.push)(u,c.state,c)},[e,n,a,r,t])}var Rie=A.createContext(null);function Pie(t){let e=A.useContext(al).outlet;return A.useMemo(()=>e&&A.createElement(Rie.Provider,{value:t},e),[e,t])}function Nx(t,{relative:e}={}){let{matches:n}=A.useContext(al),{pathname:i}=Sc(),r=JSON.stringify(gG(n));return A.useMemo(()=>xG(t,JSON.parse(r),i,e==="path"),[t,r,i,e])}function Die(t,e){return SG(t,e)}function SG(t,e,n,i,r){mi(Cx(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=A.useContext(rl),{matches:s}=A.useContext(al),o=s[s.length-1],l=o?o.params:{},c=o?o.pathname:"/",u=o?o.pathnameBase:"/",f=o&&o.route;{let M=f&&f.path||"";wG(c,!f||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${c}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. +`+S.stack}}var oe=Object.prototype.hasOwnProperty,ke=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,te=t.unstable_shouldYield,j=t.unstable_requestPaint,O=t.unstable_now,Y=t.unstable_getCurrentPriorityLevel,me=t.unstable_ImmediatePriority,ye=t.unstable_UserBlockingPriority,he=t.unstable_NormalPriority,Ze=t.unstable_LowPriority,Le=t.unstable_IdlePriority,Xe=t.log,at=t.unstable_setDisableYieldValue,Ie=null,Re=null;function pt(d){if(typeof Xe=="function"&&at(d),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Ie,d)}catch{}}var nt=Math.clz32?Math.clz32:de,tt=Math.log,ut=Math.LN2;function de(d){return d>>>=0,d===0?32:31-(tt(d)/ut|0)|0}var it=256,fe=262144,Oe=4194304;function Me(d){var h=d&42;if(h!==0)return h;switch(d&-d){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return d&261888;case 262144:case 524288:case 1048576:case 2097152:return d&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return d&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return d}}function ge(d,h,b){var S=d.pendingLanes;if(S===0)return 0;var R=0,D=d.suspendedLanes,$=d.pingedLanes;d=d.warmLanes;var ne=S&134217727;return ne!==0?(S=ne&~D,S!==0?R=Me(S):($&=ne,$!==0?R=Me($):b||(b=ne&~d,b!==0&&(R=Me(b))))):(ne=S&~D,ne!==0?R=Me(ne):$!==0?R=Me($):b||(b=S&~d,b!==0&&(R=Me(b)))),R===0?0:h!==0&&h!==R&&(h&D)===0&&(D=R&-R,b=h&-h,D>=b||D===32&&(b&4194048)!==0)?h:R}function Be(d,h){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&h)===0}function ct(d,h){switch(d){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bt(){var d=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),d}function Rt(d){for(var h=[],b=0;31>b;b++)h.push(d);return h}function on(d,h){d.pendingLanes|=h,h!==268435456&&(d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0)}function Dt(d,h,b,S,R,D){var $=d.pendingLanes;d.pendingLanes=b,d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0,d.expiredLanes&=b,d.entangledLanes&=b,d.errorRecoveryDisabledLanes&=b,d.shellSuspendCounter=0;var ne=d.entanglements,_e=d.expirationTimes,Fe=d.hiddenUpdates;for(b=$&~b;0"u")return null;try{return d.activeElement||d.body}catch{return d.body}}var Ti=/[\n"\\]/g;function Cn(d){return d.replace(Ti,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function Js(d,h,b,S,R,D,$,ne){d.name="",$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"?d.type=$:d.removeAttribute("type"),h!=null?$==="number"?(h===0&&d.value===""||d.value!=h)&&(d.value=""+cn(h)):d.value!==""+cn(h)&&(d.value=""+cn(h)):$!=="submit"&&$!=="reset"||d.removeAttribute("value"),h!=null?mr(d,$,cn(h)):b!=null?mr(d,$,cn(b)):S!=null&&d.removeAttribute("value"),R==null&&D!=null&&(d.defaultChecked=!!D),R!=null&&(d.checked=R&&typeof R!="function"&&typeof R!="symbol"),ne!=null&&typeof ne!="function"&&typeof ne!="symbol"&&typeof ne!="boolean"?d.name=""+cn(ne):d.removeAttribute("name")}function Pn(d,h,b,S,R,D,$,ne){if(D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(d.type=D),h!=null||b!=null){if(!(D!=="submit"&&D!=="reset"||h!=null)){Xt(d);return}b=b!=null?""+cn(b):"",h=h!=null?""+cn(h):b,ne||h===d.value||(d.value=h),d.defaultValue=h}S=S??R,S=typeof S!="function"&&typeof S!="symbol"&&!!S,d.checked=ne?d.checked:!!S,d.defaultChecked=!!S,$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"&&(d.name=$),Xt(d)}function mr(d,h,b){h==="number"&&yi(d.ownerDocument)===d||d.defaultValue===""+b||(d.defaultValue=""+b)}function Qi(d,h,b,S){if(d=d.options,h){h={};for(var R=0;R"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),xM=!1;if(cl)try{var zm={};Object.defineProperty(zm,"passive",{get:function(){xM=!0}}),window.addEventListener("test",zm,zm),window.removeEventListener("test",zm,zm)}catch{xM=!1}var kc=null,vM=null,vv=null;function lL(){if(vv)return vv;var d,h=vM,b=h.length,S,R="value"in kc?kc.value:kc.textContent,D=R.length;for(d=0;d=Vm),pL=" ",mL=!1;function gL(d,h){switch(d){case"keyup":return cee.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function xL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var Kf=!1;function dee(d,h){switch(d){case"compositionend":return xL(h);case"keypress":return h.which!==32?null:(mL=!0,pL);case"textInput":return d=h.data,d===pL&&mL?null:d;default:return null}}function fee(d,h){if(Kf)return d==="compositionend"||!wM&&gL(d,h)?(d=lL(),vv=vM=kc=null,Kf=!1,d):null;switch(d){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:b,offset:h-d};d=S}e:{for(;b;){if(b.nextSibling){b=b.nextSibling;break e}b=b.parentNode}b=void 0}b=EL(b)}}function TL(d,h){return d&&h?d===h?!0:d&&d.nodeType===3?!1:h&&h.nodeType===3?TL(d,h.parentNode):"contains"in d?d.contains(h):d.compareDocumentPosition?!!(d.compareDocumentPosition(h)&16):!1:!1}function CL(d){d=d!=null&&d.ownerDocument!=null&&d.ownerDocument.defaultView!=null?d.ownerDocument.defaultView:window;for(var h=yi(d.document);h instanceof d.HTMLIFrameElement;){try{var b=typeof h.contentWindow.location.href=="string"}catch{b=!1}if(b)d=h.contentWindow;else break;h=yi(d.document)}return h}function AM(d){var h=d&&d.nodeName&&d.nodeName.toLowerCase();return h&&(h==="input"&&(d.type==="text"||d.type==="search"||d.type==="tel"||d.type==="url"||d.type==="password")||h==="textarea"||d.contentEditable==="true")}var bee=cl&&"documentMode"in document&&11>=document.documentMode,Yf=null,TM=null,qm=null,CM=!1;function NL(d,h,b){var S=b.window===b?b.document:b.nodeType===9?b:b.ownerDocument;CM||Yf==null||Yf!==yi(S)||(S=Yf,"selectionStart"in S&&AM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),qm&&Wm(qm,S)||(qm=S,S=dy(TM,"onSelect"),0>=$,R-=$,Co=1<<32-nt(h)+R|b<Qt?(xn=kt,kt=null):xn=kt.sibling;var wn=Ve(De,kt,je[Qt],rt);if(wn===null){kt===null&&(kt=xn);break}d&&kt&&wn.alternate===null&&h(De,kt),Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn,kt=xn}if(Qt===je.length)return b(De,kt),yn&&dl(De,Qt),It;if(kt===null){for(;QtQt?(xn=kt,kt=null):xn=kt.sibling;var eu=Ve(De,kt,wn.value,rt);if(eu===null){kt===null&&(kt=xn);break}d&&kt&&eu.alternate===null&&h(De,kt),Ee=D(eu,Ee,Qt),Sn===null?It=eu:Sn.sibling=eu,Sn=eu,kt=xn}if(wn.done)return b(De,kt),yn&&dl(De,Qt),It;if(kt===null){for(;!wn.done;Qt++,wn=je.next())wn=st(De,wn.value,rt),wn!==null&&(Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return yn&&dl(De,Qt),It}for(kt=S(kt);!wn.done;Qt++,wn=je.next())wn=Ye(kt,De,Qt,wn.value,rt),wn!==null&&(d&&wn.alternate!==null&&kt.delete(wn.key===null?Qt:wn.key),Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return d&&kt.forEach(function(zte){return h(De,zte)}),yn&&dl(De,Qt),It}function jn(De,Ee,je,rt){if(typeof je=="object"&&je!==null&&je.type===_&&je.key===null&&(je=je.props.children),typeof je=="object"&&je!==null){switch(je.$$typeof){case g:e:{for(var It=je.key;Ee!==null;){if(Ee.key===It){if(It=je.type,It===_){if(Ee.tag===7){b(De,Ee.sibling),rt=R(Ee,je.props.children),rt.return=De,De=rt;break e}}else if(Ee.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===U&&Sd(It)===Ee.type){b(De,Ee.sibling),rt=R(Ee,je.props),Jm(rt,je),rt.return=De,De=rt;break e}b(De,Ee);break}else h(De,Ee);Ee=Ee.sibling}je.type===_?(rt=xd(je.props.children,De.mode,rt,je.key),rt.return=De,De=rt):(rt=Cv(je.type,je.key,je.props,null,De.mode,rt),Jm(rt,je),rt.return=De,De=rt)}return $(De);case y:e:{for(It=je.key;Ee!==null;){if(Ee.key===It)if(Ee.tag===4&&Ee.stateNode.containerInfo===je.containerInfo&&Ee.stateNode.implementation===je.implementation){b(De,Ee.sibling),rt=R(Ee,je.children||[]),rt.return=De,De=rt;break e}else{b(De,Ee);break}else h(De,Ee);Ee=Ee.sibling}rt=LM(je,De.mode,rt),rt.return=De,De=rt}return $(De);case U:return je=Sd(je),jn(De,Ee,je,rt)}if(H(je))return Nt(De,Ee,je,rt);if(I(je)){if(It=I(je),typeof It!="function")throw Error(i(150));return je=It.call(je),Bt(De,Ee,je,rt)}if(typeof je.then=="function")return jn(De,Ee,Lv(je),rt);if(je.$$typeof===w)return jn(De,Ee,Pv(De,je),rt);Iv(De,je)}return typeof je=="string"&&je!==""||typeof je=="number"||typeof je=="bigint"?(je=""+je,Ee!==null&&Ee.tag===6?(b(De,Ee.sibling),rt=R(Ee,je),rt.return=De,De=rt):(b(De,Ee),rt=OM(je,De.mode,rt),rt.return=De,De=rt),$(De)):b(De,Ee)}return function(De,Ee,je,rt){try{Qm=0;var It=jn(De,Ee,je,rt);return oh=null,It}catch(kt){if(kt===sh||kt===Dv)throw kt;var Sn=Wa(29,kt,null,De.mode);return Sn.lanes=rt,Sn.return=De,Sn}finally{}}}var Md=QL(!0),JL=QL(!1),Uc=!1;function qM(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function XM(d,h){d=d.updateQueue,h.updateQueue===d&&(h.updateQueue={baseState:d.baseState,firstBaseUpdate:d.firstBaseUpdate,lastBaseUpdate:d.lastBaseUpdate,shared:d.shared,callbacks:null})}function jc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function Fc(d,h,b){var S=d.updateQueue;if(S===null)return null;if(S=S.shared,(Tn&2)!==0){var R=S.pending;return R===null?h.next=h:(h.next=R.next,R.next=h),S.pending=h,h=Tv(d),IL(d,null,b),h}return Av(d,S,h,b),Tv(d)}function eg(d,h,b){if(h=h.updateQueue,h!==null&&(h=h.shared,(b&4194048)!==0)){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}function KM(d,h){var b=d.updateQueue,S=d.alternate;if(S!==null&&(S=S.updateQueue,b===S)){var R=null,D=null;if(b=b.firstBaseUpdate,b!==null){do{var $={lane:b.lane,tag:b.tag,payload:b.payload,callback:null,next:null};D===null?R=D=$:D=D.next=$,b=b.next}while(b!==null);D===null?R=D=h:D=D.next=h}else R=D=h;b={baseState:S.baseState,firstBaseUpdate:R,lastBaseUpdate:D,shared:S.shared,callbacks:S.callbacks},d.updateQueue=b;return}d=b.lastBaseUpdate,d===null?b.firstBaseUpdate=h:d.next=h,b.lastBaseUpdate=h}var YM=!1;function tg(){if(YM){var d=ah;if(d!==null)throw d}}function ng(d,h,b,S){YM=!1;var R=d.updateQueue;Uc=!1;var D=R.firstBaseUpdate,$=R.lastBaseUpdate,ne=R.shared.pending;if(ne!==null){R.shared.pending=null;var _e=ne,Fe=_e.next;_e.next=null,$===null?D=Fe:$.next=Fe,$=_e;var Je=d.alternate;Je!==null&&(Je=Je.updateQueue,ne=Je.lastBaseUpdate,ne!==$&&(ne===null?Je.firstBaseUpdate=Fe:ne.next=Fe,Je.lastBaseUpdate=_e))}if(D!==null){var st=R.baseState;$=0,Je=Fe=_e=null,ne=D;do{var Ve=ne.lane&-536870913,Ye=Ve!==ne.lane;if(Ye?(gn&Ve)===Ve:(S&Ve)===Ve){Ve!==0&&Ve===rh&&(YM=!0),Je!==null&&(Je=Je.next={lane:0,tag:ne.tag,payload:ne.payload,callback:null,next:null});e:{var Nt=d,Bt=ne;Ve=h;var jn=b;switch(Bt.tag){case 1:if(Nt=Bt.payload,typeof Nt=="function"){st=Nt.call(jn,st,Ve);break e}st=Nt;break e;case 3:Nt.flags=Nt.flags&-65537|128;case 0:if(Nt=Bt.payload,Ve=typeof Nt=="function"?Nt.call(jn,st,Ve):Nt,Ve==null)break e;st=f({},st,Ve);break e;case 2:Uc=!0}}Ve=ne.callback,Ve!==null&&(d.flags|=64,Ye&&(d.flags|=8192),Ye=R.callbacks,Ye===null?R.callbacks=[Ve]:Ye.push(Ve))}else Ye={lane:Ve,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},Je===null?(Fe=Je=Ye,_e=st):Je=Je.next=Ye,$|=Ve;if(ne=ne.next,ne===null){if(ne=R.shared.pending,ne===null)break;Ye=ne,ne=Ye.next,Ye.next=null,R.lastBaseUpdate=Ye,R.shared.pending=null}}while(!0);Je===null&&(_e=st),R.baseState=_e,R.firstBaseUpdate=Fe,R.lastBaseUpdate=Je,D===null&&(R.shared.lanes=0),$c|=$,d.lanes=$,d.memoizedState=st}}function eI(d,h){if(typeof d!="function")throw Error(i(191,d));d.call(h)}function tI(d,h){var b=d.callbacks;if(b!==null)for(d.callbacks=null,d=0;dD?D:8;var $=V.T,ne={};V.T=ne,mE(d,!1,h,b);try{var _e=R(),Fe=V.S;if(Fe!==null&&Fe(ne,_e),_e!==null&&typeof _e=="object"&&typeof _e.then=="function"){var Je=Nee(_e,S);ag(d,h,Je,Za(d))}else ag(d,h,S,Za(d))}catch(st){ag(d,h,{then:function(){},status:"rejected",reason:st},Za())}finally{G.p=D,$!==null&&ne.types!==null&&($.types=ne.types),V.T=$}}function Lee(){}function hE(d,h,b,S){if(d.tag!==5)throw Error(i(476));var R=DI(d).queue;kI(d,R,h,K,b===null?Lee:function(){return OI(d),b(S)})}function DI(d){var h=d.memoizedState;if(h!==null)return h;h={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ml,lastRenderedState:K},next:null};var b={};return h.next={memoizedState:b,baseState:b,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ml,lastRenderedState:b},next:null},d.memoizedState=h,d=d.alternate,d!==null&&(d.memoizedState=h),h}function OI(d){var h=DI(d);h.next===null&&(h=d.alternate.memoizedState),ag(d,h.next.queue,{},Za())}function pE(){return Dr(Sg)}function LI(){return Ni().memoizedState}function II(){return Ni().memoizedState}function Iee(d){for(var h=d.return;h!==null;){switch(h.tag){case 24:case 3:var b=Za();d=jc(b);var S=Fc(h,d,b);S!==null&&(Na(S,h,b),eg(S,h,b)),h={cache:VM()},d.payload=h;return}h=h.return}}function Uee(d,h,b){var S=Za();b={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null},Wv(d)?jI(h,b):(b=kM(d,h,b,S),b!==null&&(Na(b,d,S),FI(b,h,S)))}function UI(d,h,b){var S=Za();ag(d,h,b,S)}function ag(d,h,b,S){var R={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null};if(Wv(d))jI(h,R);else{var D=d.alternate;if(d.lanes===0&&(D===null||D.lanes===0)&&(D=h.lastRenderedReducer,D!==null))try{var $=h.lastRenderedState,ne=D($,b);if(R.hasEagerState=!0,R.eagerState=ne,Ga(ne,$))return Av(d,h,R,0),qn===null&&Ev(),!1}catch{}finally{}if(b=kM(d,h,R,S),b!==null)return Na(b,d,S),FI(b,h,S),!0}return!1}function mE(d,h,b,S){if(S={lane:2,revertLane:qE(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},Wv(d)){if(h)throw Error(i(479))}else h=kM(d,b,S,2),h!==null&&Na(h,d,2)}function Wv(d){var h=d.alternate;return d===Zt||h!==null&&h===Zt}function jI(d,h){ch=Fv=!0;var b=d.pending;b===null?h.next=h:(h.next=b.next,b.next=h),d.pending=h}function FI(d,h,b){if((b&4194048)!==0){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}var sg={readContext:Dr,use:Hv,useCallback:bi,useContext:bi,useEffect:bi,useImperativeHandle:bi,useLayoutEffect:bi,useInsertionEffect:bi,useMemo:bi,useReducer:bi,useRef:bi,useState:bi,useDebugValue:bi,useDeferredValue:bi,useTransition:bi,useSyncExternalStore:bi,useId:bi,useHostTransitionStatus:bi,useFormState:bi,useActionState:bi,useOptimistic:bi,useMemoCache:bi,useCacheRefresh:bi};sg.useEffectEvent=bi;var zI={readContext:Dr,use:Hv,useCallback:function(d,h){return ca().memoizedState=[d,h===void 0?null:h],d},useContext:Dr,useEffect:wI,useImperativeHandle:function(d,h,b){b=b!=null?b.concat([d]):null,$v(4194308,4,TI.bind(null,h,d),b)},useLayoutEffect:function(d,h){return $v(4194308,4,d,h)},useInsertionEffect:function(d,h){$v(4,2,d,h)},useMemo:function(d,h){var b=ca();h=h===void 0?null:h;var S=d();if(Ed){pt(!0);try{d()}finally{pt(!1)}}return b.memoizedState=[S,h],S},useReducer:function(d,h,b){var S=ca();if(b!==void 0){var R=b(h);if(Ed){pt(!0);try{b(h)}finally{pt(!1)}}}else R=h;return S.memoizedState=S.baseState=R,d={pending:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:R},S.queue=d,d=d.dispatch=Uee.bind(null,Zt,d),[S.memoizedState,d]},useRef:function(d){var h=ca();return d={current:d},h.memoizedState=d},useState:function(d){d=lE(d);var h=d.queue,b=UI.bind(null,Zt,h);return h.dispatch=b,[d.memoizedState,b]},useDebugValue:dE,useDeferredValue:function(d,h){var b=ca();return fE(b,d,h)},useTransition:function(){var d=lE(!1);return d=kI.bind(null,Zt,d.queue,!0,!1),ca().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,h,b){var S=Zt,R=ca();if(yn){if(b===void 0)throw Error(i(407));b=b()}else{if(b=h(),qn===null)throw Error(i(349));(gn&127)!==0||oI(S,h,b)}R.memoizedState=b;var D={value:b,getSnapshot:h};return R.queue=D,wI(cI.bind(null,S,D,d),[d]),S.flags|=2048,dh(9,{destroy:void 0},lI.bind(null,S,D,b,h),null),b},useId:function(){var d=ca(),h=qn.identifierPrefix;if(yn){var b=No,S=Co;b=(S&~(1<<32-nt(S)-1)).toString(32)+b,h="_"+h+"R_"+b,b=zv++,0<\/script>",D=D.removeChild(D.firstChild);break;case"select":D=typeof S.is=="string"?$.createElement("select",{is:S.is}):$.createElement("select"),S.multiple?D.multiple=!0:S.size&&(D.size=S.size);break;default:D=typeof S.is=="string"?$.createElement(R,{is:S.is}):$.createElement(R)}}D[hi]=h,D[Ai]=S;e:for($=h.child;$!==null;){if($.tag===5||$.tag===6)D.appendChild($.stateNode);else if($.tag!==4&&$.tag!==27&&$.child!==null){$.child.return=$,$=$.child;continue}if($===h)break e;for(;$.sibling===null;){if($.return===null||$.return===h)break e;$=$.return}$.sibling.return=$.return,$=$.sibling}h.stateNode=D;e:switch(Lr(D,R,S),R){case"button":case"input":case"select":case"textarea":S=!!S.autoFocus;break e;case"img":S=!0;break e;default:S=!1}S&&xl(h)}}return ti(h),NE(h,h.type,d===null?null:d.memoizedProps,h.pendingProps,b),null;case 6:if(d&&h.stateNode!=null)d.memoizedProps!==S&&xl(h);else{if(typeof S!="string"&&h.stateNode===null)throw Error(i(166));if(d=ie.current,nh(h)){if(d=h.stateNode,b=h.memoizedProps,S=null,R=kr,R!==null)switch(R.tag){case 27:case 5:S=R.memoizedProps}d[hi]=h,d=!!(d.nodeValue===b||S!==null&&S.suppressHydrationWarning===!0||aj(d.nodeValue,b)),d||Lc(h,!0)}else d=fy(d).createTextNode(S),d[hi]=h,h.stateNode=d}return ti(h),null;case 31:if(b=h.memoizedState,d===null||d.memoizedState!==null){if(S=nh(h),b!==null){if(d===null){if(!S)throw Error(i(318));if(d=h.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(i(557));d[hi]=h}else vd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),d=!1}else b=FM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=b),d=!0;if(!d)return h.flags&256?(Xa(h),h):(Xa(h),null);if((h.flags&128)!==0)throw Error(i(558))}return ti(h),null;case 13:if(S=h.memoizedState,d===null||d.memoizedState!==null&&d.memoizedState.dehydrated!==null){if(R=nh(h),S!==null&&S.dehydrated!==null){if(d===null){if(!R)throw Error(i(318));if(R=h.memoizedState,R=R!==null?R.dehydrated:null,!R)throw Error(i(317));R[hi]=h}else vd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),R=!1}else R=FM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=R),R=!0;if(!R)return h.flags&256?(Xa(h),h):(Xa(h),null)}return Xa(h),(h.flags&128)!==0?(h.lanes=b,h):(b=S!==null,d=d!==null&&d.memoizedState!==null,b&&(S=h.child,R=null,S.alternate!==null&&S.alternate.memoizedState!==null&&S.alternate.memoizedState.cachePool!==null&&(R=S.alternate.memoizedState.cachePool.pool),D=null,S.memoizedState!==null&&S.memoizedState.cachePool!==null&&(D=S.memoizedState.cachePool.pool),D!==R&&(S.flags|=2048)),b!==d&&b&&(h.child.flags|=8192),Zv(h,h.updateQueue),ti(h),null);case 4:return pe(),d===null&&ZE(h.stateNode.containerInfo),ti(h),null;case 10:return hl(h.type),ti(h),null;case 19:if(X(Ci),S=h.memoizedState,S===null)return ti(h),null;if(R=(h.flags&128)!==0,D=S.rendering,D===null)if(R)lg(S,!1);else{if(_i!==0||d!==null&&(d.flags&128)!==0)for(d=h.child;d!==null;){if(D=jv(d),D!==null){for(h.flags|=128,lg(S,!1),d=D.updateQueue,h.updateQueue=d,Zv(h,d),h.subtreeFlags=0,d=b,b=h.child;b!==null;)UL(b,d),b=b.sibling;return ae(Ci,Ci.current&1|2),yn&&dl(h,S.treeForkCount),h.child}d=d.sibling}S.tail!==null&&O()>ny&&(h.flags|=128,R=!0,lg(S,!1),h.lanes=4194304)}else{if(!R)if(d=jv(D),d!==null){if(h.flags|=128,R=!0,d=d.updateQueue,h.updateQueue=d,Zv(h,d),lg(S,!0),S.tail===null&&S.tailMode==="hidden"&&!D.alternate&&!yn)return ti(h),null}else 2*O()-S.renderingStartTime>ny&&b!==536870912&&(h.flags|=128,R=!0,lg(S,!1),h.lanes=4194304);S.isBackwards?(D.sibling=h.child,h.child=D):(d=S.last,d!==null?d.sibling=D:h.child=D,S.last=D)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=O(),d.sibling=null,b=Ci.current,ae(Ci,R?b&1|2:b&1),yn&&dl(h,S.treeForkCount),d):(ti(h),null);case 22:case 23:return Xa(h),QM(),S=h.memoizedState!==null,d!==null?d.memoizedState!==null!==S&&(h.flags|=8192):S&&(h.flags|=8192),S?(b&536870912)!==0&&(h.flags&128)===0&&(ti(h),h.subtreeFlags&6&&(h.flags|=8192)):ti(h),b=h.updateQueue,b!==null&&Zv(h,b.retryQueue),b=null,d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),S=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(S=h.memoizedState.cachePool.pool),S!==b&&(h.flags|=2048),d!==null&&X(_d),null;case 24:return b=null,d!==null&&(b=d.memoizedState.cache),h.memoizedState.cache!==b&&(h.flags|=2048),hl(Ii),ti(h),null;case 25:return null;case 30:return null}throw Error(i(156,h.tag))}function Hee(d,h){switch(UM(h),h.tag){case 1:return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 3:return hl(Ii),pe(),d=h.flags,(d&65536)!==0&&(d&128)===0?(h.flags=d&-65537|128,h):null;case 26:case 27:case 5:return ze(h),null;case 31:if(h.memoizedState!==null){if(Xa(h),h.alternate===null)throw Error(i(340));vd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 13:if(Xa(h),d=h.memoizedState,d!==null&&d.dehydrated!==null){if(h.alternate===null)throw Error(i(340));vd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 19:return X(Ci),null;case 4:return pe(),null;case 10:return hl(h.type),null;case 22:case 23:return Xa(h),QM(),d!==null&&X(_d),d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 24:return hl(Ii),null;case 25:return null;default:return null}}function uU(d,h){switch(UM(h),h.tag){case 3:hl(Ii),pe();break;case 26:case 27:case 5:ze(h);break;case 4:pe();break;case 31:h.memoizedState!==null&&Xa(h);break;case 13:Xa(h);break;case 19:X(Ci);break;case 10:hl(h.type);break;case 22:case 23:Xa(h),QM(),d!==null&&X(_d);break;case 24:hl(Ii)}}function cg(d,h){try{var b=h.updateQueue,S=b!==null?b.lastEffect:null;if(S!==null){var R=S.next;b=R;do{if((b.tag&d)===d){S=void 0;var D=b.create,$=b.inst;S=D(),$.destroy=S}b=b.next}while(b!==R)}}catch(ne){Dn(h,h.return,ne)}}function Hc(d,h,b){try{var S=h.updateQueue,R=S!==null?S.lastEffect:null;if(R!==null){var D=R.next;S=D;do{if((S.tag&d)===d){var $=S.inst,ne=$.destroy;if(ne!==void 0){$.destroy=void 0,R=h;var _e=b,Fe=ne;try{Fe()}catch(Je){Dn(R,_e,Je)}}}S=S.next}while(S!==D)}}catch(Je){Dn(h,h.return,Je)}}function dU(d){var h=d.updateQueue;if(h!==null){var b=d.stateNode;try{tI(h,b)}catch(S){Dn(d,d.return,S)}}}function fU(d,h,b){b.props=Ad(d.type,d.memoizedProps),b.state=d.memoizedState;try{b.componentWillUnmount()}catch(S){Dn(d,h,S)}}function ug(d,h){try{var b=d.ref;if(b!==null){switch(d.tag){case 26:case 27:case 5:var S=d.stateNode;break;case 30:S=d.stateNode;break;default:S=d.stateNode}typeof b=="function"?d.refCleanup=b(S):b.current=S}}catch(R){Dn(d,h,R)}}function Ro(d,h){var b=d.ref,S=d.refCleanup;if(b!==null)if(typeof S=="function")try{S()}catch(R){Dn(d,h,R)}finally{d.refCleanup=null,d=d.alternate,d!=null&&(d.refCleanup=null)}else if(typeof b=="function")try{b(null)}catch(R){Dn(d,h,R)}else b.current=null}function hU(d){var h=d.type,b=d.memoizedProps,S=d.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":b.autoFocus&&S.focus();break e;case"img":b.src?S.src=b.src:b.srcSet&&(S.srcset=b.srcSet)}}catch(R){Dn(d,d.return,R)}}function RE(d,h,b){try{var S=d.stateNode;ute(S,d.type,b,h),S[Ai]=h}catch(R){Dn(d,d.return,R)}}function pU(d){return d.tag===5||d.tag===3||d.tag===26||d.tag===27&&Kc(d.type)||d.tag===4}function PE(d){e:for(;;){for(;d.sibling===null;){if(d.return===null||pU(d.return))return null;d=d.return}for(d.sibling.return=d.return,d=d.sibling;d.tag!==5&&d.tag!==6&&d.tag!==18;){if(d.tag===27&&Kc(d.type)||d.flags&2||d.child===null||d.tag===4)continue e;d.child.return=d,d=d.child}if(!(d.flags&2))return d.stateNode}}function kE(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?(b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b).insertBefore(d,h):(h=b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b,h.appendChild(d),b=b._reactRootContainer,b!=null||h.onclick!==null||(h.onclick=ll));else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode,h=null),d=d.child,d!==null))for(kE(d,h,b),d=d.sibling;d!==null;)kE(d,h,b),d=d.sibling}function Qv(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?b.insertBefore(d,h):b.appendChild(d);else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode),d=d.child,d!==null))for(Qv(d,h,b),d=d.sibling;d!==null;)Qv(d,h,b),d=d.sibling}function mU(d){var h=d.stateNode,b=d.memoizedProps;try{for(var S=d.type,R=h.attributes;R.length;)h.removeAttributeNode(R[0]);Lr(h,S,b),h[hi]=d,h[Ai]=b}catch(D){Dn(d,d.return,D)}}var vl=!1,Fi=!1,DE=!1,gU=typeof WeakSet=="function"?WeakSet:Set,xr=null;function Vee(d,h){if(d=d.containerInfo,eA=yy,d=CL(d),AM(d)){if("selectionStart"in d)var b={start:d.selectionStart,end:d.selectionEnd};else e:{b=(b=d.ownerDocument)&&b.defaultView||window;var S=b.getSelection&&b.getSelection();if(S&&S.rangeCount!==0){b=S.anchorNode;var R=S.anchorOffset,D=S.focusNode;S=S.focusOffset;try{b.nodeType,D.nodeType}catch{b=null;break e}var $=0,ne=-1,_e=-1,Fe=0,Je=0,st=d,Ve=null;t:for(;;){for(var Ye;st!==b||R!==0&&st.nodeType!==3||(ne=$+R),st!==D||S!==0&&st.nodeType!==3||(_e=$+S),st.nodeType===3&&($+=st.nodeValue.length),(Ye=st.firstChild)!==null;)Ve=st,st=Ye;for(;;){if(st===d)break t;if(Ve===b&&++Fe===R&&(ne=$),Ve===D&&++Je===S&&(_e=$),(Ye=st.nextSibling)!==null)break;st=Ve,Ve=st.parentNode}st=Ye}b=ne===-1||_e===-1?null:{start:ne,end:_e}}else b=null}b=b||{start:0,end:0}}else b=null;for(tA={focusedElem:d,selectionRange:b},yy=!1,xr=h;xr!==null;)if(h=xr,d=h.child,(h.subtreeFlags&1028)!==0&&d!==null)d.return=h,xr=d;else for(;xr!==null;){switch(h=xr,D=h.alternate,d=h.flags,h.tag){case 0:if((d&4)!==0&&(d=h.updateQueue,d=d!==null?d.events:null,d!==null))for(b=0;b title"))),Lr(D,S,b),D[hi]=d,Te(D),S=D;break e;case"link":var $=Sj("link","href",R).get(S+(b.href||""));if($){for(var ne=0;ne<$.length;ne++)if(D=$[ne],D.getAttribute("href")===(b.href==null||b.href===""?null:b.href)&&D.getAttribute("rel")===(b.rel==null?null:b.rel)&&D.getAttribute("title")===(b.title==null?null:b.title)&&D.getAttribute("crossorigin")===(b.crossOrigin==null?null:b.crossOrigin)){$.splice(ne,1);break t}}D=R.createElement(S),Lr(D,S,b),R.head.appendChild(D);break;case"meta":if($=Sj("meta","content",R).get(S+(b.content||""))){for(ne=0;ne<$.length;ne++)if(D=$[ne],D.getAttribute("content")===(b.content==null?null:""+b.content)&&D.getAttribute("name")===(b.name==null?null:b.name)&&D.getAttribute("property")===(b.property==null?null:b.property)&&D.getAttribute("http-equiv")===(b.httpEquiv==null?null:b.httpEquiv)&&D.getAttribute("charset")===(b.charSet==null?null:b.charSet)){$.splice(ne,1);break t}}D=R.createElement(S),Lr(D,S,b),R.head.appendChild(D);break;default:throw Error(i(468,S))}D[hi]=d,Te(D),S=D}d.stateNode=S}else wj(R,d.type,d.stateNode);else d.stateNode=_j(R,S,d.memoizedProps);else D!==S?(D===null?b.stateNode!==null&&(b=b.stateNode,b.parentNode.removeChild(b)):D.count--,S===null?wj(R,d.type,d.stateNode):_j(R,S,d.memoizedProps)):S===null&&d.stateNode!==null&&RE(d,d.memoizedProps,b.memoizedProps)}break;case 27:Aa(h,d),Ta(d),S&512&&(Fi||b===null||Ro(b,b.return)),b!==null&&S&4&&RE(d,d.memoizedProps,b.memoizedProps);break;case 5:if(Aa(h,d),Ta(d),S&512&&(Fi||b===null||Ro(b,b.return)),d.flags&32){R=d.stateNode;try{To(R,"")}catch(Nt){Dn(d,d.return,Nt)}}S&4&&d.stateNode!=null&&(R=d.memoizedProps,RE(d,R,b!==null?b.memoizedProps:R)),S&1024&&(DE=!0);break;case 6:if(Aa(h,d),Ta(d),S&4){if(d.stateNode===null)throw Error(i(162));S=d.memoizedProps,b=d.stateNode;try{b.nodeValue=S}catch(Nt){Dn(d,d.return,Nt)}}break;case 3:if(my=null,R=to,to=hy(h.containerInfo),Aa(h,d),to=R,Ta(d),S&4&&b!==null&&b.memoizedState.isDehydrated)try{wh(h.containerInfo)}catch(Nt){Dn(d,d.return,Nt)}DE&&(DE=!1,wU(d));break;case 4:S=to,to=hy(d.stateNode.containerInfo),Aa(h,d),Ta(d),to=S;break;case 12:Aa(h,d),Ta(d);break;case 31:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 13:Aa(h,d),Ta(d),d.child.flags&8192&&d.memoizedState!==null!=(b!==null&&b.memoizedState!==null)&&(ty=O()),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 22:R=d.memoizedState!==null;var _e=b!==null&&b.memoizedState!==null,Fe=vl,Je=Fi;if(vl=Fe||R,Fi=Je||_e,Aa(h,d),Fi=Je,vl=Fe,Ta(d),S&8192)e:for(h=d.stateNode,h._visibility=R?h._visibility&-2:h._visibility|1,R&&(b===null||_e||vl||Fi||Td(d)),b=null,h=d;;){if(h.tag===5||h.tag===26){if(b===null){_e=b=h;try{if(D=_e.stateNode,R)$=D.style,typeof $.setProperty=="function"?$.setProperty("display","none","important"):$.display="none";else{ne=_e.stateNode;var st=_e.memoizedProps.style,Ve=st!=null&&st.hasOwnProperty("display")?st.display:null;ne.style.display=Ve==null||typeof Ve=="boolean"?"":(""+Ve).trim()}}catch(Nt){Dn(_e,_e.return,Nt)}}}else if(h.tag===6){if(b===null){_e=h;try{_e.stateNode.nodeValue=R?"":_e.memoizedProps}catch(Nt){Dn(_e,_e.return,Nt)}}}else if(h.tag===18){if(b===null){_e=h;try{var Ye=_e.stateNode;R?fj(Ye,!0):fj(_e.stateNode,!1)}catch(Nt){Dn(_e,_e.return,Nt)}}}else if((h.tag!==22&&h.tag!==23||h.memoizedState===null||h===d)&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===d)break e;for(;h.sibling===null;){if(h.return===null||h.return===d)break e;b===h&&(b=null),h=h.return}b===h&&(b=null),h.sibling.return=h.return,h=h.sibling}S&4&&(S=d.updateQueue,S!==null&&(b=S.retryQueue,b!==null&&(S.retryQueue=null,Jv(d,b))));break;case 19:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 30:break;case 21:break;default:Aa(h,d),Ta(d)}}function Ta(d){var h=d.flags;if(h&2){try{for(var b,S=d.return;S!==null;){if(pU(S)){b=S;break}S=S.return}if(b==null)throw Error(i(160));switch(b.tag){case 27:var R=b.stateNode,D=PE(d);Qv(d,D,R);break;case 5:var $=b.stateNode;b.flags&32&&(To($,""),b.flags&=-33);var ne=PE(d);Qv(d,ne,$);break;case 3:case 4:var _e=b.stateNode.containerInfo,Fe=PE(d);kE(d,Fe,_e);break;default:throw Error(i(161))}}catch(Je){Dn(d,d.return,Je)}d.flags&=-3}h&4096&&(d.flags&=-4097)}function wU(d){if(d.subtreeFlags&1024)for(d=d.child;d!==null;){var h=d;wU(h),h.tag===5&&h.flags&1024&&h.stateNode.reset(),d=d.sibling}}function bl(d,h){if(h.subtreeFlags&8772)for(h=h.child;h!==null;)xU(d,h.alternate,h),h=h.sibling}function Td(d){for(d=d.child;d!==null;){var h=d;switch(h.tag){case 0:case 11:case 14:case 15:Hc(4,h,h.return),Td(h);break;case 1:Ro(h,h.return);var b=h.stateNode;typeof b.componentWillUnmount=="function"&&fU(h,h.return,b),Td(h);break;case 27:yg(h.stateNode);case 26:case 5:Ro(h,h.return),Td(h);break;case 22:h.memoizedState===null&&Td(h);break;case 30:Td(h);break;default:Td(h)}d=d.sibling}}function _l(d,h,b){for(b=b&&(h.subtreeFlags&8772)!==0,h=h.child;h!==null;){var S=h.alternate,R=d,D=h,$=D.flags;switch(D.tag){case 0:case 11:case 15:_l(R,D,b),cg(4,D);break;case 1:if(_l(R,D,b),S=D,R=S.stateNode,typeof R.componentDidMount=="function")try{R.componentDidMount()}catch(Fe){Dn(S,S.return,Fe)}if(S=D,R=S.updateQueue,R!==null){var ne=S.stateNode;try{var _e=R.shared.hiddenCallbacks;if(_e!==null)for(R.shared.hiddenCallbacks=null,R=0;R<_e.length;R++)eI(_e[R],ne)}catch(Fe){Dn(S,S.return,Fe)}}b&&$&64&&dU(D),ug(D,D.return);break;case 27:mU(D);case 26:case 5:_l(R,D,b),b&&S===null&&$&4&&hU(D),ug(D,D.return);break;case 12:_l(R,D,b);break;case 31:_l(R,D,b),b&&$&4&&bU(R,D);break;case 13:_l(R,D,b),b&&$&4&&_U(R,D);break;case 22:D.memoizedState===null&&_l(R,D,b),ug(D,D.return);break;case 30:break;default:_l(R,D,b)}h=h.sibling}}function OE(d,h){var b=null;d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),d=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(d=h.memoizedState.cachePool.pool),d!==b&&(d!=null&&d.refCount++,b!=null&&Ym(b))}function LE(d,h){d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Ym(d))}function no(d,h,b,S){if(h.subtreeFlags&10256)for(h=h.child;h!==null;)MU(d,h,b,S),h=h.sibling}function MU(d,h,b,S){var R=h.flags;switch(h.tag){case 0:case 11:case 15:no(d,h,b,S),R&2048&&cg(9,h);break;case 1:no(d,h,b,S);break;case 3:no(d,h,b,S),R&2048&&(d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Ym(d)));break;case 12:if(R&2048){no(d,h,b,S),d=h.stateNode;try{var D=h.memoizedProps,$=D.id,ne=D.onPostCommit;typeof ne=="function"&&ne($,h.alternate===null?"mount":"update",d.passiveEffectDuration,-0)}catch(_e){Dn(h,h.return,_e)}}else no(d,h,b,S);break;case 31:no(d,h,b,S);break;case 13:no(d,h,b,S);break;case 23:break;case 22:D=h.stateNode,$=h.alternate,h.memoizedState!==null?D._visibility&2?no(d,h,b,S):dg(d,h):D._visibility&2?no(d,h,b,S):(D._visibility|=2,fh(d,h,b,S,(h.subtreeFlags&10256)!==0||!1)),R&2048&&OE($,h);break;case 24:no(d,h,b,S),R&2048&&LE(h.alternate,h);break;default:no(d,h,b,S)}}function fh(d,h,b,S,R){for(R=R&&((h.subtreeFlags&10256)!==0||!1),h=h.child;h!==null;){var D=d,$=h,ne=b,_e=S,Fe=$.flags;switch($.tag){case 0:case 11:case 15:fh(D,$,ne,_e,R),cg(8,$);break;case 23:break;case 22:var Je=$.stateNode;$.memoizedState!==null?Je._visibility&2?fh(D,$,ne,_e,R):dg(D,$):(Je._visibility|=2,fh(D,$,ne,_e,R)),R&&Fe&2048&&OE($.alternate,$);break;case 24:fh(D,$,ne,_e,R),R&&Fe&2048&&LE($.alternate,$);break;default:fh(D,$,ne,_e,R)}h=h.sibling}}function dg(d,h){if(h.subtreeFlags&10256)for(h=h.child;h!==null;){var b=d,S=h,R=S.flags;switch(S.tag){case 22:dg(b,S),R&2048&&OE(S.alternate,S);break;case 24:dg(b,S),R&2048&&LE(S.alternate,S);break;default:dg(b,S)}h=h.sibling}}var fg=8192;function hh(d,h,b){if(d.subtreeFlags&fg)for(d=d.child;d!==null;)EU(d,h,b),d=d.sibling}function EU(d,h,b){switch(d.tag){case 26:hh(d,h,b),d.flags&fg&&d.memoizedState!==null&&Rte(b,to,d.memoizedState,d.memoizedProps);break;case 5:hh(d,h,b);break;case 3:case 4:var S=to;to=hy(d.stateNode.containerInfo),hh(d,h,b),to=S;break;case 22:d.memoizedState===null&&(S=d.alternate,S!==null&&S.memoizedState!==null?(S=fg,fg=16777216,hh(d,h,b),fg=S):hh(d,h,b));break;default:hh(d,h,b)}}function AU(d){var h=d.alternate;if(h!==null&&(d=h.child,d!==null)){h.child=null;do h=d.sibling,d.sibling=null,d=h;while(d!==null)}}function hg(d){var h=d.deletions;if((d.flags&16)!==0){if(h!==null)for(var b=0;bjn&&($=jn,jn=Bt,Bt=$);var De=AL(ne,Bt),Ee=AL(ne,jn);if(De&&Ee&&(Ye.rangeCount!==1||Ye.anchorNode!==De.node||Ye.anchorOffset!==De.offset||Ye.focusNode!==Ee.node||Ye.focusOffset!==Ee.offset)){var je=st.createRange();je.setStart(De.node,De.offset),Ye.removeAllRanges(),Bt>jn?(Ye.addRange(je),Ye.extend(Ee.node,Ee.offset)):(je.setEnd(Ee.node,Ee.offset),Ye.addRange(je))}}}}for(st=[],Ye=ne;Ye=Ye.parentNode;)Ye.nodeType===1&&st.push({element:Ye,left:Ye.scrollLeft,top:Ye.scrollTop});for(typeof ne.focus=="function"&&ne.focus(),ne=0;neb?32:b,V.T=null,b=zE,zE=null;var D=Wc,$=wl;if(Ji=0,gh=Wc=null,wl=0,(Tn&6)!==0)throw Error(i(331));var ne=Tn;if(Tn|=4,TU(D.current),MU(D,D.current,$,b),Tn=ne,gg(0,!1),Re&&typeof Re.onPostCommitFiberRoot=="function")try{Re.onPostCommitFiberRoot(Ie,D)}catch{}return!0}finally{G.p=R,V.T=S,GU(d,h)}}function qU(d,h,b){h=gs(b,h),h=yE(d.stateNode,h,2),d=Fc(d,h,2),d!==null&&(on(d,2),Po(d))}function Dn(d,h,b){if(d.tag===3)qU(d,d,b);else for(;h!==null;){if(h.tag===3){qU(h,d,b);break}else if(h.tag===1){var S=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof S.componentDidCatch=="function"&&(Gc===null||!Gc.has(S))){d=gs(b,d),b=XI(2),S=Fc(h,b,2),S!==null&&(KI(b,S,h,d),on(S,2),Po(S));break}}h=h.return}}function $E(d,h,b){var S=d.pingCache;if(S===null){S=d.pingCache=new Wee;var R=new Set;S.set(h,R)}else R=S.get(h),R===void 0&&(R=new Set,S.set(h,R));R.has(b)||(IE=!0,R.add(b),d=Zee.bind(null,d,h,b),h.then(d,d))}function Zee(d,h,b){var S=d.pingCache;S!==null&&S.delete(h),d.pingedLanes|=d.suspendedLanes&b,d.warmLanes&=~b,qn===d&&(gn&b)===b&&(_i===4||_i===3&&(gn&62914560)===gn&&300>O()-ty?(Tn&2)===0&&xh(d,0):UE|=b,mh===gn&&(mh=0)),Po(d)}function XU(d,h){h===0&&(h=bt()),d=gd(d,h),d!==null&&(on(d,h),Po(d))}function Qee(d){var h=d.memoizedState,b=0;h!==null&&(b=h.retryLane),XU(d,b)}function Jee(d,h){var b=0;switch(d.tag){case 31:case 13:var S=d.stateNode,R=d.memoizedState;R!==null&&(b=R.retryLane);break;case 19:S=d.stateNode;break;case 22:S=d.stateNode._retryCache;break;default:throw Error(i(314))}S!==null&&S.delete(h),XU(d,b)}function ete(d,h){return ke(d,h)}var ly=null,yh=null,GE=!1,cy=!1,WE=!1,Xc=0;function Po(d){d!==yh&&d.next===null&&(yh===null?ly=yh=d:yh=yh.next=d),cy=!0,GE||(GE=!0,nte())}function gg(d,h){if(!WE&&cy){WE=!0;do for(var b=!1,S=ly;S!==null;){if(d!==0){var R=S.pendingLanes;if(R===0)var D=0;else{var $=S.suspendedLanes,ne=S.pingedLanes;D=(1<<31-nt(42|d)+1)-1,D&=R&~($&~ne),D=D&201326741?D&201326741|1:D?D|2:0}D!==0&&(b=!0,QU(S,D))}else D=gn,D=ge(S,S===qn?D:0,S.cancelPendingCommit!==null||S.timeoutHandle!==-1),(D&3)===0||Be(S,D)||(b=!0,QU(S,D));S=S.next}while(b);WE=!1}}function tte(){KU()}function KU(){cy=GE=!1;var d=0;Xc!==0&&fte()&&(d=Xc);for(var h=O(),b=null,S=ly;S!==null;){var R=S.next,D=YU(S,h);D===0?(S.next=null,b===null?ly=R:b.next=R,R===null&&(yh=b)):(b=S,(d!==0||(D&3)!==0)&&(cy=!0)),S=R}Ji!==0&&Ji!==5||gg(d),Xc!==0&&(Xc=0)}function YU(d,h){for(var b=d.suspendedLanes,S=d.pingedLanes,R=d.expirationTimes,D=d.pendingLanes&-62914561;0ne)break;var Je=_e.transferSize,st=_e.initiatorType;Je&&sj(st)&&(_e=_e.responseEnd,$+=Je*(_e"u"?null:document;function vj(d,h,b){var S=bh;if(S&&typeof h=="string"&&h){var R=Cn(h);R='link[rel="'+d+'"][href="'+R+'"]',typeof b=="string"&&(R+='[crossorigin="'+b+'"]'),xj.has(R)||(xj.add(R),d={rel:d,crossOrigin:b,href:h},S.querySelector(R)===null&&(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function _te(d){Ml.D(d),vj("dns-prefetch",d,null)}function Ste(d,h){Ml.C(d,h),vj("preconnect",d,h)}function wte(d,h,b){Ml.L(d,h,b);var S=bh;if(S&&d&&h){var R='link[rel="preload"][as="'+Cn(h)+'"]';h==="image"&&b&&b.imageSrcSet?(R+='[imagesrcset="'+Cn(b.imageSrcSet)+'"]',typeof b.imageSizes=="string"&&(R+='[imagesizes="'+Cn(b.imageSizes)+'"]')):R+='[href="'+Cn(d)+'"]';var D=R;switch(h){case"style":D=_h(d);break;case"script":D=Sh(d)}Ss.has(D)||(d=f({rel:"preload",href:h==="image"&&b&&b.imageSrcSet?void 0:d,as:h},b),Ss.set(D,d),S.querySelector(R)!==null||h==="style"&&S.querySelector(bg(D))||h==="script"&&S.querySelector(_g(D))||(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function Mte(d,h){Ml.m(d,h);var b=bh;if(b&&d){var S=h&&typeof h.as=="string"?h.as:"script",R='link[rel="modulepreload"][as="'+Cn(S)+'"][href="'+Cn(d)+'"]',D=R;switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":D=Sh(d)}if(!Ss.has(D)&&(d=f({rel:"modulepreload",href:d},h),Ss.set(D,d),b.querySelector(R)===null)){switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(b.querySelector(_g(D)))return}S=b.createElement("link"),Lr(S,"link",d),Te(S),b.head.appendChild(S)}}}function Ete(d,h,b){Ml.S(d,h,b);var S=bh;if(S&&d){var R=Ce(S).hoistableStyles,D=_h(d);h=h||"default";var $=R.get(D);if(!$){var ne={loading:0,preload:null};if($=S.querySelector(bg(D)))ne.loading=5;else{d=f({rel:"stylesheet",href:d,"data-precedence":h},b),(b=Ss.get(D))&&lA(d,b);var _e=$=S.createElement("link");Te(_e),Lr(_e,"link",d),_e._p=new Promise(function(Fe,Je){_e.onload=Fe,_e.onerror=Je}),_e.addEventListener("load",function(){ne.loading|=1}),_e.addEventListener("error",function(){ne.loading|=2}),ne.loading|=4,py($,h,S)}$={type:"stylesheet",instance:$,count:1,state:ne},R.set(D,$)}}}function Ate(d,h){Ml.X(d,h);var b=bh;if(b&&d){var S=Ce(b).hoistableScripts,R=Sh(d),D=S.get(R);D||(D=b.querySelector(_g(R)),D||(d=f({src:d,async:!0},h),(h=Ss.get(R))&&cA(d,h),D=b.createElement("script"),Te(D),Lr(D,"link",d),b.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},S.set(R,D))}}function Tte(d,h){Ml.M(d,h);var b=bh;if(b&&d){var S=Ce(b).hoistableScripts,R=Sh(d),D=S.get(R);D||(D=b.querySelector(_g(R)),D||(d=f({src:d,async:!0,type:"module"},h),(h=Ss.get(R))&&cA(d,h),D=b.createElement("script"),Te(D),Lr(D,"link",d),b.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},S.set(R,D))}}function yj(d,h,b,S){var R=(R=ie.current)?hy(R):null;if(!R)throw Error(i(446));switch(d){case"meta":case"title":return null;case"style":return typeof b.precedence=="string"&&typeof b.href=="string"?(h=_h(b.href),b=Ce(R).hoistableStyles,S=b.get(h),S||(S={type:"style",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};case"link":if(b.rel==="stylesheet"&&typeof b.href=="string"&&typeof b.precedence=="string"){d=_h(b.href);var D=Ce(R).hoistableStyles,$=D.get(d);if($||(R=R.ownerDocument||R,$={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},D.set(d,$),(D=R.querySelector(bg(d)))&&!D._p&&($.instance=D,$.state.loading=5),Ss.has(d)||(b={rel:"preload",as:"style",href:b.href,crossOrigin:b.crossOrigin,integrity:b.integrity,media:b.media,hrefLang:b.hrefLang,referrerPolicy:b.referrerPolicy},Ss.set(d,b),D||Cte(R,d,b,$.state))),h&&S===null)throw Error(i(528,""));return $}if(h&&S!==null)throw Error(i(529,""));return null;case"script":return h=b.async,b=b.src,typeof b=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=Sh(b),b=Ce(R).hoistableScripts,S=b.get(h),S||(S={type:"script",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,d))}}function _h(d){return'href="'+Cn(d)+'"'}function bg(d){return'link[rel="stylesheet"]['+d+"]"}function bj(d){return f({},d,{"data-precedence":d.precedence,precedence:null})}function Cte(d,h,b,S){d.querySelector('link[rel="preload"][as="style"]['+h+"]")?S.loading=1:(h=d.createElement("link"),S.preload=h,h.addEventListener("load",function(){return S.loading|=1}),h.addEventListener("error",function(){return S.loading|=2}),Lr(h,"link",b),Te(h),d.head.appendChild(h))}function Sh(d){return'[src="'+Cn(d)+'"]'}function _g(d){return"script[async]"+d}function _j(d,h,b){if(h.count++,h.instance===null)switch(h.type){case"style":var S=d.querySelector('style[data-href~="'+Cn(b.href)+'"]');if(S)return h.instance=S,Te(S),S;var R=f({},b,{"data-href":b.href,"data-precedence":b.precedence,href:null,precedence:null});return S=(d.ownerDocument||d).createElement("style"),Te(S),Lr(S,"style",R),py(S,b.precedence,d),h.instance=S;case"stylesheet":R=_h(b.href);var D=d.querySelector(bg(R));if(D)return h.state.loading|=4,h.instance=D,Te(D),D;S=bj(b),(R=Ss.get(R))&&lA(S,R),D=(d.ownerDocument||d).createElement("link"),Te(D);var $=D;return $._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(D,"link",S),h.state.loading|=4,py(D,b.precedence,d),h.instance=D;case"script":return D=Sh(b.src),(R=d.querySelector(_g(D)))?(h.instance=R,Te(R),R):(S=b,(R=Ss.get(D))&&(S=f({},b),cA(S,R)),d=d.ownerDocument||d,R=d.createElement("script"),Te(R),Lr(R,"link",S),d.head.appendChild(R),h.instance=R);case"void":return null;default:throw Error(i(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(S=h.instance,h.state.loading|=4,py(S,b.precedence,d));return h.instance}function py(d,h,b){for(var S=b.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),R=S.length?S[S.length-1]:null,D=R,$=0;$ title"):null)}function Nte(d,h,b){if(b===1||h.itemProp!=null)return!1;switch(d){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return d=h.disabled,typeof h.precedence=="string"&&d==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function Mj(d){return!(d.type==="stylesheet"&&(d.state.loading&3)===0)}function Rte(d,h,b,S){if(b.type==="stylesheet"&&(typeof S.media!="string"||matchMedia(S.media).matches!==!1)&&(b.state.loading&4)===0){if(b.instance===null){var R=_h(S.href),D=h.querySelector(bg(R));if(D){h=D._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(d.count++,d=gy.bind(d),h.then(d,d)),b.state.loading|=4,b.instance=D,Te(D);return}D=h.ownerDocument||h,S=bj(S),(R=Ss.get(R))&&lA(S,R),D=D.createElement("link"),Te(D);var $=D;$._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(D,"link",S),b.instance=D}d.stylesheets===null&&(d.stylesheets=new Map),d.stylesheets.set(b,h),(h=b.state.preload)&&(b.state.loading&3)===0&&(d.count++,b=gy.bind(d),h.addEventListener("load",b),h.addEventListener("error",b))}}var uA=0;function Pte(d,h){return d.stylesheets&&d.count===0&&vy(d,d.stylesheets),0uA?50:800)+h);return d.unsuspend=b,function(){d.unsuspend=null,clearTimeout(S),clearTimeout(R)}}:null}function gy(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)vy(this,this.stylesheets);else if(this.unsuspend){var d=this.unsuspend;this.unsuspend=null,d()}}}var xy=null;function vy(d,h){d.stylesheets=null,d.unsuspend!==null&&(d.count++,xy=new Map,h.forEach(kte,d),xy=null,gy.call(d))}function kte(d,h){if(!(h.state.loading&4)){var b=xy.get(d);if(b)var S=b.get(null);else{b=new Map,xy.set(d,b);for(var R=d.querySelectorAll("link[data-precedence],style[data-precedence]"),D=0;D"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),yA.exports=Kte(),yA.exports}var Zte=Yte();const Vt=t=>typeof t=="string",Cg=()=>{let t,e;const n=new Promise((i,r)=>{t=i,e=r});return n.resolve=t,n.reject=e,n},Xj=t=>t==null?"":""+t,Qte=(t,e,n)=>{t.forEach(i=>{e[i]&&(n[i]=e[i])})},Jte=/###/g,Kj=t=>t&&t.indexOf("###")>-1?t.replace(Jte,"."):t,Yj=t=>!t||Vt(t),d0=(t,e,n)=>{const i=Vt(e)?e.split("."):e;let r=0;for(;r{const{obj:i,k:r}=d0(t,e,Object);if(i!==void 0||e.length===1){i[r]=n;return}let a=e[e.length-1],s=e.slice(0,e.length-1),o=d0(t,s,Object);for(;o.obj===void 0&&s.length;)a=`${s[s.length-1]}.${a}`,s=s.slice(0,s.length-1),o=d0(t,s,Object),o?.obj&&typeof o.obj[`${o.k}.${a}`]<"u"&&(o.obj=void 0);o.obj[`${o.k}.${a}`]=n},ene=(t,e,n,i)=>{const{obj:r,k:a}=d0(t,e,Object);r[a]=r[a]||[],r[a].push(n)},R_=(t,e)=>{const{obj:n,k:i}=d0(t,e);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},tne=(t,e,n)=>{const i=R_(t,n);return i!==void 0?i:R_(e,n)},iG=(t,e,n)=>{for(const i in e)i!=="__proto__"&&i!=="constructor"&&(i in t?Vt(t[i])||t[i]instanceof String||Vt(e[i])||e[i]instanceof String?n&&(t[i]=e[i]):iG(t[i],e[i],n):t[i]=e[i]);return t},Mh=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var nne={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const ine=t=>Vt(t)?t.replace(/[&<>"'\/]/g,e=>nne[e]):t;class rne{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const n=this.regExpMap.get(e);if(n!==void 0)return n;const i=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,i),this.regExpQueue.push(e),i}}const ane=[" ",",","?","!",";"],sne=new rne(20),one=(t,e,n)=>{e=e||"",n=n||"";const i=ane.filter(s=>e.indexOf(s)<0&&n.indexOf(s)<0);if(i.length===0)return!0;const r=sne.getRegExp(`(${i.map(s=>s==="?"?"\\?":s).join("|")})`);let a=!r.test(t);if(!a){const s=t.indexOf(n);s>0&&!r.test(t.substring(0,s))&&(a=!0)}return a},cN=(t,e,n=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const i=e.split(n);let r=t;for(let a=0;a-1&&lt?.replace("_","-"),lne={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){console?.[t]?.apply?.(console,e)}};class P_{constructor(e,n={}){this.init(e,n)}init(e,n={}){this.prefix=n.prefix||"i18next:",this.logger=e||lne,this.options=n,this.debug=n.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,n,i,r){return r&&!this.debug?null:(Vt(e[0])&&(e[0]=`${i}${this.prefix} ${e[0]}`),this.logger[n](e))}create(e){return new P_(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new P_(this.logger,e)}}var Ho=new P_;let zS=class{constructor(){this.observers={}}on(e,n){return e.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(n)||0;this.observers[i].set(n,r+1)}),this}off(e,n){if(this.observers[e]){if(!n){delete this.observers[e];return}this.observers[e].delete(n)}}emit(e,...n){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([r,a])=>{for(let s=0;s{for(let s=0;s-1&&this.options.ns.splice(n,1)}getResource(e,n,i,r={}){const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let o;e.indexOf(".")>-1?o=e.split("."):(o=[e,n],i&&(Array.isArray(i)?o.push(...i):Vt(i)&&a?o.push(...i.split(a)):o.push(i)));const l=R_(this.data,o);return!l&&!n&&!i&&e.indexOf(".")>-1&&(e=o[0],n=o[1],i=o.slice(2).join(".")),l||!s||!Vt(i)?l:cN(this.data?.[e]?.[n],i,a)}addResource(e,n,i,r,a={silent:!1}){const s=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let o=[e,n];i&&(o=o.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(o=e.split("."),r=n,n=o[1]),this.addNamespaces(n),Zj(this.data,o,r),a.silent||this.emit("added",e,n,i,r)}addResources(e,n,i,r={silent:!1}){for(const a in i)(Vt(i[a])||Array.isArray(i[a]))&&this.addResource(e,n,a,i[a],{silent:!0});r.silent||this.emit("added",e,n,i)}addResourceBundle(e,n,i,r,a,s={silent:!1,skipCopy:!1}){let o=[e,n];e.indexOf(".")>-1&&(o=e.split("."),r=i,i=n,n=o[1]),this.addNamespaces(n);let l=R_(this.data,o)||{};s.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?iG(l,i,a):l={...l,...i},Zj(this.data,o,l),s.silent||this.emit("added",e,n,i)}removeResourceBundle(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}hasResourceBundle(e,n){return this.getResource(e,n)!==void 0}getResourceBundle(e,n){return n||(n=this.options.defaultNS),this.getResource(e,n)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var rG={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,n,i,r){return t.forEach(a=>{e=this.processors[a]?.process(e,n,i,r)??e}),e}};const aG=Symbol("i18next/PATH_KEY");function cne(){const t=[],e=Object.create(null);let n;return e.get=(i,r)=>(n?.revoke?.(),r===aG?t:(t.push(r),n=Proxy.revocable(i,e),n.proxy)),Proxy.revocable(Object.create(null),e).proxy}function uN(t,e){const{[aG]:n}=t(cne());return n.join(e?.keySeparator??".")}const Jj={},wA=t=>!Vt(t)&&typeof t!="boolean"&&typeof t!="number";class k_ extends zS{constructor(e,n={}){super(),Qte(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Ho.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,n={interpolation:{}}){const i={...n};if(e==null)return!1;const r=this.resolve(e,i);if(r?.res===void 0)return!1;const a=wA(r.res);return!(i.returnObjects===!1&&a)}extractFromKey(e,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const s=i&&e.indexOf(i)>-1,o=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!one(e,i,r);if(s&&!o){const l=e.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:e,namespaces:Vt(a)?[a]:a};const c=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),e=c.join(r)}return{key:e,namespaces:Vt(a)?[a]:a}}translate(e,n,i){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),e==null)return"";typeof e=="function"&&(e=uN(e,{...this.options,...r})),Array.isArray(e)||(e=[String(e)]);const a=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:o,namespaces:l}=this.extractFromKey(e[e.length-1],r),c=l[l.length-1];let u=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;u===void 0&&(u=":");const f=r.lng||this.language,p=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()==="cimode")return p?a?{res:`${c}${u}${o}`,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:`${c}${u}${o}`:a?{res:o,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:o;const g=this.resolve(e,r);let y=g?.res;const _=g?.usedKey||o,v=g?.exactUsedKey||o,x=["[object Number]","[object Function]","[object RegExp]"],M=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,w=!this.i18nFormat||this.i18nFormat.handleAsObject,E=r.count!==void 0&&!Vt(r.count),T=k_.hasDefaultValue(r),P=E?this.pluralResolver.getSuffix(f,r.count,r):"",N=r.ordinal&&E?this.pluralResolver.getSuffix(f,r.count,{ordinal:!1}):"",U=E&&!r.ordinal&&r.count===0,C=U&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${P}`]||r[`defaultValue${N}`]||r.defaultValue;let k=y;w&&!y&&T&&(k=C);const F=wA(k),I=Object.prototype.toString.apply(k);if(w&&k&&F&&x.indexOf(I)<0&&!(Vt(M)&&Array.isArray(k))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const q=this.options.returnedObjectHandler?this.options.returnedObjectHandler(_,k,{...r,ns:l}):`key '${o} (${this.language})' returned an object instead of string.`;return a?(g.res=q,g.usedParams=this.getUsedParamsDetails(r),g):q}if(s){const q=Array.isArray(k),L=q?[]:{},H=q?v:_;for(const V in k)if(Object.prototype.hasOwnProperty.call(k,V)){const G=`${H}${s}${V}`;T&&!y?L[V]=this.translate(G,{...r,defaultValue:wA(C)?C[V]:void 0,joinArrays:!1,ns:l}):L[V]=this.translate(G,{...r,joinArrays:!1,ns:l}),L[V]===G&&(L[V]=k[V])}y=L}}else if(w&&Vt(M)&&Array.isArray(y))y=y.join(M),y&&(y=this.extendTranslation(y,e,r,i));else{let q=!1,L=!1;!this.isValidLookup(y)&&T&&(q=!0,y=C),this.isValidLookup(y)||(L=!0,y=o);const V=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&L?void 0:y,G=T&&C!==y&&this.options.updateMissing;if(L||q||G){if(this.logger.log(G?"updateKey":"missingKey",f,c,o,G?C:y),s){const B=this.resolve(o,{...r,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let K=[];const Z=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Z&&Z[0])for(let B=0;B{const ce=T&&ae!==y?ae:V;this.options.missingKeyHandler?this.options.missingKeyHandler(B,c,X,ce,G,r):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(B,c,X,ce,G,r),this.emit("missingKey",B,c,X,y)};this.options.saveMissing&&(this.options.saveMissingPlurals&&E?K.forEach(B=>{const X=this.pluralResolver.getSuffixes(B,r);U&&r[`defaultValue${this.options.pluralSeparator}zero`]&&X.indexOf(`${this.options.pluralSeparator}zero`)<0&&X.push(`${this.options.pluralSeparator}zero`),X.forEach(ae=>{se([B],o+ae,r[`defaultValue${ae}`]||C)})}):se(K,o,C))}y=this.extendTranslation(y,e,r,g,i),L&&y===o&&this.options.appendNamespaceToMissingKey&&(y=`${c}${u}${o}`),(L||q)&&this.options.parseMissingKeyHandler&&(y=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${u}${o}`:o,q?y:void 0,r))}return a?(g.res=y,g.usedParams=this.getUsedParamsDetails(r),g):y}extendTranslation(e,n,i,r,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const l=Vt(e)&&(i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(l){const f=e.match(this.interpolator.nestingRegexp);c=f&&f.length}let u=i.replace&&!Vt(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(u={...this.options.interpolation.defaultVariables,...u}),e=this.interpolator.interpolate(e,u,i.lng||this.language||r.usedLng,i),l){const f=e.match(this.interpolator.nestingRegexp),p=f&&f.length;ca?.[0]===f[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${f[0]} in key: ${n[0]}`),null):this.translate(...f,n),i)),i.interpolation&&this.interpolator.reset()}const s=i.postProcess||this.options.postProcess,o=Vt(s)?[s]:s;return e!=null&&o?.length&&i.applyPostProcessor!==!1&&(e=rG.handle(o,e,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),e}resolve(e,n={}){let i,r,a,s,o;return Vt(e)&&(e=[e]),e.forEach(l=>{if(this.isValidLookup(i))return;const c=this.extractFromKey(l,n),u=c.key;r=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const p=n.count!==void 0&&!Vt(n.count),g=p&&!n.ordinal&&n.count===0,y=n.context!==void 0&&(Vt(n.context)||typeof n.context=="number")&&n.context!=="",_=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(v=>{this.isValidLookup(i)||(o=v,!Jj[`${_[0]}-${v}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(Jj[`${_[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${_.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),_.forEach(x=>{if(this.isValidLookup(i))return;s=x;const M=[u];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(M,u,x,v,n);else{let E;p&&(E=this.pluralResolver.getSuffix(x,n.count,n));const T=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(n.ordinal&&E.indexOf(P)===0&&M.push(u+E.replace(P,this.options.pluralSeparator)),M.push(u+E),g&&M.push(u+T)),y){const N=`${u}${this.options.contextSeparator||"_"}${n.context}`;M.push(N),p&&(n.ordinal&&E.indexOf(P)===0&&M.push(N+E.replace(P,this.options.pluralSeparator)),M.push(N+E),g&&M.push(N+T))}}let w;for(;w=M.pop();)this.isValidLookup(i)||(a=w,i=this.getResource(x,v,w,n))}))})}),{res:i,usedKey:r,exactUsedKey:a,usedLng:s,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,n,i,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,n,i,r):this.resourceStore.getResource(e,n,i,r)}getUsedParamsDetails(e={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=e.replace&&!Vt(e.replace);let r=i?e.replace:e;if(i&&typeof e.count<"u"&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const a of n)delete r[a]}return r}static hasDefaultValue(e){const n="defaultValue";for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&n===i.substring(0,n.length)&&e[i]!==void 0)return!0;return!1}}class e4{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ho.create("languageUtils")}getScriptPartFromCode(e){if(e=O0(e),!e||e.indexOf("-")<0)return null;const n=e.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(e){if(e=O0(e),!e||e.indexOf("-")<0)return e;const n=e.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(e){if(Vt(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let n;return e.forEach(i=>{if(n)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&e.forEach(i=>{if(n)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return n=r;const a=this.getLanguagePartFromCode(i);if(this.isSupportedCode(a))return n=a;n=this.options.supportedLngs.find(s=>{if(s===a)return s;if(!(s.indexOf("-")<0&&a.indexOf("-")<0)&&(s.indexOf("-")>0&&a.indexOf("-")<0&&s.substring(0,s.indexOf("-"))===a||s.indexOf(a)===0&&a.length>1))return s})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(e,n){if(!e)return[];if(typeof e=="function"&&(e=e(n)),Vt(e)&&(e=[e]),Array.isArray(e))return e;if(!n)return e.default||[];let i=e[n];return i||(i=e[this.getScriptPartFromCode(n)]),i||(i=e[this.formatLanguageCode(n)]),i||(i=e[this.getLanguagePartFromCode(n)]),i||(i=e.default),i||[]}toResolveHierarchy(e,n){const i=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],e),r=[],a=s=>{s&&(this.isSupportedCode(s)?r.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return Vt(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(e))):Vt(e)&&a(this.formatLanguageCode(e)),i.forEach(s=>{r.indexOf(s)<0&&a(this.formatLanguageCode(s))}),r}}const t4={zero:0,one:1,two:2,few:3,many:4,other:5},n4={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class une{constructor(e,n={}){this.languageUtils=e,this.options=n,this.logger=Ho.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,n){this.rules[e]=n}clearCache(){this.pluralRulesCache={}}getRule(e,n={}){const i=O0(e==="dev"?"en":e),r=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:i,type:r});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let s;try{s=new Intl.PluralRules(i,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),n4;if(!e.match(/-|_/))return n4;const l=this.languageUtils.getLanguagePartFromCode(e);s=this.getRule(l,n)}return this.pluralRulesCache[a]=s,s}needsPlural(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,n,i={}){return this.getSuffixes(e,i).map(r=>`${n}${r}`)}getSuffixes(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((r,a)=>t4[r]-t4[a]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(e,n,i={}){const r=this.getRule(e,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",n,i))}}const i4=(t,e,n,i=".",r=!0)=>{let a=tne(t,e,n);return!a&&r&&Vt(n)&&(a=cN(t,n,i),a===void 0&&(a=cN(e,n,i))),a},MA=t=>t.replace(/\$/g,"$$$$");class dne{constructor(e={}){this.logger=Ho.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(n=>n),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:r,prefix:a,prefixEscaped:s,suffix:o,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:g,nestingSuffix:y,nestingSuffixEscaped:_,nestingOptionsSeparator:v,maxReplaces:x,alwaysFormat:M}=e.interpolation;this.escape=n!==void 0?n:ine,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=a?Mh(a):s||"{{",this.suffix=o?Mh(o):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=p?Mh(p):g||Mh("$t("),this.nestingSuffix=y?Mh(y):_||Mh(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=x||1e3,this.alwaysFormat=M!==void 0?M:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(n,i)=>n?.source===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,n,i,r){let a,s,o;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=g=>{if(g.indexOf(this.formatSeparator)<0){const x=i4(n,l,g,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,i,{...r,...n,interpolationkey:g}):x}const y=g.split(this.formatSeparator),_=y.shift().trim(),v=y.join(this.formatSeparator).trim();return this.format(i4(n,l,_,this.options.keySeparator,this.options.ignoreJSONStructure),v,i,{...r,...n,interpolationkey:_})};this.resetRegExp();const u=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=r?.interpolation?.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:g=>MA(g)},{regex:this.regexp,safeValue:g=>this.escapeValue?MA(this.escape(g)):MA(g)}].forEach(g=>{for(o=0;a=g.regex.exec(e);){const y=a[1].trim();if(s=c(y),s===void 0)if(typeof u=="function"){const v=u(e,a,r);s=Vt(v)?v:""}else if(r&&Object.prototype.hasOwnProperty.call(r,y))s="";else if(f){s=a[0];continue}else this.logger.warn(`missed to pass in variable ${y} for interpolating ${e}`),s="";else!Vt(s)&&!this.useRawValueToEscape&&(s=Xj(s));const _=g.safeValue(s);if(e=e.replace(a[0],_),f?(g.regex.lastIndex+=s.length,g.regex.lastIndex-=a[0].length):g.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,n,i={}){let r,a,s;const o=(l,c)=>{const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let p=`{${f[1]}`;l=f[0],p=this.interpolate(p,s);const g=p.match(/'/g),y=p.match(/"/g);((g?.length??0)%2===0&&!y||y.length%2!==0)&&(p=p.replace(/'/g,'"'));try{s=JSON.parse(p),c&&(s={...c,...s})}catch(_){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,_),`${l}${u}${p}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,l};for(;r=this.nestingRegexp.exec(e);){let l=[];s={...i},s=s.replace&&!Vt(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;const c=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(l=r[1].slice(c).split(this.formatSeparator).map(u=>u.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),a=n(o.call(this,r[1].trim(),s),s),a&&r[0]===e&&!Vt(a))return a;Vt(a)||(a=Xj(a)),a||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),a=""),l.length&&(a=l.reduce((u,f)=>this.format(u,f,i.lng,{...i,interpolationkey:r[1].trim()}),a.trim())),e=e.replace(r[0],a),this.regexp.lastIndex=0}return e}}const fne=t=>{let e=t.toLowerCase().trim();const n={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);e==="currency"&&r.indexOf(":")<0?n.currency||(n.currency=r.trim()):e==="relativetime"&&r.indexOf(":")<0?n.range||(n.range=r.trim()):r.split(";").forEach(s=>{if(s){const[o,...l]=s.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=o.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:e,formatOptions:n}},r4=t=>{const e={};return(n,i,r)=>{let a=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(a={...a,[r.interpolationkey]:void 0});const s=i+JSON.stringify(a);let o=e[s];return o||(o=t(O0(i),r),e[s]=o),o(n)}},hne=t=>(e,n,i)=>t(O0(n),i)(e);class pne{constructor(e={}){this.logger=Ho.create("formatter"),this.options=e,this.init(e)}init(e,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?r4:hne;this.formats={number:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a});return o=>s.format(o)}),currency:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a,style:"currency"});return o=>s.format(o)}),datetime:i((r,a)=>{const s=new Intl.DateTimeFormat(r,{...a});return o=>s.format(o)}),relativetime:i((r,a)=>{const s=new Intl.RelativeTimeFormat(r,{...a});return o=>s.format(o,a.range||"day")}),list:i((r,a)=>{const s=new Intl.ListFormat(r,{...a});return o=>s.format(o)})}}add(e,n){this.formats[e.toLowerCase().trim()]=n}addCached(e,n){this.formats[e.toLowerCase().trim()]=r4(n)}format(e,n,i,r={}){const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(o=>o.indexOf(")")>-1)){const o=a.findIndex(l=>l.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,o)].join(this.formatSeparator)}return a.reduce((o,l)=>{const{formatName:c,formatOptions:u}=fne(l);if(this.formats[c]){let f=o;try{const p=r?.formatParams?.[r.interpolationkey]||{},g=p.locale||p.lng||r.locale||r.lng||i;f=this.formats[c](o,g,{...u,...r,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return o},e)}}const mne=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class gne extends zS{constructor(e,n,i,r={}){super(),this.backend=e,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=Ho.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(i,r.backend,r)}queueLoad(e,n,i,r){const a={},s={},o={},l={};return e.forEach(c=>{let u=!0;n.forEach(f=>{const p=`${c}|${f}`;!i.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?s[p]===void 0&&(s[p]=!0):(this.state[p]=1,u=!1,s[p]===void 0&&(s[p]=!0),a[p]===void 0&&(a[p]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(o[c]=!0)}),(Object.keys(a).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(a),pending:Object.keys(s),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(l)}}loaded(e,n,i){const r=e.split("|"),a=r[0],s=r[1];n&&this.emit("failedLoading",a,s,n),!n&&i&&this.store.addResourceBundle(a,s,i,void 0,void 0,{skipCopy:!0}),this.state[e]=n?-1:2,n&&i&&(this.state[e]=0);const o={};this.queue.forEach(l=>{ene(l.loaded,[a],s),mne(l,e),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{o[c]||(o[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{o[c][f]===void 0&&(o[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",o),this.queue=this.queue.filter(l=>!l.done)}read(e,n,i,r=0,a=this.retryTimeout,s){if(!e.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:n,fcName:i,tried:r,wait:a,callback:s});return}this.readingCalls++;const o=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&r{this.read.call(this,e,n,i,r+1,a*2,s)},a);return}s(c,u)},l=this.backend[i].bind(this.backend);if(l.length===2){try{const c=l(e,n);c&&typeof c.then=="function"?c.then(u=>o(null,u)).catch(o):o(null,c)}catch(c){o(c)}return}return l(e,n,o)}prepareLoading(e,n,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();Vt(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Vt(n)&&(n=[n]);const a=this.queueLoad(e,n,i,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(s=>{this.loadOne(s)})}load(e,n,i){this.prepareLoading(e,n,{},i)}reload(e,n,i){this.prepareLoading(e,n,{reload:!0},i)}loadOne(e,n=""){const i=e.split("|"),r=i[0],a=i[1];this.read(r,a,"read",void 0,void 0,(s,o)=>{s&&this.logger.warn(`${n}loading namespace ${a} for language ${r} failed`,s),!s&&o&&this.logger.log(`${n}loaded namespace ${a} for language ${r}`,o),this.loaded(e,s,o)})}saveMissing(e,n,i,r,a,s={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend?.create){const l={...s,isUpdate:a},c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(e,n,i,r,l):u=c(e,n,i,r),u&&typeof u.then=="function"?u.then(f=>o(null,f)).catch(o):o(null,u)}catch(u){o(u)}else c(e,n,i,r,o,l)}!e||!e[0]||this.store.addResource(e[0],n,i,r)}}}const a4=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),Vt(t[1])&&(e.defaultValue=t[1]),Vt(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const n=t[3]||t[2];Object.keys(n).forEach(i=>{e[i]=n[i]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),s4=t=>(Vt(t.ns)&&(t.ns=[t.ns]),Vt(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Vt(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),Ty=()=>{},xne=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(n=>{typeof t[n]=="function"&&(t[n]=t[n].bind(t))})};class f0 extends zS{constructor(e={},n){if(super(),this.options=s4(e),this.services={},this.logger=Ho,this.modules={external:[]},xne(this),n&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,n),this;setTimeout(()=>{this.init(e,n)},0)}}init(e={},n){this.isInitializing=!0,typeof e=="function"&&(n=e,e={}),e.defaultNS==null&&e.ns&&(Vt(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=a4();this.options={...i,...this.options,...s4(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);const r=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?Ho.init(r(this.modules.logger),this.options):Ho.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=pne;const u=new e4(this.options);this.store=new Qj(this.options.resources,this.options);const f=this.services;f.logger=Ho,f.resourceStore=this.store,f.languageUtils=u,f.pluralResolver=new une(u,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=r(c),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new dne(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new gne(r(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(g,...y)=>{this.emit(g,...y)}),this.modules.languageDetector&&(f.languageDetector=r(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=r(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new k_(this.services,this.options),this.translator.on("*",(g,...y)=>{this.emit(g,...y)}),this.modules.external.forEach(g=>{g.init&&g.init(this)})}if(this.format=this.options.interpolation.format,n||(n=Ty),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...u)=>this.store[c](...u)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...u)=>(this.store[c](...u),this)});const o=Cg(),l=()=>{const c=(u,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),o.resolve(f),n(u,f)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?l():setTimeout(l,0),o}loadResources(e,n=Ty){let i=n;const r=Vt(e)?e:this.language;if(typeof e=="function"&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],s=o=>{if(!o||o==="cimode")return;this.services.languageUtils.toResolveHierarchy(o).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};r?s(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload?.forEach?.(o=>s(o)),this.services.backendConnector.load(a,this.options.ns,o=>{!o&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(o)})}else i(null)}reloadResources(e,n,i){const r=Cg();return typeof e=="function"&&(i=e,e=void 0),typeof n=="function"&&(i=n,n=void 0),e||(e=this.languages),n||(n=this.options.ns),i||(i=Ty),this.services.backendConnector.reload(e,n,a=>{r.resolve(),i(a)}),r}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&rG.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,n){this.isLanguageChangingTo=e;const i=Cg();this.emit("languageChanging",e);const r=o=>{this.language=o,this.languages=this.services.languageUtils.toResolveHierarchy(o),this.resolvedLanguage=void 0,this.setResolvedLanguage(o)},a=(o,l)=>{l?this.isLanguageChangingTo===e&&(r(l),this.translator.changeLanguage(l),this.isLanguageChangingTo=void 0,this.emit("languageChanged",l),this.logger.log("languageChanged",l)):this.isLanguageChangingTo=void 0,i.resolve((...c)=>this.t(...c)),n&&n(o,(...c)=>this.t(...c))},s=o=>{!e&&!o&&this.services.languageDetector&&(o=[]);const l=Vt(o)?o:o&&o[0],c=this.store.hasLanguageSomeTranslations(l)?l:this.services.languageUtils.getBestMatchFromCodes(Vt(o)?[o]:o);c&&(this.language||r(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector?.cacheUserLanguage?.(c)),this.loadResources(c,u=>{a(u,c)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),i}getFixedT(e,n,i){const r=(a,s,...o)=>{let l;typeof s!="object"?l=this.options.overloadTranslationOptionHandler([a,s].concat(o)):l={...s},l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||i||r.keyPrefix);const c=this.options.keySeparator||".";let u;return l.keyPrefix&&Array.isArray(a)?u=a.map(f=>(typeof f=="function"&&(f=uN(f,{...this.options,...s})),`${l.keyPrefix}${c}${f}`)):(typeof a=="function"&&(a=uN(a,{...this.options,...s})),u=l.keyPrefix?`${l.keyPrefix}${c}${a}`:a),this.t(u,l)};return Vt(e)?r.lng=e:r.lngs=e,r.ns=n,r.keyPrefix=i,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const s=(o,l)=>{const c=this.services.backendConnector.state[`${o}|${l}`];return c===-1||c===0||c===2};if(n.precheck){const o=n.precheck(this,s);if(o!==void 0)return o}return!!(this.hasResourceBundle(i,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(i,e)&&(!r||s(a,e)))}loadNamespaces(e,n){const i=Cg();return this.options.ns?(Vt(e)&&(e=[e]),e.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),n&&n(r)}),i):(n&&n(),Promise.resolve())}loadLanguages(e,n){const i=Cg();Vt(e)&&(e=[e]);const r=this.options.preload||[],a=e.filter(s=>r.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return a.length?(this.options.preload=r.concat(a),this.loadResources(s=>{i.resolve(),n&&n(s)}),i):(n&&n(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const r=new Intl.Locale(e);if(r&&r.getTextInfo){const a=r.getTextInfo();if(a&&a.direction)return a.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services?.languageUtils||new e4(a4());return e.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(i.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},n){const i=new f0(e,n);return i.createInstance=f0.createInstance,i}cloneInstance(e={},n=Ty){const i=e.forkResourceStore;i&&delete e.forkResourceStore;const r={...this.options,...e,isClone:!0},a=new f0(r);if((e.debug!==void 0||e.prefix!==void 0)&&(a.logger=a.logger.clone(e)),["store","services","language"].forEach(o=>{a[o]=this[o]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i){const o=Object.keys(this.store.data).reduce((l,c)=>(l[c]={...this.store.data[c]},l[c]=Object.keys(l[c]).reduce((u,f)=>(u[f]={...l[c][f]},u),l[c]),l),{});a.store=new Qj(o,r),a.services.resourceStore=a.store}return a.translator=new k_(a.services,r),a.translator.on("*",(o,...l)=>{a.emit(o,...l)}),a.init(r,n),a.translator.options=r,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const wa=f0.createInstance();wa.createInstance;wa.dir;wa.init;wa.loadResources;wa.reloadResources;wa.use;wa.changeLanguage;wa.getFixedT;wa.t;wa.exists;wa.setDefaultNamespace;wa.hasLoadedNamespace;wa.loadNamespaces;wa.loadLanguages;const vne=(t,e,n,i)=>{const r=[n,{code:e,...i||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(r,"warn","react-i18next::",!0);_f(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...r):console?.warn&&console.warn(...r)},o4={},sG=(t,e,n,i)=>{_f(n)&&o4[n]||(_f(n)&&(o4[n]=new Date),vne(t,e,n,i))},oG=(t,e)=>()=>{if(t.isInitialized)e();else{const n=()=>{setTimeout(()=>{t.off("initialized",n)},0),e()};t.on("initialized",n)}},dN=(t,e,n)=>{t.loadNamespaces(e,oG(t,n))},l4=(t,e,n,i)=>{if(_f(n)&&(n=[n]),t.options.preload&&t.options.preload.indexOf(e)>-1)return dN(t,n,i);n.forEach(r=>{t.options.ns.indexOf(r)<0&&t.options.ns.push(r)}),t.loadLanguages(e,oG(t,i))},yne=(t,e,n={})=>!e.languages||!e.languages.length?(sG(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:n.lng,precheck:(i,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,t))return!1}}),_f=t=>typeof t=="string",bne=t=>typeof t=="object"&&t!==null,_ne=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Sne={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},wne=t=>Sne[t],Mne=t=>t.replace(_ne,wne);let fN={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Mne};const Ene=(t={})=>{fN={...fN,...t}},Ane=()=>fN;let lG;const Tne=t=>{lG=t},Cne=()=>lG,Nne={type:"3rdParty",init(t){Ene(t.options.react),Tne(t)}},Rne=A.createContext();class Pne{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var EA={exports:{}},AA={};var c4;function kne(){if(c4)return AA;c4=1;var t=pm();function e(f,p){return f===p&&(f!==0||1/f===1/p)||f!==f&&p!==p}var n=typeof Object.is=="function"?Object.is:e,i=t.useState,r=t.useEffect,a=t.useLayoutEffect,s=t.useDebugValue;function o(f,p){var g=p(),y=i({inst:{value:g,getSnapshot:p}}),_=y[0].inst,v=y[1];return a(function(){_.value=g,_.getSnapshot=p,l(_)&&v({inst:_})},[f,g,p]),r(function(){return l(_)&&v({inst:_}),f(function(){l(_)&&v({inst:_})})},[f]),s(g),g}function l(f){var p=f.getSnapshot;f=f.value;try{var g=p();return!n(f,g)}catch{return!0}}function c(f,p){return p()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?c:o;return AA.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:u,AA}var u4;function cG(){return u4||(u4=1,EA.exports=kne()),EA.exports}var xP=cG();const Dne=(t,e)=>_f(e)?e:bne(e)&&_f(e.defaultValue)?e.defaultValue:Array.isArray(t)?t[t.length-1]:t,One={t:Dne,ready:!1},Lne=()=>()=>{},vP=(t,e={})=>{const{i18n:n}=e,{i18n:i,defaultNS:r}=A.useContext(Rne)||{},a=n||i||Cne();a&&!a.reportNamespaces&&(a.reportNamespaces=new Pne),a||sG(a,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const s=A.useMemo(()=>({...Ane(),...a?.options?.react,...e}),[a,e]),{useSuspense:o,keyPrefix:l}=s,c=r||a?.options?.defaultNS,u=_f(c)?[c]:c||["translation"],f=A.useMemo(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(f);const p=A.useRef(0),g=A.useCallback(C=>{if(!a)return Lne;const{bindI18n:k,bindI18nStore:F}=s,I=()=>{p.current+=1,C()};return k&&a.on(k,I),F&&a.store.on(F,I),()=>{k&&k.split(" ").forEach(q=>a.off(q,I)),F&&F.split(" ").forEach(q=>a.store.off(q,I))}},[a,s]),y=A.useRef(),_=A.useCallback(()=>{if(!a)return One;const C=!!(a.isInitialized||a.initializedStoreOnce)&&f.every(H=>yne(H,a,s)),k=e.lng||a.language,F=p.current,I=y.current;if(I&&I.ready===C&&I.lng===k&&I.keyPrefix===l&&I.revision===F)return I;const L={t:a.getFixedT(k,s.nsMode==="fallback"?f:f[0],l),ready:C,lng:k,keyPrefix:l,revision:F};return y.current=L,L},[a,f,l,s,e.lng]),[v,x]=A.useState(0),{t:M,ready:w}=xP.useSyncExternalStore(g,_,_);A.useEffect(()=>{if(a&&!w&&!o){const C=()=>x(k=>k+1);e.lng?l4(a,e.lng,f,C):dN(a,f,C)}},[a,e.lng,f,w,o,v]);const E=a||{},T=A.useRef(null),P=A.useRef(),N=C=>{const k=Object.getOwnPropertyDescriptors(C);k.__original&&delete k.__original;const F=Object.create(Object.getPrototypeOf(C),k);if(!Object.prototype.hasOwnProperty.call(F,"__original"))try{Object.defineProperty(F,"__original",{value:C,writable:!1,enumerable:!1,configurable:!1})}catch{}return F},U=A.useMemo(()=>{const C=E,k=C?.language;let F=C;C&&(T.current&&T.current.__original===C?P.current!==k?(F=N(C),T.current=F,P.current=k):F=T.current:(F=N(C),T.current=F,P.current=k));const I=[M,F,w];return I.t=M,I.i18n=F,I.ready=w,I},[M,E,w,E.resolvedLanguage,E.language,E.languages]);if(a&&o&&!w)throw new Promise(C=>{const k=()=>C();e.lng?l4(a,e.lng,f,k):dN(a,f,k)});return U},{slice:Ine,forEach:Une}=[];function jne(t){return Une.call(Ine.call(arguments,1),e=>{if(e)for(const n in e)t[n]===void 0&&(t[n]=e[n])}),t}function Fne(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(t))}const d4=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,zne=function(t,e){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(e);let a=`${t}=${r}`;if(i.maxAge>0){const s=i.maxAge-0;if(Number.isNaN(s))throw new Error("maxAge should be a Number");a+=`; Max-Age=${Math.floor(s)}`}if(i.domain){if(!d4.test(i.domain))throw new TypeError("option domain is invalid");a+=`; Domain=${i.domain}`}if(i.path){if(!d4.test(i.path))throw new TypeError("option path is invalid");a+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(a+="; HttpOnly"),i.secure&&(a+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(a+="; Partitioned"),a},f4={create(t,e,n,i){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+n*60*1e3)),i&&(r.domain=i),document.cookie=zne(t,e,r)},read(t){const e=`${t}=`,n=document.cookie.split(";");for(let i=0;i-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const a=i.substring(1).split("&");for(let s=0;s0&&a[s].substring(0,o)===e&&(n=a[s].substring(o+1))}}return n}},Vne={name:"hash",lookup(t){let{lookupHash:e,lookupFromHashIndex:n}=t,i;if(typeof window<"u"){const{hash:r}=window.location;if(r&&r.length>2){const a=r.substring(1);if(e){const s=a.split("&");for(let o=0;o0&&s[o].substring(0,l)===e&&(i=s[o].substring(l+1))}}if(i)return i;if(!i&&n>-1){const s=r.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?s[typeof n=="number"?n:0]?.replace("/",""):void 0}}}return i}};let Eh=null;const h4=()=>{if(Eh!==null)return Eh;try{if(Eh=typeof window<"u"&&window.localStorage!==null,!Eh)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{Eh=!1}return Eh};var $ne={name:"localStorage",lookup(t){let{lookupLocalStorage:e}=t;if(e&&h4())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupLocalStorage:n}=e;n&&h4()&&window.localStorage.setItem(n,t)}};let Ah=null;const p4=()=>{if(Ah!==null)return Ah;try{if(Ah=typeof window<"u"&&window.sessionStorage!==null,!Ah)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{Ah=!1}return Ah};var Gne={name:"sessionStorage",lookup(t){let{lookupSessionStorage:e}=t;if(e&&p4())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupSessionStorage:n}=e;n&&p4()&&window.sessionStorage.setItem(n,t)}},Wne={name:"navigator",lookup(t){const e=[];if(typeof navigator<"u"){const{languages:n,userLanguage:i,language:r}=navigator;if(n)for(let a=0;a0?e:void 0}},qne={name:"htmlTag",lookup(t){let{htmlTag:e}=t,n;const i=e||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(n=i.getAttribute("lang")),n}},Xne={name:"path",lookup(t){let{lookupFromPathIndex:e}=t;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?n[typeof e=="number"?e:0]?.replace("/",""):void 0}},Kne={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:e}=t;const n=typeof e=="number"?e+1:1,i=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(i)return i[n]}};let uG=!1;try{document.cookie,uG=!0}catch{}const dG=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];uG||dG.splice(1,1);const Yne=()=>({order:dG,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class fG{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,n)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=jne(n,this.options||{},Yne()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(Bne),this.addDetector(Hne),this.addDetector($ne),this.addDetector(Gne),this.addDetector(Wne),this.addDetector(qne),this.addDetector(Xne),this.addDetector(Kne),this.addDetector(Vne)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return e.forEach(i=>{if(this.detectors[i]){let r=this.detectors[i].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(n=n.concat(r))}}),n=n.filter(i=>i!=null&&!Fne(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||n.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(e,this.options)}))}}fG.type="languageDetector";const Zne={nav:{printers:"Printers",control:"Control",archives:"Archives",queue:"Queue",stats:"Statistics",profiles:"Profiles",maintenance:"Maintenance",settings:"Settings",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",update:"Update",updateAvailable:"Update available: v{{version}}",viewOnGithub:"View on GitHub",keyboardShortcuts:"Keyboard shortcuts (?)",switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode"},common:{save:"Save",cancel:"Cancel",delete:"Delete",edit:"Edit",add:"Add",close:"Close",confirm:"Confirm",loading:"Loading...",error:"Error",success:"Success",warning:"Warning",enabled:"Enabled",disabled:"Disabled",yes:"Yes",no:"No",on:"On",off:"Off",all:"All",none:"None",search:"Search",filter:"Filter",sort:"Sort",refresh:"Refresh",download:"Download",upload:"Upload",actions:"Actions",status:"Status",name:"Name",description:"Description",date:"Date",time:"Time",hours:"hours",minutes:"minutes",seconds:"seconds",noPrinters:"No printers configured",noData:"No data available",required:"Required",optional:"Optional"},printers:{title:"Printers",addPrinter:"Add Printer",editPrinter:"Edit Printer",deletePrinter:"Delete Printer",printerName:"Printer Name",serialNumber:"Serial Number",ipAddress:"IP Address",accessCode:"Access Code",model:"Model",nozzleCount:"Nozzle Count",autoArchive:"Auto Archive",status:{idle:"Idle",printing:"Printing",paused:"Paused",offline:"Offline",error:"Error",finished:"Finished",unknown:"Unknown"},temperatures:{nozzle:"Nozzle",bed:"Bed",chamber:"Chamber"},progress:"{{percent}}% complete",timeRemaining:"{{time}} remaining",deleteConfirm:'Are you sure you want to delete "{{name}}"?',maintenanceOk:"Maintenance OK",maintenanceWarning:"{{count}} warning",maintenanceWarning_plural:"{{count}} warnings",maintenanceDue:"{{count}} due",maintenanceDue_plural:"{{count}} due"},archives:{title:"Print Archives",searchPlaceholder:"Search archives...",filterByPrinter:"Filter by printer",filterByStatus:"Filter by status",sortBy:"Sort by",sortNewest:"Newest first",sortOldest:"Oldest first",sortName:"Name",sortDuration:"Duration",noArchives:"No archives found",printTime:"Print Time",filamentUsed:"Filament Used",cost:"Cost",reprint:"Reprint",preview:"Preview",deleteArchive:"Delete Archive",deleteConfirm:"Are you sure you want to delete this archive?",favorite:"Favorite",unfavorite:"Remove from favorites",viewDetails:"View Details",status:{completed:"Completed",failed:"Failed",stopped:"Stopped"}},queue:{title:"Print Queue",addToQueue:"Add to Queue",clearQueue:"Clear Queue",emptyQueue:"Queue is empty",position:"Position",scheduledTime:"Scheduled Time",moveUp:"Move Up",moveDown:"Move Down",remove:"Remove",startNow:"Start Now",status:{pending:"Pending",printing:"Printing",completed:"Completed",failed:"Failed",cancelled:"Cancelled"}},stats:{title:"Statistics",overview:"Overview",totalPrints:"Total Prints",successRate:"Success Rate",totalPrintTime:"Total Print Time",totalFilament:"Total Filament Used",totalCost:"Total Cost",averagePrintTime:"Average Print Time",printsPerDay:"Prints per Day",byPrinter:"By Printer",byMaterial:"By Material",byMonth:"By Month",last7Days:"Last 7 Days",last30Days:"Last 30 Days",last90Days:"Last 90 Days",allTime:"All Time"},profiles:{title:"Filament Profiles",addProfile:"Add Profile",editProfile:"Edit Profile",deleteProfile:"Delete Profile",material:"Material",brand:"Brand",color:"Color",diameter:"Diameter",density:"Density",costPerKg:"Cost per kg",spoolWeight:"Spool Weight",noProfiles:"No profiles configured",deleteConfirm:"Are you sure you want to delete this profile?"},maintenance:{title:"Maintenance",overview:"Overview",allOk:"All maintenance up to date",dueCount:"{{count}} item due",dueCount_plural:"{{count}} items due",warningCount:"{{count}} warning",warningCount_plural:"{{count}} warnings",totalPrintTime:"Total Print Time",nextMaintenance:"Next Maintenance",nothingDue:"Nothing due",tasks:"Tasks",lastPerformed:"Last performed",interval:"Interval",hoursRemaining:"{{hours}}h remaining",hoursOverdue:"{{hours}}h overdue",markDone:"Mark as Done",performMaintenance:"Perform Maintenance",history:"History",noHistory:"No maintenance history",editPrintHours:"Edit Print Hours",currentHours:"Current Hours",types:{lubricateRails:"Lubricate Linear Rails",cleanNozzle:"Clean Nozzle/Hotend",checkBelts:"Check Belt Tension",cleanBuildPlate:"Clean Build Plate",checkExtruder:"Check Extruder Gears",checkCooling:"Check Cooling Fans",generalInspection:"General Inspection"}},settings:{title:"Settings",general:"General",appearance:"Appearance",notifications:"Notifications",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Language",languageDescription:"Select your preferred language",theme:"Theme",themeLight:"Light",themeDark:"Dark",themeSystem:"System",defaultView:"Default View",defaultViewDescription:"Page to show when opening the app",checkForUpdates:"Check for Updates",autoUpdate:"Auto Update",currentVersion:"Current Version",latestVersion:"Latest Version",upToDate:"You are up to date",updateAvailable:"Update available",notificationLanguage:"Notification Language",notificationLanguageDescription:"Language for push notifications",notificationProviders:"Notification Providers",addProvider:"Add Provider",editProvider:"Edit Provider",providerType:"Provider Type",testNotification:"Test Notification",testSuccess:"Test notification sent successfully",testFailed:"Failed to send test notification",quietHours:"Quiet Hours",quietHoursDescription:"Do not disturb during these hours",quietHoursStart:"Start",quietHoursEnd:"End",events:{title:"Notification Events",printStart:"Print Started",printComplete:"Print Completed",printFailed:"Print Failed",printStopped:"Print Stopped",printProgress:"Progress Milestones",printProgressDescription:"Notify at 25%, 50%, 75%",printerOffline:"Printer Offline",printerError:"Printer Error",filamentLow:"Low Filament",maintenanceDue:"Maintenance Due",maintenanceDueDescription:"Notify when maintenance is needed"},smartPlug:{title:"Smart Plugs",add:"Add Smart Plug",edit:"Edit Smart Plug",name:"Name",ipAddress:"IP Address",linkedPrinter:"Linked Printer",autoOn:"Auto Power On",autoOnDescription:"Turn on when print starts",autoOff:"Auto Power Off",autoOffDescription:"Turn off after print completes",offDelay:"Off Delay",offDelayMinutes:"Minutes after print",offDelayTemp:"When nozzle below temperature",currentState:"Current State",turnOn:"Turn On",turnOff:"Turn Off"},spoolmanEnabled:"Enable Spoolman Integration",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Connected",spoolmanDisconnected:"Disconnected"},notification:{printStarted:{title:"Print Started",body:"{{printer}}: {{filename}} has started printing"},printCompleted:{title:"Print Completed",body:"{{printer}}: {{filename}} completed successfully"},printFailed:{title:"Print Failed",body:"{{printer}}: {{filename}} has failed"},printStopped:{title:"Print Stopped",body:"{{printer}}: {{filename}} was stopped"},printProgress:{title:"Print Progress",body:"{{printer}}: {{filename}} is {{percent}}% complete"},printerOffline:{title:"Printer Offline",body:"{{printer}} is offline"},printerError:{title:"Printer Error",body:"{{printer}}: {{error}}"},filamentLow:{title:"Low Filament",body:"{{printer}}: Filament is running low"},maintenanceDue:{title:"Maintenance Due",body:"{{printer}}: {{items}} need attention"}},errors:{generic:"Something went wrong",networkError:"Network error. Please check your connection.",notFound:"Not found",unauthorized:"Unauthorized",serverError:"Server error",validationError:"Please check your input",printerConnectionFailed:"Failed to connect to printer",saveFailed:"Failed to save changes",deleteFailed:"Failed to delete",loadFailed:"Failed to load data"},confirm:{delete:"Are you sure you want to delete this?",unsavedChanges:"You have unsaved changes. Are you sure you want to leave?",clearQueue:"Are you sure you want to clear the queue?"}},Qne={nav:{printers:"Drucker",control:"Steuerung",archives:"Archiv",queue:"Warteschlange",stats:"Statistiken",profiles:"Profile",maintenance:"Wartung",settings:"Einstellungen",collapseSidebar:"Seitenleiste einklappen",expandSidebar:"Seitenleiste ausklappen",update:"Update",updateAvailable:"Update verfügbar: v{{version}}",viewOnGithub:"Auf GitHub ansehen",keyboardShortcuts:"Tastaturkürzel (?)",switchToLight:"Zum hellen Modus wechseln",switchToDark:"Zum dunklen Modus wechseln"},common:{save:"Speichern",cancel:"Abbrechen",delete:"Löschen",edit:"Bearbeiten",add:"Hinzufügen",close:"Schließen",confirm:"Bestätigen",loading:"Lädt...",error:"Fehler",success:"Erfolg",warning:"Warnung",enabled:"Aktiviert",disabled:"Deaktiviert",yes:"Ja",no:"Nein",on:"An",off:"Aus",all:"Alle",none:"Keine",search:"Suchen",filter:"Filtern",sort:"Sortieren",refresh:"Aktualisieren",download:"Herunterladen",upload:"Hochladen",actions:"Aktionen",status:"Status",name:"Name",description:"Beschreibung",date:"Datum",time:"Zeit",hours:"Stunden",minutes:"Minuten",seconds:"Sekunden",noPrinters:"Keine Drucker konfiguriert",noData:"Keine Daten verfügbar",required:"Erforderlich",optional:"Optional"},printers:{title:"Drucker",addPrinter:"Drucker hinzufügen",editPrinter:"Drucker bearbeiten",deletePrinter:"Drucker löschen",printerName:"Druckername",serialNumber:"Seriennummer",ipAddress:"IP-Adresse",accessCode:"Zugangscode",model:"Modell",nozzleCount:"Düsenanzahl",autoArchive:"Automatische Archivierung",status:{idle:"Bereit",printing:"Druckt",paused:"Pausiert",offline:"Offline",error:"Fehler",finished:"Fertig",unknown:"Unbekannt"},temperatures:{nozzle:"Düse",bed:"Druckbett",chamber:"Kammer"},progress:"{{percent}}% abgeschlossen",timeRemaining:"Noch {{time}}",deleteConfirm:'Möchten Sie "{{name}}" wirklich löschen?',maintenanceOk:"Wartung OK",maintenanceWarning:"{{count}} Warnung",maintenanceWarning_plural:"{{count}} Warnungen",maintenanceDue:"{{count}} fällig",maintenanceDue_plural:"{{count}} fällig"},archives:{title:"Druckarchiv",searchPlaceholder:"Archiv durchsuchen...",filterByPrinter:"Nach Drucker filtern",filterByStatus:"Nach Status filtern",sortBy:"Sortieren nach",sortNewest:"Neueste zuerst",sortOldest:"Älteste zuerst",sortName:"Name",sortDuration:"Dauer",noArchives:"Keine Archive gefunden",printTime:"Druckzeit",filamentUsed:"Verbrauchtes Filament",cost:"Kosten",reprint:"Erneut drucken",preview:"Vorschau",deleteArchive:"Archiv löschen",deleteConfirm:"Möchten Sie dieses Archiv wirklich löschen?",favorite:"Favorit",unfavorite:"Aus Favoriten entfernen",viewDetails:"Details anzeigen",status:{completed:"Abgeschlossen",failed:"Fehlgeschlagen",stopped:"Gestoppt"}},queue:{title:"Druckwarteschlange",addToQueue:"Zur Warteschlange hinzufügen",clearQueue:"Warteschlange leeren",emptyQueue:"Warteschlange ist leer",position:"Position",scheduledTime:"Geplante Zeit",moveUp:"Nach oben",moveDown:"Nach unten",remove:"Entfernen",startNow:"Jetzt starten",status:{pending:"Ausstehend",printing:"Druckt",completed:"Abgeschlossen",failed:"Fehlgeschlagen",cancelled:"Abgebrochen"}},stats:{title:"Statistiken",overview:"Übersicht",totalPrints:"Gesamtdrucke",successRate:"Erfolgsrate",totalPrintTime:"Gesamtdruckzeit",totalFilament:"Gesamtverbrauch Filament",totalCost:"Gesamtkosten",averagePrintTime:"Durchschnittliche Druckzeit",printsPerDay:"Drucke pro Tag",byPrinter:"Nach Drucker",byMaterial:"Nach Material",byMonth:"Nach Monat",last7Days:"Letzte 7 Tage",last30Days:"Letzte 30 Tage",last90Days:"Letzte 90 Tage",allTime:"Gesamt"},profiles:{title:"Filament-Profile",addProfile:"Profil hinzufügen",editProfile:"Profil bearbeiten",deleteProfile:"Profil löschen",material:"Material",brand:"Marke",color:"Farbe",diameter:"Durchmesser",density:"Dichte",costPerKg:"Kosten pro kg",spoolWeight:"Spulengewicht",noProfiles:"Keine Profile konfiguriert",deleteConfirm:"Möchten Sie dieses Profil wirklich löschen?"},maintenance:{title:"Wartung",overview:"Übersicht",allOk:"Alle Wartungen aktuell",dueCount:"{{count}} Aufgabe fällig",dueCount_plural:"{{count}} Aufgaben fällig",warningCount:"{{count}} Warnung",warningCount_plural:"{{count}} Warnungen",totalPrintTime:"Gesamtdruckzeit",nextMaintenance:"Nächste Wartung",nothingDue:"Nichts fällig",tasks:"Aufgaben",lastPerformed:"Zuletzt durchgeführt",interval:"Intervall",hoursRemaining:"{{hours}}h verbleibend",hoursOverdue:"{{hours}}h überfällig",markDone:"Als erledigt markieren",performMaintenance:"Wartung durchführen",history:"Verlauf",noHistory:"Kein Wartungsverlauf",editPrintHours:"Druckstunden bearbeiten",currentHours:"Aktuelle Stunden",types:{lubricateRails:"Linearschienen schmieren",cleanNozzle:"Düse/Hotend reinigen",checkBelts:"Riemenspannung prüfen",cleanBuildPlate:"Druckbett reinigen",checkExtruder:"Extruderzahnräder prüfen",checkCooling:"Kühlungslüfter prüfen",generalInspection:"Allgemeine Inspektion"}},settings:{title:"Einstellungen",general:"Allgemein",appearance:"Erscheinungsbild",notifications:"Benachrichtigungen",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Sprache",languageDescription:"Wählen Sie Ihre bevorzugte Sprache",theme:"Design",themeLight:"Hell",themeDark:"Dunkel",themeSystem:"System",defaultView:"Standardansicht",defaultViewDescription:"Seite, die beim Öffnen der App angezeigt wird",checkForUpdates:"Nach Updates suchen",autoUpdate:"Automatische Updates",currentVersion:"Aktuelle Version",latestVersion:"Neueste Version",upToDate:"Sie sind auf dem neuesten Stand",updateAvailable:"Update verfügbar",notificationLanguage:"Benachrichtigungssprache",notificationLanguageDescription:"Sprache für Push-Benachrichtigungen",notificationProviders:"Benachrichtigungsanbieter",addProvider:"Anbieter hinzufügen",editProvider:"Anbieter bearbeiten",providerType:"Anbietertyp",testNotification:"Testbenachrichtigung",testSuccess:"Testbenachrichtigung erfolgreich gesendet",testFailed:"Testbenachrichtigung konnte nicht gesendet werden",quietHours:"Ruhezeiten",quietHoursDescription:"Keine Störungen während dieser Zeiten",quietHoursStart:"Beginn",quietHoursEnd:"Ende",events:{title:"Benachrichtigungsereignisse",printStart:"Druck gestartet",printComplete:"Druck abgeschlossen",printFailed:"Druck fehlgeschlagen",printStopped:"Druck gestoppt",printProgress:"Fortschrittsmeldungen",printProgressDescription:"Bei 25%, 50%, 75% benachrichtigen",printerOffline:"Drucker offline",printerError:"Druckerfehler",filamentLow:"Filament niedrig",maintenanceDue:"Wartung fällig",maintenanceDueDescription:"Benachrichtigen, wenn Wartung erforderlich"},smartPlug:{title:"Smart Plugs",add:"Smart Plug hinzufügen",edit:"Smart Plug bearbeiten",name:"Name",ipAddress:"IP-Adresse",linkedPrinter:"Verknüpfter Drucker",autoOn:"Automatisch einschalten",autoOnDescription:"Einschalten beim Druckstart",autoOff:"Automatisch ausschalten",autoOffDescription:"Ausschalten nach Druckende",offDelay:"Ausschaltverzögerung",offDelayMinutes:"Minuten nach Druck",offDelayTemp:"Wenn Düse unter Temperatur",currentState:"Aktueller Status",turnOn:"Einschalten",turnOff:"Ausschalten"},spoolmanEnabled:"Spoolman-Integration aktivieren",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Verbunden",spoolmanDisconnected:"Nicht verbunden"},notification:{printStarted:{title:"Druck gestartet",body:"{{printer}}: {{filename}} wird gedruckt"},printCompleted:{title:"Druck abgeschlossen",body:"{{printer}}: {{filename}} erfolgreich abgeschlossen"},printFailed:{title:"Druck fehlgeschlagen",body:"{{printer}}: {{filename}} ist fehlgeschlagen"},printStopped:{title:"Druck gestoppt",body:"{{printer}}: {{filename}} wurde gestoppt"},printProgress:{title:"Druckfortschritt",body:"{{printer}}: {{filename}} ist zu {{percent}}% abgeschlossen"},printerOffline:{title:"Drucker offline",body:"{{printer}} ist offline"},printerError:{title:"Druckerfehler",body:"{{printer}}: {{error}}"},filamentLow:{title:"Filament niedrig",body:"{{printer}}: Filament geht zur Neige"},maintenanceDue:{title:"Wartung fällig",body:"{{printer}}: {{items}} benötigen Aufmerksamkeit"}},errors:{generic:"Etwas ist schiefgelaufen",networkError:"Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",notFound:"Nicht gefunden",unauthorized:"Nicht autorisiert",serverError:"Serverfehler",validationError:"Bitte überprüfen Sie Ihre Eingabe",printerConnectionFailed:"Verbindung zum Drucker fehlgeschlagen",saveFailed:"Speichern fehlgeschlagen",deleteFailed:"Löschen fehlgeschlagen",loadFailed:"Laden der Daten fehlgeschlagen"},confirm:{delete:"Möchten Sie dies wirklich löschen?",unsavedChanges:"Sie haben ungespeicherte Änderungen. Möchten Sie wirklich verlassen?",clearQueue:"Möchten Sie die Warteschlange wirklich leeren?"}},Jne={en:{translation:Zne},de:{translation:Qne}};wa.use(fG).use(Nne).init({resources:Jne,fallbackLng:"en",supportedLngs:["en","de"],detection:{order:["localStorage","navigator","htmlTag"],lookupLocalStorage:"bambutrack_language",caches:["localStorage"]},interpolation:{escapeValue:!1},react:{useSuspense:!1}});const m4=[{code:"en",name:"English",nativeName:"English"},{code:"de",name:"German",nativeName:"Deutsch"}];var g4="popstate";function eie(t={}){function e(i,r){let{pathname:a,search:s,hash:o}=i.location;return hN("",{pathname:a,search:s,hash:o},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function n(i,r){return typeof r=="string"?r:L0(r)}return nie(e,n,null,t)}function mi(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function Ws(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function tie(){return Math.random().toString(36).substring(2,10)}function x4(t,e){return{usr:t.state,key:t.key,idx:e}}function hN(t,e,n=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?mm(e):e,state:n,key:e&&e.key||i||tie()}}function L0({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function mm(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let i=t.indexOf("?");i>=0&&(e.search=t.substring(i),t=t.substring(0,i)),t&&(e.pathname=t)}return e}function nie(t,e,n,i={}){let{window:r=document.defaultView,v5Compat:a=!1}=i,s=r.history,o="POP",l=null,c=u();c==null&&(c=0,s.replaceState({...s.state,idx:c},""));function u(){return(s.state||{idx:null}).idx}function f(){o="POP";let v=u(),x=v==null?null:v-c;c=v,l&&l({action:o,location:_.location,delta:x})}function p(v,x){o="PUSH";let M=hN(_.location,v,x);c=u()+1;let w=x4(M,c),E=_.createHref(M);try{s.pushState(w,"",E)}catch(T){if(T instanceof DOMException&&T.name==="DataCloneError")throw T;r.location.assign(E)}a&&l&&l({action:o,location:_.location,delta:1})}function g(v,x){o="REPLACE";let M=hN(_.location,v,x);c=u();let w=x4(M,c),E=_.createHref(M);s.replaceState(w,"",E),a&&l&&l({action:o,location:_.location,delta:0})}function y(v){return iie(v)}let _={get action(){return o},get location(){return t(r,s)},listen(v){if(l)throw new Error("A history only accepts one active listener");return r.addEventListener(g4,f),l=v,()=>{r.removeEventListener(g4,f),l=null}},createHref(v){return e(r,v)},createURL:y,encodeLocation(v){let x=y(v);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:p,replace:g,go(v){return s.go(v)}};return _}function iie(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),mi(n,"No window.location.(origin|href) available to create URL");let i=typeof t=="string"?t:L0(t);return i=i.replace(/ $/,"%20"),!e&&i.startsWith("//")&&(i=n+i),new URL(i,n)}function hG(t,e,n="/"){return rie(t,e,n,!1)}function rie(t,e,n,i){let r=typeof e=="string"?mm(e):e,a=cc(r.pathname||"/",n);if(a==null)return null;let s=pG(t);aie(s);let o=null;for(let l=0;o==null&&l{let u={relativePath:c===void 0?s.path||"":c,caseSensitive:s.caseSensitive===!0,childrenIndex:o,route:s};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(i)&&l)return;mi(u.relativePath.startsWith(i),`Absolute route path "${u.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(i.length)}let f=tc([i,u.relativePath]),p=n.concat(u);s.children&&s.children.length>0&&(mi(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),pG(s.children,e,p,f,l)),!(s.path==null&&!s.index)&&e.push({path:f,score:fie(f,s.index),routesMeta:p})};return t.forEach((s,o)=>{if(s.path===""||!s.path?.includes("?"))a(s,o);else for(let l of mG(s.path))a(s,o,!0,l)}),e}function mG(t){let e=t.split("/");if(e.length===0)return[];let[n,...i]=e,r=n.endsWith("?"),a=n.replace(/\?$/,"");if(i.length===0)return r?[a,""]:[a];let s=mG(i.join("/")),o=[];return o.push(...s.map(l=>l===""?a:[a,l].join("/"))),r&&o.push(...s),o.map(l=>t.startsWith("/")&&l===""?"/":l)}function aie(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:hie(e.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}var sie=/^:[\w-]+$/,oie=3,lie=2,cie=1,uie=10,die=-2,v4=t=>t==="*";function fie(t,e){let n=t.split("/"),i=n.length;return n.some(v4)&&(i+=die),e&&(i+=lie),n.filter(r=>!v4(r)).reduce((r,a)=>r+(sie.test(a)?oie:a===""?cie:uie),i)}function hie(t,e){return t.length===e.length&&t.slice(0,-1).every((i,r)=>i===e[r])?t[t.length-1]-e[e.length-1]:0}function pie(t,e,n=!1){let{routesMeta:i}=t,r={},a="/",s=[];for(let o=0;o{if(u==="*"){let y=o[p]||"";s=a.slice(0,a.length-y.length).replace(/(.)\/+$/,"$1")}const g=o[p];return f&&!g?c[u]=void 0:c[u]=(g||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:s,pattern:t}}function mie(t,e=!1,n=!0){Ws(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],r="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,o,l)=>(i.push({paramName:o,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(i.push({paramName:"*"}),r+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?r+="\\/*$":t!==""&&t!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,e?void 0:"i"),i]}function gie(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Ws(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function cc(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,i=t.charAt(n);return i&&i!=="/"?null:t.slice(n)||"/"}var xie=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,vie=t=>xie.test(t);function yie(t,e="/"){let{pathname:n,search:i="",hash:r=""}=typeof t=="string"?mm(t):t,a;if(n)if(vie(n))a=n;else{if(n.includes("//")){let s=n;n=n.replace(/\/\/+/g,"/"),Ws(!1,`Pathnames cannot have embedded double slashes - normalizing ${s} -> ${n}`)}n.startsWith("/")?a=y4(n.substring(1),"/"):a=y4(n,e)}else a=e;return{pathname:a,search:Sie(i),hash:wie(r)}}function y4(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(r=>{r===".."?n.length>1&&n.pop():r!=="."&&n.push(r)}),n.length>1?n.join("/"):"/"}function TA(t,e,n,i){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(i)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bie(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function gG(t){let e=bie(t);return e.map((n,i)=>i===e.length-1?n.pathname:n.pathnameBase)}function xG(t,e,n,i=!1){let r;typeof t=="string"?r=mm(t):(r={...t},mi(!r.pathname||!r.pathname.includes("?"),TA("?","pathname","search",r)),mi(!r.pathname||!r.pathname.includes("#"),TA("#","pathname","hash",r)),mi(!r.search||!r.search.includes("#"),TA("#","search","hash",r)));let a=t===""||r.pathname==="",s=a?"/":r.pathname,o;if(s==null)o=n;else{let f=e.length-1;if(!i&&s.startsWith("..")){let p=s.split("/");for(;p[0]==="..";)p.shift(),f-=1;r.pathname=p.join("/")}o=f>=0?e[f]:"/"}let l=yie(r,o),c=s&&s!=="/"&&s.endsWith("/"),u=(a||s===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var tc=t=>t.join("/").replace(/\/\/+/g,"/"),_ie=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Sie=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,wie=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Mie(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var vG=["POST","PUT","PATCH","DELETE"];new Set(vG);var Eie=["GET",...vG];new Set(Eie);var gm=A.createContext(null);gm.displayName="DataRouter";var BS=A.createContext(null);BS.displayName="DataRouterState";A.createContext(!1);var yG=A.createContext({isTransitioning:!1});yG.displayName="ViewTransition";var Aie=A.createContext(new Map);Aie.displayName="Fetchers";var Tie=A.createContext(null);Tie.displayName="Await";var rl=A.createContext(null);rl.displayName="Navigation";var Tx=A.createContext(null);Tx.displayName="Location";var al=A.createContext({outlet:null,matches:[],isDataRoute:!1});al.displayName="Route";var yP=A.createContext(null);yP.displayName="RouteError";function Cie(t,{relative:e}={}){mi(Cx(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:i}=A.useContext(rl),{hash:r,pathname:a,search:s}=Nx(t,{relative:e}),o=a;return n!=="/"&&(o=a==="/"?n:tc([n,a])),i.createHref({pathname:o,search:s,hash:r})}function Cx(){return A.useContext(Tx)!=null}function Sc(){return mi(Cx(),"useLocation() may be used only in the context of a component."),A.useContext(Tx).location}var bG="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function _G(t){A.useContext(rl).static||A.useLayoutEffect(t)}function HS(){let{isDataRoute:t}=A.useContext(al);return t?Vie():Nie()}function Nie(){mi(Cx(),"useNavigate() may be used only in the context of a component.");let t=A.useContext(gm),{basename:e,navigator:n}=A.useContext(rl),{matches:i}=A.useContext(al),{pathname:r}=Sc(),a=JSON.stringify(gG(i)),s=A.useRef(!1);return _G(()=>{s.current=!0}),A.useCallback((l,c={})=>{if(Ws(s.current,bG),!s.current)return;if(typeof l=="number"){n.go(l);return}let u=xG(l,JSON.parse(a),r,c.relative==="path");t==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:tc([e,u.pathname])),(c.replace?n.replace:n.push)(u,c.state,c)},[e,n,a,r,t])}var Rie=A.createContext(null);function Pie(t){let e=A.useContext(al).outlet;return A.useMemo(()=>e&&A.createElement(Rie.Provider,{value:t},e),[e,t])}function Nx(t,{relative:e}={}){let{matches:n}=A.useContext(al),{pathname:i}=Sc(),r=JSON.stringify(gG(n));return A.useMemo(()=>xG(t,JSON.parse(r),i,e==="path"),[t,r,i,e])}function kie(t,e){return SG(t,e)}function SG(t,e,n,i,r){mi(Cx(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=A.useContext(rl),{matches:s}=A.useContext(al),o=s[s.length-1],l=o?o.params:{},c=o?o.pathname:"/",u=o?o.pathnameBase:"/",f=o&&o.route;{let M=f&&f.path||"";wG(c,!f||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${c}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. -Please change the parent to .`)}let p=Sc(),g;if(e){let M=typeof e=="string"?pm(e):e;mi(u==="/"||M.pathname?.startsWith(u),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${u}" but pathname "${M.pathname}" was given in the \`location\` prop.`),g=M}else g=p;let y=g.pathname||"/",_=y;if(u!=="/"){let M=u.replace(/^\//,"").split("/");_="/"+y.replace(/^\//,"").split("/").slice(M.length).join("/")}let v=hG(t,{pathname:_});Ws(f||v!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),Ws(v==null||v[v.length-1].route.element!==void 0||v[v.length-1].route.Component!==void 0||v[v.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let x=Uie(v&&v.map(M=>Object.assign({},M,{params:Object.assign({},l,M.params),pathname:tc([u,a.encodeLocation?a.encodeLocation(M.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathname]),pathnameBase:M.pathnameBase==="/"?u:tc([u,a.encodeLocation?a.encodeLocation(M.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathnameBase])})),s,n,i,r);return e&&x?A.createElement(Tx.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...g},navigationType:"POP"}},x):x}function kie(){let t=Hie(),e=Mie(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,i="rgba(200,200,200, 0.5)",r={padding:"0.5rem",backgroundColor:i},a={padding:"2px 4px",backgroundColor:i},s=null;return console.error("Error handled by React Router default ErrorBoundary:",t),s=A.createElement(A.Fragment,null,A.createElement("p",null,"💿 Hey developer 👋"),A.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",A.createElement("code",{style:a},"ErrorBoundary")," or"," ",A.createElement("code",{style:a},"errorElement")," prop on your route.")),A.createElement(A.Fragment,null,A.createElement("h2",null,"Unexpected Application Error!"),A.createElement("h3",{style:{fontStyle:"italic"}},e),n?A.createElement("pre",{style:r},n):null,s)}var Oie=A.createElement(kie,null),Lie=class extends A.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){return this.state.error!==void 0?A.createElement(al.Provider,{value:this.props.routeContext},A.createElement(yP.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Iie({routeContext:t,match:e,children:n}){let i=A.useContext(mm);return i&&i.static&&i.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=e.route.id),A.createElement(al.Provider,{value:t},n)}function Uie(t,e=[],n=null,i=null,r=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let a=t,s=n?.errors;if(s!=null){let u=a.findIndex(f=>f.route.id&&s?.[f.route.id]!==void 0);mi(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),a=a.slice(0,Math.min(a.length,u+1))}let o=!1,l=-1;if(n)for(let u=0;u=0?a=a.slice(0,l+1):a=[a[0]];break}}}let c=n&&i?(u,f)=>{i(u,{location:n.location,params:n.matches?.[0]?.params??{},errorInfo:f})}:void 0;return a.reduceRight((u,f,p)=>{let g,y=!1,_=null,v=null;n&&(g=s&&f.route.id?s[f.route.id]:void 0,_=f.route.errorElement||Oie,o&&(l<0&&p===0?(wG("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),y=!0,v=null):l===p&&(y=!0,v=f.route.hydrateFallbackElement||null)));let x=e.concat(a.slice(0,p+1)),M=()=>{let w;return g?w=_:y?w=v:f.route.Component?w=A.createElement(f.route.Component,null):f.route.element?w=f.route.element:w=u,A.createElement(Iie,{match:f,routeContext:{outlet:u,matches:x,isDataRoute:n!=null},children:w})};return n&&(f.route.ErrorBoundary||f.route.errorElement||p===0)?A.createElement(Lie,{location:n.location,revalidation:n.revalidation,component:_,error:g,children:M(),routeContext:{outlet:null,matches:x,isDataRoute:!0},onError:c}):M()},null)}function bP(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function jie(t){let e=A.useContext(mm);return mi(e,bP(t)),e}function Fie(t){let e=A.useContext(BS);return mi(e,bP(t)),e}function zie(t){let e=A.useContext(al);return mi(e,bP(t)),e}function _P(t){let e=zie(t),n=e.matches[e.matches.length-1];return mi(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function Bie(){return _P("useRouteId")}function Hie(){let t=A.useContext(yP),e=Fie("useRouteError"),n=_P("useRouteError");return t!==void 0?t:e.errors?.[n]}function Vie(){let{router:t}=jie("useNavigate"),e=_P("useNavigate"),n=A.useRef(!1);return _G(()=>{n.current=!0}),A.useCallback(async(r,a={})=>{Ws(n.current,bG),n.current&&(typeof r=="number"?t.navigate(r):await t.navigate(r,{fromRouteId:e,...a}))},[t,e])}var b4={};function wG(t,e,n){!e&&!b4[t]&&(b4[t]=!0,Ws(!1,n))}A.memo($ie);function $ie({routes:t,future:e,state:n,unstable_onError:i}){return SG(t,void 0,n,i,e)}function Gie(t){return Pie(t.context)}function Lo(t){mi(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Wie({basename:t="/",children:e=null,location:n,navigationType:i="POP",navigator:r,static:a=!1}){mi(!Cx(),"You cannot render a inside another . You should never have more than one in your app.");let s=t.replace(/^\/*/,"/"),o=A.useMemo(()=>({basename:s,navigator:r,static:a,future:{}}),[s,r,a]);typeof n=="string"&&(n=pm(n));let{pathname:l="/",search:c="",hash:u="",state:f=null,key:p="default"}=n,g=A.useMemo(()=>{let y=cc(l,s);return y==null?null:{location:{pathname:y,search:c,hash:u,state:f,key:p},navigationType:i}},[s,l,c,u,f,p,i]);return Ws(g!=null,` is not able to match the URL "${l}${c}${u}" because it does not start with the basename, so the won't render anything.`),g==null?null:A.createElement(rl.Provider,{value:o},A.createElement(Tx.Provider,{children:e,value:g}))}function qie({children:t,location:e}){return Die(pN(t),e)}function pN(t,e=[]){let n=[];return A.Children.forEach(t,(i,r)=>{if(!A.isValidElement(i))return;let a=[...e,r];if(i.type===A.Fragment){n.push.apply(n,pN(i.props.children,a));return}mi(i.type===Lo,`[${typeof i.type=="string"?i.type:i.type.name}] is not a component. All component children of must be a or `),mi(!i.props.index||!i.props.children,"An index route cannot have child routes.");let s={id:i.props.id||a.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,middleware:i.props.middleware,loader:i.props.loader,action:i.props.action,hydrateFallbackElement:i.props.hydrateFallbackElement,HydrateFallback:i.props.HydrateFallback,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.hasErrorBoundary===!0||i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(s.children=pN(i.props.children,a)),n.push(s)}),n}var s_="get",o_="application/x-www-form-urlencoded";function VS(t){return t!=null&&typeof t.tagName=="string"}function Xie(t){return VS(t)&&t.tagName.toLowerCase()==="button"}function Kie(t){return VS(t)&&t.tagName.toLowerCase()==="form"}function Yie(t){return VS(t)&&t.tagName.toLowerCase()==="input"}function Zie(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function Qie(t,e){return t.button===0&&(!e||e==="_self")&&!Zie(t)}function mN(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let i=t[n];return e.concat(Array.isArray(i)?i.map(r=>[n,r]):[[n,i]])},[]))}function Jie(t,e){let n=mN(t);return e&&e.forEach((i,r)=>{n.has(r)||e.getAll(r).forEach(a=>{n.append(r,a)})}),n}var Cy=null;function ere(){if(Cy===null)try{new FormData(document.createElement("form"),0),Cy=!1}catch{Cy=!0}return Cy}var tre=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function CA(t){return t!=null&&!tre.has(t)?(Ws(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${o_}"`),null):t}function nre(t,e){let n,i,r,a,s;if(Kie(t)){let o=t.getAttribute("action");i=o?cc(o,e):null,n=t.getAttribute("method")||s_,r=CA(t.getAttribute("enctype"))||o_,a=new FormData(t)}else if(Xie(t)||Yie(t)&&(t.type==="submit"||t.type==="image")){let o=t.form;if(o==null)throw new Error('Cannot submit a