diff --git a/backend/app/api/routes/settings.py b/backend/app/api/routes/settings.py index b16d95ab7..988527e05 100644 --- a/backend/app/api/routes/settings.py +++ b/backend/app/api/routes/settings.py @@ -73,7 +73,6 @@ async def get_settings(db: AsyncSession = Depends(get_db)): "capture_finish_photo", "spoolman_enabled", "check_updates", - "telemetry_enabled", "virtual_printer_enabled", "ftp_retry_enabled", "mqtt_enabled", diff --git a/backend/app/main.py b/backend/app/main.py index 719402212..f51e8c848 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -100,7 +100,6 @@ from backend.app.services.printer_manager import ( from backend.app.services.smart_plug_manager import smart_plug_manager from backend.app.services.spoolman import close_spoolman_client, get_spoolman_client, init_spoolman_client from backend.app.services.tasmota import tasmota_service -from backend.app.services.telemetry import start_telemetry_loop # Track active prints: {(printer_id, filename): archive_id} _active_prints: dict[tuple[int, str], int] = {} @@ -2071,9 +2070,6 @@ async def lifespan(app: FastAPI): # Start printer runtime tracking start_runtime_tracking() - # Start anonymous telemetry (opt-out via settings) - asyncio.create_task(start_telemetry_loop(async_session)) - # Initialize virtual printer manager from backend.app.services.virtual_printer import virtual_printer_manager diff --git a/backend/app/schemas/settings.py b/backend/app/schemas/settings.py index 899de39a4..80d65b04a 100644 --- a/backend/app/schemas/settings.py +++ b/backend/app/schemas/settings.py @@ -53,9 +53,6 @@ class AppSettings(BaseModel): # Default printer for operations default_printer_id: int | None = Field(default=None, description="Default printer ID for uploads, reprints, etc.") - # Telemetry - telemetry_enabled: bool = Field(default=True, description="Send anonymous usage data to help improve BamBuddy") - # Virtual Printer virtual_printer_enabled: bool = Field(default=False, description="Enable virtual printer for slicer uploads") virtual_printer_access_code: str = Field(default="", description="Access code for virtual printer authentication") @@ -141,7 +138,6 @@ class AppSettingsUpdate(BaseModel): date_format: str | None = None time_format: str | None = None default_printer_id: int | None = None - telemetry_enabled: bool | None = None virtual_printer_enabled: bool | None = None virtual_printer_access_code: str | None = None virtual_printer_mode: str | None = None diff --git a/backend/app/services/telemetry.py b/backend/app/services/telemetry.py deleted file mode 100644 index 233b61996..000000000 --- a/backend/app/services/telemetry.py +++ /dev/null @@ -1,133 +0,0 @@ -"""Anonymous telemetry service for BamBuddy.""" - -import asyncio -import logging -import uuid -from datetime import datetime, timedelta - -import httpx -from sqlalchemy import func, select -from sqlalchemy.ext.asyncio import AsyncSession - -from backend.app.core.config import APP_VERSION -from backend.app.models.printer import Printer -from backend.app.models.settings import Settings - -logger = logging.getLogger(__name__) - -# Default telemetry server URL (can be overridden via settings) -DEFAULT_TELEMETRY_URL = "https://telemetry.bambuddy.cool" - -# How often to send heartbeats (once per day) -HEARTBEAT_INTERVAL = timedelta(hours=24) - -_last_heartbeat: datetime | None = None - - -async def get_or_create_installation_id(db: AsyncSession) -> str: - """Get existing installation ID or create a new one.""" - result = await db.execute(select(Settings).where(Settings.key == "installation_id")) - setting = result.scalar_one_or_none() - - if setting: - return setting.value - - # Generate new UUID - installation_id = str(uuid.uuid4()) - - # Save to database - new_setting = Settings(key="installation_id", value=installation_id) - db.add(new_setting) - await db.commit() - - logger.info(f"Generated new installation ID: {installation_id[:8]}...") - return installation_id - - -async def is_telemetry_enabled(db: AsyncSession) -> bool: - """Check if telemetry is enabled (opt-out model).""" - result = await db.execute(select(Settings).where(Settings.key == "telemetry_enabled")) - setting = result.scalar_one_or_none() - - # Default to enabled (opt-out model) - if not setting: - return True - - return setting.value.lower() == "true" - - -async def get_telemetry_url(db: AsyncSession) -> str: - """Get telemetry server URL from settings.""" - result = await db.execute(select(Settings).where(Settings.key == "telemetry_url")) - setting = result.scalar_one_or_none() - - return setting.value if setting else DEFAULT_TELEMETRY_URL - - -async def get_printer_model_counts(db: AsyncSession) -> dict[str, int]: - """Get count of each printer model configured in BamBuddy.""" - result = await db.execute(select(Printer.model, func.count(Printer.id)).group_by(Printer.model)) - counts = {} - for model, count in result.all(): - # Normalize model name (handle None/empty) - model_name = model if model else "Unknown" - counts[model_name] = count - return counts - - -async def send_heartbeat(db: AsyncSession) -> bool: - """Send anonymous heartbeat to telemetry server.""" - global _last_heartbeat - - try: - # Check if telemetry is enabled - if not await is_telemetry_enabled(db): - logger.debug("Telemetry disabled, skipping heartbeat") - return False - - # Rate limit: only send once per day - if _last_heartbeat and datetime.now() - _last_heartbeat < HEARTBEAT_INTERVAL: - logger.debug("Heartbeat already sent recently, skipping") - return True - - installation_id = await get_or_create_installation_id(db) - telemetry_url = await get_telemetry_url(db) - printer_models = await get_printer_model_counts(db) - - async with httpx.AsyncClient(timeout=10.0) as client: - response = await client.post( - f"{telemetry_url}/heartbeat", - json={ - "installation_id": installation_id, - "version": APP_VERSION, - "printer_models": printer_models, - }, - ) - response.raise_for_status() - - _last_heartbeat = datetime.now() - logger.info(f"Telemetry heartbeat sent to {telemetry_url}") - return True - - except httpx.HTTPError as e: - logger.debug(f"Telemetry heartbeat failed (network): {e}") - return False - except Exception as e: - logger.debug(f"Telemetry heartbeat failed: {e}") - return False - - -async def start_telemetry_loop(get_session): - """Background task to send periodic heartbeats.""" - # Wait a bit before first heartbeat to let app initialize - await asyncio.sleep(30) - - while True: - try: - async with get_session() as db: - await send_heartbeat(db) - except Exception as e: - logger.debug(f"Telemetry loop error: {e}") - - # Check daily - await asyncio.sleep(HEARTBEAT_INTERVAL.total_seconds()) diff --git a/backend/tests/unit/services/test_telemetry.py b/backend/tests/unit/services/test_telemetry.py deleted file mode 100644 index dadd40ba9..000000000 --- a/backend/tests/unit/services/test_telemetry.py +++ /dev/null @@ -1,229 +0,0 @@ -"""Unit tests for Telemetry service. - -Tests the anonymous telemetry/stats collection functionality. -""" - -from datetime import datetime, timedelta -from unittest.mock import AsyncMock, MagicMock, patch - -import pytest - -from backend.app.models.settings import Settings -from backend.app.services.telemetry import ( - DEFAULT_TELEMETRY_URL, - HEARTBEAT_INTERVAL, - _last_heartbeat, - get_or_create_installation_id, - get_telemetry_url, - is_telemetry_enabled, - send_heartbeat, -) - - -class TestTelemetryService: - """Tests for telemetry service functions.""" - - # ======================================================================== - # Installation ID Tests - # ======================================================================== - - @pytest.mark.asyncio - async def test_get_or_create_installation_id_creates_new(self, db_session): - """Verify new installation ID is created when none exists.""" - installation_id = await get_or_create_installation_id(db_session) - - assert installation_id is not None - assert len(installation_id) == 36 # UUID format - assert "-" in installation_id - - @pytest.mark.asyncio - async def test_get_or_create_installation_id_returns_existing(self, db_session): - """Verify existing installation ID is returned.""" - # Create an existing installation ID - existing_id = "test-uuid-1234-5678-abcd" - setting = Settings(key="installation_id", value=existing_id) - db_session.add(setting) - await db_session.commit() - - result = await get_or_create_installation_id(db_session) - - assert result == existing_id - - @pytest.mark.asyncio - async def test_get_or_create_installation_id_persists(self, db_session): - """Verify created installation ID persists in database.""" - first_id = await get_or_create_installation_id(db_session) - second_id = await get_or_create_installation_id(db_session) - - assert first_id == second_id - - # ======================================================================== - # Telemetry Enabled Tests - # ======================================================================== - - @pytest.mark.asyncio - async def test_is_telemetry_enabled_default_true(self, db_session): - """Verify telemetry is enabled by default (opt-out model).""" - result = await is_telemetry_enabled(db_session) - - assert result is True - - @pytest.mark.asyncio - async def test_is_telemetry_enabled_explicit_true(self, db_session): - """Verify telemetry enabled when explicitly set to true.""" - setting = Settings(key="telemetry_enabled", value="true") - db_session.add(setting) - await db_session.commit() - - result = await is_telemetry_enabled(db_session) - - assert result is True - - @pytest.mark.asyncio - async def test_is_telemetry_enabled_explicit_false(self, db_session): - """Verify telemetry disabled when set to false.""" - setting = Settings(key="telemetry_enabled", value="false") - db_session.add(setting) - await db_session.commit() - - result = await is_telemetry_enabled(db_session) - - assert result is False - - @pytest.mark.asyncio - async def test_is_telemetry_enabled_case_insensitive(self, db_session): - """Verify telemetry enabled check is case insensitive.""" - setting = Settings(key="telemetry_enabled", value="TRUE") - db_session.add(setting) - await db_session.commit() - - result = await is_telemetry_enabled(db_session) - - assert result is True - - # ======================================================================== - # Telemetry URL Tests - # ======================================================================== - - @pytest.mark.asyncio - async def test_get_telemetry_url_default(self, db_session): - """Verify default telemetry URL is returned when not configured.""" - result = await get_telemetry_url(db_session) - - assert result == DEFAULT_TELEMETRY_URL - - @pytest.mark.asyncio - async def test_get_telemetry_url_custom(self, db_session): - """Verify custom telemetry URL is returned when configured.""" - custom_url = "https://custom.telemetry.example.com" - setting = Settings(key="telemetry_url", value=custom_url) - db_session.add(setting) - await db_session.commit() - - result = await get_telemetry_url(db_session) - - assert result == custom_url - - # ======================================================================== - # Send Heartbeat Tests - # ======================================================================== - - @pytest.mark.asyncio - async def test_send_heartbeat_when_disabled(self, db_session): - """Verify heartbeat is not sent when telemetry is disabled.""" - setting = Settings(key="telemetry_enabled", value="false") - db_session.add(setting) - await db_session.commit() - - with patch("httpx.AsyncClient") as mock_client: - result = await send_heartbeat(db_session) - - assert result is False - mock_client.assert_not_called() - - @pytest.mark.asyncio - async def test_send_heartbeat_success(self, db_session, mock_httpx_client): - """Verify heartbeat is sent successfully when enabled.""" - # Reset the last heartbeat to allow sending - import backend.app.services.telemetry as telemetry_module - - telemetry_module._last_heartbeat = None - - result = await send_heartbeat(db_session) - - assert result is True - - @pytest.mark.asyncio - async def test_send_heartbeat_rate_limited(self, db_session): - """Verify heartbeat is rate limited to once per day.""" - import backend.app.services.telemetry as telemetry_module - - # Set last heartbeat to recent time - telemetry_module._last_heartbeat = datetime.now() - - with patch("httpx.AsyncClient") as mock_client: - result = await send_heartbeat(db_session) - - # Should return True (already sent) without making HTTP request - assert result is True - mock_client.assert_not_called() - - @pytest.mark.asyncio - async def test_send_heartbeat_handles_exceptions(self, db_session): - """Verify heartbeat returns False on general exceptions.""" - import backend.app.services.telemetry as telemetry_module - - telemetry_module._last_heartbeat = None - - # Test that the function handles exceptions gracefully by checking - # the code path - the actual telemetry URL may or may not be reachable - # The function should not raise exceptions to the caller - try: - result = await send_heartbeat(db_session) - # Result can be True (success) or False (failure) but should not raise - assert isinstance(result, bool) - except Exception as e: - pytest.fail(f"send_heartbeat should not raise exceptions: {e}") - - @pytest.mark.asyncio - async def test_send_heartbeat_sends_correct_data(self, db_session): - """Verify heartbeat sends correct payload.""" - import backend.app.services.telemetry as telemetry_module - from backend.app.core.config import APP_VERSION - - telemetry_module._last_heartbeat = None - - captured_data = {} - - with patch("httpx.AsyncClient") as mock_class: - mock_instance = AsyncMock() - mock_response = MagicMock() - mock_response.raise_for_status = MagicMock() - - async def capture_post(url, json=None): - captured_data["url"] = url - captured_data["json"] = json - return mock_response - - mock_instance.post = capture_post - mock_instance.__aenter__ = AsyncMock(return_value=mock_instance) - mock_instance.__aexit__ = AsyncMock() - mock_class.return_value = mock_instance - - await send_heartbeat(db_session) - - assert "heartbeat" in captured_data["url"] - assert "installation_id" in captured_data["json"] - assert captured_data["json"]["version"] == APP_VERSION - - -class TestHeartbeatInterval: - """Tests for heartbeat interval configuration.""" - - def test_heartbeat_interval_is_24_hours(self): - """Verify heartbeat interval is set to 24 hours.""" - assert timedelta(hours=24) == HEARTBEAT_INTERVAL - - def test_default_telemetry_url(self): - """Verify default telemetry URL is correct.""" - assert DEFAULT_TELEMETRY_URL == "https://telemetry.bambuddy.cool" diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 99a788887..f7975aba3 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -648,8 +648,6 @@ export interface AppSettings { time_format: 'system' | '12h' | '24h'; // Default printer default_printer_id: number | null; - // Telemetry - telemetry_enabled: boolean; // Dark mode theme settings dark_style: 'classic' | 'glow' | 'vibrant'; dark_background: 'neutral' | 'warm' | 'cool' | 'oled' | 'slate' | 'forest'; diff --git a/frontend/src/i18n/locales/de.ts b/frontend/src/i18n/locales/de.ts index 8f1464c51..4363ec183 100644 --- a/frontend/src/i18n/locales/de.ts +++ b/frontend/src/i18n/locales/de.ts @@ -244,21 +244,6 @@ export default { latestVersion: 'Neueste Version', upToDate: 'Sie sind auf dem neuesten Stand', updateAvailable: 'Update verfügbar', - telemetry: 'Anonyme Telemetrie', - telemetryDescription: 'Helfen Sie BamBuddy zu verbessern, indem Sie anonyme Nutzungsdaten senden', - telemetryLearnMore: 'Mehr erfahren', - telemetryInfoTitle: 'Welche Daten werden gesammelt?', - telemetryInfoIntro: 'BamBuddy sammelt minimale anonyme Daten, um zu verstehen, wie viele Personen die App nutzen und welche Versionen verwendet werden. Dies hilft bei der Priorisierung von Fehlerbehebungen und neuen Funktionen.', - telemetryInfoCollected: 'Was wir sammeln:', - telemetryInfoItem1: 'Eine zufällige Installations-ID (nicht mit Ihnen oder Ihrer Hardware verknüpft)', - telemetryInfoItem2: 'Die App-Version, die Sie verwenden', - telemetryInfoItem3: 'Ein Zeitstempel (um tägliche/wöchentliche aktive Nutzer zu zählen)', - telemetryInfoNotCollected: 'Was wir NICHT sammeln:', - telemetryInfoNotItem1: 'IP-Adressen oder Standortdaten', - telemetryInfoNotItem2: 'Druckernamen, Seriennummern oder Druckerdaten', - telemetryInfoNotItem3: 'Druckverlauf, Dateinamen oder persönliche Inhalte', - telemetryInfoNotItem4: 'Informationen, die Sie identifizieren könnten', - telemetryInfoFooter: 'Sie können die Telemetrie jederzeit deaktivieren. Die Installations-ID wird zufällig generiert und kann nicht zu Ihnen zurückverfolgt werden.', // Notifications notificationLanguage: 'Benachrichtigungssprache', notificationLanguageDescription: 'Sprache für Push-Benachrichtigungen', diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index 2bdc2c962..6e1b50810 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -244,22 +244,6 @@ export default { latestVersion: 'Latest Version', upToDate: 'You are up to date', updateAvailable: 'Update available', - telemetry: 'Anonymous telemetry', - telemetryDescription: 'Help improve BamBuddy by sending anonymous usage data', - telemetryLearnMore: 'Learn more', - telemetryInfoTitle: 'What data is collected?', - telemetryInfoIntro: 'BamBuddy collects minimal anonymous data to help understand how many people use the app, which versions and printer models are in use. This helps prioritize bug fixes and new features.', - telemetryInfoCollected: 'What we collect:', - telemetryInfoItem1: 'A random installation ID (not linked to you or your hardware)', - telemetryInfoItem2: 'The app version you\'re running', - telemetryInfoItem3: 'Printer model types (e.g., X1C, P1S) - not names or serial numbers', - telemetryInfoItem4: 'A timestamp (to count daily/weekly active users)', - telemetryInfoNotCollected: 'What we do NOT collect:', - telemetryInfoNotItem1: 'Your IP address is hashed and cannot be reversed', - telemetryInfoNotItem2: 'Printer names, serial numbers, or access codes', - telemetryInfoNotItem3: 'Print history, filenames, or any personal content', - telemetryInfoNotItem4: 'Any information that could identify you', - telemetryInfoFooter: 'You can disable telemetry at any time. The installation ID is randomly generated and cannot be traced back to you.', // Notifications notificationLanguage: 'Notification Language', notificationLanguageDescription: 'Language for push notifications', diff --git a/frontend/src/pages/SettingsPage.tsx b/frontend/src/pages/SettingsPage.tsx index d13ab0854..79bba52bc 100644 --- a/frontend/src/pages/SettingsPage.tsx +++ b/frontend/src/pages/SettingsPage.tsx @@ -1,5 +1,5 @@ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; -import { Loader2, Plus, Plug, AlertTriangle, RotateCcw, Bell, Download, RefreshCw, ExternalLink, Globe, Droplets, Thermometer, FileText, Edit2, Send, CheckCircle, XCircle, History, Trash2, Upload, Zap, TrendingUp, Calendar, DollarSign, Power, PowerOff, Key, Copy, Database, Info, X, Shield, Printer, Cylinder, Wifi, Home, Video, Users, Lock, Unlock } from 'lucide-react'; +import { Loader2, Plus, Plug, AlertTriangle, RotateCcw, Bell, Download, RefreshCw, ExternalLink, Globe, Droplets, Thermometer, FileText, Edit2, Send, CheckCircle, XCircle, History, Trash2, Upload, Zap, TrendingUp, Calendar, DollarSign, Power, PowerOff, Key, Copy, Database, X, Shield, Printer, Cylinder, Wifi, Home, Video, Users, Lock, Unlock } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { api } from '../api/client'; @@ -87,7 +87,6 @@ export function SettingsPage() { const [showBulkPlugConfirm, setShowBulkPlugConfirm] = useState<'on' | 'off' | null>(null); const [showBackupModal, setShowBackupModal] = useState(false); const [showRestoreModal, setShowRestoreModal] = useState(false); - const [showTelemetryInfo, setShowTelemetryInfo] = useState(false); const [showReleaseNotes, setShowReleaseNotes] = useState(false); const [showDisableAuthConfirm, setShowDisableAuthConfirm] = useState(false); @@ -400,7 +399,6 @@ export function SettingsPage() { settings.energy_tracking_mode !== localSettings.energy_tracking_mode || settings.check_updates !== localSettings.check_updates || settings.notification_language !== localSettings.notification_language || - settings.telemetry_enabled !== localSettings.telemetry_enabled || settings.ams_humidity_good !== localSettings.ams_humidity_good || settings.ams_humidity_fair !== localSettings.ams_humidity_fair || settings.ams_temp_good !== localSettings.ams_temp_good || @@ -461,7 +459,6 @@ export function SettingsPage() { energy_tracking_mode: localSettings.energy_tracking_mode, check_updates: localSettings.check_updates, notification_language: localSettings.notification_language, - telemetry_enabled: localSettings.telemetry_enabled, ams_humidity_good: localSettings.ams_humidity_good, ams_humidity_fair: localSettings.ams_humidity_fair, ams_temp_good: localSettings.ams_temp_good, @@ -1237,33 +1234,6 @@ export function SettingsPage() {
-
-
-
-

{t('settings.telemetry')}

- -
-

- {t('settings.telemetryDescription')} -

-
- -
-
@@ -2937,89 +2907,6 @@ export function SettingsPage() { /> )} - {/* Telemetry Info Modal */} - {showTelemetryInfo && ( -
setShowTelemetryInfo(false)} - > - e.stopPropagation()}> - -
- -

{t('settings.telemetryInfoTitle')}

-
- -
- -

- {t('settings.telemetryInfoIntro')} -

- -
-

{t('settings.telemetryInfoCollected')}

-
    -
  • - - {t('settings.telemetryInfoItem1')} -
  • -
  • - - {t('settings.telemetryInfoItem2')} -
  • -
  • - - {t('settings.telemetryInfoItem3')} -
  • -
  • - - {t('settings.telemetryInfoItem4')} -
  • -
-
- -
-

{t('settings.telemetryInfoNotCollected')}

-
    -
  • - - {t('settings.telemetryInfoNotItem1')} -
  • -
  • - - {t('settings.telemetryInfoNotItem2')} -
  • -
  • - - {t('settings.telemetryInfoNotItem3')} -
  • -
  • - - {t('settings.telemetryInfoNotItem4')} -
  • -
-
- -

- {t('settings.telemetryInfoFooter')} -

- - -
-
-
- )} - {/* Release Notes Modal */} {showReleaseNotes && updateCheck?.release_notes && (
r[i]})}}}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 i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();var c_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ml(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var HA={exports:{}},rb={};var KU;function Zse(){if(KU)return rb;KU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,a){var o=null;if(a!==void 0&&(o=""+a),i.key!==void 0&&(o=""+i.key),"key"in i){a={};for(var l in i)l!=="key"&&(a[l]=i[l])}else a=i;return i=a.ref,{$$typeof:t,type:r,key:o,ref:i!==void 0?i:null,props:a}}return rb.Fragment=e,rb.jsx=n,rb.jsxs=n,rb}var XU;function Qse(){return XU||(XU=1,HA.exports=Zse()),HA.exports}var s=Qse(),VA={exports:{}},gn={};var YU;function Jse(){if(YU)return gn;YU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),m=Symbol.iterator;function p(z){return z===null||typeof z!="object"?null:(z=m&&z[m]||z["@@iterator"],typeof z=="function"?z:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,x={};function v(z,V,Z){this.props=z,this.context=V,this.refs=x,this.updater=Z||b}v.prototype.isReactComponent={},v.prototype.setState=function(z,V){if(typeof z!="object"&&typeof z!="function"&&z!=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,z,V,"setState")},v.prototype.forceUpdate=function(z){this.updater.enqueueForceUpdate(this,z,"forceUpdate")};function S(){}S.prototype=v.prototype;function M(z,V,Z){this.props=z,this.context=V,this.refs=x,this.updater=Z||b}var N=M.prototype=new S;N.constructor=M,y(N,v.prototype),N.isPureReactComponent=!0;var A=Array.isArray;function k(){}var C={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function T(z,V,Z){var ne=Z.ref;return{$$typeof:t,type:z,key:V,ref:ne!==void 0?ne:null,props:Z}}function R(z,V){return T(z.type,V,z.props)}function U(z){return typeof z=="object"&&z!==null&&z.$$typeof===t}function O(z){var V={"=":"=0",":":"=2"};return"$"+z.replace(/[=:]/g,function(Z){return V[Z]})}var q=/\/+/g;function j(z,V){return typeof z=="object"&&z!==null&&z.key!=null?O(""+z.key):V.toString(36)}function W(z){switch(z.status){case"fulfilled":return z.value;case"rejected":throw z.reason;default:switch(typeof z.status=="string"?z.then(k,k):(z.status="pending",z.then(function(V){z.status==="pending"&&(z.status="fulfilled",z.value=V)},function(V){z.status==="pending"&&(z.status="rejected",z.reason=V)})),z.status){case"fulfilled":return z.value;case"rejected":throw z.reason}}throw z}function K(z,V,Z,ne,he){var fe=typeof z;(fe==="undefined"||fe==="boolean")&&(z=null);var le=!1;if(z===null)le=!0;else switch(fe){case"bigint":case"string":case"number":le=!0;break;case"object":switch(z.$$typeof){case t:case e:le=!0;break;case d:return le=z._init,K(le(z._payload),V,Z,ne,he)}}if(le)return he=he(z),le=ne===""?"."+j(z,0):ne,A(he)?(Z="",le!=null&&(Z=le.replace(q,"$&/")+"/"),K(he,V,Z,"",function(we){return we})):he!=null&&(U(he)&&(he=R(he,Z+(he.key==null||z&&z.key===he.key?"":(""+he.key).replace(q,"$&/")+"/")+le)),V.push(he)),1;le=0;var Ee=ne===""?".":ne+":";if(A(z))for(var me=0;me>>1,re=K[ie];if(0>>1;iei(Z,J))nei(he,Z)?(K[ie]=he,K[ne]=J,ie=ne):(K[ie]=Z,K[V]=J,ie=V);else if(nei(he,J))K[ie]=he,K[ne]=J,ie=ne;else break e}}return G}function i(K,G){var J=K.sortIndex-G.sortIndex;return J!==0?J:K.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 o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],u=[],d=1,f=null,m=3,p=!1,b=!1,y=!1,x=!1,v=typeof setTimeout=="function"?setTimeout:null,S=typeof clearTimeout=="function"?clearTimeout:null,M=typeof setImmediate<"u"?setImmediate:null;function N(K){for(var G=n(u);G!==null;){if(G.callback===null)r(u);else if(G.startTime<=K)r(u),G.sortIndex=G.expirationTime,e(c,G);else break;G=n(u)}}function A(K){if(y=!1,N(K),!b)if(n(c)!==null)b=!0,k||(k=!0,O());else{var G=n(u);G!==null&&W(A,G.startTime-K)}}var k=!1,C=-1,D=5,T=-1;function R(){return x?!0:!(t.unstable_now()-TK&&R());){var ie=f.callback;if(typeof ie=="function"){f.callback=null,m=f.priorityLevel;var re=ie(f.expirationTime<=K);if(K=t.unstable_now(),typeof re=="function"){f.callback=re,N(K),G=!0;break t}f===n(c)&&r(c),N(K)}else r(c);f=n(c)}if(f!==null)G=!0;else{var z=n(u);z!==null&&W(A,z.startTime-K),G=!1}}break e}finally{f=null,m=J,p=!1}G=void 0}}finally{G?O():k=!1}}}var O;if(typeof M=="function")O=function(){M(U)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,j=q.port2;q.port1.onmessage=U,O=function(){j.postMessage(null)}}else O=function(){v(U,0)};function W(K,G){C=v(function(){K(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(K){K.callback=null},t.unstable_forceFrameRate=function(K){0>K||125ie?(K.sortIndex=J,e(u,K),n(c)===null&&K===n(u)&&(y?(S(C),C=-1):y=!0,W(A,J-ie))):(K.sortIndex=re,e(c,K),b||p||(b=!0,k||(k=!0,O()))),K},t.unstable_shouldYield=R,t.unstable_wrapCallback=function(K){var G=m;return function(){var J=m;m=G;try{return K.apply(this,arguments)}finally{m=J}}}})(qA)),qA}var JU;function noe(){return JU||(JU=1,WA.exports=toe()),WA.exports}var KA={exports:{}},Na={};var ez;function roe(){if(ez)return Na;ez=1;var t=Vg();function e(c){var u="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),KA.exports=roe(),KA.exports}var nz;function ioe(){if(nz)return ib;nz=1;var t=noe(),e=Vg(),n=mq();function r(h){var g="https://react.dev/errors/"+h;if(1re||(h.current=ie[re],ie[re]=null,re--)}function Z(h,g){re++,ie[re]=h.current,h.current=g}var ne=z(null),he=z(null),fe=z(null),le=z(null);function Ee(h,g){switch(Z(fe,g),Z(he,h),Z(ne,null),g.nodeType){case 9:case 11:h=(h=g.documentElement)&&(h=h.namespaceURI)?xU(h):0;break;default:if(h=g.tagName,g=g.namespaceURI)g=xU(g),h=bU(g,h);else switch(h){case"svg":h=1;break;case"math":h=2;break;default:h=0}}V(ne),Z(ne,h)}function me(){V(ne),V(he),V(fe)}function we(h){h.memoizedState!==null&&Z(le,h);var g=ne.current,_=bU(g,h.type);g!==_&&(Z(he,h),Z(ne,_))}function De(h){he.current===h&&(V(ne),V(he)),le.current===h&&(V(le),Jx._currentValue=J)}var ee,Qe;function B(h){if(ee===void 0)try{throw Error()}catch(_){var g=_.stack.trim().match(/\n( *(at )?)/);ee=g&&g[1]||"",Qe=-1<_.stack.indexOf(` +function Yse(t,e){for(var n=0;nr[i]})}}}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 i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();var c_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fl(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var $A={exports:{}},rb={};var KU;function Zse(){if(KU)return rb;KU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,a){var o=null;if(a!==void 0&&(o=""+a),i.key!==void 0&&(o=""+i.key),"key"in i){a={};for(var l in i)l!=="key"&&(a[l]=i[l])}else a=i;return i=a.ref,{$$typeof:t,type:r,key:o,ref:i!==void 0?i:null,props:a}}return rb.Fragment=e,rb.jsx=n,rb.jsxs=n,rb}var XU;function Qse(){return XU||(XU=1,$A.exports=Zse()),$A.exports}var s=Qse(),HA={exports:{}},xn={};var YU;function Jse(){if(YU)return xn;YU=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),m=Symbol.iterator;function p(z){return z===null||typeof z!="object"?null:(z=m&&z[m]||z["@@iterator"],typeof z=="function"?z:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,x={};function v(z,V,Z){this.props=z,this.context=V,this.refs=x,this.updater=Z||b}v.prototype.isReactComponent={},v.prototype.setState=function(z,V){if(typeof z!="object"&&typeof z!="function"&&z!=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,z,V,"setState")},v.prototype.forceUpdate=function(z){this.updater.enqueueForceUpdate(this,z,"forceUpdate")};function S(){}S.prototype=v.prototype;function M(z,V,Z){this.props=z,this.context=V,this.refs=x,this.updater=Z||b}var N=M.prototype=new S;N.constructor=M,y(N,v.prototype),N.isPureReactComponent=!0;var A=Array.isArray;function k(){}var C={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function T(z,V,Z){var ne=Z.ref;return{$$typeof:t,type:z,key:V,ref:ne!==void 0?ne:null,props:Z}}function R(z,V){return T(z.type,V,z.props)}function U(z){return typeof z=="object"&&z!==null&&z.$$typeof===t}function O(z){var V={"=":"=0",":":"=2"};return"$"+z.replace(/[=:]/g,function(Z){return V[Z]})}var q=/\/+/g;function j(z,V){return typeof z=="object"&&z!==null&&z.key!=null?O(""+z.key):V.toString(36)}function W(z){switch(z.status){case"fulfilled":return z.value;case"rejected":throw z.reason;default:switch(typeof z.status=="string"?z.then(k,k):(z.status="pending",z.then(function(V){z.status==="pending"&&(z.status="fulfilled",z.value=V)},function(V){z.status==="pending"&&(z.status="rejected",z.reason=V)})),z.status){case"fulfilled":return z.value;case"rejected":throw z.reason}}throw z}function K(z,V,Z,ne,he){var fe=typeof z;(fe==="undefined"||fe==="boolean")&&(z=null);var le=!1;if(z===null)le=!0;else switch(fe){case"bigint":case"string":case"number":le=!0;break;case"object":switch(z.$$typeof){case t:case e:le=!0;break;case d:return le=z._init,K(le(z._payload),V,Z,ne,he)}}if(le)return he=he(z),le=ne===""?"."+j(z,0):ne,A(he)?(Z="",le!=null&&(Z=le.replace(q,"$&/")+"/"),K(he,V,Z,"",function(we){return we})):he!=null&&(U(he)&&(he=R(he,Z+(he.key==null||z&&z.key===he.key?"":(""+he.key).replace(q,"$&/")+"/")+le)),V.push(he)),1;le=0;var Ee=ne===""?".":ne+":";if(A(z))for(var me=0;me>>1,re=K[ie];if(0>>1;iei(Z,J))nei(he,Z)?(K[ie]=he,K[ne]=J,ie=ne):(K[ie]=Z,K[V]=J,ie=V);else if(nei(he,J))K[ie]=he,K[ne]=J,ie=ne;else break e}}return G}function i(K,G){var J=K.sortIndex-G.sortIndex;return J!==0?J:K.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 o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],u=[],d=1,f=null,m=3,p=!1,b=!1,y=!1,x=!1,v=typeof setTimeout=="function"?setTimeout:null,S=typeof clearTimeout=="function"?clearTimeout:null,M=typeof setImmediate<"u"?setImmediate:null;function N(K){for(var G=n(u);G!==null;){if(G.callback===null)r(u);else if(G.startTime<=K)r(u),G.sortIndex=G.expirationTime,e(c,G);else break;G=n(u)}}function A(K){if(y=!1,N(K),!b)if(n(c)!==null)b=!0,k||(k=!0,O());else{var G=n(u);G!==null&&W(A,G.startTime-K)}}var k=!1,C=-1,D=5,T=-1;function R(){return x?!0:!(t.unstable_now()-TK&&R());){var ie=f.callback;if(typeof ie=="function"){f.callback=null,m=f.priorityLevel;var re=ie(f.expirationTime<=K);if(K=t.unstable_now(),typeof re=="function"){f.callback=re,N(K),G=!0;break t}f===n(c)&&r(c),N(K)}else r(c);f=n(c)}if(f!==null)G=!0;else{var z=n(u);z!==null&&W(A,z.startTime-K),G=!1}}break e}finally{f=null,m=J,p=!1}G=void 0}}finally{G?O():k=!1}}}var O;if(typeof M=="function")O=function(){M(U)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,j=q.port2;q.port1.onmessage=U,O=function(){j.postMessage(null)}}else O=function(){v(U,0)};function W(K,G){C=v(function(){K(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(K){K.callback=null},t.unstable_forceFrameRate=function(K){0>K||125ie?(K.sortIndex=J,e(u,K),n(c)===null&&K===n(u)&&(y?(S(C),C=-1):y=!0,W(A,J-ie))):(K.sortIndex=re,e(c,K),b||p||(b=!0,k||(k=!0,O()))),K},t.unstable_shouldYield=R,t.unstable_wrapCallback=function(K){var G=m;return function(){var J=m;m=G;try{return K.apply(this,arguments)}finally{m=J}}}})(WA)),WA}var JU;function noe(){return JU||(JU=1,GA.exports=toe()),GA.exports}var qA={exports:{}},Ea={};var ez;function roe(){if(ez)return Ea;ez=1;var t=Vg();function e(c){var u="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),qA.exports=roe(),qA.exports}var nz;function ioe(){if(nz)return ib;nz=1;var t=noe(),e=Vg(),n=mq();function r(h){var g="https://react.dev/errors/"+h;if(1re||(h.current=ie[re],ie[re]=null,re--)}function Z(h,g){re++,ie[re]=h.current,h.current=g}var ne=z(null),he=z(null),fe=z(null),le=z(null);function Ee(h,g){switch(Z(fe,g),Z(he,h),Z(ne,null),g.nodeType){case 9:case 11:h=(h=g.documentElement)&&(h=h.namespaceURI)?xU(h):0;break;default:if(h=g.tagName,g=g.namespaceURI)g=xU(g),h=bU(g,h);else switch(h){case"svg":h=1;break;case"math":h=2;break;default:h=0}}V(ne),Z(ne,h)}function me(){V(ne),V(he),V(fe)}function we(h){h.memoizedState!==null&&Z(le,h);var g=ne.current,_=bU(g,h.type);g!==_&&(Z(he,h),Z(ne,_))}function De(h){he.current===h&&(V(ne),V(he)),le.current===h&&(V(le),Jx._currentValue=J)}var ee,Qe;function B(h){if(ee===void 0)try{throw Error()}catch(_){var g=_.stack.trim().match(/\n( *(at )?)/);ee=g&&g[1]||"",Qe=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` -`+ee+h+Qe}var te=!1;function Y(h,g){if(!h||te)return"";te=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var E={DetermineComponentFrameRoot:function(){try{if(g){var yt=function(){throw Error()};if(Object.defineProperty(yt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(yt,[])}catch(lt){var st=lt}Reflect.construct(h,[],yt)}else{try{yt.call()}catch(lt){st=lt}h.call(yt.prototype)}}else{try{throw Error()}catch(lt){st=lt}(yt=h())&&typeof yt.catch=="function"&&yt.catch(function(){})}}catch(lt){if(lt&&st&&typeof lt.stack=="string")return[lt.stack,st.stack]}return[null,null]}};E.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(E.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(E.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var I=E.DetermineComponentFrameRoot(),Q=I[0],ge=I[1];if(Q&&ge){var Re=Q.split(` -`),at=ge.split(` -`);for(P=E=0;EP||Re[E]!==at[P]){var ft=` -`+Re[E].replace(" at new "," at ");return h.displayName&&ft.includes("")&&(ft=ft.replace("",h.displayName)),ft}while(1<=E&&0<=P);break}}}finally{te=!1,Error.prepareStackTrace=_}return(_=h?h.displayName||h.name:"")?B(_):""}function H(h,g){switch(h.tag){case 26:case 27:case 5:return B(h.type);case 16:return B("Lazy");case 13:return h.child!==g&&g!==null?B("Suspense Fallback"):B("Suspense");case 19:return B("SuspenseList");case 0:case 15:return Y(h.type,!1);case 11:return Y(h.type.render,!1);case 1:return Y(h.type,!0);case 31:return B("Activity");default:return""}}function F(h){try{var g="",_=null;do g+=H(h,_),_=h,h=h.return;while(h);return g}catch(E){return` +`+ee+h+Qe}var te=!1;function Y(h,g){if(!h||te)return"";te=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var E={DetermineComponentFrameRoot:function(){try{if(g){var bt=function(){throw Error()};if(Object.defineProperty(bt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(bt,[])}catch(ct){var ot=ct}Reflect.construct(h,[],bt)}else{try{bt.call()}catch(ct){ot=ct}h.call(bt.prototype)}}else{try{throw Error()}catch(ct){ot=ct}(bt=h())&&typeof bt.catch=="function"&&bt.catch(function(){})}}catch(ct){if(ct&&ot&&typeof ct.stack=="string")return[ct.stack,ot.stack]}return[null,null]}};E.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(E.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(E.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var I=E.DetermineComponentFrameRoot(),Q=I[0],ge=I[1];if(Q&&ge){var Re=Q.split(` +`),st=ge.split(` +`);for(P=E=0;EP||Re[E]!==st[P]){var mt=` +`+Re[E].replace(" at new "," at ");return h.displayName&&mt.includes("")&&(mt=mt.replace("",h.displayName)),mt}while(1<=E&&0<=P);break}}}finally{te=!1,Error.prepareStackTrace=_}return(_=h?h.displayName||h.name:"")?B(_):""}function H(h,g){switch(h.tag){case 26:case 27:case 5:return B(h.type);case 16:return B("Lazy");case 13:return h.child!==g&&g!==null?B("Suspense Fallback"):B("Suspense");case 19:return B("SuspenseList");case 0:case 15:return Y(h.type,!1);case 11:return Y(h.type.render,!1);case 1:return Y(h.type,!0);case 31:return B("Activity");default:return""}}function F(h){try{var g="",_=null;do g+=H(h,_),_=h,h=h.return;while(h);return g}catch(E){return` Error generating stack: `+E.message+` -`+E.stack}}var de=Object.prototype.hasOwnProperty,Ae=t.unstable_scheduleCallback,Le=t.unstable_cancelCallback,Se=t.unstable_shouldYield,$=t.unstable_requestPaint,L=t.unstable_now,X=t.unstable_getCurrentPriorityLevel,xe=t.unstable_ImmediatePriority,ve=t.unstable_UserBlockingPriority,ae=t.unstable_NormalPriority,Te=t.unstable_LowPriority,Pe=t.unstable_IdlePriority,Xe=t.log,Je=t.unstable_setDisableYieldValue,Ze=null,oe=null;function be(h){if(typeof Xe=="function"&&Je(h),oe&&typeof oe.setStrictMode=="function")try{oe.setStrictMode(Ze,h)}catch{}}var ke=Math.clz32?Math.clz32:se,$e=Math.log,ot=Math.LN2;function se(h){return h>>>=0,h===0?32:31-($e(h)/ot|0)|0}var Ve=256,ye=262144,Ue=4194304;function Oe(h){var g=h&42;if(g!==0)return g;switch(h&-h){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 h&261888;case 262144:case 524288:case 1048576:case 2097152:return h&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return h&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return h}}function Ne(h,g,_){var E=h.pendingLanes;if(E===0)return 0;var P=0,I=h.suspendedLanes,Q=h.pingedLanes;h=h.warmLanes;var ge=E&134217727;return ge!==0?(E=ge&~I,E!==0?P=Oe(E):(Q&=ge,Q!==0?P=Oe(Q):_||(_=ge&~h,_!==0&&(P=Oe(_))))):(ge=E&~I,ge!==0?P=Oe(ge):Q!==0?P=Oe(Q):_||(_=E&~h,_!==0&&(P=Oe(_)))),P===0?0:g!==0&&g!==P&&(g&I)===0&&(I=P&-P,_=g&-g,I>=_||I===32&&(_&4194048)!==0)?g:P}function ze(h,g){return(h.pendingLanes&~(h.suspendedLanes&~h.pingedLanes)&g)===0}function xt(h,g){switch(h){case 1:case 2:case 4:case 8:case 64:return g+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 g+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 Rt(){var h=Ue;return Ue<<=1,(Ue&62914560)===0&&(Ue=4194304),h}function pt(h){for(var g=[],_=0;31>_;_++)g.push(h);return g}function sn(h,g){h.pendingLanes|=g,g!==268435456&&(h.suspendedLanes=0,h.pingedLanes=0,h.warmLanes=0)}function Ot(h,g,_,E,P,I){var Q=h.pendingLanes;h.pendingLanes=_,h.suspendedLanes=0,h.pingedLanes=0,h.warmLanes=0,h.expiredLanes&=_,h.entangledLanes&=_,h.errorRecoveryDisabledLanes&=_,h.shellSuspendCounter=0;var ge=h.entanglements,Re=h.expirationTimes,at=h.hiddenUpdates;for(_=Q&~_;0<_;){var ft=31-ke(_),yt=1<"u")return null;try{return h.activeElement||h.body}catch{return h.body}}var tn=/[\n"\\]/g;function Yt(h){return h.replace(tn,function(g){return"\\"+g.charCodeAt(0).toString(16)+" "})}function xn(h,g,_,E,P,I,Q,ge){h.name="",Q!=null&&typeof Q!="function"&&typeof Q!="symbol"&&typeof Q!="boolean"?h.type=Q:h.removeAttribute("type"),g!=null?Q==="number"?(g===0&&h.value===""||h.value!=g)&&(h.value=""+Zt(g)):h.value!==""+Zt(g)&&(h.value=""+Zt(g)):Q!=="submit"&&Q!=="reset"||h.removeAttribute("value"),g!=null?na(h,Q,Zt(g)):_!=null?na(h,Q,Zt(_)):E!=null&&h.removeAttribute("value"),P==null&&I!=null&&(h.defaultChecked=!!I),P!=null&&(h.checked=P&&typeof P!="function"&&typeof P!="symbol"),ge!=null&&typeof ge!="function"&&typeof ge!="symbol"&&typeof ge!="boolean"?h.name=""+Zt(ge):h.removeAttribute("name")}function rs(h,g,_,E,P,I,Q,ge){if(I!=null&&typeof I!="function"&&typeof I!="symbol"&&typeof I!="boolean"&&(h.type=I),g!=null||_!=null){if(!(I!=="submit"&&I!=="reset"||g!=null)){At(h);return}_=_!=null?""+Zt(_):"",g=g!=null?""+Zt(g):_,ge||g===h.value||(h.value=g),h.defaultValue=g}E=E??P,E=typeof E!="function"&&typeof E!="symbol"&&!!E,h.checked=ge?h.checked:!!E,h.defaultChecked=!!E,Q!=null&&typeof Q!="function"&&typeof Q!="symbol"&&typeof Q!="boolean"&&(h.name=Q),At(h)}function na(h,g,_){g==="number"&&Pt(h.ownerDocument)===h||h.defaultValue===""+_||(h.defaultValue=""+_)}function Js(h,g,_,E){if(h=h.options,g){g={};for(var P=0;P<_.length;P++)g["$"+_[P]]=!0;for(_=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),HN=!1;if(fc)try{var xx={};Object.defineProperty(xx,"passive",{get:function(){HN=!0}}),window.addEventListener("test",xx,xx),window.removeEventListener("test",xx,xx)}catch{HN=!1}var Tu=null,VN=null,tv=null;function bI(){if(tv)return tv;var h,g=VN,_=g.length,E,P="value"in Tu?Tu.value:Tu.textContent,I=P.length;for(h=0;h<_&&g[h]===P[h];h++);var Q=_-h;for(E=1;E<=Q&&g[_-E]===P[I-E];E++);return tv=P.slice(h,1=vx),MI=" ",EI=!1;function NI(h,g){switch(h){case"keyup":return bae.indexOf(g.keyCode)!==-1;case"keydown":return g.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function AI(h){return h=h.detail,typeof h=="object"&&"data"in h?h.data:null}var xm=!1;function vae(h,g){switch(h){case"compositionend":return AI(g);case"keypress":return g.which!==32?null:(EI=!0,MI);case"textInput":return h=g.data,h===MI&&EI?null:h;default:return null}}function _ae(h,g){if(xm)return h==="compositionend"||!XN&&NI(h,g)?(h=bI(),tv=VN=Tu=null,xm=!1,h):null;switch(h){case"paste":return null;case"keypress":if(!(g.ctrlKey||g.altKey||g.metaKey)||g.ctrlKey&&g.altKey){if(g.char&&1=g)return{node:_,offset:g-h};h=E}e:{for(;_;){if(_.nextSibling){_=_.nextSibling;break e}_=_.parentNode}_=void 0}_=OI(_)}}function II(h,g){return h&&g?h===g?!0:h&&h.nodeType===3?!1:g&&g.nodeType===3?II(h,g.parentNode):"contains"in h?h.contains(g):h.compareDocumentPosition?!!(h.compareDocumentPosition(g)&16):!1:!1}function FI(h){h=h!=null&&h.ownerDocument!=null&&h.ownerDocument.defaultView!=null?h.ownerDocument.defaultView:window;for(var g=Pt(h.document);g instanceof h.HTMLIFrameElement;){try{var _=typeof g.contentWindow.location.href=="string"}catch{_=!1}if(_)h=g.contentWindow;else break;g=Pt(h.document)}return g}function QN(h){var g=h&&h.nodeName&&h.nodeName.toLowerCase();return g&&(g==="input"&&(h.type==="text"||h.type==="search"||h.type==="tel"||h.type==="url"||h.type==="password")||g==="textarea"||h.contentEditable==="true")}var Cae=fc&&"documentMode"in document&&11>=document.documentMode,bm=null,JN=null,Mx=null,e2=!1;function UI(h,g,_){var E=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;e2||bm==null||bm!==Pt(E)||(E=bm,"selectionStart"in E&&QN(E)?E={start:E.selectionStart,end:E.selectionEnd}:(E=(E.ownerDocument&&E.ownerDocument.defaultView||window).getSelection(),E={anchorNode:E.anchorNode,anchorOffset:E.anchorOffset,focusNode:E.focusNode,focusOffset:E.focusOffset}),Mx&&Sx(Mx,E)||(Mx=E,E=Kv(JN,"onSelect"),0>=Q,P-=Q,vl=1<<32-ke(g)+P|_<_n?(Ln=Xt,Xt=null):Ln=Xt.sibling;var Gn=st(Ye,Xt,it[_n],gt);if(Gn===null){Xt===null&&(Xt=Ln);break}h&&Xt&&Gn.alternate===null&&g(Ye,Xt),Ie=I(Gn,Ie,_n),Vn===null?Jt=Gn:Vn.sibling=Gn,Vn=Gn,Xt=Ln}if(_n===it.length)return _(Ye,Xt),Fn&&pc(Ye,_n),Jt;if(Xt===null){for(;_n_n?(Ln=Xt,Xt=null):Ln=Xt.sibling;var Yu=st(Ye,Xt,Gn.value,gt);if(Yu===null){Xt===null&&(Xt=Ln);break}h&&Xt&&Yu.alternate===null&&g(Ye,Xt),Ie=I(Yu,Ie,_n),Vn===null?Jt=Yu:Vn.sibling=Yu,Vn=Yu,Xt=Ln}if(Gn.done)return _(Ye,Xt),Fn&&pc(Ye,_n),Jt;if(Xt===null){for(;!Gn.done;_n++,Gn=it.next())Gn=yt(Ye,Gn.value,gt),Gn!==null&&(Ie=I(Gn,Ie,_n),Vn===null?Jt=Gn:Vn.sibling=Gn,Vn=Gn);return Fn&&pc(Ye,_n),Jt}for(Xt=E(Xt);!Gn.done;_n++,Gn=it.next())Gn=lt(Xt,Ye,_n,Gn.value,gt),Gn!==null&&(h&&Gn.alternate!==null&&Xt.delete(Gn.key===null?_n:Gn.key),Ie=I(Gn,Ie,_n),Vn===null?Jt=Gn:Vn.sibling=Gn,Vn=Gn);return h&&Xt.forEach(function(Xse){return g(Ye,Xse)}),Fn&&pc(Ye,_n),Jt}function ur(Ye,Ie,it,gt){if(typeof it=="object"&&it!==null&&it.type===y&&it.key===null&&(it=it.props.children),typeof it=="object"&&it!==null){switch(it.$$typeof){case p:e:{for(var Jt=it.key;Ie!==null;){if(Ie.key===Jt){if(Jt=it.type,Jt===y){if(Ie.tag===7){_(Ye,Ie.sibling),gt=P(Ie,it.props.children),gt.return=Ye,Ye=gt;break e}}else if(Ie.elementType===Jt||typeof Jt=="object"&&Jt!==null&&Jt.$$typeof===D&&Ah(Jt)===Ie.type){_(Ye,Ie.sibling),gt=P(Ie,it.props),kx(gt,it),gt.return=Ye,Ye=gt;break e}_(Ye,Ie);break}else g(Ye,Ie);Ie=Ie.sibling}it.type===y?(gt=wh(it.props.children,Ye.mode,gt,it.key),gt.return=Ye,Ye=gt):(gt=dv(it.type,it.key,it.props,null,Ye.mode,gt),kx(gt,it),gt.return=Ye,Ye=gt)}return Q(Ye);case b:e:{for(Jt=it.key;Ie!==null;){if(Ie.key===Jt)if(Ie.tag===4&&Ie.stateNode.containerInfo===it.containerInfo&&Ie.stateNode.implementation===it.implementation){_(Ye,Ie.sibling),gt=P(Ie,it.children||[]),gt.return=Ye,Ye=gt;break e}else{_(Ye,Ie);break}else g(Ye,Ie);Ie=Ie.sibling}gt=o2(it,Ye.mode,gt),gt.return=Ye,Ye=gt}return Q(Ye);case D:return it=Ah(it),ur(Ye,Ie,it,gt)}if(W(it))return Wt(Ye,Ie,it,gt);if(O(it)){if(Jt=O(it),typeof Jt!="function")throw Error(r(150));return it=Jt.call(it),on(Ye,Ie,it,gt)}if(typeof it.then=="function")return ur(Ye,Ie,bv(it),gt);if(it.$$typeof===M)return ur(Ye,Ie,mv(Ye,it),gt);yv(Ye,it)}return typeof it=="string"&&it!==""||typeof it=="number"||typeof it=="bigint"?(it=""+it,Ie!==null&&Ie.tag===6?(_(Ye,Ie.sibling),gt=P(Ie,it),gt.return=Ye,Ye=gt):(_(Ye,Ie),gt=s2(it,Ye.mode,gt),gt.return=Ye,Ye=gt),Q(Ye)):_(Ye,Ie)}return function(Ye,Ie,it,gt){try{Cx=0;var Jt=ur(Ye,Ie,it,gt);return Cm=null,Jt}catch(Xt){if(Xt===Tm||Xt===gv)throw Xt;var Vn=Ts(29,Xt,null,Ye.mode);return Vn.lanes=gt,Vn.return=Ye,Vn}}}var Ch=lF(!0),cF=lF(!1),Ru=!1;function y2(h){h.updateQueue={baseState:h.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function v2(h,g){h=h.updateQueue,g.updateQueue===h&&(g.updateQueue={baseState:h.baseState,firstBaseUpdate:h.firstBaseUpdate,lastBaseUpdate:h.lastBaseUpdate,shared:h.shared,callbacks:null})}function Du(h){return{lane:h,tag:0,payload:null,callback:null,next:null}}function Ou(h,g,_){var E=h.updateQueue;if(E===null)return null;if(E=E.shared,(Xn&2)!==0){var P=E.pending;return P===null?g.next=g:(g.next=P.next,P.next=g),E.pending=g,g=uv(h),WI(h,null,_),g}return cv(h,E,g,_),uv(h)}function jx(h,g,_){if(g=g.updateQueue,g!==null&&(g=g.shared,(_&4194048)!==0)){var E=g.lanes;E&=h.pendingLanes,_|=E,g.lanes=_,ht(h,_)}}function _2(h,g){var _=h.updateQueue,E=h.alternate;if(E!==null&&(E=E.updateQueue,_===E)){var P=null,I=null;if(_=_.firstBaseUpdate,_!==null){do{var Q={lane:_.lane,tag:_.tag,payload:_.payload,callback:null,next:null};I===null?P=I=Q:I=I.next=Q,_=_.next}while(_!==null);I===null?P=I=g:I=I.next=g}else P=I=g;_={baseState:E.baseState,firstBaseUpdate:P,lastBaseUpdate:I,shared:E.shared,callbacks:E.callbacks},h.updateQueue=_;return}h=_.lastBaseUpdate,h===null?_.firstBaseUpdate=g:h.next=g,_.lastBaseUpdate=g}var w2=!1;function Px(){if(w2){var h=Am;if(h!==null)throw h}}function Rx(h,g,_,E){w2=!1;var P=h.updateQueue;Ru=!1;var I=P.firstBaseUpdate,Q=P.lastBaseUpdate,ge=P.shared.pending;if(ge!==null){P.shared.pending=null;var Re=ge,at=Re.next;Re.next=null,Q===null?I=at:Q.next=at,Q=Re;var ft=h.alternate;ft!==null&&(ft=ft.updateQueue,ge=ft.lastBaseUpdate,ge!==Q&&(ge===null?ft.firstBaseUpdate=at:ge.next=at,ft.lastBaseUpdate=Re))}if(I!==null){var yt=P.baseState;Q=0,ft=at=Re=null,ge=I;do{var st=ge.lane&-536870913,lt=st!==ge.lane;if(lt?(On&st)===st:(E&st)===st){st!==0&&st===Nm&&(w2=!0),ft!==null&&(ft=ft.next={lane:0,tag:ge.tag,payload:ge.payload,callback:null,next:null});e:{var Wt=h,on=ge;st=g;var ur=_;switch(on.tag){case 1:if(Wt=on.payload,typeof Wt=="function"){yt=Wt.call(ur,yt,st);break e}yt=Wt;break e;case 3:Wt.flags=Wt.flags&-65537|128;case 0:if(Wt=on.payload,st=typeof Wt=="function"?Wt.call(ur,yt,st):Wt,st==null)break e;yt=f({},yt,st);break e;case 2:Ru=!0}}st=ge.callback,st!==null&&(h.flags|=64,lt&&(h.flags|=8192),lt=P.callbacks,lt===null?P.callbacks=[st]:lt.push(st))}else lt={lane:st,tag:ge.tag,payload:ge.payload,callback:ge.callback,next:null},ft===null?(at=ft=lt,Re=yt):ft=ft.next=lt,Q|=st;if(ge=ge.next,ge===null){if(ge=P.shared.pending,ge===null)break;lt=ge,ge=lt.next,lt.next=null,P.lastBaseUpdate=lt,P.shared.pending=null}}while(!0);ft===null&&(Re=yt),P.baseState=Re,P.firstBaseUpdate=at,P.lastBaseUpdate=ft,I===null&&(P.shared.lanes=0),zu|=Q,h.lanes=Q,h.memoizedState=yt}}function uF(h,g){if(typeof h!="function")throw Error(r(191,h));h.call(g)}function dF(h,g){var _=h.callbacks;if(_!==null)for(h.callbacks=null,h=0;h<_.length;h++)uF(_[h],g)}var km=z(null),vv=z(0);function hF(h,g){h=Nc,Z(vv,h),Z(km,g),Nc=h|g.baseLanes}function S2(){Z(vv,Nc),Z(km,km.current)}function M2(){Nc=vv.current,V(km),V(vv)}var Cs=z(null),ao=null;function Lu(h){var g=h.alternate;Z(si,si.current&1),Z(Cs,h),ao===null&&(g===null||km.current!==null||g.memoizedState!==null)&&(ao=h)}function E2(h){Z(si,si.current),Z(Cs,h),ao===null&&(ao=h)}function fF(h){h.tag===22?(Z(si,si.current),Z(Cs,h),ao===null&&(ao=h)):Iu()}function Iu(){Z(si,si.current),Z(Cs,Cs.current)}function ks(h){V(Cs),ao===h&&(ao=null),V(si)}var si=z(0);function _v(h){for(var g=h;g!==null;){if(g.tag===13){var _=g.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||jA(_)||PA(_)))return g}else if(g.tag===19&&(g.memoizedProps.revealOrder==="forwards"||g.memoizedProps.revealOrder==="backwards"||g.memoizedProps.revealOrder==="unstable_legacy-backwards"||g.memoizedProps.revealOrder==="together")){if((g.flags&128)!==0)return g}else if(g.child!==null){g.child.return=g,g=g.child;continue}if(g===h)break;for(;g.sibling===null;){if(g.return===null||g.return===h)return null;g=g.return}g.sibling.return=g.return,g=g.sibling}return null}var bc=0,bn=null,lr=null,hi=null,wv=!1,jm=!1,kh=!1,Sv=0,Dx=0,Pm=null,Uae=0;function qr(){throw Error(r(321))}function N2(h,g){if(g===null)return!1;for(var _=0;_I?I:8;var Q=K.T,ge={};K.T=ge,B2(h,!1,g,_);try{var Re=P(),at=K.S;if(at!==null&&at(ge,Re),Re!==null&&typeof Re=="object"&&typeof Re.then=="function"){var ft=Fae(Re,E);Lx(h,g,ft,Rs(h))}else Lx(h,g,E,Rs(h))}catch(yt){Lx(h,g,{then:function(){},status:"rejected",reason:yt},Rs())}finally{G.p=I,Q!==null&&ge.types!==null&&(Q.types=ge.types),K.T=Q}}function Vae(){}function U2(h,g,_,E){if(h.tag!==5)throw Error(r(476));var P=HF(h).queue;$F(h,P,g,J,_===null?Vae:function(){return VF(h),_(E)})}function HF(h){var g=h.memoizedState;if(g!==null)return g;g={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yc,lastRenderedState:J},next:null};var _={};return g.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yc,lastRenderedState:_},next:null},h.memoizedState=g,h=h.alternate,h!==null&&(h.memoizedState=g),g}function VF(h){var g=HF(h);g.next===null&&(g=h.alternate.memoizedState),Lx(h,g.next.queue,{},Rs())}function z2(){return oa(Jx)}function GF(){return oi().memoizedState}function WF(){return oi().memoizedState}function Gae(h){for(var g=h.return;g!==null;){switch(g.tag){case 24:case 3:var _=Rs();h=Du(_);var E=Ou(g,h,_);E!==null&&(us(E,g,_),jx(E,g,_)),g={cache:p2()},h.payload=g;return}g=g.return}}function Wae(h,g,_){var E=Rs();_={lane:E,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},Cv(h)?KF(g,_):(_=i2(h,g,_,E),_!==null&&(us(_,h,E),XF(_,g,E)))}function qF(h,g,_){var E=Rs();Lx(h,g,_,E)}function Lx(h,g,_,E){var P={lane:E,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if(Cv(h))KF(g,P);else{var I=h.alternate;if(h.lanes===0&&(I===null||I.lanes===0)&&(I=g.lastRenderedReducer,I!==null))try{var Q=g.lastRenderedState,ge=I(Q,_);if(P.hasEagerState=!0,P.eagerState=ge,As(ge,Q))return cv(h,g,P,0),br===null&&lv(),!1}catch{}if(_=i2(h,g,P,E),_!==null)return us(_,h,E),XF(_,g,E),!0}return!1}function B2(h,g,_,E){if(E={lane:2,revertLane:yA(),gesture:null,action:E,hasEagerState:!1,eagerState:null,next:null},Cv(h)){if(g)throw Error(r(479))}else g=i2(h,_,E,2),g!==null&&us(g,h,2)}function Cv(h){var g=h.alternate;return h===bn||g!==null&&g===bn}function KF(h,g){jm=wv=!0;var _=h.pending;_===null?g.next=g:(g.next=_.next,_.next=g),h.pending=g}function XF(h,g,_){if((_&4194048)!==0){var E=g.lanes;E&=h.pendingLanes,_|=E,g.lanes=_,ht(h,_)}}var Ix={readContext:oa,use:Ev,useCallback:qr,useContext:qr,useEffect:qr,useImperativeHandle:qr,useLayoutEffect:qr,useInsertionEffect:qr,useMemo:qr,useReducer:qr,useRef:qr,useState:qr,useDebugValue:qr,useDeferredValue:qr,useTransition:qr,useSyncExternalStore:qr,useId:qr,useHostTransitionStatus:qr,useFormState:qr,useActionState:qr,useOptimistic:qr,useMemoCache:qr,useCacheRefresh:qr};Ix.useEffectEvent=qr;var YF={readContext:oa,use:Ev,useCallback:function(h,g){return $a().memoizedState=[h,g===void 0?null:g],h},useContext:oa,useEffect:RF,useImperativeHandle:function(h,g,_){_=_!=null?_.concat([h]):null,Av(4194308,4,IF.bind(null,g,h),_)},useLayoutEffect:function(h,g){return Av(4194308,4,h,g)},useInsertionEffect:function(h,g){Av(4,2,h,g)},useMemo:function(h,g){var _=$a();g=g===void 0?null:g;var E=h();if(kh){be(!0);try{h()}finally{be(!1)}}return _.memoizedState=[E,g],E},useReducer:function(h,g,_){var E=$a();if(_!==void 0){var P=_(g);if(kh){be(!0);try{_(g)}finally{be(!1)}}}else P=g;return E.memoizedState=E.baseState=P,h={pending:null,lanes:0,dispatch:null,lastRenderedReducer:h,lastRenderedState:P},E.queue=h,h=h.dispatch=Wae.bind(null,bn,h),[E.memoizedState,h]},useRef:function(h){var g=$a();return h={current:h},g.memoizedState=h},useState:function(h){h=D2(h);var g=h.queue,_=qF.bind(null,bn,g);return g.dispatch=_,[h.memoizedState,_]},useDebugValue:I2,useDeferredValue:function(h,g){var _=$a();return F2(_,h,g)},useTransition:function(){var h=D2(!1);return h=$F.bind(null,bn,h.queue,!0,!1),$a().memoizedState=h,[!1,h]},useSyncExternalStore:function(h,g,_){var E=bn,P=$a();if(Fn){if(_===void 0)throw Error(r(407));_=_()}else{if(_=g(),br===null)throw Error(r(349));(On&127)!==0||xF(E,g,_)}P.memoizedState=_;var I={value:_,getSnapshot:g};return P.queue=I,RF(yF.bind(null,E,I,h),[h]),E.flags|=2048,Rm(9,{destroy:void 0},bF.bind(null,E,I,_,g),null),_},useId:function(){var h=$a(),g=br.identifierPrefix;if(Fn){var _=_l,E=vl;_=(E&~(1<<32-ke(E)-1)).toString(32)+_,g="_"+g+"R_"+_,_=Sv++,0<_&&(g+="H"+_.toString(32)),g+="_"}else _=Uae++,g="_"+g+"r_"+_.toString(32)+"_";return h.memoizedState=g},useHostTransitionStatus:z2,useFormState:TF,useActionState:TF,useOptimistic:function(h){var g=$a();g.memoizedState=g.baseState=h;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return g.queue=_,g=B2.bind(null,bn,!0,_),_.dispatch=g,[h,g]},useMemoCache:j2,useCacheRefresh:function(){return $a().memoizedState=Gae.bind(null,bn)},useEffectEvent:function(h){var g=$a(),_={impl:h};return g.memoizedState=_,function(){if((Xn&2)!==0)throw Error(r(440));return _.impl.apply(void 0,arguments)}}},$2={readContext:oa,use:Ev,useCallback:UF,useContext:oa,useEffect:L2,useImperativeHandle:FF,useInsertionEffect:OF,useLayoutEffect:LF,useMemo:zF,useReducer:Nv,useRef:PF,useState:function(){return Nv(yc)},useDebugValue:I2,useDeferredValue:function(h,g){var _=oi();return BF(_,lr.memoizedState,h,g)},useTransition:function(){var h=Nv(yc)[0],g=oi().memoizedState;return[typeof h=="boolean"?h:Ox(h),g]},useSyncExternalStore:gF,useId:GF,useHostTransitionStatus:z2,useFormState:CF,useActionState:CF,useOptimistic:function(h,g){var _=oi();return wF(_,lr,h,g)},useMemoCache:j2,useCacheRefresh:WF};$2.useEffectEvent=DF;var ZF={readContext:oa,use:Ev,useCallback:UF,useContext:oa,useEffect:L2,useImperativeHandle:FF,useInsertionEffect:OF,useLayoutEffect:LF,useMemo:zF,useReducer:R2,useRef:PF,useState:function(){return R2(yc)},useDebugValue:I2,useDeferredValue:function(h,g){var _=oi();return lr===null?F2(_,h,g):BF(_,lr.memoizedState,h,g)},useTransition:function(){var h=R2(yc)[0],g=oi().memoizedState;return[typeof h=="boolean"?h:Ox(h),g]},useSyncExternalStore:gF,useId:GF,useHostTransitionStatus:z2,useFormState:jF,useActionState:jF,useOptimistic:function(h,g){var _=oi();return lr!==null?wF(_,lr,h,g):(_.baseState=h,[h,_.queue.dispatch])},useMemoCache:j2,useCacheRefresh:WF};ZF.useEffectEvent=DF;function H2(h,g,_,E){g=h.memoizedState,_=_(E,g),_=_==null?g:f({},g,_),h.memoizedState=_,h.lanes===0&&(h.updateQueue.baseState=_)}var V2={enqueueSetState:function(h,g,_){h=h._reactInternals;var E=Rs(),P=Du(E);P.payload=g,_!=null&&(P.callback=_),g=Ou(h,P,E),g!==null&&(us(g,h,E),jx(g,h,E))},enqueueReplaceState:function(h,g,_){h=h._reactInternals;var E=Rs(),P=Du(E);P.tag=1,P.payload=g,_!=null&&(P.callback=_),g=Ou(h,P,E),g!==null&&(us(g,h,E),jx(g,h,E))},enqueueForceUpdate:function(h,g){h=h._reactInternals;var _=Rs(),E=Du(_);E.tag=2,g!=null&&(E.callback=g),g=Ou(h,E,_),g!==null&&(us(g,h,_),jx(g,h,_))}};function QF(h,g,_,E,P,I,Q){return h=h.stateNode,typeof h.shouldComponentUpdate=="function"?h.shouldComponentUpdate(E,I,Q):g.prototype&&g.prototype.isPureReactComponent?!Sx(_,E)||!Sx(P,I):!0}function JF(h,g,_,E){h=g.state,typeof g.componentWillReceiveProps=="function"&&g.componentWillReceiveProps(_,E),typeof g.UNSAFE_componentWillReceiveProps=="function"&&g.UNSAFE_componentWillReceiveProps(_,E),g.state!==h&&V2.enqueueReplaceState(g,g.state,null)}function jh(h,g){var _=g;if("ref"in g){_={};for(var E in g)E!=="ref"&&(_[E]=g[E])}if(h=h.defaultProps){_===g&&(_=f({},_));for(var P in h)_[P]===void 0&&(_[P]=h[P])}return _}function e5(h){ov(h)}function t5(h){console.error(h)}function n5(h){ov(h)}function kv(h,g){try{var _=h.onUncaughtError;_(g.value,{componentStack:g.stack})}catch(E){setTimeout(function(){throw E})}}function r5(h,g,_){try{var E=h.onCaughtError;E(_.value,{componentStack:_.stack,errorBoundary:g.tag===1?g.stateNode:null})}catch(P){setTimeout(function(){throw P})}}function G2(h,g,_){return _=Du(_),_.tag=3,_.payload={element:null},_.callback=function(){kv(h,g)},_}function i5(h){return h=Du(h),h.tag=3,h}function a5(h,g,_,E){var P=_.type.getDerivedStateFromError;if(typeof P=="function"){var I=E.value;h.payload=function(){return P(I)},h.callback=function(){r5(g,_,E)}}var Q=_.stateNode;Q!==null&&typeof Q.componentDidCatch=="function"&&(h.callback=function(){r5(g,_,E),typeof P!="function"&&(Bu===null?Bu=new Set([this]):Bu.add(this));var ge=E.stack;this.componentDidCatch(E.value,{componentStack:ge!==null?ge:""})})}function qae(h,g,_,E,P){if(_.flags|=32768,E!==null&&typeof E=="object"&&typeof E.then=="function"){if(g=_.alternate,g!==null&&Em(g,_,P,!0),_=Cs.current,_!==null){switch(_.tag){case 31:case 13:return ao===null?$v():_.alternate===null&&Kr===0&&(Kr=3),_.flags&=-257,_.flags|=65536,_.lanes=P,E===xv?_.flags|=16384:(g=_.updateQueue,g===null?_.updateQueue=new Set([E]):g.add(E),gA(h,E,P)),!1;case 22:return _.flags|=65536,E===xv?_.flags|=16384:(g=_.updateQueue,g===null?(g={transitions:null,markerInstances:null,retryQueue:new Set([E])},_.updateQueue=g):(_=g.retryQueue,_===null?g.retryQueue=new Set([E]):_.add(E)),gA(h,E,P)),!1}throw Error(r(435,_.tag))}return gA(h,E,P),$v(),!1}if(Fn)return g=Cs.current,g!==null?((g.flags&65536)===0&&(g.flags|=256),g.flags|=65536,g.lanes=P,E!==u2&&(h=Error(r(422),{cause:E}),Nx(to(h,_)))):(E!==u2&&(g=Error(r(423),{cause:E}),Nx(to(g,_))),h=h.current.alternate,h.flags|=65536,P&=-P,h.lanes|=P,E=to(E,_),P=G2(h.stateNode,E,P),_2(h,P),Kr!==4&&(Kr=2)),!1;var I=Error(r(520),{cause:E});if(I=to(I,_),Gx===null?Gx=[I]:Gx.push(I),Kr!==4&&(Kr=2),g===null)return!0;E=to(E,_),_=g;do{switch(_.tag){case 3:return _.flags|=65536,h=P&-P,_.lanes|=h,h=G2(_.stateNode,E,h),_2(_,h),!1;case 1:if(g=_.type,I=_.stateNode,(_.flags&128)===0&&(typeof g.getDerivedStateFromError=="function"||I!==null&&typeof I.componentDidCatch=="function"&&(Bu===null||!Bu.has(I))))return _.flags|=65536,P&=-P,_.lanes|=P,P=i5(P),a5(P,h,_,E),_2(_,P),!1}_=_.return}while(_!==null);return!1}var W2=Error(r(461)),fi=!1;function la(h,g,_,E){g.child=h===null?cF(g,null,_,E):Ch(g,h.child,_,E)}function s5(h,g,_,E,P){_=_.render;var I=g.ref;if("ref"in E){var Q={};for(var ge in E)ge!=="ref"&&(Q[ge]=E[ge])}else Q=E;return Eh(g),E=A2(h,g,_,Q,I,P),ge=T2(),h!==null&&!fi?(C2(h,g,P),vc(h,g,P)):(Fn&&ge&&l2(g),g.flags|=1,la(h,g,E,P),g.child)}function o5(h,g,_,E,P){if(h===null){var I=_.type;return typeof I=="function"&&!a2(I)&&I.defaultProps===void 0&&_.compare===null?(g.tag=15,g.type=I,l5(h,g,I,E,P)):(h=dv(_.type,null,E,g,g.mode,P),h.ref=g.ref,h.return=g,g.child=h)}if(I=h.child,!eA(h,P)){var Q=I.memoizedProps;if(_=_.compare,_=_!==null?_:Sx,_(Q,E)&&h.ref===g.ref)return vc(h,g,P)}return g.flags|=1,h=mc(I,E),h.ref=g.ref,h.return=g,g.child=h}function l5(h,g,_,E,P){if(h!==null){var I=h.memoizedProps;if(Sx(I,E)&&h.ref===g.ref)if(fi=!1,g.pendingProps=E=I,eA(h,P))(h.flags&131072)!==0&&(fi=!0);else return g.lanes=h.lanes,vc(h,g,P)}return q2(h,g,_,E,P)}function c5(h,g,_,E){var P=E.children,I=h!==null?h.memoizedState:null;if(h===null&&g.stateNode===null&&(g.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),E.mode==="hidden"){if((g.flags&128)!==0){if(I=I!==null?I.baseLanes|_:_,h!==null){for(E=g.child=h.child,P=0;E!==null;)P=P|E.lanes|E.childLanes,E=E.sibling;E=P&~I}else E=0,g.child=null;return u5(h,g,I,_,E)}if((_&536870912)!==0)g.memoizedState={baseLanes:0,cachePool:null},h!==null&&pv(g,I!==null?I.cachePool:null),I!==null?hF(g,I):S2(),fF(g);else return E=g.lanes=536870912,u5(h,g,I!==null?I.baseLanes|_:_,_,E)}else I!==null?(pv(g,I.cachePool),hF(g,I),Iu(),g.memoizedState=null):(h!==null&&pv(g,null),S2(),Iu());return la(h,g,P,_),g.child}function Fx(h,g){return h!==null&&h.tag===22||g.stateNode!==null||(g.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),g.sibling}function u5(h,g,_,E,P){var I=x2();return I=I===null?null:{parent:di._currentValue,pool:I},g.memoizedState={baseLanes:_,cachePool:I},h!==null&&pv(g,null),S2(),fF(g),h!==null&&Em(h,g,E,!0),g.childLanes=P,null}function jv(h,g){return g=Rv({mode:g.mode,children:g.children},h.mode),g.ref=h.ref,h.child=g,g.return=h,g}function d5(h,g,_){return Ch(g,h.child,null,_),h=jv(g,g.pendingProps),h.flags|=2,ks(g),g.memoizedState=null,h}function Kae(h,g,_){var E=g.pendingProps,P=(g.flags&128)!==0;if(g.flags&=-129,h===null){if(Fn){if(E.mode==="hidden")return h=jv(g,E),g.lanes=536870912,Fx(null,h);if(E2(g),(h=Tr)?(h=SU(h,io),h=h!==null&&h.data==="&"?h:null,h!==null&&(g.memoizedState={dehydrated:h,treeContext:Cu!==null?{id:vl,overflow:_l}:null,retryLane:536870912,hydrationErrors:null},_=KI(h),_.return=g,g.child=_,sa=g,Tr=null)):h=null,h===null)throw ju(g);return g.lanes=536870912,null}return jv(g,E)}var I=h.memoizedState;if(I!==null){var Q=I.dehydrated;if(E2(g),P)if(g.flags&256)g.flags&=-257,g=d5(h,g,_);else if(g.memoizedState!==null)g.child=h.child,g.flags|=128,g=null;else throw Error(r(558));else if(fi||Em(h,g,_,!1),P=(_&h.childLanes)!==0,fi||P){if(E=br,E!==null&&(Q=qt(E,_),Q!==0&&Q!==I.retryLane))throw I.retryLane=Q,_h(h,Q),us(E,h,Q),W2;$v(),g=d5(h,g,_)}else h=I.treeContext,Tr=so(Q.nextSibling),sa=g,Fn=!0,ku=null,io=!1,h!==null&&ZI(g,h),g=jv(g,E),g.flags|=4096;return g}return h=mc(h.child,{mode:E.mode,children:E.children}),h.ref=g.ref,g.child=h,h.return=g,h}function Pv(h,g){var _=g.ref;if(_===null)h!==null&&h.ref!==null&&(g.flags|=4194816);else{if(typeof _!="function"&&typeof _!="object")throw Error(r(284));(h===null||h.ref!==_)&&(g.flags|=4194816)}}function q2(h,g,_,E,P){return Eh(g),_=A2(h,g,_,E,void 0,P),E=T2(),h!==null&&!fi?(C2(h,g,P),vc(h,g,P)):(Fn&&E&&l2(g),g.flags|=1,la(h,g,_,P),g.child)}function h5(h,g,_,E,P,I){return Eh(g),g.updateQueue=null,_=pF(g,E,_,P),mF(h),E=T2(),h!==null&&!fi?(C2(h,g,I),vc(h,g,I)):(Fn&&E&&l2(g),g.flags|=1,la(h,g,_,I),g.child)}function f5(h,g,_,E,P){if(Eh(g),g.stateNode===null){var I=_m,Q=_.contextType;typeof Q=="object"&&Q!==null&&(I=oa(Q)),I=new _(E,I),g.memoizedState=I.state!==null&&I.state!==void 0?I.state:null,I.updater=V2,g.stateNode=I,I._reactInternals=g,I=g.stateNode,I.props=E,I.state=g.memoizedState,I.refs={},y2(g),Q=_.contextType,I.context=typeof Q=="object"&&Q!==null?oa(Q):_m,I.state=g.memoizedState,Q=_.getDerivedStateFromProps,typeof Q=="function"&&(H2(g,_,Q,E),I.state=g.memoizedState),typeof _.getDerivedStateFromProps=="function"||typeof I.getSnapshotBeforeUpdate=="function"||typeof I.UNSAFE_componentWillMount!="function"&&typeof I.componentWillMount!="function"||(Q=I.state,typeof I.componentWillMount=="function"&&I.componentWillMount(),typeof I.UNSAFE_componentWillMount=="function"&&I.UNSAFE_componentWillMount(),Q!==I.state&&V2.enqueueReplaceState(I,I.state,null),Rx(g,E,I,P),Px(),I.state=g.memoizedState),typeof I.componentDidMount=="function"&&(g.flags|=4194308),E=!0}else if(h===null){I=g.stateNode;var ge=g.memoizedProps,Re=jh(_,ge);I.props=Re;var at=I.context,ft=_.contextType;Q=_m,typeof ft=="object"&&ft!==null&&(Q=oa(ft));var yt=_.getDerivedStateFromProps;ft=typeof yt=="function"||typeof I.getSnapshotBeforeUpdate=="function",ge=g.pendingProps!==ge,ft||typeof I.UNSAFE_componentWillReceiveProps!="function"&&typeof I.componentWillReceiveProps!="function"||(ge||at!==Q)&&JF(g,I,E,Q),Ru=!1;var st=g.memoizedState;I.state=st,Rx(g,E,I,P),Px(),at=g.memoizedState,ge||st!==at||Ru?(typeof yt=="function"&&(H2(g,_,yt,E),at=g.memoizedState),(Re=Ru||QF(g,_,Re,E,st,at,Q))?(ft||typeof I.UNSAFE_componentWillMount!="function"&&typeof I.componentWillMount!="function"||(typeof I.componentWillMount=="function"&&I.componentWillMount(),typeof I.UNSAFE_componentWillMount=="function"&&I.UNSAFE_componentWillMount()),typeof I.componentDidMount=="function"&&(g.flags|=4194308)):(typeof I.componentDidMount=="function"&&(g.flags|=4194308),g.memoizedProps=E,g.memoizedState=at),I.props=E,I.state=at,I.context=Q,E=Re):(typeof I.componentDidMount=="function"&&(g.flags|=4194308),E=!1)}else{I=g.stateNode,v2(h,g),Q=g.memoizedProps,ft=jh(_,Q),I.props=ft,yt=g.pendingProps,st=I.context,at=_.contextType,Re=_m,typeof at=="object"&&at!==null&&(Re=oa(at)),ge=_.getDerivedStateFromProps,(at=typeof ge=="function"||typeof I.getSnapshotBeforeUpdate=="function")||typeof I.UNSAFE_componentWillReceiveProps!="function"&&typeof I.componentWillReceiveProps!="function"||(Q!==yt||st!==Re)&&JF(g,I,E,Re),Ru=!1,st=g.memoizedState,I.state=st,Rx(g,E,I,P),Px();var lt=g.memoizedState;Q!==yt||st!==lt||Ru||h!==null&&h.dependencies!==null&&fv(h.dependencies)?(typeof ge=="function"&&(H2(g,_,ge,E),lt=g.memoizedState),(ft=Ru||QF(g,_,ft,E,st,lt,Re)||h!==null&&h.dependencies!==null&&fv(h.dependencies))?(at||typeof I.UNSAFE_componentWillUpdate!="function"&&typeof I.componentWillUpdate!="function"||(typeof I.componentWillUpdate=="function"&&I.componentWillUpdate(E,lt,Re),typeof I.UNSAFE_componentWillUpdate=="function"&&I.UNSAFE_componentWillUpdate(E,lt,Re)),typeof I.componentDidUpdate=="function"&&(g.flags|=4),typeof I.getSnapshotBeforeUpdate=="function"&&(g.flags|=1024)):(typeof I.componentDidUpdate!="function"||Q===h.memoizedProps&&st===h.memoizedState||(g.flags|=4),typeof I.getSnapshotBeforeUpdate!="function"||Q===h.memoizedProps&&st===h.memoizedState||(g.flags|=1024),g.memoizedProps=E,g.memoizedState=lt),I.props=E,I.state=lt,I.context=Re,E=ft):(typeof I.componentDidUpdate!="function"||Q===h.memoizedProps&&st===h.memoizedState||(g.flags|=4),typeof I.getSnapshotBeforeUpdate!="function"||Q===h.memoizedProps&&st===h.memoizedState||(g.flags|=1024),E=!1)}return I=E,Pv(h,g),E=(g.flags&128)!==0,I||E?(I=g.stateNode,_=E&&typeof _.getDerivedStateFromError!="function"?null:I.render(),g.flags|=1,h!==null&&E?(g.child=Ch(g,h.child,null,P),g.child=Ch(g,null,_,P)):la(h,g,_,P),g.memoizedState=I.state,h=g.child):h=vc(h,g,P),h}function m5(h,g,_,E){return Sh(),g.flags|=256,la(h,g,_,E),g.child}var K2={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function X2(h){return{baseLanes:h,cachePool:rF()}}function Y2(h,g,_){return h=h!==null?h.childLanes&~_:0,g&&(h|=Ps),h}function p5(h,g,_){var E=g.pendingProps,P=!1,I=(g.flags&128)!==0,Q;if((Q=I)||(Q=h!==null&&h.memoizedState===null?!1:(si.current&2)!==0),Q&&(P=!0,g.flags&=-129),Q=(g.flags&32)!==0,g.flags&=-33,h===null){if(Fn){if(P?Lu(g):Iu(),(h=Tr)?(h=SU(h,io),h=h!==null&&h.data!=="&"?h:null,h!==null&&(g.memoizedState={dehydrated:h,treeContext:Cu!==null?{id:vl,overflow:_l}:null,retryLane:536870912,hydrationErrors:null},_=KI(h),_.return=g,g.child=_,sa=g,Tr=null)):h=null,h===null)throw ju(g);return PA(h)?g.lanes=32:g.lanes=536870912,null}var ge=E.children;return E=E.fallback,P?(Iu(),P=g.mode,ge=Rv({mode:"hidden",children:ge},P),E=wh(E,P,_,null),ge.return=g,E.return=g,ge.sibling=E,g.child=ge,E=g.child,E.memoizedState=X2(_),E.childLanes=Y2(h,Q,_),g.memoizedState=K2,Fx(null,E)):(Lu(g),Z2(g,ge))}var Re=h.memoizedState;if(Re!==null&&(ge=Re.dehydrated,ge!==null)){if(I)g.flags&256?(Lu(g),g.flags&=-257,g=Q2(h,g,_)):g.memoizedState!==null?(Iu(),g.child=h.child,g.flags|=128,g=null):(Iu(),ge=E.fallback,P=g.mode,E=Rv({mode:"visible",children:E.children},P),ge=wh(ge,P,_,null),ge.flags|=2,E.return=g,ge.return=g,E.sibling=ge,g.child=E,Ch(g,h.child,null,_),E=g.child,E.memoizedState=X2(_),E.childLanes=Y2(h,Q,_),g.memoizedState=K2,g=Fx(null,E));else if(Lu(g),PA(ge)){if(Q=ge.nextSibling&&ge.nextSibling.dataset,Q)var at=Q.dgst;Q=at,E=Error(r(419)),E.stack="",E.digest=Q,Nx({value:E,source:null,stack:null}),g=Q2(h,g,_)}else if(fi||Em(h,g,_,!1),Q=(_&h.childLanes)!==0,fi||Q){if(Q=br,Q!==null&&(E=qt(Q,_),E!==0&&E!==Re.retryLane))throw Re.retryLane=E,_h(h,E),us(Q,h,E),W2;jA(ge)||$v(),g=Q2(h,g,_)}else jA(ge)?(g.flags|=192,g.child=h.child,g=null):(h=Re.treeContext,Tr=so(ge.nextSibling),sa=g,Fn=!0,ku=null,io=!1,h!==null&&ZI(g,h),g=Z2(g,E.children),g.flags|=4096);return g}return P?(Iu(),ge=E.fallback,P=g.mode,Re=h.child,at=Re.sibling,E=mc(Re,{mode:"hidden",children:E.children}),E.subtreeFlags=Re.subtreeFlags&65011712,at!==null?ge=mc(at,ge):(ge=wh(ge,P,_,null),ge.flags|=2),ge.return=g,E.return=g,E.sibling=ge,g.child=E,Fx(null,E),E=g.child,ge=h.child.memoizedState,ge===null?ge=X2(_):(P=ge.cachePool,P!==null?(Re=di._currentValue,P=P.parent!==Re?{parent:Re,pool:Re}:P):P=rF(),ge={baseLanes:ge.baseLanes|_,cachePool:P}),E.memoizedState=ge,E.childLanes=Y2(h,Q,_),g.memoizedState=K2,Fx(h.child,E)):(Lu(g),_=h.child,h=_.sibling,_=mc(_,{mode:"visible",children:E.children}),_.return=g,_.sibling=null,h!==null&&(Q=g.deletions,Q===null?(g.deletions=[h],g.flags|=16):Q.push(h)),g.child=_,g.memoizedState=null,_)}function Z2(h,g){return g=Rv({mode:"visible",children:g},h.mode),g.return=h,h.child=g}function Rv(h,g){return h=Ts(22,h,null,g),h.lanes=0,h}function Q2(h,g,_){return Ch(g,h.child,null,_),h=Z2(g,g.pendingProps.children),h.flags|=2,g.memoizedState=null,h}function g5(h,g,_){h.lanes|=g;var E=h.alternate;E!==null&&(E.lanes|=g),f2(h.return,g,_)}function J2(h,g,_,E,P,I){var Q=h.memoizedState;Q===null?h.memoizedState={isBackwards:g,rendering:null,renderingStartTime:0,last:E,tail:_,tailMode:P,treeForkCount:I}:(Q.isBackwards=g,Q.rendering=null,Q.renderingStartTime=0,Q.last=E,Q.tail=_,Q.tailMode=P,Q.treeForkCount=I)}function x5(h,g,_){var E=g.pendingProps,P=E.revealOrder,I=E.tail;E=E.children;var Q=si.current,ge=(Q&2)!==0;if(ge?(Q=Q&1|2,g.flags|=128):Q&=1,Z(si,Q),la(h,g,E,_),E=Fn?Ex:0,!ge&&h!==null&&(h.flags&128)!==0)e:for(h=g.child;h!==null;){if(h.tag===13)h.memoizedState!==null&&g5(h,_,g);else if(h.tag===19)g5(h,_,g);else if(h.child!==null){h.child.return=h,h=h.child;continue}if(h===g)break e;for(;h.sibling===null;){if(h.return===null||h.return===g)break e;h=h.return}h.sibling.return=h.return,h=h.sibling}switch(P){case"forwards":for(_=g.child,P=null;_!==null;)h=_.alternate,h!==null&&_v(h)===null&&(P=_),_=_.sibling;_=P,_===null?(P=g.child,g.child=null):(P=_.sibling,_.sibling=null),J2(g,!1,P,_,I,E);break;case"backwards":case"unstable_legacy-backwards":for(_=null,P=g.child,g.child=null;P!==null;){if(h=P.alternate,h!==null&&_v(h)===null){g.child=P;break}h=P.sibling,P.sibling=_,_=P,P=h}J2(g,!0,_,null,I,E);break;case"together":J2(g,!1,null,null,void 0,E);break;default:g.memoizedState=null}return g.child}function vc(h,g,_){if(h!==null&&(g.dependencies=h.dependencies),zu|=g.lanes,(_&g.childLanes)===0)if(h!==null){if(Em(h,g,_,!1),(_&g.childLanes)===0)return null}else return null;if(h!==null&&g.child!==h.child)throw Error(r(153));if(g.child!==null){for(h=g.child,_=mc(h,h.pendingProps),g.child=_,_.return=g;h.sibling!==null;)h=h.sibling,_=_.sibling=mc(h,h.pendingProps),_.return=g;_.sibling=null}return g.child}function eA(h,g){return(h.lanes&g)!==0?!0:(h=h.dependencies,!!(h!==null&&fv(h)))}function Xae(h,g,_){switch(g.tag){case 3:Ee(g,g.stateNode.containerInfo),Pu(g,di,h.memoizedState.cache),Sh();break;case 27:case 5:we(g);break;case 4:Ee(g,g.stateNode.containerInfo);break;case 10:Pu(g,g.type,g.memoizedProps.value);break;case 31:if(g.memoizedState!==null)return g.flags|=128,E2(g),null;break;case 13:var E=g.memoizedState;if(E!==null)return E.dehydrated!==null?(Lu(g),g.flags|=128,null):(_&g.child.childLanes)!==0?p5(h,g,_):(Lu(g),h=vc(h,g,_),h!==null?h.sibling:null);Lu(g);break;case 19:var P=(h.flags&128)!==0;if(E=(_&g.childLanes)!==0,E||(Em(h,g,_,!1),E=(_&g.childLanes)!==0),P){if(E)return x5(h,g,_);g.flags|=128}if(P=g.memoizedState,P!==null&&(P.rendering=null,P.tail=null,P.lastEffect=null),Z(si,si.current),E)break;return null;case 22:return g.lanes=0,c5(h,g,_,g.pendingProps);case 24:Pu(g,di,h.memoizedState.cache)}return vc(h,g,_)}function b5(h,g,_){if(h!==null)if(h.memoizedProps!==g.pendingProps)fi=!0;else{if(!eA(h,_)&&(g.flags&128)===0)return fi=!1,Xae(h,g,_);fi=(h.flags&131072)!==0}else fi=!1,Fn&&(g.flags&1048576)!==0&&YI(g,Ex,g.index);switch(g.lanes=0,g.tag){case 16:e:{var E=g.pendingProps;if(h=Ah(g.elementType),g.type=h,typeof h=="function")a2(h)?(E=jh(h,E),g.tag=1,g=f5(null,g,h,E,_)):(g.tag=0,g=q2(null,g,h,E,_));else{if(h!=null){var P=h.$$typeof;if(P===N){g.tag=11,g=s5(null,g,h,E,_);break e}else if(P===C){g.tag=14,g=o5(null,g,h,E,_);break e}}throw g=j(h)||h,Error(r(306,g,""))}}return g;case 0:return q2(h,g,g.type,g.pendingProps,_);case 1:return E=g.type,P=jh(E,g.pendingProps),f5(h,g,E,P,_);case 3:e:{if(Ee(g,g.stateNode.containerInfo),h===null)throw Error(r(387));E=g.pendingProps;var I=g.memoizedState;P=I.element,v2(h,g),Rx(g,E,null,_);var Q=g.memoizedState;if(E=Q.cache,Pu(g,di,E),E!==I.cache&&m2(g,[di],_,!0),Px(),E=Q.element,I.isDehydrated)if(I={element:E,isDehydrated:!1,cache:Q.cache},g.updateQueue.baseState=I,g.memoizedState=I,g.flags&256){g=m5(h,g,E,_);break e}else if(E!==P){P=to(Error(r(424)),g),Nx(P),g=m5(h,g,E,_);break e}else for(h=g.stateNode.containerInfo,h.nodeType===9?h=h.body:h=h.nodeName==="HTML"?h.ownerDocument.body:h,Tr=so(h.firstChild),sa=g,Fn=!0,ku=null,io=!0,_=cF(g,null,E,_),g.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling;else{if(Sh(),E===P){g=vc(h,g,_);break e}la(h,g,E,_)}g=g.child}return g;case 26:return Pv(h,g),h===null?(_=CU(g.type,null,g.pendingProps,null))?g.memoizedState=_:Fn||(_=g.type,h=g.pendingProps,E=Xv(fe.current).createElement(_),E[xr]=g,E[vt]=h,ca(E,_,h),ce(E),g.stateNode=E):g.memoizedState=CU(g.type,h.memoizedProps,g.pendingProps,h.memoizedState),null;case 27:return we(g),h===null&&Fn&&(E=g.stateNode=NU(g.type,g.pendingProps,fe.current),sa=g,io=!0,P=Tr,Gu(g.type)?(RA=P,Tr=so(E.firstChild)):Tr=P),la(h,g,g.pendingProps.children,_),Pv(h,g),h===null&&(g.flags|=4194304),g.child;case 5:return h===null&&Fn&&((P=E=Tr)&&(E=Ese(E,g.type,g.pendingProps,io),E!==null?(g.stateNode=E,sa=g,Tr=so(E.firstChild),io=!1,P=!0):P=!1),P||ju(g)),we(g),P=g.type,I=g.pendingProps,Q=h!==null?h.memoizedProps:null,E=I.children,TA(P,I)?E=null:Q!==null&&TA(P,Q)&&(g.flags|=32),g.memoizedState!==null&&(P=A2(h,g,zae,null,null,_),Jx._currentValue=P),Pv(h,g),la(h,g,E,_),g.child;case 6:return h===null&&Fn&&((h=_=Tr)&&(_=Nse(_,g.pendingProps,io),_!==null?(g.stateNode=_,sa=g,Tr=null,h=!0):h=!1),h||ju(g)),null;case 13:return p5(h,g,_);case 4:return Ee(g,g.stateNode.containerInfo),E=g.pendingProps,h===null?g.child=Ch(g,null,E,_):la(h,g,E,_),g.child;case 11:return s5(h,g,g.type,g.pendingProps,_);case 7:return la(h,g,g.pendingProps,_),g.child;case 8:return la(h,g,g.pendingProps.children,_),g.child;case 12:return la(h,g,g.pendingProps.children,_),g.child;case 10:return E=g.pendingProps,Pu(g,g.type,E.value),la(h,g,E.children,_),g.child;case 9:return P=g.type._context,E=g.pendingProps.children,Eh(g),P=oa(P),E=E(P),g.flags|=1,la(h,g,E,_),g.child;case 14:return o5(h,g,g.type,g.pendingProps,_);case 15:return l5(h,g,g.type,g.pendingProps,_);case 19:return x5(h,g,_);case 31:return Kae(h,g,_);case 22:return c5(h,g,_,g.pendingProps);case 24:return Eh(g),E=oa(di),h===null?(P=x2(),P===null&&(P=br,I=p2(),P.pooledCache=I,I.refCount++,I!==null&&(P.pooledCacheLanes|=_),P=I),g.memoizedState={parent:E,cache:P},y2(g),Pu(g,di,P)):((h.lanes&_)!==0&&(v2(h,g),Rx(g,null,null,_),Px()),P=h.memoizedState,I=g.memoizedState,P.parent!==E?(P={parent:E,cache:E},g.memoizedState=P,g.lanes===0&&(g.memoizedState=g.updateQueue.baseState=P),Pu(g,di,E)):(E=I.cache,Pu(g,di,E),E!==P.cache&&m2(g,[di],_,!0))),la(h,g,g.pendingProps.children,_),g.child;case 29:throw g.pendingProps}throw Error(r(156,g.tag))}function _c(h){h.flags|=4}function tA(h,g,_,E,P){if((g=(h.mode&32)!==0)&&(g=!1),g){if(h.flags|=16777216,(P&335544128)===P)if(h.stateNode.complete)h.flags|=8192;else if(G5())h.flags|=8192;else throw Th=xv,b2}else h.flags&=-16777217}function y5(h,g){if(g.type!=="stylesheet"||(g.state.loading&4)!==0)h.flags&=-16777217;else if(h.flags|=16777216,!DU(g))if(G5())h.flags|=8192;else throw Th=xv,b2}function Dv(h,g){g!==null&&(h.flags|=4),h.flags&16384&&(g=h.tag!==22?Rt():536870912,h.lanes|=g,Im|=g)}function Ux(h,g){if(!Fn)switch(h.tailMode){case"hidden":g=h.tail;for(var _=null;g!==null;)g.alternate!==null&&(_=g),g=g.sibling;_===null?h.tail=null:_.sibling=null;break;case"collapsed":_=h.tail;for(var E=null;_!==null;)_.alternate!==null&&(E=_),_=_.sibling;E===null?g||h.tail===null?h.tail=null:h.tail.sibling=null:E.sibling=null}}function Cr(h){var g=h.alternate!==null&&h.alternate.child===h.child,_=0,E=0;if(g)for(var P=h.child;P!==null;)_|=P.lanes|P.childLanes,E|=P.subtreeFlags&65011712,E|=P.flags&65011712,P.return=h,P=P.sibling;else for(P=h.child;P!==null;)_|=P.lanes|P.childLanes,E|=P.subtreeFlags,E|=P.flags,P.return=h,P=P.sibling;return h.subtreeFlags|=E,h.childLanes=_,g}function Yae(h,g,_){var E=g.pendingProps;switch(c2(g),g.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Cr(g),null;case 1:return Cr(g),null;case 3:return _=g.stateNode,E=null,h!==null&&(E=h.memoizedState.cache),g.memoizedState.cache!==E&&(g.flags|=2048),xc(di),me(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(h===null||h.child===null)&&(Mm(g)?_c(g):h===null||h.memoizedState.isDehydrated&&(g.flags&256)===0||(g.flags|=1024,d2())),Cr(g),null;case 26:var P=g.type,I=g.memoizedState;return h===null?(_c(g),I!==null?(Cr(g),y5(g,I)):(Cr(g),tA(g,P,null,E,_))):I?I!==h.memoizedState?(_c(g),Cr(g),y5(g,I)):(Cr(g),g.flags&=-16777217):(h=h.memoizedProps,h!==E&&_c(g),Cr(g),tA(g,P,h,E,_)),null;case 27:if(De(g),_=fe.current,P=g.type,h!==null&&g.stateNode!=null)h.memoizedProps!==E&&_c(g);else{if(!E){if(g.stateNode===null)throw Error(r(166));return Cr(g),null}h=ne.current,Mm(g)?QI(g):(h=NU(P,E,_),g.stateNode=h,_c(g))}return Cr(g),null;case 5:if(De(g),P=g.type,h!==null&&g.stateNode!=null)h.memoizedProps!==E&&_c(g);else{if(!E){if(g.stateNode===null)throw Error(r(166));return Cr(g),null}if(I=ne.current,Mm(g))QI(g);else{var Q=Xv(fe.current);switch(I){case 1:I=Q.createElementNS("http://www.w3.org/2000/svg",P);break;case 2:I=Q.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;default:switch(P){case"svg":I=Q.createElementNS("http://www.w3.org/2000/svg",P);break;case"math":I=Q.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;case"script":I=Q.createElement("div"),I.innerHTML=" + diff --git a/update_website_wiki.sh b/update_website_wiki.sh index d88feaf7c..2018813d5 100755 --- a/update_website_wiki.sh +++ b/update_website_wiki.sh @@ -1,10 +1,5 @@ #!/bin/bash -cd ../bambuddy-telemetry -git add . -git commit -m "Updated telemetry" -git push - cd ../bambuddy-website git add . git commit -m "Updated website" @@ -20,4 +15,7 @@ git add . git commit -m "Updated website" git push -cd ../bambuddy +cd ../spoolbuddy-wiki +git add . +git commit -m "Updated Wiki" +git push