From 5ebc0a640bc5b1d7aa451c3ef8367490fd03e4ac Mon Sep 17 00:00:00 2001 From: baiyanyun Date: Tue, 9 Jun 2026 11:06:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=B8=E6=94=B6=E6=95=B0=E5=AD=97=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E5=91=A8=E6=9C=9F=E8=B0=83=E5=BA=A6=E9=97=AD=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/qimingclawAdapter.ts | 270 +++++++ .../embedded/sgrobot-digital/src/types/api.ts | 3 + .../sgrobot-digital/assets/index-CQeDXxH3.js | 138 ++++ .../sgrobot-digital/assets/index-Ddxmu09V.js | 138 ---- .../public/sgrobot-digital/index.html | 2 +- .../scripts/check-digital-employee.js | 61 ++ .../src/main/bootstrap/startup.ts | 5 + .../agent-electron-client/src/main/db.ts | 59 ++ .../src/main/ipc/digitalEmployeeHandlers.ts | 27 + .../agent-electron-client/src/main/main.ts | 5 + .../digitalEmployee/schedulerService.test.ts | 110 +++ .../digitalEmployee/schedulerService.ts | 327 ++++++++ .../digitalEmployee/stateService.test.ts | 229 ++++++ .../services/digitalEmployee/stateService.ts | 755 ++++++++++++++++++ .../digitalEmployee/syncService.test.ts | 65 +- .../services/digitalEmployee/syncService.ts | 8 + .../src/preload/webviewPerfBridge.ts | 15 + ...ital-employee-frontend-integration-plan.md | 11 +- 18 files changed, 2083 insertions(+), 145 deletions(-) create mode 100644 qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-CQeDXxH3.js delete mode 100644 qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Ddxmu09V.js create mode 100644 qimingclaw/crates/agent-electron-client/src/main/services/digitalEmployee/schedulerService.test.ts create mode 100644 qimingclaw/crates/agent-electron-client/src/main/services/digitalEmployee/schedulerService.ts diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts index 2d21c5cc..7d9f9ffa 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts @@ -3,6 +3,7 @@ import type { ArtifactEntry, CanonicalEvent, CronJob, + CronRun, DashboardResponse, DebugPlan, DebugRun, @@ -39,6 +40,11 @@ declare global { saveUiState?: (update: { state: AdapterState; action?: string; date?: string; metadata?: Record }) => Promise; getSyncStatus?: () => Promise; flushSync?: () => Promise; + getCronSettings?: () => Promise; + saveCronSettings?: (patch: Partial) => Promise; + runSchedulerCheck?: () => Promise<{ activated: number; due?: number; skipped?: number }>; + runScheduleNow?: (scheduleId: string) => Promise<{ ok?: boolean; scheduleRunId?: string; error?: string }>; + getScheduleRuns?: (scheduleId: string, limit?: number) => Promise; recordGovernanceCommand?: (command: QimingclawGovernanceCommandRecord) => Promise; respondPermission?: (sessionId: string, permissionId: string, response: 'once' | 'always' | 'reject') => Promise<{ success?: boolean; error?: string }>; }; @@ -180,6 +186,8 @@ interface QimingclawRuntimeRecords { generatedAt: string; plans: QimingclawPlanRecord[]; planSteps?: QimingclawPlanStepRecord[]; + schedules?: QimingclawScheduleRecord[]; + scheduleRuns?: QimingclawScheduleRunRecord[]; tasks: QimingclawTaskRecord[]; runs: QimingclawRunRecord[]; events: QimingclawEventRecord[]; @@ -187,6 +195,57 @@ interface QimingclawRuntimeRecords { approvals?: QimingclawApprovalRecord[]; } +interface QimingclawCronSettings { + enabled: boolean; + catch_up_on_startup: boolean; + max_run_history: number; + max_catch_up_runs: number; + max_concurrent_schedule_runs: number; +} + +interface QimingclawScheduleRecord { + id: string; + remoteId?: string | null; + planId?: string | null; + name: string; + description?: string | null; + cronExpr: string; + timezone: string; + status: string; + enabled: boolean; + prompt?: string | null; + command?: string | null; + payload: unknown; + nextRunAt?: string | null; + lastRunAt?: string | null; + catchUpOnStartup: boolean; + maxCatchUpRuns: number; + maxRunHistory: number; + failureCount: number; + lastError?: string | null; + syncStatus: string; + createdAt: string; + updatedAt: string; + deletedAt?: string | null; +} + +interface QimingclawScheduleRunRecord { + id: string; + scheduleId: string; + planId?: string | null; + runId?: string | null; + dueAt: string; + startedAt?: string | null; + finishedAt?: string | null; + status: string; + attemptNo: number; + triggerKind: string; + error?: string | null; + payload: unknown; + createdAt: string; + updatedAt: string; +} + interface QimingclawPlanRecord { id: string; remoteId?: string | null; @@ -458,6 +517,37 @@ export async function handleQimingclawDigitalApi( if (method === 'GET' && pathname === '/api/scheduler/jobs') { return { jobs: buildSchedulerJobs(await readQimingclawSnapshot()) } as T; } + if (method === 'GET' && pathname === '/api/cron') { + return { jobs: buildSchedulerJobs(await readQimingclawSnapshot()) } as T; + } + if (method === 'POST' && pathname === '/api/cron') { + return await handleCronCreate(parseJsonBody>(options.body), await readQimingclawSnapshot()) as T; + } + if (method === 'GET' && pathname === '/api/cron/settings') { + return await readCronSettings() as T; + } + if (method === 'PATCH' && pathname === '/api/cron/settings') { + const patch = parseJsonBody>(options.body); + return await saveCronSettings(patch) as T; + } + if (method === 'POST' && pathname === '/api/cron/check') { + const result = await window.QimingClawBridge?.digital?.runSchedulerCheck?.(); + return { ok: true, activated: result?.activated ?? 0, ...result } as T; + } + const cronRunMatch = pathname.match(/^\/api\/cron\/([^/]+)\/runs$/); + if (method === 'GET' && cronRunMatch) { + const runs = await readCronRuns(decodeURIComponent(cronRunMatch[1] || ''), Number(url.searchParams.get('limit')) || 20); + return { runs } as T; + } + const cronJobMatch = pathname.match(/^\/api\/cron\/([^/]+)$/); + if ((method === 'PATCH' || method === 'DELETE') && cronJobMatch) { + const scheduleId = decodeURIComponent(cronJobMatch[1] || ''); + if (method === 'DELETE') { + await handleCronCommand('delete_schedule', scheduleId, {}, await readQimingclawSnapshot()); + return undefined as T; + } + return await handleCronPatch(scheduleId, parseJsonBody>(options.body), await readQimingclawSnapshot()) as T; + } if (method === 'GET' && pathname === '/api/debug/plans') { return { plans: filterPlans(url.searchParams.get('q'), await readQimingclawSnapshot()) } as T; } @@ -620,6 +710,122 @@ async function recordGovernanceCommand( } } +async function readCronSettings(): Promise { + try { + return await window.QimingClawBridge?.digital?.getCronSettings?.() ?? defaultCronSettings(); + } catch { + return defaultCronSettings(); + } +} + +async function saveCronSettings(patch: Partial): Promise { + try { + return await window.QimingClawBridge?.digital?.saveCronSettings?.(patch) ?? { ...defaultCronSettings(), ...patch }; + } catch { + return { ...defaultCronSettings(), ...patch }; + } +} + +function defaultCronSettings(): QimingclawCronSettings { + return { + enabled: true, + catch_up_on_startup: true, + max_run_history: 100, + max_catch_up_runs: 5, + max_concurrent_schedule_runs: 1, + }; +} + +async function handleCronCreate( + body: Record, + snapshot: QimingclawSnapshot | null, +): Promise<{ status: string; job: CronJob }> { + const stamp = Date.now(); + const scheduleId = stringFromUnknown(body.id) || stringFromUnknown(body.schedule_id) || `cron-${slugifyIdPart(stringFromUnknown(body.name) || 'job')}-${stamp}`; + await handleGovernanceCommand({ + command_kind: 'create_schedule', + context_refs: { schedule_id: scheduleId, plan_id: stringFromUnknown(body.plan_id) || stringFromUnknown(body.template_id) || undefined }, + payload: { + ...body, + schedule_id: scheduleId, + cron_expr: stringFromUnknown(body.schedule) || stringFromUnknown(body.cron_expr), + }, + correlation_id: `qimingclaw-cron-create-${stamp}`, + idempotency_key: `qimingclaw-cron-create-${scheduleId}-${stamp}`, + }, snapshot); + const refreshed = await readQimingclawSnapshot(); + return { status: 'created', job: buildSchedulerJobs(refreshed).find((job) => job.id === scheduleId) ?? cronJobFromBody(scheduleId, body) }; +} + +async function handleCronPatch( + scheduleId: string, + patch: Record, + snapshot: QimingclawSnapshot | null, +): Promise<{ status: string; job: CronJob }> { + await handleCronCommand('update_schedule', scheduleId, patch, snapshot); + const refreshed = await readQimingclawSnapshot(); + return { status: 'updated', job: buildSchedulerJobs(refreshed).find((job) => job.id === scheduleId) ?? cronJobFromBody(scheduleId, patch) }; +} + +async function handleCronCommand( + commandKind: GovernanceCommandRequest['command_kind'], + scheduleId: string, + payload: Record, + snapshot: QimingclawSnapshot | null, +): Promise { + const stamp = Date.now(); + return handleGovernanceCommand({ + command_kind: commandKind, + context_refs: { schedule_id: scheduleId, plan_id: stringFromUnknown(payload.plan_id) || stringFromUnknown(payload.template_id) || undefined }, + payload: { + ...payload, + schedule_id: scheduleId, + cron_expr: stringFromUnknown(payload.schedule) || stringFromUnknown(payload.cron_expr), + }, + correlation_id: `qimingclaw-cron-${commandKind}-${stamp}`, + idempotency_key: `qimingclaw-cron-${commandKind}-${scheduleId}-${stamp}`, + }, snapshot); +} + +function cronJobFromBody(id: string, body: Record): CronJob { + const now = new Date().toISOString(); + const expression = stringFromUnknown(body.schedule) || stringFromUnknown(body.cron_expr) || '0 9 * * *'; + return { + id, + name: stringFromUnknown(body.name) || id, + expression, + command: stringFromUnknown(body.command) || `digital-employee:${id}`, + prompt: stringFromUnknown(body.prompt) || null, + job_type: stringFromUnknown(body.job_type) || 'qimingclaw_schedule', + schedule: { expression, schedule_id: id }, + enabled: body.enabled !== false, + delivery: { mode: 'qimingclaw_schedule', schedule_id: id }, + template_id: stringFromUnknown(body.template_id) || stringFromUnknown(body.plan_id) || id, + trigger_kind: 'scheduled', + delete_after_run: body.delete_after_run === true, + created_at: now, + next_run: now, + last_run: null, + last_status: null, + last_output: null, + }; +} + +async function readCronRuns(scheduleId: string, limit: number): Promise { + const runs = await window.QimingClawBridge?.digital?.getScheduleRuns?.(scheduleId, limit).catch(() => []) ?? []; + return runs.map((run, index) => ({ + id: Number.isFinite(Date.parse(run.createdAt)) ? Date.parse(run.createdAt) + index : index + 1, + job_id: run.scheduleId, + started_at: run.startedAt || run.createdAt, + finished_at: run.finishedAt || '', + status: run.status, + output: run.error || null, + duration_ms: run.startedAt && run.finishedAt + ? Math.max(0, Date.parse(run.finishedAt) - Date.parse(run.startedAt)) + : null, + })); +} + function parseJsonBody(body: BodyInit | null | undefined): T { if (typeof body !== 'string' || !body.trim()) return {} as T; return JSON.parse(body) as T; @@ -1126,8 +1332,56 @@ function planTemplateJob(plan: DebugPlan, snapshot: QimingclawSnapshot | null): }; } +function runtimeScheduleJob(schedule: QimingclawScheduleRecord, snapshot: QimingclawSnapshot | null): CronJob { + const plan = schedule.planId + ? mergedDebugPlans(snapshot).find((item) => item.plan_id === schedule.planId) + : null; + const runs = snapshot?.runtime?.scheduleRuns ?? []; + const latestRun = runs.find((run) => run.scheduleId === schedule.id); + return { + id: schedule.id, + name: schedule.name, + expression: schedule.cronExpr, + command: schedule.command || `digital-employee:${schedule.planId || schedule.id}`, + prompt: schedule.prompt ?? schedule.description ?? null, + job_type: 'qimingclaw_schedule', + schedule: { + mode: 'qimingclaw_schedule', + schedule_id: schedule.id, + plan_id: schedule.planId, + expression: schedule.cronExpr, + timezone: schedule.timezone, + status: schedule.status, + failure_count: schedule.failureCount, + last_error: schedule.lastError, + }, + enabled: schedule.enabled && schedule.status === 'enabled' && !schedule.deletedAt, + delivery: { mode: 'qimingclaw_schedule', schedule_id: schedule.id, plan_id: schedule.planId }, + template_id: schedule.planId ?? schedule.id, + trigger_kind: 'scheduled', + step_count: plan?.steps?.length ?? 0, + skill_ids: [...new Set((plan?.steps ?? []).flatMap((step) => step.preferred_skills ?? []))], + delete_after_run: false, + created_at: schedule.createdAt, + next_run: schedule.nextRunAt || schedule.updatedAt, + last_run: schedule.lastRunAt ?? latestRun?.finishedAt ?? latestRun?.startedAt ?? null, + last_status: latestRun?.status ?? (schedule.lastError ? 'failed' : null), + last_output: latestRun?.error ?? schedule.lastError ?? null, + }; +} + function buildSchedulerJobs(snapshot: QimingclawSnapshot | null = null): CronJob[] { + const realScheduleJobs = (snapshot?.runtime?.schedules ?? []) + .filter((schedule) => schedule.status !== 'deleted') + .map((schedule) => runtimeScheduleJob(schedule, snapshot)); const templateJobs = templatePlans(snapshot).map((plan) => planTemplateJob(plan, snapshot)); + if (realScheduleJobs.length > 0) { + const realTemplateIds = new Set(realScheduleJobs.map((job) => job.template_id)); + return [ + ...realScheduleJobs, + ...templateJobs.filter((job) => !realTemplateIds.has(job.template_id)), + ]; + } if (hasRuntimeRecords(snapshot)) { const runtimeJobs = runtimeDebugPlans(snapshot).map((plan) => ({ id: `runtime-${plan.plan_id}`, @@ -2243,6 +2497,22 @@ async function handleGovernanceCommand( return response; } + if (['update_schedule', 'pause_schedule', 'resume_schedule', 'delete_schedule'].includes(body.command_kind)) { + const status = body.command_kind === 'pause_schedule' + ? 'paused' + : body.command_kind === 'delete_schedule' + ? 'deleted' + : 'enabled'; + const response = governanceAccepted(commandId, correlationId, `已接受 ${body.command_kind},并更新 qimingclaw 本地定时任务状态。`, { + schedule_id: scheduleId || `qimingclaw-schedule-${Date.now()}`, + plan_id: planId, + status, + source: 'qimingclaw-adapter', + }); + await recordGovernanceCommand(body, response); + return response; + } + if (['submit_plan', 'approve_plan', 'amend_plan', 'resume_plan', 'pause_plan', 'cancel_plan'].includes(body.command_kind)) { const response = governanceAccepted(commandId, correlationId, `已接受 ${body.command_kind},当前由 qimingclaw 本地 adapter 记录兼容状态。`, { plan_id: planId, diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts index 3fd77828..96622a92 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts @@ -340,7 +340,10 @@ export type GovernanceCommandKind = | 'approve_approval' | 'reject_approval' | 'create_schedule' + | 'update_schedule' | 'pause_schedule' + | 'resume_schedule' + | 'delete_schedule' | 'run_schedule_now'; export type GovernanceCommandErrorCode = diff --git a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-CQeDXxH3.js b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-CQeDXxH3.js new file mode 100644 index 00000000..e3c3ee5f --- /dev/null +++ b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-CQeDXxH3.js @@ -0,0 +1,138 @@ +(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const f of d)if(f.type==="childList")for(const h of f.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&c(h)}).observe(document,{childList:!0,subtree:!0});function r(d){const f={};return d.integrity&&(f.integrity=d.integrity),d.referrerPolicy&&(f.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?f.credentials="include":d.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function c(d){if(d.ep)return;d.ep=!0;const f=r(d);fetch(d.href,f)}})();function qv(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var Uo={exports:{}},xs={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var jg;function Lv(){if(jg)return xs;jg=1;var a=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function r(c,d,f){var h=null;if(f!==void 0&&(h=""+f),d.key!==void 0&&(h=""+d.key),"key"in d){f={};for(var _ in d)_!=="key"&&(f[_]=d[_])}else f=d;return d=f.ref,{$$typeof:a,type:c,key:h,ref:d!==void 0?d:null,props:f}}return xs.Fragment=i,xs.jsx=r,xs.jsxs=r,xs}var wg;function Uv(){return wg||(wg=1,Uo.exports=Lv()),Uo.exports}var u=Uv(),Bo={exports:{}},ge={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Eg;function Bv(){if(Eg)return ge;Eg=1;var a=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),h=Symbol.for("react.context"),_=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),S=Symbol.for("react.activity"),k=Symbol.iterator;function $(w){return w===null||typeof w!="object"?null:(w=k&&w[k]||w["@@iterator"],typeof w=="function"?w:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},O=Object.assign,R={};function q(w,U,V){this.props=w,this.context=U,this.refs=R,this.updater=V||A}q.prototype.isReactComponent={},q.prototype.setState=function(w,U){if(typeof w!="object"&&typeof w!="function"&&w!=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,w,U,"setState")},q.prototype.forceUpdate=function(w){this.updater.enqueueForceUpdate(this,w,"forceUpdate")};function F(){}F.prototype=q.prototype;function Z(w,U,V){this.props=w,this.context=U,this.refs=R,this.updater=V||A}var ne=Z.prototype=new F;ne.constructor=Z,O(ne,q.prototype),ne.isPureReactComponent=!0;var ie=Array.isArray;function fe(){}var G={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function te(w,U,V){var I=V.ref;return{$$typeof:a,type:w,key:U,ref:I!==void 0?I:null,props:V}}function je(w,U){return te(w.type,U,w.props)}function Ke(w){return typeof w=="object"&&w!==null&&w.$$typeof===a}function Ue(w){var U={"=":"=0",":":"=2"};return"$"+w.replace(/[=:]/g,function(V){return U[V]})}var X=/\/+/g;function ue(w,U){return typeof w=="object"&&w!==null&&w.key!=null?Ue(""+w.key):U.toString(36)}function Y(w){switch(w.status){case"fulfilled":return w.value;case"rejected":throw w.reason;default:switch(typeof w.status=="string"?w.then(fe,fe):(w.status="pending",w.then(function(U){w.status==="pending"&&(w.status="fulfilled",w.value=U)},function(U){w.status==="pending"&&(w.status="rejected",w.reason=U)})),w.status){case"fulfilled":return w.value;case"rejected":throw w.reason}}throw w}function z(w,U,V,I,oe){var ye=typeof w;(ye==="undefined"||ye==="boolean")&&(w=null);var K=!1;if(w===null)K=!0;else switch(ye){case"bigint":case"string":case"number":K=!0;break;case"object":switch(w.$$typeof){case a:case i:K=!0;break;case x:return K=w._init,z(K(w._payload),U,V,I,oe)}}if(K)return oe=oe(w),K=I===""?"."+ue(w,0):I,ie(oe)?(V="",K!=null&&(V=K.replace(X,"$&/")+"/"),z(oe,U,V,"",function(Me){return Me})):oe!=null&&(Ke(oe)&&(oe=je(oe,V+(oe.key==null||w&&w.key===oe.key?"":(""+oe.key).replace(X,"$&/")+"/")+K)),U.push(oe)),1;K=0;var P=I===""?".":I+":";if(ie(w))for(var Re=0;Re>>1,be=z[me];if(0>>1;med(V,se))Id(oe,V)?(z[me]=oe,z[I]=se,me=I):(z[me]=V,z[U]=se,me=U);else if(Id(oe,se))z[me]=oe,z[I]=se,me=I;else break e}}return Q}function d(z,Q){var se=z.sortIndex-Q.sortIndex;return se!==0?se:z.id-Q.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;a.unstable_now=function(){return f.now()}}else{var h=Date,_=h.now();a.unstable_now=function(){return h.now()-_}}var g=[],p=[],x=1,S=null,k=3,$=!1,A=!1,O=!1,R=!1,q=typeof setTimeout=="function"?setTimeout:null,F=typeof clearTimeout=="function"?clearTimeout:null,Z=typeof setImmediate<"u"?setImmediate:null;function ne(z){for(var Q=r(p);Q!==null;){if(Q.callback===null)c(p);else if(Q.startTime<=z)c(p),Q.sortIndex=Q.expirationTime,i(g,Q);else break;Q=r(p)}}function ie(z){if(O=!1,ne(z),!A)if(r(g)!==null)A=!0,fe||(fe=!0,Ue());else{var Q=r(p);Q!==null&&Y(ie,Q.startTime-z)}}var fe=!1,G=-1,W=5,te=-1;function je(){return R?!0:!(a.unstable_now()-tez&&je());){var me=S.callback;if(typeof me=="function"){S.callback=null,k=S.priorityLevel;var be=me(S.expirationTime<=z);if(z=a.unstable_now(),typeof be=="function"){S.callback=be,ne(z),Q=!0;break t}S===r(g)&&c(g),ne(z)}else c(g);S=r(g)}if(S!==null)Q=!0;else{var w=r(p);w!==null&&Y(ie,w.startTime-z),Q=!1}}break e}finally{S=null,k=se,$=!1}Q=void 0}}finally{Q?Ue():fe=!1}}}var Ue;if(typeof Z=="function")Ue=function(){Z(Ke)};else if(typeof MessageChannel<"u"){var X=new MessageChannel,ue=X.port2;X.port1.onmessage=Ke,Ue=function(){ue.postMessage(null)}}else Ue=function(){q(Ke,0)};function Y(z,Q){G=q(function(){z(a.unstable_now())},Q)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(z){z.callback=null},a.unstable_forceFrameRate=function(z){0>z||125me?(z.sortIndex=se,i(p,z),r(g)===null&&z===r(p)&&(O?(F(G),G=-1):O=!0,Y(ie,se-me))):(z.sortIndex=be,i(g,z),A||$||(A=!0,fe||(fe=!0,Ue()))),z},a.unstable_shouldYield=je,a.unstable_wrapCallback=function(z){var Q=k;return function(){var se=k;k=Q;try{return z.apply(this,arguments)}finally{k=se}}}})(Yo)),Yo}var Ag;function Yv(){return Ag||(Ag=1,Go.exports=Gv()),Go.exports}var Qo={exports:{}},Et={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ng;function Qv(){if(Ng)return Et;Ng=1;var a=xd();function i(g){var p="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(i){console.error(i)}}return a(),Qo.exports=Qv(),Qo.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Dg;function Xv(){if(Dg)return js;Dg=1;var a=Yv(),i=xd(),r=Kv();function c(e){var t="https://react.dev/errors/"+e;if(1be||(e.current=me[be],me[be]=null,be--)}function V(e,t){be++,me[be]=e.current,e.current=t}var I=w(null),oe=w(null),ye=w(null),K=w(null);function P(e,t){switch(V(ye,t),V(oe,e),V(I,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Xh(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Xh(t),e=Zh(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}U(I),V(I,e)}function Re(){U(I),U(oe),U(ye)}function Me(e){e.memoizedState!==null&&V(K,e);var t=I.current,n=Zh(t,e.type);t!==n&&(V(oe,e),V(I,n))}function ve(e){oe.current===e&&(U(I),U(oe)),K.current===e&&(U(K),_s._currentValue=se)}var kt,yt;function Te(e){if(kt===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);kt=t&&t[1]||"",yt=-1)":-1s||j[l]!==C[s]){var L=` +`+j[l].replace(" at new "," at ");return e.displayName&&L.includes("")&&(L=L.replace("",e.displayName)),L}while(1<=l&&0<=s);break}}}finally{tt=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Te(n):""}function vi(e,t){switch(e.tag){case 26:case 27:case 5:return Te(e.type);case 16:return Te("Lazy");case 13:return e.child!==t&&t!==null?Te("Suspense Fallback"):Te("Suspense");case 19:return Te("SuspenseList");case 0:case 15:return Un(e.type,!1);case 11:return Un(e.type.render,!1);case 1:return Un(e.type,!0);case 31:return Te("Activity");default:return""}}function wl(e){try{var t="",n=null;do t+=vi(e,n),n=e,e=e.return;while(e);return t}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var bi=Object.prototype.hasOwnProperty,Si=a.unstable_scheduleCallback,vt=a.unstable_cancelCallback,Bs=a.unstable_shouldYield,we=a.unstable_requestPaint,mt=a.unstable_now,It=a.unstable_getCurrentPriorityLevel,Wt=a.unstable_ImmediatePriority,Za=a.unstable_UserBlockingPriority,Ct=a.unstable_NormalPriority,Tt=a.unstable_LowPriority,Va=a.unstable_IdlePriority,Bn=a.log,Ja=a.unstable_setDisableYieldValue,Hn=null,Xe=null;function wn(e){if(typeof Bn=="function"&&Ja(e),Xe&&typeof Xe.setStrictMode=="function")try{Xe.setStrictMode(Hn,e)}catch{}}var wt=Math.clz32?Math.clz32:xi,oa=Math.log,$c=Math.LN2;function xi(e){return e>>>=0,e===0?32:31-(oa(e)/$c|0)|0}var El=256,kl=262144,Tl=4194304;function Gn(e){var t=e&42;if(t!==0)return t;switch(e&-e){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 e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Dt(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var s=0,o=e.suspendedLanes,m=e.pingedLanes;e=e.warmLanes;var y=l&134217727;return y!==0?(l=y&~o,l!==0?s=Gn(l):(m&=y,m!==0?s=Gn(m):n||(n=y&~e,n!==0&&(s=Gn(n))))):(y=l&~o,y!==0?s=Gn(y):m!==0?s=Gn(m):n||(n=l&~e,n!==0&&(s=Gn(n)))),s===0?0:t!==0&&t!==s&&(t&o)===0&&(o=s&-s,n=t&-t,o>=n||o===32&&(n&4194048)!==0)?t:s}function qe(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ae(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+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 t+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 Al(){var e=Tl;return Tl<<=1,(Tl&62914560)===0&&(Tl=4194304),e}function Hs(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Pt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Xd(e,t,n,l,s,o){var m=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var y=e.entanglements,j=e.expirationTimes,C=e.hiddenUpdates;for(n=m&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Xs=/[\n"\\]/g;function Rt(e){return e.replace(Xs,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Ci(e,t,n,l,s,o,m,y){e.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?e.type=m:e.removeAttribute("type"),t!=null?m==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+zt(t)):e.value!==""+zt(t)&&(e.value=""+zt(t)):m!=="submit"&&m!=="reset"||e.removeAttribute("value"),t!=null?Di(e,m,zt(t)):n!=null?Di(e,m,zt(n)):l!=null&&e.removeAttribute("value"),s==null&&o!=null&&(e.defaultChecked=!!o),s!=null&&(e.checked=s&&typeof s!="function"&&typeof s!="symbol"),y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"?e.name=""+zt(y):e.removeAttribute("name")}function Zs(e,t,n,l,s,o,m,y){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(e.type=o),t!=null||n!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){Ai(e);return}n=n!=null?""+zt(n):"",t=t!=null?""+zt(t):n,y||t===e.value||(e.value=t),e.defaultValue=t}l=l??s,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=y?e.checked:!!l,e.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(e.name=m),Ai(e)}function Di(e,t,n){t==="number"&&Fa(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function pa(e,t,n,l){if(e=e.options,t){t={};for(var s=0;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ol=!1;if(en)try{var Sa={};Object.defineProperty(Sa,"passive",{get:function(){Ol=!0}}),window.addEventListener("test",Sa,Sa),window.removeEventListener("test",Sa,Sa)}catch{Ol=!1}var v=null,J=null,ce=null;function De(){if(ce)return ce;var e,t=J,n=t.length,l,s="value"in v?v.value:v.textContent,o=s.length;for(e=0;e=Ui),Wd=" ",Pd=!1;function ef(e,t){switch(e){case"keyup":return i_.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function tf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var $l=!1;function r_(e,t){switch(e){case"compositionend":return tf(t);case"keypress":return t.which!==32?null:(Pd=!0,Wd);case"textInput":return e=t.data,e===Wd&&Pd?null:e;default:return null}}function c_(e,t){if($l)return e==="compositionend"||!Qc&&ef(e,t)?(e=De(),ce=J=v=null,$l=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=of(n)}}function ff(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ff(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function mf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Fa(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Fa(e.document)}return t}function Zc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var p_=en&&"documentMode"in document&&11>=document.documentMode,ql=null,Vc=null,Yi=null,Jc=!1;function hf(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Jc||ql==null||ql!==Fa(l)||(l=ql,"selectionStart"in l&&Zc(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Yi&&Gi(Yi,l)||(Yi=l,l=Hr(Vc,"onSelect"),0>=m,s-=m,zn=1<<32-wt(t)+s|n<_e?(ke=le,le=null):ke=le.sibling;var $e=D(T,le,N[_e],B);if($e===null){le===null&&(le=ke);break}e&&le&&$e.alternate===null&&t(T,le),E=o($e,E,_e),Oe===null?re=$e:Oe.sibling=$e,Oe=$e,le=ke}if(_e===N.length)return n(T,le),Ne&&Kn(T,_e),re;if(le===null){for(;_e_e?(ke=le,le=null):ke=le.sibling;var Ya=D(T,le,$e.value,B);if(Ya===null){le===null&&(le=ke);break}e&&le&&Ya.alternate===null&&t(T,le),E=o(Ya,E,_e),Oe===null?re=Ya:Oe.sibling=Ya,Oe=Ya,le=ke}if($e.done)return n(T,le),Ne&&Kn(T,_e),re;if(le===null){for(;!$e.done;_e++,$e=N.next())$e=H(T,$e.value,B),$e!==null&&(E=o($e,E,_e),Oe===null?re=$e:Oe.sibling=$e,Oe=$e);return Ne&&Kn(T,_e),re}for(le=l(le);!$e.done;_e++,$e=N.next())$e=M(le,T,_e,$e.value,B),$e!==null&&(e&&$e.alternate!==null&&le.delete($e.key===null?_e:$e.key),E=o($e,E,_e),Oe===null?re=$e:Oe.sibling=$e,Oe=$e);return e&&le.forEach(function($v){return t(T,$v)}),Ne&&Kn(T,_e),re}function Qe(T,E,N,B){if(typeof N=="object"&&N!==null&&N.type===O&&N.key===null&&(N=N.props.children),typeof N=="object"&&N!==null){switch(N.$$typeof){case $:e:{for(var re=N.key;E!==null;){if(E.key===re){if(re=N.type,re===O){if(E.tag===7){n(T,E.sibling),B=s(E,N.props.children),B.return=T,T=B;break e}}else if(E.elementType===re||typeof re=="object"&&re!==null&&re.$$typeof===W&&sl(re)===E.type){n(T,E.sibling),B=s(E,N.props),Ji(B,N),B.return=T,T=B;break e}n(T,E);break}else t(T,E);E=E.sibling}N.type===O?(B=tl(N.props.children,T.mode,B,N.key),B.return=T,T=B):(B=lr(N.type,N.key,N.props,null,T.mode,B),Ji(B,N),B.return=T,T=B)}return m(T);case A:e:{for(re=N.key;E!==null;){if(E.key===re)if(E.tag===4&&E.stateNode.containerInfo===N.containerInfo&&E.stateNode.implementation===N.implementation){n(T,E.sibling),B=s(E,N.children||[]),B.return=T,T=B;break e}else{n(T,E);break}else t(T,E);E=E.sibling}B=nu(N,T.mode,B),B.return=T,T=B}return m(T);case W:return N=sl(N),Qe(T,E,N,B)}if(Y(N))return ee(T,E,N,B);if(Ue(N)){if(re=Ue(N),typeof re!="function")throw Error(c(150));return N=re.call(N),de(T,E,N,B)}if(typeof N.then=="function")return Qe(T,E,dr(N),B);if(N.$$typeof===Z)return Qe(T,E,rr(T,N),B);fr(T,N)}return typeof N=="string"&&N!==""||typeof N=="number"||typeof N=="bigint"?(N=""+N,E!==null&&E.tag===6?(n(T,E.sibling),B=s(E,N),B.return=T,T=B):(n(T,E),B=tu(N,T.mode,B),B.return=T,T=B),m(T)):n(T,E)}return function(T,E,N,B){try{Vi=0;var re=Qe(T,E,N,B);return Vl=null,re}catch(le){if(le===Zl||le===ur)throw le;var Oe=Qt(29,le,null,T.mode);return Oe.lanes=B,Oe.return=T,Oe}finally{}}}var cl=qf(!0),Lf=qf(!1),ka=!1;function hu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function gu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ta(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Aa(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(Le&2)!==0){var s=l.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),l.pending=t,t=ar(e),Sf(e,null,n),t}return nr(e,l,t,n),ar(e)}function Fi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,he(e,n)}}function pu(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var s=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var m={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};o===null?s=o=m:o=o.next=m,n=n.next}while(n!==null);o===null?s=o=t:o=o.next=t}else s=o=t;n={baseState:l.baseState,firstBaseUpdate:s,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var yu=!1;function Ii(){if(yu){var e=Xl;if(e!==null)throw e}}function Wi(e,t,n,l){yu=!1;var s=e.updateQueue;ka=!1;var o=s.firstBaseUpdate,m=s.lastBaseUpdate,y=s.shared.pending;if(y!==null){s.shared.pending=null;var j=y,C=j.next;j.next=null,m===null?o=C:m.next=C,m=j;var L=e.alternate;L!==null&&(L=L.updateQueue,y=L.lastBaseUpdate,y!==m&&(y===null?L.firstBaseUpdate=C:y.next=C,L.lastBaseUpdate=j))}if(o!==null){var H=s.baseState;m=0,L=C=j=null,y=o;do{var D=y.lane&-536870913,M=D!==y.lane;if(M?(Ee&D)===D:(l&D)===D){D!==0&&D===Kl&&(yu=!0),L!==null&&(L=L.next={lane:0,tag:y.tag,payload:y.payload,callback:null,next:null});e:{var ee=e,de=y;D=t;var Qe=n;switch(de.tag){case 1:if(ee=de.payload,typeof ee=="function"){H=ee.call(Qe,H,D);break e}H=ee;break e;case 3:ee.flags=ee.flags&-65537|128;case 0:if(ee=de.payload,D=typeof ee=="function"?ee.call(Qe,H,D):ee,D==null)break e;H=S({},H,D);break e;case 2:ka=!0}}D=y.callback,D!==null&&(e.flags|=64,M&&(e.flags|=8192),M=s.callbacks,M===null?s.callbacks=[D]:M.push(D))}else M={lane:D,tag:y.tag,payload:y.payload,callback:y.callback,next:null},L===null?(C=L=M,j=H):L=L.next=M,m|=D;if(y=y.next,y===null){if(y=s.shared.pending,y===null)break;M=y,y=M.next,M.next=null,s.lastBaseUpdate=M,s.shared.pending=null}}while(!0);L===null&&(j=H),s.baseState=j,s.firstBaseUpdate=C,s.lastBaseUpdate=L,o===null&&(s.shared.lanes=0),Ra|=m,e.lanes=m,e.memoizedState=H}}function Uf(e,t){if(typeof e!="function")throw Error(c(191,e));e.call(t)}function Bf(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;eo?o:8;var m=z.T,y={};z.T=y,$u(e,!1,t,n);try{var j=s(),C=z.S;if(C!==null&&C(y,j),j!==null&&typeof j=="object"&&typeof j.then=="function"){var L=E_(j,l);ts(e,t,L,Jt(e))}else ts(e,t,l,Jt(e))}catch(H){ts(e,t,{then:function(){},status:"rejected",reason:H},Jt())}finally{Q.p=o,m!==null&&y.types!==null&&(m.types=y.types),z.T=m}}function D_(){}function Mu(e,t,n,l){if(e.tag!==5)throw Error(c(476));var s=_m(e).queue;ym(e,s,t,se,n===null?D_:function(){return vm(e),n(l)})}function _m(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:se,baseState:se,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Jn,lastRenderedState:se},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Jn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function vm(e){var t=_m(e);t.next===null&&(t=e.alternate.memoizedState),ts(e,t.next.queue,{},Jt())}function Ou(){return St(_s)}function bm(){return rt().memoizedState}function Sm(){return rt().memoizedState}function z_(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Jt();e=Ta(n);var l=Aa(t,e,n);l!==null&&(Lt(l,t,n),Fi(l,t,n)),t={cache:ou()},e.payload=t;return}t=t.return}}function R_(e,t,n){var l=Jt();n={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},xr(e)?jm(t,n):(n=Pc(e,t,n,l),n!==null&&(Lt(n,e,l),wm(n,t,l)))}function xm(e,t,n){var l=Jt();ts(e,t,n,l)}function ts(e,t,n,l){var s={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(xr(e))jm(t,s);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var m=t.lastRenderedState,y=o(m,n);if(s.hasEagerState=!0,s.eagerState=y,Yt(y,m))return nr(e,t,s,0),Ve===null&&tr(),!1}catch{}finally{}if(n=Pc(e,t,s,l),n!==null)return Lt(n,e,l),wm(n,t,l),!0}return!1}function $u(e,t,n,l){if(l={lane:2,revertLane:go(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},xr(e)){if(t)throw Error(c(479))}else t=Pc(e,n,l,2),t!==null&&Lt(t,e,2)}function xr(e){var t=e.alternate;return e===pe||t!==null&&t===pe}function jm(e,t){Fl=gr=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function wm(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,he(e,n)}}var ns={readContext:St,use:_r,useCallback:nt,useContext:nt,useEffect:nt,useImperativeHandle:nt,useLayoutEffect:nt,useInsertionEffect:nt,useMemo:nt,useReducer:nt,useRef:nt,useState:nt,useDebugValue:nt,useDeferredValue:nt,useTransition:nt,useSyncExternalStore:nt,useId:nt,useHostTransitionStatus:nt,useFormState:nt,useActionState:nt,useOptimistic:nt,useMemoCache:nt,useCacheRefresh:nt};ns.useEffectEvent=nt;var Em={readContext:St,use:_r,useCallback:function(e,t){return At().memoizedState=[e,t===void 0?null:t],e},useContext:St,useEffect:cm,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,br(4194308,4,fm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return br(4194308,4,e,t)},useInsertionEffect:function(e,t){br(4,2,e,t)},useMemo:function(e,t){var n=At();t=t===void 0?null:t;var l=e();if(ul){wn(!0);try{e()}finally{wn(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=At();if(n!==void 0){var s=n(t);if(ul){wn(!0);try{n(t)}finally{wn(!1)}}}else s=t;return l.memoizedState=l.baseState=s,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:s},l.queue=e,e=e.dispatch=R_.bind(null,pe,e),[l.memoizedState,e]},useRef:function(e){var t=At();return e={current:e},t.memoizedState=e},useState:function(e){e=Nu(e);var t=e.queue,n=xm.bind(null,pe,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:zu,useDeferredValue:function(e,t){var n=At();return Ru(n,e,t)},useTransition:function(){var e=Nu(!1);return e=ym.bind(null,pe,e.queue,!0,!1),At().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=pe,s=At();if(Ne){if(n===void 0)throw Error(c(407));n=n()}else{if(n=t(),Ve===null)throw Error(c(349));(Ee&127)!==0||Xf(l,t,n)}s.memoizedState=n;var o={value:n,getSnapshot:t};return s.queue=o,cm(Vf.bind(null,l,o,e),[e]),l.flags|=2048,Wl(9,{destroy:void 0},Zf.bind(null,l,o,n,t),null),n},useId:function(){var e=At(),t=Ve.identifierPrefix;if(Ne){var n=Rn,l=zn;n=(l&~(1<<32-wt(l)-1)).toString(32)+n,t="_"+t+"R_"+n,n=pr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(s,{is:l.is}):m.createElement(s)}}o[ht]=t,o[Ze]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=o;e:switch(jt(o,s,l),s){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&In(t)}}return Fe(t),Fu(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&In(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(c(166));if(e=ye.current,Yl(t)){if(e=t.stateNode,n=t.memoizedProps,l=null,s=bt,s!==null)switch(s.tag){case 27:case 5:l=s.memoizedProps}e[ht]=t,e=!!(e.nodeValue===n||l!==null&&l.suppressHydrationWarning===!0||Qh(e.nodeValue,n)),e||wa(t,!0)}else e=Gr(e).createTextNode(l),e[ht]=t,t.stateNode=e}return Fe(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(l=Yl(t),n!==null){if(e===null){if(!l)throw Error(c(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(557));e[ht]=t}else nl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Fe(t),e=!1}else n=su(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Xt(t),t):(Xt(t),null);if((t.flags&128)!==0)throw Error(c(558))}return Fe(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(s=Yl(t),l!==null&&l.dehydrated!==null){if(e===null){if(!s)throw Error(c(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(c(317));s[ht]=t}else nl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Fe(t),s=!1}else s=su(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),s=!0;if(!s)return t.flags&256?(Xt(t),t):(Xt(t),null)}return Xt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=l!==null,e=e!==null&&e.memoizedState!==null,n&&(l=t.child,s=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(s=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==s&&(l.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Tr(t,t.updateQueue),Fe(t),null);case 4:return Re(),e===null&&vo(t.stateNode.containerInfo),Fe(t),null;case 10:return Zn(t.type),Fe(t),null;case 19:if(U(st),l=t.memoizedState,l===null)return Fe(t),null;if(s=(t.flags&128)!==0,o=l.rendering,o===null)if(s)ls(l,!1);else{if(at!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(o=hr(e),o!==null){for(t.flags|=128,ls(l,!1),e=o.updateQueue,t.updateQueue=e,Tr(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)xf(n,e),n=n.sibling;return V(st,st.current&1|2),Ne&&Kn(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&mt()>zr&&(t.flags|=128,s=!0,ls(l,!1),t.lanes=4194304)}else{if(!s)if(e=hr(o),e!==null){if(t.flags|=128,s=!0,e=e.updateQueue,t.updateQueue=e,Tr(t,e),ls(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!Ne)return Fe(t),null}else 2*mt()-l.renderingStartTime>zr&&n!==536870912&&(t.flags|=128,s=!0,ls(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(e=l.last,e!==null?e.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=mt(),e.sibling=null,n=st.current,V(st,s?n&1|2:n&1),Ne&&Kn(t,l.treeForkCount),e):(Fe(t),null);case 22:case 23:return Xt(t),vu(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(n&536870912)!==0&&(t.flags&128)===0&&(Fe(t),t.subtreeFlags&6&&(t.flags|=8192)):Fe(t),n=t.updateQueue,n!==null&&Tr(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==n&&(t.flags|=2048),e!==null&&U(il),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Zn(ut),Fe(t),null;case 25:return null;case 30:return null}throw Error(c(156,t.tag))}function L_(e,t){switch(lu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Zn(ut),Re(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ve(t),null;case 31:if(t.memoizedState!==null){if(Xt(t),t.alternate===null)throw Error(c(340));nl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Xt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));nl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U(st),null;case 4:return Re(),null;case 10:return Zn(t.type),null;case 22:case 23:return Xt(t),vu(),e!==null&&U(il),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Zn(ut),null;case 25:return null;default:return null}}function Jm(e,t){switch(lu(t),t.tag){case 3:Zn(ut),Re();break;case 26:case 27:case 5:ve(t);break;case 4:Re();break;case 31:t.memoizedState!==null&&Xt(t);break;case 13:Xt(t);break;case 19:U(st);break;case 10:Zn(t.type);break;case 22:case 23:Xt(t),vu(),e!==null&&U(il);break;case 24:Zn(ut)}}function is(e,t){try{var n=t.updateQueue,l=n!==null?n.lastEffect:null;if(l!==null){var s=l.next;n=s;do{if((n.tag&e)===e){l=void 0;var o=n.create,m=n.inst;l=o(),m.destroy=l}n=n.next}while(n!==s)}}catch(y){He(t,t.return,y)}}function Da(e,t,n){try{var l=t.updateQueue,s=l!==null?l.lastEffect:null;if(s!==null){var o=s.next;l=o;do{if((l.tag&e)===e){var m=l.inst,y=m.destroy;if(y!==void 0){m.destroy=void 0,s=t;var j=n,C=y;try{C()}catch(L){He(s,j,L)}}}l=l.next}while(l!==o)}}catch(L){He(t,t.return,L)}}function Fm(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Bf(t,n)}catch(l){He(e,e.return,l)}}}function Im(e,t,n){n.props=ol(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(l){He(e,t,l)}}function ss(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof n=="function"?e.refCleanup=n(l):n.current=l}}catch(s){He(e,t,s)}}function Mn(e,t){var n=e.ref,l=e.refCleanup;if(n!==null)if(typeof l=="function")try{l()}catch(s){He(e,t,s)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(s){He(e,t,s)}else n.current=null}function Wm(e){var t=e.type,n=e.memoizedProps,l=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&l.focus();break e;case"img":n.src?l.src=n.src:n.srcSet&&(l.srcset=n.srcSet)}}catch(s){He(e,e.return,s)}}function Iu(e,t,n){try{var l=e.stateNode;sv(l,e.type,n,t),l[Ze]=t}catch(s){He(e,e.return,s)}}function Pm(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&La(e.type)||e.tag===4}function Wu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Pm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&La(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Pu(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Bt));else if(l!==4&&(l===27&&La(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Pu(e,t,n),e=e.sibling;e!==null;)Pu(e,t,n),e=e.sibling}function Ar(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(l===27&&La(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Ar(e,t,n),e=e.sibling;e!==null;)Ar(e,t,n),e=e.sibling}function eh(e){var t=e.stateNode,n=e.memoizedProps;try{for(var l=e.type,s=t.attributes;s.length;)t.removeAttributeNode(s[0]);jt(t,l,n),t[ht]=e,t[Ze]=n}catch(o){He(e,e.return,o)}}var Wn=!1,ft=!1,eo=!1,th=typeof WeakSet=="function"?WeakSet:Set,_t=null;function U_(e,t){if(e=e.containerInfo,xo=Jr,e=mf(e),Zc(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var s=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var m=0,y=-1,j=-1,C=0,L=0,H=e,D=null;t:for(;;){for(var M;H!==n||s!==0&&H.nodeType!==3||(y=m+s),H!==o||l!==0&&H.nodeType!==3||(j=m+l),H.nodeType===3&&(m+=H.nodeValue.length),(M=H.firstChild)!==null;)D=H,H=M;for(;;){if(H===e)break t;if(D===n&&++C===s&&(y=m),D===o&&++L===l&&(j=m),(M=H.nextSibling)!==null)break;H=D,D=H.parentNode}H=M}n=y===-1||j===-1?null:{start:y,end:j}}else n=null}n=n||{start:0,end:0}}else n=null;for(jo={focusedElem:e,selectionRange:n},Jr=!1,_t=t;_t!==null;)if(t=_t,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_t=e;else for(;_t!==null;){switch(t=_t,o=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),jt(o,l,n),o[ht]=e,lt(o),l=o;break e;case"link":var m=rg("link","href",s).get(l+(n.href||""));if(m){for(var y=0;yQe&&(m=Qe,Qe=de,de=m);var T=df(y,de),E=df(y,Qe);if(T&&E&&(M.rangeCount!==1||M.anchorNode!==T.node||M.anchorOffset!==T.offset||M.focusNode!==E.node||M.focusOffset!==E.offset)){var N=H.createRange();N.setStart(T.node,T.offset),M.removeAllRanges(),de>Qe?(M.addRange(N),M.extend(E.node,E.offset)):(N.setEnd(E.node,E.offset),M.addRange(N))}}}}for(H=[],M=y;M=M.parentNode;)M.nodeType===1&&H.push({element:M,left:M.scrollLeft,top:M.scrollTop});for(typeof y.focus=="function"&&y.focus(),y=0;yn?32:n,z.T=null,n=ro,ro=null;var o=Oa,m=aa;if(gt=0,ai=Oa=null,aa=0,(Le&6)!==0)throw Error(c(331));var y=Le;if(Le|=4,fh(o.current),uh(o,o.current,m,n),Le=y,fs(0,!1),Xe&&typeof Xe.onPostCommitFiberRoot=="function")try{Xe.onPostCommitFiberRoot(Hn,o)}catch{}return!0}finally{Q.p=s,z.T=l,Ch(e,t)}}function zh(e,t,n){t=nn(n,t),t=Bu(e.stateNode,t,2),e=Aa(e,t,2),e!==null&&(Pt(e,2),On(e))}function He(e,t,n){if(e.tag===3)zh(e,e,n);else for(;t!==null;){if(t.tag===3){zh(t,e,n);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Ma===null||!Ma.has(l))){e=nn(n,e),n=Rm(2),l=Aa(t,n,2),l!==null&&(Mm(n,l,t,e),Pt(l,2),On(l));break}}t=t.return}}function fo(e,t,n){var l=e.pingCache;if(l===null){l=e.pingCache=new G_;var s=new Set;l.set(t,s)}else s=l.get(t),s===void 0&&(s=new Set,l.set(t,s));s.has(n)||(ao=!0,s.add(n),e=Z_.bind(null,e,t,n),t.then(e,e))}function Z_(e,t,n){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ve===e&&(Ee&n)===n&&(at===4||at===3&&(Ee&62914560)===Ee&&300>mt()-Dr?(Le&2)===0&&li(e,0):lo|=n,ni===Ee&&(ni=0)),On(e)}function Rh(e,t){t===0&&(t=Al()),e=el(e,t),e!==null&&(Pt(e,t),On(e))}function V_(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Rh(e,n)}function J_(e,t){var n=0;switch(e.tag){case 31:case 13:var l=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(c(314))}l!==null&&l.delete(t),Rh(e,n)}function F_(e,t){return Si(e,t)}var Lr=null,si=null,mo=!1,Ur=!1,ho=!1,qa=0;function On(e){e!==si&&e.next===null&&(si===null?Lr=si=e:si=si.next=e),Ur=!0,mo||(mo=!0,W_())}function fs(e,t){if(!ho&&Ur){ho=!0;do for(var n=!1,l=Lr;l!==null;){if(e!==0){var s=l.pendingLanes;if(s===0)var o=0;else{var m=l.suspendedLanes,y=l.pingedLanes;o=(1<<31-wt(42|e)+1)-1,o&=s&~(m&~y),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(n=!0,qh(l,o))}else o=Ee,o=Dt(l,l===Ve?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||qe(l,o)||(n=!0,qh(l,o));l=l.next}while(n);ho=!1}}function I_(){Mh()}function Mh(){Ur=mo=!1;var e=0;qa!==0&&cv()&&(e=qa);for(var t=mt(),n=null,l=Lr;l!==null;){var s=l.next,o=Oh(l,t);o===0?(l.next=null,n===null?Lr=s:n.next=s,s===null&&(si=n)):(n=l,(e!==0||(o&3)!==0)&&(Ur=!0)),l=s}gt!==0&>!==5||fs(e),qa!==0&&(qa=0)}function Oh(e,t){for(var n=e.suspendedLanes,l=e.pingedLanes,s=e.expirationTimes,o=e.pendingLanes&-62914561;0y)break;var L=j.transferSize,H=j.initiatorType;L&&Kh(H)&&(j=j.responseEnd,m+=L*(j"u"?null:document;function ag(e,t,n){var l=ri;if(l&&typeof t=="string"&&t){var s=Rt(t);s='link[rel="'+e+'"][href="'+s+'"]',typeof n=="string"&&(s+='[crossorigin="'+n+'"]'),ng.has(s)||(ng.add(s),e={rel:e,crossOrigin:n,href:t},l.querySelector(s)===null&&(t=l.createElement("link"),jt(t,"link",e),lt(t),l.head.appendChild(t)))}}function yv(e){la.D(e),ag("dns-prefetch",e,null)}function _v(e,t){la.C(e,t),ag("preconnect",e,t)}function vv(e,t,n){la.L(e,t,n);var l=ri;if(l&&e&&t){var s='link[rel="preload"][as="'+Rt(t)+'"]';t==="image"&&n&&n.imageSrcSet?(s+='[imagesrcset="'+Rt(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(s+='[imagesizes="'+Rt(n.imageSizes)+'"]')):s+='[href="'+Rt(e)+'"]';var o=s;switch(t){case"style":o=ci(e);break;case"script":o=ui(e)}un.has(o)||(e=S({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),un.set(o,e),l.querySelector(s)!==null||t==="style"&&l.querySelector(ps(o))||t==="script"&&l.querySelector(ys(o))||(t=l.createElement("link"),jt(t,"link",e),lt(t),l.head.appendChild(t)))}}function bv(e,t){la.m(e,t);var n=ri;if(n&&e){var l=t&&typeof t.as=="string"?t.as:"script",s='link[rel="modulepreload"][as="'+Rt(l)+'"][href="'+Rt(e)+'"]',o=s;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=ui(e)}if(!un.has(o)&&(e=S({rel:"modulepreload",href:e},t),un.set(o,e),n.querySelector(s)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(ys(o)))return}l=n.createElement("link"),jt(l,"link",e),lt(l),n.head.appendChild(l)}}}function Sv(e,t,n){la.S(e,t,n);var l=ri;if(l&&e){var s=An(l).hoistableStyles,o=ci(e);t=t||"default";var m=s.get(o);if(!m){var y={loading:0,preload:null};if(m=l.querySelector(ps(o)))y.loading=5;else{e=S({rel:"stylesheet",href:e,"data-precedence":t},n),(n=un.get(o))&&Co(e,n);var j=m=l.createElement("link");lt(j),jt(j,"link",e),j._p=new Promise(function(C,L){j.onload=C,j.onerror=L}),j.addEventListener("load",function(){y.loading|=1}),j.addEventListener("error",function(){y.loading|=2}),y.loading|=4,Qr(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:y},s.set(o,m)}}}function xv(e,t){la.X(e,t);var n=ri;if(n&&e){var l=An(n).hoistableScripts,s=ui(e),o=l.get(s);o||(o=n.querySelector(ys(s)),o||(e=S({src:e,async:!0},t),(t=un.get(s))&&Do(e,t),o=n.createElement("script"),lt(o),jt(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(s,o))}}function jv(e,t){la.M(e,t);var n=ri;if(n&&e){var l=An(n).hoistableScripts,s=ui(e),o=l.get(s);o||(o=n.querySelector(ys(s)),o||(e=S({src:e,async:!0,type:"module"},t),(t=un.get(s))&&Do(e,t),o=n.createElement("script"),lt(o),jt(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(s,o))}}function lg(e,t,n,l){var s=(s=ye.current)?Yr(s):null;if(!s)throw Error(c(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=ci(n.href),n=An(s).hoistableStyles,l=n.get(t),l||(l={type:"style",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=ci(n.href);var o=An(s).hoistableStyles,m=o.get(e);if(m||(s=s.ownerDocument||s,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(e,m),(o=s.querySelector(ps(e)))&&!o._p&&(m.instance=o,m.state.loading=5),un.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},un.set(e,n),o||wv(s,e,n,m.state))),t&&l===null)throw Error(c(528,""));return m}if(t&&l!==null)throw Error(c(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ui(n),n=An(s).hoistableScripts,l=n.get(t),l||(l={type:"script",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,e))}}function ci(e){return'href="'+Rt(e)+'"'}function ps(e){return'link[rel="stylesheet"]['+e+"]"}function ig(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function wv(e,t,n,l){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=e.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),jt(t,"link",n),lt(t),e.head.appendChild(t))}function ui(e){return'[src="'+Rt(e)+'"]'}function ys(e){return"script[async]"+e}function sg(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Rt(n.href)+'"]');if(l)return t.instance=l,lt(l),l;var s=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),lt(l),jt(l,"style",s),Qr(l,n.precedence,e),t.instance=l;case"stylesheet":s=ci(n.href);var o=e.querySelector(ps(s));if(o)return t.state.loading|=4,t.instance=o,lt(o),o;l=ig(n),(s=un.get(s))&&Co(l,s),o=(e.ownerDocument||e).createElement("link"),lt(o);var m=o;return m._p=new Promise(function(y,j){m.onload=y,m.onerror=j}),jt(o,"link",l),t.state.loading|=4,Qr(o,n.precedence,e),t.instance=o;case"script":return o=ui(n.src),(s=e.querySelector(ys(o)))?(t.instance=s,lt(s),s):(l=n,(s=un.get(o))&&(l=S({},n),Do(l,s)),e=e.ownerDocument||e,s=e.createElement("script"),lt(s),jt(s,"link",l),e.head.appendChild(s),t.instance=s);case"void":return null;default:throw Error(c(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Qr(l,n.precedence,e));return t.instance}function Qr(e,t,n){for(var l=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),s=l.length?l[l.length-1]:null,o=s,m=0;m title"):null)}function Ev(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function ug(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function kv(e,t,n,l){if(n.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var s=ci(l.href),o=t.querySelector(ps(s));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Xr.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=o,lt(o);return}o=t.ownerDocument||t,l=ig(l),(s=un.get(s))&&Co(l,s),o=o.createElement("link"),lt(o);var m=o;m._p=new Promise(function(y,j){m.onload=y,m.onerror=j}),jt(o,"link",l),n.instance=o}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=Xr.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var zo=0;function Tv(e,t){return e.stylesheets&&e.count===0&&Vr(e,e.stylesheets),0zo?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(s)}}:null}function Xr(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Vr(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Zr=null;function Vr(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Zr=new Map,t.forEach(Av,e),Zr=null,Xr.call(e))}function Av(e,t){if(!(t.state.loading&4)){var n=Zr.get(e);if(n)var l=n.get(null);else{n=new Map,Zr.set(e,n);for(var s=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(i){console.error(i)}}return a(),Ho.exports=Xv(),Ho.exports}var Vv=Zv();/** + * react-router v7.17.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Rg="popstate";function Mg(a){return typeof a=="object"&&a!=null&&"pathname"in a&&"search"in a&&"hash"in a&&"state"in a&&"key"in a}function Jv(a={}){function i(d,f){let{pathname:h="/",search:_="",hash:g=""}=bl(d.location.hash.substring(1));return!h.startsWith("/")&&!h.startsWith(".")&&(h="/"+h),ld("",{pathname:h,search:_,hash:g},f.state&&f.state.usr||null,f.state&&f.state.key||"default")}function r(d,f){let h=d.document.querySelector("base"),_="";if(h&&h.getAttribute("href")){let g=d.location.href,p=g.indexOf("#");_=p===-1?g:g.slice(0,p)}return _+"#"+(typeof f=="string"?f:Ds(f))}function c(d,f){on(d.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(f)})`)}return Iv(i,r,c,a)}function et(a,i){if(a===!1||a===null||typeof a>"u")throw new Error(i)}function on(a,i){if(!a){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function Fv(){return Math.random().toString(36).substring(2,10)}function Og(a,i){return{usr:a.state,key:a.key,idx:i,masked:a.mask?{pathname:a.pathname,search:a.search,hash:a.hash}:void 0}}function ld(a,i,r=null,c,d){return{pathname:typeof a=="string"?a:a.pathname,search:"",hash:"",...typeof i=="string"?bl(i):i,state:r,key:i&&i.key||c||Fv(),mask:d}}function Ds({pathname:a="/",search:i="",hash:r=""}){return i&&i!=="?"&&(a+=i.charAt(0)==="?"?i:"?"+i),r&&r!=="#"&&(a+=r.charAt(0)==="#"?r:"#"+r),a}function bl(a){let i={};if(a){let r=a.indexOf("#");r>=0&&(i.hash=a.substring(r),a=a.substring(0,r));let c=a.indexOf("?");c>=0&&(i.search=a.substring(c),a=a.substring(0,c)),a&&(i.pathname=a)}return i}function Iv(a,i,r,c={}){let{window:d=document.defaultView,v5Compat:f=!1}=c,h=d.history,_="POP",g=null,p=x();p==null&&(p=0,h.replaceState({...h.state,idx:p},""));function x(){return(h.state||{idx:null}).idx}function S(){_="POP";let R=x(),q=R==null?null:R-p;p=R,g&&g({action:_,location:O.location,delta:q})}function k(R,q){_="PUSH";let F=Mg(R)?R:ld(O.location,R,q);r&&r(F,R),p=x()+1;let Z=Og(F,p),ne=O.createHref(F.mask||F);try{h.pushState(Z,"",ne)}catch(ie){if(ie instanceof DOMException&&ie.name==="DataCloneError")throw ie;d.location.assign(ne)}f&&g&&g({action:_,location:O.location,delta:1})}function $(R,q){_="REPLACE";let F=Mg(R)?R:ld(O.location,R,q);r&&r(F,R),p=x();let Z=Og(F,p),ne=O.createHref(F.mask||F);h.replaceState(Z,"",ne),f&&g&&g({action:_,location:O.location,delta:0})}function A(R){return Wv(d,R)}let O={get action(){return _},get location(){return a(d,h)},listen(R){if(g)throw new Error("A history only accepts one active listener");return d.addEventListener(Rg,S),g=R,()=>{d.removeEventListener(Rg,S),g=null}},createHref(R){return i(d,R)},createURL:A,encodeLocation(R){let q=A(R);return{pathname:q.pathname,search:q.search,hash:q.hash}},push:k,replace:$,go(R){return h.go(R)}};return O}function Wv(a,i,r=!1){let c="http://localhost";a&&(c=a.location.origin!=="null"?a.location.origin:a.location.href),et(c,"No window.location.(origin|href) available to create URL");let d=typeof i=="string"?i:Ds(i);return d=d.replace(/ $/,"%20"),!r&&d.startsWith("//")&&(d=c+d),new URL(d,c)}function Tp(a,i,r="/"){return Pv(a,i,r,!1)}function Pv(a,i,r,c,d){let f=typeof i=="string"?bl(i):i,h=sa(f.pathname||"/",r);if(h==null)return null;let _=eb(a),g=null,p=fb(h);for(let x=0;g==null&&x<_.length;++x)g=ob(_[x],p,c);return g}function eb(a){let i=Ap(a);return tb(i),i}function Ap(a,i=[],r=[],c="",d=!1){let f=(h,_,g=d,p)=>{let x={relativePath:p===void 0?h.path||"":p,caseSensitive:h.caseSensitive===!0,childrenIndex:_,route:h};if(x.relativePath.startsWith("/")){if(!x.relativePath.startsWith(c)&&g)return;et(x.relativePath.startsWith(c),`Absolute route path "${x.relativePath}" nested under path "${c}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),x.relativePath=x.relativePath.slice(c.length)}let S=bn([c,x.relativePath]),k=r.concat(x);h.children&&h.children.length>0&&(et(h.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${S}".`),Ap(h.children,i,k,S,g)),!(h.path==null&&!h.index)&&i.push({path:S,score:cb(S,h.index),routesMeta:k})};return a.forEach((h,_)=>{var g;if(h.path===""||!((g=h.path)!=null&&g.includes("?")))f(h,_);else for(let p of Np(h.path))f(h,_,!0,p)}),i}function Np(a){let i=a.split("/");if(i.length===0)return[];let[r,...c]=i,d=r.endsWith("?"),f=r.replace(/\?$/,"");if(c.length===0)return d?[f,""]:[f];let h=Np(c.join("/")),_=[];return _.push(...h.map(g=>g===""?f:[f,g].join("/"))),d&&_.push(...h),_.map(g=>a.startsWith("/")&&g===""?"/":g)}function tb(a){a.sort((i,r)=>i.score!==r.score?r.score-i.score:ub(i.routesMeta.map(c=>c.childrenIndex),r.routesMeta.map(c=>c.childrenIndex)))}var nb=/^:[\w-]+$/,ab=3,lb=2,ib=1,sb=10,rb=-2,$g=a=>a==="*";function cb(a,i){let r=a.split("/"),c=r.length;return r.some($g)&&(c+=rb),i&&(c+=lb),r.filter(d=>!$g(d)).reduce((d,f)=>d+(nb.test(f)?ab:f===""?ib:sb),c)}function ub(a,i){return a.length===i.length&&a.slice(0,-1).every((c,d)=>c===i[d])?a[a.length-1]-i[i.length-1]:0}function ob(a,i,r=!1){let{routesMeta:c}=a,d={},f="/",h=[];for(let _=0;_{if(x==="*"){let A=_[k]||"";h=f.slice(0,f.length-A.length).replace(/(.)\/+$/,"$1")}const $=_[k];return S&&!$?p[x]=void 0:p[x]=($||"").replace(/%2F/g,"/"),p},{}),pathname:f,pathnameBase:h,pattern:a}}function db(a,i=!1,r=!0){on(a==="*"||!a.endsWith("*")||a.endsWith("/*"),`Route path "${a}" will be treated as if it were "${a.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${a.replace(/\*$/,"/*")}".`);let c=[],d="^"+a.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(h,_,g,p,x)=>{if(c.push({paramName:_,isOptional:g!=null}),g){let S=x.charAt(p+h.length);return S&&S!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return a.endsWith("*")?(c.push({paramName:"*"}),d+=a==="*"||a==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?d+="\\/*$":a!==""&&a!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,i?void 0:"i"),c]}function fb(a){try{return a.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return on(!1,`The URL path "${a}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),a}}function sa(a,i){if(i==="/")return a;if(!a.toLowerCase().startsWith(i.toLowerCase()))return null;let r=i.endsWith("/")?i.length-1:i.length,c=a.charAt(r);return c&&c!=="/"?null:a.slice(r)||"/"}var mb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function hb(a,i="/"){let{pathname:r,search:c="",hash:d=""}=typeof a=="string"?bl(a):a,f;return r?(r=Cp(r),r.startsWith("/")?f=qg(r.substring(1),"/"):f=qg(r,i)):f=i,{pathname:f,search:yb(c),hash:_b(d)}}function qg(a,i){let r=yc(i).split("/");return a.split("/").forEach(d=>{d===".."?r.length>1&&r.pop():d!=="."&&r.push(d)}),r.length>1?r.join("/"):"/"}function Ko(a,i,r,c){return`Cannot include a '${a}' character in a manually specified \`to.${i}\` field [${JSON.stringify(c)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function gb(a){return a.filter((i,r)=>r===0||i.route.path&&i.route.path.length>0)}function jd(a){let i=gb(a);return i.map((r,c)=>c===i.length-1?r.pathname:r.pathnameBase)}function Ec(a,i,r,c=!1){let d;typeof a=="string"?d=bl(a):(d={...a},et(!d.pathname||!d.pathname.includes("?"),Ko("?","pathname","search",d)),et(!d.pathname||!d.pathname.includes("#"),Ko("#","pathname","hash",d)),et(!d.search||!d.search.includes("#"),Ko("#","search","hash",d)));let f=a===""||d.pathname==="",h=f?"/":d.pathname,_;if(h==null)_=r;else{let S=i.length-1;if(!c&&h.startsWith("..")){let k=h.split("/");for(;k[0]==="..";)k.shift(),S-=1;d.pathname=k.join("/")}_=S>=0?i[S]:"/"}let g=hb(d,_),p=h&&h!=="/"&&h.endsWith("/"),x=(f||h===".")&&r.endsWith("/");return!g.pathname.endsWith("/")&&(p||x)&&(g.pathname+="/"),g}var Cp=a=>a.replace(/\/\/+/g,"/"),bn=a=>Cp(a.join("/")),yc=a=>a.replace(/\/+$/,""),pb=a=>yc(a).replace(/^\/*/,"/"),yb=a=>!a||a==="?"?"":a.startsWith("?")?a:"?"+a,_b=a=>!a||a==="#"?"":a.startsWith("#")?a:"#"+a,vb=class{constructor(a,i,r,c=!1){this.status=a,this.statusText=i||"",this.internal=c,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}};function bb(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.internal=="boolean"&&"data"in a}function Sb(a){let i=a.map(r=>r.route.path).filter(Boolean);return bn(i)||"/"}var Dp=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function zp(a,i){let r=a;if(typeof r!="string"||!mb.test(r))return{absoluteURL:void 0,isExternal:!1,to:r};let c=r,d=!1;if(Dp)try{let f=new URL(window.location.href),h=r.startsWith("//")?new URL(f.protocol+r):new URL(r),_=sa(h.pathname,i);h.origin===f.origin&&_!=null?r=_+h.search+h.hash:d=!0}catch{on(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:c,isExternal:d,to:r}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Rp=["POST","PUT","PATCH","DELETE"];new Set(Rp);var xb=["GET",...Rp];new Set(xb);var pi=b.createContext(null);pi.displayName="DataRouter";var kc=b.createContext(null);kc.displayName="DataRouterState";var Mp=b.createContext(!1);function jb(){return b.useContext(Mp)}var Op=b.createContext({isTransitioning:!1});Op.displayName="ViewTransition";var wb=b.createContext(new Map);wb.displayName="Fetchers";var Eb=b.createContext(null);Eb.displayName="Await";var Ft=b.createContext(null);Ft.displayName="Navigation";var Os=b.createContext(null);Os.displayName="Location";var Ln=b.createContext({outlet:null,matches:[],isDataRoute:!1});Ln.displayName="Route";var wd=b.createContext(null);wd.displayName="RouteError";var $p="REACT_ROUTER_ERROR",kb="REDIRECT",Tb="ROUTE_ERROR_RESPONSE";function Ab(a){if(a.startsWith(`${$p}:${kb}:{`))try{let i=JSON.parse(a.slice(28));if(typeof i=="object"&&i&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.location=="string"&&typeof i.reloadDocument=="boolean"&&typeof i.replace=="boolean")return i}catch{}}function Nb(a){if(a.startsWith(`${$p}:${Tb}:{`))try{let i=JSON.parse(a.slice(40));if(typeof i=="object"&&i&&typeof i.status=="number"&&typeof i.statusText=="string")return new vb(i.status,i.statusText,i.data)}catch{}}function Cb(a,{relative:i}={}){et(yi(),"useHref() may be used only in the context of a component.");let{basename:r,navigator:c}=b.useContext(Ft),{hash:d,pathname:f,search:h}=$s(a,{relative:i}),_=f;return r!=="/"&&(_=f==="/"?r:bn([r,f])),c.createHref({pathname:_,search:h,hash:d})}function yi(){return b.useContext(Os)!=null}function xn(){return et(yi(),"useLocation() may be used only in the context of a component."),b.useContext(Os).location}var qp="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Lp(a){b.useContext(Ft).static||b.useLayoutEffect(a)}function Ed(){let{isDataRoute:a}=b.useContext(Ln);return a?Yb():Db()}function Db(){et(yi(),"useNavigate() may be used only in the context of a component.");let a=b.useContext(pi),{basename:i,navigator:r}=b.useContext(Ft),{matches:c}=b.useContext(Ln),{pathname:d}=xn(),f=JSON.stringify(jd(c)),h=b.useRef(!1);return Lp(()=>{h.current=!0}),b.useCallback((g,p={})=>{if(on(h.current,qp),!h.current)return;if(typeof g=="number"){r.go(g);return}let x=Ec(g,JSON.parse(f),d,p.relative==="path");a==null&&i!=="/"&&(x.pathname=x.pathname==="/"?i:bn([i,x.pathname])),(p.replace?r.replace:r.push)(x,p.state,p)},[i,r,f,d,a])}b.createContext(null);function $s(a,{relative:i}={}){let{matches:r}=b.useContext(Ln),{pathname:c}=xn(),d=JSON.stringify(jd(r));return b.useMemo(()=>Ec(a,JSON.parse(d),c,i==="path"),[a,d,c,i])}function zb(a,i){return Up(a,i)}function Up(a,i,r){var R;et(yi(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=b.useContext(Ft),{matches:d}=b.useContext(Ln),f=d[d.length-1],h=f?f.params:{},_=f?f.pathname:"/",g=f?f.pathnameBase:"/",p=f&&f.route;{let q=p&&p.path||"";Hp(_,!p||q.endsWith("*")||q.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${_}" (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 x=xn(),S;if(i){let q=typeof i=="string"?bl(i):i;et(g==="/"||((R=q.pathname)==null?void 0:R.startsWith(g)),`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 "${g}" but pathname "${q.pathname}" was given in the \`location\` prop.`),S=q}else S=x;let k=S.pathname||"/",$=k;if(g!=="/"){let q=g.replace(/^\//,"").split("/");$="/"+k.replace(/^\//,"").split("/").slice(q.length).join("/")}let A=r&&r.state.matches.length?r.state.matches.map(q=>Object.assign(q,{route:r.manifest[q.route.id]||q.route})):Tp(a,{pathname:$});on(p||A!=null,`No routes matched location "${S.pathname}${S.search}${S.hash}" `),on(A==null||A[A.length-1].route.element!==void 0||A[A.length-1].route.Component!==void 0||A[A.length-1].route.lazy!==void 0,`Matched leaf route at location "${S.pathname}${S.search}${S.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 O=qb(A&&A.map(q=>Object.assign({},q,{params:Object.assign({},h,q.params),pathname:bn([g,c.encodeLocation?c.encodeLocation(q.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:q.pathname]),pathnameBase:q.pathnameBase==="/"?g:bn([g,c.encodeLocation?c.encodeLocation(q.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:q.pathnameBase])})),d,r);return i&&O?b.createElement(Os.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...S},navigationType:"POP"}},O):O}function Rb(){let a=Gb(),i=bb(a)?`${a.status} ${a.statusText}`:a instanceof Error?a.message:JSON.stringify(a),r=a instanceof Error?a.stack:null,c="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:c},f={padding:"2px 4px",backgroundColor:c},h=null;return console.error("Error handled by React Router default ErrorBoundary:",a),h=b.createElement(b.Fragment,null,b.createElement("p",null,"💿 Hey developer 👋"),b.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",b.createElement("code",{style:f},"ErrorBoundary")," or"," ",b.createElement("code",{style:f},"errorElement")," prop on your route.")),b.createElement(b.Fragment,null,b.createElement("h2",null,"Unexpected Application Error!"),b.createElement("h3",{style:{fontStyle:"italic"}},i),r?b.createElement("pre",{style:d},r):null,h)}var Mb=b.createElement(Rb,null),Bp=class extends b.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,i){return i.location!==a.location||i.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:i.error,location:i.location,revalidation:a.revalidation||i.revalidation}}componentDidCatch(a,i){this.props.onError?this.props.onError(a,i):console.error("React Router caught the following error during render",a)}render(){let a=this.state.error;if(this.context&&typeof a=="object"&&a&&"digest"in a&&typeof a.digest=="string"){const r=Nb(a.digest);r&&(a=r)}let i=a!==void 0?b.createElement(Ln.Provider,{value:this.props.routeContext},b.createElement(wd.Provider,{value:a,children:this.props.component})):this.props.children;return this.context?b.createElement(Ob,{error:a},i):i}};Bp.contextType=Mp;var Xo=new WeakMap;function Ob({children:a,error:i}){let{basename:r}=b.useContext(Ft);if(typeof i=="object"&&i&&"digest"in i&&typeof i.digest=="string"){let c=Ab(i.digest);if(c){let d=Xo.get(i);if(d)throw d;let f=zp(c.location,r);if(Dp&&!Xo.get(i))if(f.isExternal||c.reloadDocument)window.location.href=f.absoluteURL||f.to;else{const h=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(f.to,{replace:c.replace}));throw Xo.set(i,h),h}return b.createElement("meta",{httpEquiv:"refresh",content:`0;url=${f.absoluteURL||f.to}`})}}return a}function $b({routeContext:a,match:i,children:r}){let c=b.useContext(pi);return c&&c.static&&c.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=i.route.id),b.createElement(Ln.Provider,{value:a},r)}function qb(a,i=[],r){let c=r==null?void 0:r.state;if(a==null){if(!c)return null;if(c.errors)a=c.matches;else if(i.length===0&&!c.initialized&&c.matches.length>0)a=c.matches;else return null}let d=a,f=c==null?void 0:c.errors;if(f!=null){let x=d.findIndex(S=>S.route.id&&(f==null?void 0:f[S.route.id])!==void 0);et(x>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(f).join(",")}`),d=d.slice(0,Math.min(d.length,x+1))}let h=!1,_=-1;if(r&&c){h=c.renderFallback;for(let x=0;x=0?d=d.slice(0,_+1):d=[d[0]];break}}}}let g=r==null?void 0:r.onError,p=c&&g?(x,S)=>{var k,$;g(x,{location:c.location,params:(($=(k=c.matches)==null?void 0:k[0])==null?void 0:$.params)??{},pattern:Sb(c.matches),errorInfo:S})}:void 0;return d.reduceRight((x,S,k)=>{let $,A=!1,O=null,R=null;c&&($=f&&S.route.id?f[S.route.id]:void 0,O=S.route.errorElement||Mb,h&&(_<0&&k===0?(Hp("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),A=!0,R=null):_===k&&(A=!0,R=S.route.hydrateFallbackElement||null)));let q=i.concat(d.slice(0,k+1)),F=()=>{let Z;return $?Z=O:A?Z=R:S.route.Component?Z=b.createElement(S.route.Component,null):S.route.element?Z=S.route.element:Z=x,b.createElement($b,{match:S,routeContext:{outlet:x,matches:q,isDataRoute:c!=null},children:Z})};return c&&(S.route.ErrorBoundary||S.route.errorElement||k===0)?b.createElement(Bp,{location:c.location,revalidation:c.revalidation,component:O,error:$,children:F(),routeContext:{outlet:null,matches:q,isDataRoute:!0},onError:p}):F()},null)}function kd(a){return`${a} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Lb(a){let i=b.useContext(pi);return et(i,kd(a)),i}function Ub(a){let i=b.useContext(kc);return et(i,kd(a)),i}function Bb(a){let i=b.useContext(Ln);return et(i,kd(a)),i}function Td(a){let i=Bb(a),r=i.matches[i.matches.length-1];return et(r.route.id,`${a} can only be used on routes that contain a unique "id"`),r.route.id}function Hb(){return Td("useRouteId")}function Gb(){var c;let a=b.useContext(wd),i=Ub("useRouteError"),r=Td("useRouteError");return a!==void 0?a:(c=i.errors)==null?void 0:c[r]}function Yb(){let{router:a}=Lb("useNavigate"),i=Td("useNavigate"),r=b.useRef(!1);return Lp(()=>{r.current=!0}),b.useCallback(async(d,f={})=>{on(r.current,qp),r.current&&(typeof d=="number"?await a.navigate(d):await a.navigate(d,{fromRouteId:i,...f}))},[a,i])}var Lg={};function Hp(a,i,r){!i&&!Lg[a]&&(Lg[a]=!0,on(!1,r))}b.memo(Qb);function Qb({routes:a,manifest:i,future:r,state:c,isStatic:d,onError:f}){return Up(a,void 0,{manifest:i,state:c,isStatic:d,onError:f})}function Kb({to:a,replace:i,state:r,relative:c}){et(yi()," may be used only in the context of a component.");let{static:d}=b.useContext(Ft);on(!d," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:f}=b.useContext(Ln),{pathname:h}=xn(),_=Ed(),g=Ec(a,jd(f),h,c==="path"),p=JSON.stringify(g);return b.useEffect(()=>{_(JSON.parse(p),{replace:i,state:r,relative:c})},[_,p,c,i,r]),null}function id(a){et(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Xb({basename:a="/",children:i=null,location:r,navigationType:c="POP",navigator:d,static:f=!1,useTransitions:h}){et(!yi(),"You cannot render a inside another . You should never have more than one in your app.");let _=a.replace(/^\/*/,"/"),g=b.useMemo(()=>({basename:_,navigator:d,static:f,useTransitions:h,future:{}}),[_,d,f,h]);typeof r=="string"&&(r=bl(r));let{pathname:p="/",search:x="",hash:S="",state:k=null,key:$="default",mask:A}=r,O=b.useMemo(()=>{let R=sa(p,_);return R==null?null:{location:{pathname:R,search:x,hash:S,state:k,key:$,mask:A},navigationType:c}},[_,p,x,S,k,$,c,A]);return on(O!=null,` is not able to match the URL "${p}${x}${S}" because it does not start with the basename, so the won't render anything.`),O==null?null:b.createElement(Ft.Provider,{value:g},b.createElement(Os.Provider,{children:i,value:O}))}function Zb({children:a,location:i}){return zb(sd(a),i)}function sd(a,i=[]){let r=[];return b.Children.forEach(a,(c,d)=>{if(!b.isValidElement(c))return;let f=[...i,d];if(c.type===b.Fragment){r.push.apply(r,sd(c.props.children,f));return}et(c.type===id,`[${typeof c.type=="string"?c.type:c.type.name}] is not a component. All component children of must be a or `),et(!c.props.index||!c.props.children,"An index route cannot have child routes.");let h={id:c.props.id||f.join("-"),caseSensitive:c.props.caseSensitive,element:c.props.element,Component:c.props.Component,index:c.props.index,path:c.props.path,middleware:c.props.middleware,loader:c.props.loader,action:c.props.action,hydrateFallbackElement:c.props.hydrateFallbackElement,HydrateFallback:c.props.HydrateFallback,errorElement:c.props.errorElement,ErrorBoundary:c.props.ErrorBoundary,hasErrorBoundary:c.props.hasErrorBoundary===!0||c.props.ErrorBoundary!=null||c.props.errorElement!=null,shouldRevalidate:c.props.shouldRevalidate,handle:c.props.handle,lazy:c.props.lazy};c.props.children&&(h.children=sd(c.props.children,f)),r.push(h)}),r}var uc="get",oc="application/x-www-form-urlencoded";function Tc(a){return typeof HTMLElement<"u"&&a instanceof HTMLElement}function Vb(a){return Tc(a)&&a.tagName.toLowerCase()==="button"}function Jb(a){return Tc(a)&&a.tagName.toLowerCase()==="form"}function Fb(a){return Tc(a)&&a.tagName.toLowerCase()==="input"}function Ib(a){return!!(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)}function Wb(a,i){return a.button===0&&(!i||i==="_self")&&!Ib(a)}var nc=null;function Pb(){if(nc===null)try{new FormData(document.createElement("form"),0),nc=!1}catch{nc=!0}return nc}var e0=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Zo(a){return a!=null&&!e0.has(a)?(on(!1,`"${a}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${oc}"`),null):a}function t0(a,i){let r,c,d,f,h;if(Jb(a)){let _=a.getAttribute("action");c=_?sa(_,i):null,r=a.getAttribute("method")||uc,d=Zo(a.getAttribute("enctype"))||oc,f=new FormData(a)}else if(Vb(a)||Fb(a)&&(a.type==="submit"||a.type==="image")){let _=a.form;if(_==null)throw new Error('Cannot submit a