diff --git a/app/server/db.mjs b/app/server/db.mjs index 06801f5..41ffae5 100644 --- a/app/server/db.mjs +++ b/app/server/db.mjs @@ -1084,13 +1084,28 @@ function listFootprints(d, query) { if (!row) throw new Error('附件不存在'); withTx(d, () => { const h = hlcNext(d); - d.prepare('UPDATE attachment SET remote_url=?, remote_thumb=?, hlc=? WHERE id=?') + d.prepare('UPDATE attachment SET remote_url=COALESCE(?, remote_url), remote_thumb=COALESCE(?, remote_thumb), hlc=? WHERE id=?') .run(payload.remote_url ?? null, payload.remote_thumb ?? null, h, row.id); touchOplog(d, 'attachment', row.uuid, 'upsert', h); }); return { ok: true }; } + case 'attachment_set_thumb': { + // 客户端上传原始二进制后回填缩略图(本地元数据,不进 oplog) + const row = d.prepare('SELECT * FROM attachment WHERE id=?').get(payload.id); + if (!row) throw new Error('附件不存在'); + const tb = Buffer.from(payload.thumb_b64 || '', 'base64'); + if (!tb.length) throw new Error('缩略图为空'); + const rel = path.join('attachments', String(row.owner_id), crypto.randomUUID() + '_thumb.webp'); + const abs = path.join(DATA_DIR, rel); + fs.mkdirSync(path.dirname(abs), { recursive: true }); + fs.writeFileSync(abs, tb); + d.prepare('UPDATE attachment SET thumb_rel_path=? WHERE id=?') + .run(rel.split(path.sep).join('/'), row.id); + return { ok: true }; + } + case 'view_list': return { items: d.prepare('SELECT * FROM saved_view WHERE deleted_at IS NULL ORDER BY id').all().map(v => ({ ...v, filter: JSON.parse(v.filter || '{}'), sort: JSON.parse(v.sort || '{}'), is_default: !!v.is_default diff --git a/app/src/components/common/AttachmentPicker.tsx b/app/src/components/common/AttachmentPicker.tsx index ea650fb..3cf9fee 100644 --- a/app/src/components/common/AttachmentPicker.tsx +++ b/app/src/components/common/AttachmentPicker.tsx @@ -5,7 +5,7 @@ import { fmtSize } from '@/lib/format'; import { makeThumb } from '@/lib/img'; import type { Attachment } from '@/lib/types'; -export interface PendingAtt { file_name: string; mime?: string; size: number; data_b64: string; thumb_b64?: string; preview?: string; } +export interface PendingAtt { file: File; file_name: string; mime?: string; size: number; data_b64: string; thumb_b64?: string; preview?: string; } export function AttachmentPicker({ items, pending, onPick, onDeleteSaved, onDeletePending, onOpenSaved, uploading }: { items: Attachment[]; @@ -83,11 +83,26 @@ export function AttachmentPicker({ items, pending, onPick, onDeleteSaved, onDele } export async function fileToPending(file: File): Promise { + // 大图压缩:>3MB 的照片重编码为 2560px JPEG q0.85(佐证材料足够清晰,上传体积降 60-80%) + let uploadFile: File = file; + if (file.type === 'image/jpeg' && file.size > 3 * 1024 * 1024) { + try { + const bitmap = await createImageBitmap(file); + const scale = Math.min(1, 2560 / Math.max(bitmap.width, bitmap.height)); + const canvas = document.createElement('canvas'); + canvas.width = Math.round(bitmap.width * scale); + canvas.height = Math.round(bitmap.height * scale); + canvas.getContext('2d')?.drawImage(bitmap, 0, 0, canvas.width, canvas.height); + const blob = await new Promise(r => canvas.toBlob(r, 'image/jpeg', 0.85)); + if (blob && blob.size < file.size) uploadFile = new File([blob], file.name.replace(/\.jpe?g$/i, '') + '.jpg', { type: 'image/jpeg' }); + bitmap.close?.(); + } catch { /* 压缩失败用原图 */ } + } const result = await new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => resolve(String(reader.result || '')); reader.onerror = () => reject(new Error('读取文件失败')); - reader.readAsDataURL(file); + reader.readAsDataURL(uploadFile); }); const comma = result.indexOf(','); const data_b64 = comma >= 0 ? result.slice(comma + 1) : result; @@ -100,9 +115,10 @@ export async function fileToPending(file: File): Promise { } catch { thumb_b64 = undefined; } } return { + file: uploadFile, file_name: file.name, - mime: file.type || undefined, - size: file.size, + mime: uploadFile.type || undefined, + size: uploadFile.size, data_b64, thumb_b64, preview: file.type?.startsWith('image/') ? URL.createObjectURL(file) : undefined diff --git a/app/src/components/records/RecordEditorDialog.tsx b/app/src/components/records/RecordEditorDialog.tsx index 6a650e1..a56bb00 100644 --- a/app/src/components/records/RecordEditorDialog.tsx +++ b/app/src/components/records/RecordEditorDialog.tsx @@ -1,7 +1,7 @@ import { useEffect, useMemo, useState } from 'react'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { - attachmentAdd, attachmentDelete, attachmentList, + attachmentDelete, attachmentList, attachmentUploadRaw, footprintGet, footprintList, footprintUpsert, listDimensions, listTaxonomy, listTypes } from '@/lib/api'; import { AttachmentPreview } from '@/components/common/AttachmentPreview'; @@ -157,7 +157,7 @@ export function RecordEditorDialog({ open, onClose, footprintId, onSaved }: { }; const saved = await footprintUpsert(input); for (const p of pendingAtts) { - await attachmentAdd({ owner_id: saved.id, file_name: p.file_name, mime: p.mime, size: p.size, data_b64: p.data_b64, thumb_b64: p.thumb_b64 }); + await attachmentUploadRaw(saved.id, p.file, p.thumb_b64); } return saved.id; }, @@ -348,7 +348,7 @@ export function RecordEditorDialog({ open, onClose, footprintId, onSaved }: { continue; } const p = await fileToPending(f); - await attachmentAdd({ owner_id: footprintId, file_name: p.file_name, mime: p.mime, size: p.size, data_b64: p.data_b64, thumb_b64: p.thumb_b64 }); + await attachmentUploadRaw(footprintId, p.file, p.thumb_b64); done++; } if (done > 0) { diff --git a/app/src/lib/api.ts b/app/src/lib/api.ts index 3ab94cb..81024ec 100644 --- a/app/src/lib/api.ts +++ b/app/src/lib/api.ts @@ -135,6 +135,20 @@ export const attachmentList = (owner_id: number) => call<{ items: Attachment[] } export const attachmentDelete = (id: number) => call<{ ok: true }>('attachment_delete', { id }); export const attachmentRead = (id: number) => call<{ data_b64: string; mime?: string; file_name: string }>('attachment_read', { id }); +export async function attachmentUploadRaw(ownerId: number, file: File, thumbB64?: string): Promise { + const q = new URLSearchParams({ owner: String(ownerId), name: file.name, mime: file.type || 'application/octet-stream' }); + const r = await fetch(getServerUrl() + '/sync/attachment/raw?' + q, { + method: 'PUT', + headers: { authorization: 'Bearer ' + getToken(), 'content-type': file.type || 'application/octet-stream' }, + body: file, + }); + const j = await r.json().catch(() => ({ ok: false, error: 'HTTP ' + r.status })); + if (!j.ok) throw new Error(j.error || '上传失败'); + const item = j.data.item as Attachment; + if (thumbB64) { try { await call('attachment_set_thumb', { id: item.id, thumb_b64: thumbB64 }); } catch {} } + return item; +} + export const attachmentThumb = (id: number) => call<{ data_b64: string; mime?: string; file_name: string }>('attachment_thumb', { id }); diff --git a/scripts/test-integration.mjs b/scripts/test-integration.mjs index 3515544..922ba3d 100644 --- a/scripts/test-integration.mjs +++ b/scripts/test-integration.mjs @@ -70,6 +70,17 @@ const attThumb = await api(A, 'POST', '/api/attachment_thumb', { id: attAdd.body ok(attThumb.body?.data?.data_b64 === Buffer.from('THUMBWEBPDATA').toString('base64'), 'attachment_thumb 返回缩略图内容', attThumb.body); const attRead2 = await api(A, 'POST', '/api/attachment_read', { id: attAdd.body?.data?.item?.id }, T); ok(attRead2.body?.data?.data_b64 === Buffer.from('ORIGDATA').toString('base64'), 'attachment_read 原图不受影响', attRead2.body); +// PUT 原始二进制上传(新通道) +const rawUp = await fetch(A + '/sync/attachment/raw?owner=' + fpId + '&name=raw.bin&mime=application/octet-stream', { + method: 'PUT', headers: { authorization: 'Bearer ' + T, 'content-type': 'application/octet-stream' }, + body: Buffer.from('RAWORIGDATA'), +}).then(async r => ({ s: r.status, b: await r.json().catch(() => null) })); +ok(rawUp.s === 200 && !!rawUp.b?.data?.item?.id, 'PUT raw 二进制上传', rawUp.body); +const tSet = await api(A, 'POST', '/api/attachment_set_thumb', { id: rawUp.b?.data?.item?.id, thumb_b64: Buffer.from('RAWSUMB').toString('base64') }, T); +ok(tSet.body?.ok === true, 'attachment_set_thumb 回填缩略图', tSet.body); +const tGet = await api(A, 'POST', '/api/attachment_thumb', { id: rawUp.b?.data?.item?.id }, T); +ok(tGet.body?.data?.data_b64 === Buffer.from('RAWSUMB').toString('base64'), 'attachment_thumb 读回 raw 缩略图', tGet.body); + // 删除整条记录 → 附件级联清理 const fpDel = await api(A, 'POST', '/api/footprint_delete', { id: fpId }, T); ok(fpDel.body?.ok === true, '删除整条记录'); diff --git a/sync-server/src/index.mjs b/sync-server/src/index.mjs index 38816f4..56788ae 100644 --- a/sync-server/src/index.mjs +++ b/sync-server/src/index.mjs @@ -272,25 +272,63 @@ const server = http.createServer(async (req, res) => { }); } - // 附件直传图床:attachment_add 落本地后同步推 Lsky(COS),失败自动回退本地 + // 附件上传(原始二进制 PUT):无 base64 膨胀;图床上传改为后台异步,保存立即返回 + if (req.method === 'PUT' && route === '/sync/attachment/raw') { + const q = url.searchParams; + const name = (q.get('name') || 'file').slice(0, 200); + const mime = (q.get('mime') || 'application/octet-stream').slice(0, 120); + const ownerId = Number(q.get('owner') || 0); + if (!ownerId) return send(400, false, '缺少 owner'); + const chunks = []; + for await (const c of req) chunks.push(c); + const buf = Buffer.concat(chunks); + if (!buf.length) return send(400, false, '空请求体'); + if (buf.length > 80 * 1024 * 1024) return send(400, false, '单个文件不超过 80MB'); + const thumbB64 = String(q.get('thumb') || ''); + const data = commandsFor(auth.user_id).handleCommand('attachment_add', { + owner_id: ownerId, file_name: name, mime, size: buf.length, data_b64: buf.toString('base64') + }); + const cmds = commandsFor(auth.user_id); + const itemId = data.item.id; + // 缩略图回填(带 base64,跟随本响应返回后由客户端二次调用亦可;此处直接从 query 收) + // 图床异步直传:失败仅记日志,可用 /admin/attachments/sync-lsky 补传 + if (LSKY_API && LSKY_TOKEN) { + (async () => { + try { + const up = await lskyUpload(buf, name, mime); + let thumbUrl = null; + if (thumbB64) { + const tUp = await lskyUpload(Buffer.from(thumbB64, 'base64'), 'thumb-' + name + '.webp', 'image/webp'); + thumbUrl = tUp.thumb_url || tUp.url; + } + cmds.handleCommand('attachment_set_remote', { id: itemId, remote_url: up.url, remote_thumb: thumbUrl }); + console.log('[lsky] 附件 #' + itemId + ' 已上图床'); + } catch (e) { console.log('[lsky] 附件 #' + itemId + ' 后台上传失败(可用 sync-lsky 补传):', e.message); } + })(); + } + return send(200, true, data); + } + + // 附件直传图床(兼容旧 base64 通道):同样异步 if (req.method === 'POST' && route === '/api/attachment_add') { const body = await readJson(req); const data = commandsFor(auth.user_id).handleCommand('attachment_add', body); if (LSKY_API && LSKY_TOKEN) { - try { - const orig = Buffer.from(body.data_b64 || '', 'base64'); - const up = await lskyUpload(orig, body.file_name || ('file-' + data.item.id), body.mime); - let thumbUrl = null; - if (body.thumb_b64) { - const tUp = await lskyUpload(Buffer.from(body.thumb_b64, 'base64'), 'thumb-' + (body.file_name || 'img') + '.webp', 'image/webp'); - thumbUrl = tUp.thumb_url || tUp.url; - } - commandsFor(auth.user_id).handleCommand('attachment_set_remote', { id: data.item.id, remote_url: up.url, remote_thumb: thumbUrl }); - data.item.remote_url = up.url; - data.item.remote_thumb = thumbUrl; - } catch (e) { - console.log('[lsky] 直传失败,保留本地存储:', e.message); - } + const orig = Buffer.from(body.data_b64 || '', 'base64'); + const itemId = data.item.id; + (async () => { + try { + const up = await lskyUpload(orig, body.file_name || ('file-' + itemId), body.mime); + let thumbUrl = null; + if (body.thumb_b64) { + const tUp = await lskyUpload(Buffer.from(body.thumb_b64, 'base64'), 'thumb-' + (body.file_name || 'img') + '.webp', 'image/webp'); + thumbUrl = tUp.thumb_url || tUp.url; + } + cmds = null; + commandsFor(auth.user_id).handleCommand('attachment_set_remote', { id: itemId, remote_url: up.url, remote_thumb: thumbUrl }); + console.log('[lsky] 附件 #' + itemId + ' 已上图床'); + } catch (e) { console.log('[lsky] 附件 #' + itemId + ' 后台上传失败:', e.message); } + })(); } return send(200, true, data); } diff --git a/sync-server/www/assets/AdminPage-BbzGIMOU.js b/sync-server/www/assets/AdminPage-CrZVvSas.js similarity index 97% rename from sync-server/www/assets/AdminPage-BbzGIMOU.js rename to sync-server/www/assets/AdminPage-CrZVvSas.js index a3c06e8..bc936e8 100644 --- a/sync-server/www/assets/AdminPage-BbzGIMOU.js +++ b/sync-server/www/assets/AdminPage-CrZVvSas.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Cpiyh4tF.js","assets/index-CLr4ofF5.css"])))=>i.map(i=>d[i]); -import{c as o,u as Z,Y,e as _,Z as C,r as n,f as h,j as s,E as w,B as t,_ as U,P as J,I as z,i as ee,k as se,T as ae,l as p,$ as te,a0 as ne,a1 as ie,a2 as re,a3 as ce,a4 as de,a5 as le,a6 as oe}from"./index-Cpiyh4tF.js";import{C as $,a as B,b as O}from"./card-CiUXsmh1.js";/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BFEQKHK8.js","assets/index-CLr4ofF5.css"])))=>i.map(i=>d[i]); +import{c as o,u as Z,Y,e as _,Z as C,r as n,f as h,j as s,E as w,B as t,_ as U,P as J,I as z,i as ee,k as se,T as ae,l as p,$ as te,a0 as ne,a1 as ie,a2 as re,a3 as ce,a4 as de,a5 as le,a6 as oe}from"./index-BFEQKHK8.js";import{C as $,a as B,b as O}from"./card-BXfIbybL.js";/** * @license lucide-react v0.475.0 - ISC * * This source code is licensed under the ISC license. @@ -24,5 +24,5 @@ import{c as o,u as Z,Y,e as _,Z as C,r as n,f as h,j as s,E as w,B as t,_ as U,P * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const ye=[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]],ke=o("UsersRound",ye);function be({i:c}){return c.used_by?s.jsx(p,{color:"var(--text-3)",children:"已使用"}):c.valid?s.jsx(p,{color:"var(--success)",children:"可用"}):s.jsx(p,{color:"var(--warning)",children:"已停用"})}function Ne(){var Q,K,L;const c=Z(),i=Y(),E=_({queryKey:["me-admin"],queryFn:async()=>(await de(()=>import("./index-Cpiyh4tF.js").then(a=>a.a9),__vite__mapDeps([0,1]))).serverMe(i),enabled:!!C()}),M=_({queryKey:["admin-users"],queryFn:()=>le(i),enabled:!!C()}),v=_({queryKey:["admin-invites"],queryFn:()=>oe(i),enabled:!!C()}),[I,r]=n.useState(""),[H,S]=n.useState(null),[V,j]=n.useState(!1),[x,y]=n.useState(""),[q,k]=n.useState(""),[G,d]=n.useState(null),[b,f]=n.useState(""),[l,W]=n.useState("all"),m=()=>{c.invalidateQueries({queryKey:["admin-invites"]})},u=e=>r(e.message||"操作失败"),F=h({mutationFn:()=>ne(5,i),onSuccess:e=>{m(),r(""),navigator.clipboard.writeText(e.codes.join(` + */const ye=[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]],ke=o("UsersRound",ye);function be({i:c}){return c.used_by?s.jsx(p,{color:"var(--text-3)",children:"已使用"}):c.valid?s.jsx(p,{color:"var(--success)",children:"可用"}):s.jsx(p,{color:"var(--warning)",children:"已停用"})}function Ne(){var Q,K,L;const c=Z(),i=Y(),E=_({queryKey:["me-admin"],queryFn:async()=>(await de(()=>import("./index-BFEQKHK8.js").then(a=>a.a9),__vite__mapDeps([0,1]))).serverMe(i),enabled:!!C()}),M=_({queryKey:["admin-users"],queryFn:()=>le(i),enabled:!!C()}),v=_({queryKey:["admin-invites"],queryFn:()=>oe(i),enabled:!!C()}),[I,r]=n.useState(""),[H,S]=n.useState(null),[V,j]=n.useState(!1),[x,y]=n.useState(""),[q,k]=n.useState(""),[G,d]=n.useState(null),[b,f]=n.useState(""),[l,W]=n.useState("all"),m=()=>{c.invalidateQueries({queryKey:["admin-invites"]})},u=e=>r(e.message||"操作失败"),F=h({mutationFn:()=>ne(5,i),onSuccess:e=>{m(),r(""),navigator.clipboard.writeText(e.codes.join(` `)).catch(()=>{})},onError:u}),g=h({mutationFn:()=>ie(x.trim(),q.trim(),i),onSuccess:()=>{m(),j(!1),y(""),k(""),r("")},onError:u}),N=h({mutationFn:e=>re(e.id,e.patch,i),onSuccess:()=>{m(),d(null),r("")},onError:u}),X=h({mutationFn:e=>ce(e,i),onSuccess:()=>{m(),r("")},onError:u}),T=n.useMemo(()=>{var e;return((e=v.data)==null?void 0:e.invites)??[]},[v.data]),P=((Q=M.data)==null?void 0:Q.users)??[],R=n.useMemo(()=>T.filter(e=>l==="valid"?e.valid&&!e.used_by:l==="used"?!!e.used_by:l==="disabled"?!e.valid&&!e.used_by:!0),[T,l]);if(E.data&&!E.data.is_admin)return s.jsx(w,{title:"需要管理员账号",description:"当前登录账号不是管理员。"});const D=e=>{navigator.clipboard.writeText(e.code),S(e.id),setTimeout(()=>S(a=>a===e.id?null:a),1500)};return s.jsxs("div",{className:"mx-auto max-w-[1080px] px-6 py-5",children:[s.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[s.jsx("h2",{className:"text-[15px] font-semibold text-ink-1",children:"管理"}),s.jsxs(t,{variant:"secondary",onClick:()=>{c.invalidateQueries()},children:[s.jsx(pe,{size:13})," 刷新"]})]}),I&&s.jsxs("div",{className:"mb-3 flex items-center justify-between rounded-md border border-danger/30 bg-danger-subtle px-3 py-2 text-[12px] text-danger",children:[s.jsx("span",{children:I}),s.jsx("button",{className:"rounded p-0.5 hover:bg-surface-3",onClick:()=>r(""),"aria-label":"关闭",children:s.jsx(U,{size:13})})]}),s.jsxs("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:[s.jsxs($,{children:[s.jsx(B,{title:"邀请码("+(((K=v.data)==null?void 0:K.total)??0)+")",extra:s.jsxs("div",{className:"flex gap-1.5",children:[s.jsxs(t,{size:"sm",variant:"secondary",onClick:()=>{j(e=>!e),r("")},children:[s.jsx(J,{size:13})," 新建"]}),s.jsx(t,{size:"sm",variant:"primary",disabled:F.isPending,onClick:()=>F.mutate(),children:"批量生成 5 个"})]})}),s.jsxs(O,{className:"p-0",children:[V&&s.jsxs("div",{className:"flex flex-wrap items-end gap-2 border-b border-line bg-surface-2 px-4 py-3",children:[s.jsxs("label",{className:"flex flex-col gap-1",children:[s.jsx("span",{className:"text-[11px] font-medium text-ink-3",children:"邀请码(4-32 位字母数字-_)"}),s.jsx(z,{className:"w-[210px]",value:x,placeholder:"如 XIONG-2025",onChange:e=>y(e.target.value)})]}),s.jsxs("label",{className:"flex flex-col gap-1",children:[s.jsx("span",{className:"text-[11px] font-medium text-ink-3",children:"备注(可选)"}),s.jsx(z,{className:"w-[180px]",value:q,placeholder:"发给谁 / 用途",onChange:e=>k(e.target.value),onKeyDown:e=>{e.key==="Enter"&&x.trim()&&g.mutate()}})]}),s.jsxs("div",{className:"flex gap-1.5 pb-0.5",children:[s.jsx(t,{size:"sm",variant:"primary",disabled:!x.trim()||g.isPending,onClick:()=>g.mutate(),children:"创建"}),s.jsx(t,{size:"sm",variant:"ghost",onClick:()=>{j(!1),y(""),k("")},children:"取消"})]})]}),s.jsx("div",{className:"flex gap-1 border-b border-line px-4 py-2 text-[12px]",children:[["all","全部"],["valid","可用"],["used","已使用"],["disabled","已停用"]].map(([e,a])=>s.jsx("button",{className:"rounded-md px-2.5 py-1 transition-colors "+(l===e?"bg-brand-subtle font-medium text-brand-text":"text-ink-3 hover:bg-surface-3"),onClick:()=>W(e),children:a},e))}),R.length?s.jsx("div",{className:"divide-y divide-line max-h-[430px] overflow-y-auto",children:R.map(e=>s.jsxs("div",{className:"flex items-center gap-2 px-4 py-2.5 text-[12.5px]",children:[s.jsx("button",{className:"num shrink-0 cursor-pointer rounded-sm bg-surface-3 px-1.5 py-0.5 font-mono text-[12px] text-ink-1 transition-colors hover:bg-brand-subtle hover:text-brand-text",title:"点击复制",onClick:()=>D(e),children:H===e.id?s.jsxs("span",{className:"inline-flex items-center gap-1 text-success",children:[s.jsx(A,{size:11}),"已复制"]}):e.code}),s.jsx(be,{i:e}),G===e.id?s.jsxs("span",{className:"ml-1 flex min-w-0 flex-1 items-center gap-1",children:[s.jsx(z,{className:"h-7 flex-1 text-[12px]",value:b,autoFocus:!0,placeholder:"备注(64 字以内)",onChange:a=>f(a.target.value),onKeyDown:a=>{a.key==="Enter"&&N.mutate({id:e.id,patch:{remark:b}}),a.key==="Escape"&&d(null)}}),s.jsx(t,{size:"icon-sm",variant:"ghost","aria-label":"保存备注",className:"text-success",onClick:()=>N.mutate({id:e.id,patch:{remark:b}}),children:s.jsx(A,{size:13})}),s.jsx(t,{size:"icon-sm",variant:"ghost","aria-label":"取消",className:"text-ink-3",onClick:()=>d(null),children:s.jsx(U,{size:13})})]}):s.jsx("button",{className:"min-w-0 flex-1 truncate text-left text-[12px] text-ink-3 hover:text-ink-2",title:e.remark?"点击编辑备注":e.created_by_name?"由 "+e.created_by_name+" 创建 · 点击添加备注":"点击添加备注",onClick:()=>{d(e.id),f(e.remark??"")},children:e.remark||(e.created_by_name?"由 "+e.created_by_name+" 创建":s.jsx("span",{className:"opacity-60",children:"添加备注…"}))}),e.used_by_name&&s.jsxs("span",{className:"shrink-0 text-ink-3",children:["被 ",e.used_by_name," 使用于 ",ee(e.used_at)]}),s.jsxs("span",{className:"ml-auto flex shrink-0 items-center gap-0.5",children:[s.jsx(t,{size:"icon-sm",variant:"ghost","aria-label":"复制",className:"text-ink-3",onClick:()=>D(e),children:s.jsx(ue,{size:13})}),!e.used_by&&s.jsxs(s.Fragment,{children:[s.jsx(t,{size:"icon-sm",variant:"ghost","aria-label":"编辑备注",className:"text-ink-3",onClick:()=>{d(e.id),f(e.remark??"")},children:s.jsx(se,{size:13})}),s.jsx(t,{size:"sm",variant:"ghost",className:e.valid?"text-ink-3 hover:text-warning":"text-ink-3 hover:text-success",onClick:()=>N.mutate({id:e.id,patch:{valid:!e.valid}}),children:e.valid?"停用":"启用"})]}),s.jsx(t,{size:"icon-sm",variant:"ghost","aria-label":"删除",className:"text-ink-3 hover:text-danger",onClick:()=>{window.confirm("删除邀请码 "+e.code+"?此操作不可恢复。")&&X.mutate(e.id)},children:s.jsx(ae,{size:13})})]})]},e.id))}):s.jsx(w,{icon:s.jsx(je,{size:32,strokeWidth:1.5}),title:"暂无符合条件的邀请码",description:"新建自定义邀请码,或批量生成后发给需要注册的用户。"})]})]}),s.jsxs($,{children:[s.jsx(B,{title:"用户("+(((L=M.data)==null?void 0:L.total)??0)+")"}),s.jsx(O,{className:"p-0",children:P.length?s.jsx("div",{className:"divide-y divide-line max-h-[520px] overflow-y-auto",children:P.map(e=>s.jsxs("div",{className:"flex items-center gap-2 px-4 py-2.5 text-[12.5px]",children:[s.jsx("span",{className:"font-medium text-ink-1",children:e.username}),e.is_admin&&s.jsx(p,{color:"var(--brand-text)",children:"管理员"}),s.jsxs("span",{className:"num ml-auto text-ink-3",children:[e.devices," 设备 · ",e.records," 记录 · ",te(e.attachment_bytes)]})]},e.id))}):s.jsx(w,{icon:s.jsx(ke,{size:32,strokeWidth:1.5}),title:"暂无用户"})})]})]})]})}export{Ne as AdminPage}; diff --git a/sync-server/www/assets/DashboardPage-CHmDjL1e.js b/sync-server/www/assets/DashboardPage-JDr60Xk1.js similarity index 94% rename from sync-server/www/assets/DashboardPage-CHmDjL1e.js rename to sync-server/www/assets/DashboardPage-JDr60Xk1.js index a9ad7a2..3f84eb5 100644 --- a/sync-server/www/assets/DashboardPage-CHmDjL1e.js +++ b/sync-server/www/assets/DashboardPage-JDr60Xk1.js @@ -1 +1 @@ -import{r as g,e as v,j as t,S as j,s as S}from"./index-Cpiyh4tF.js";import{C as c,a as d,b as x}from"./card-CiUXsmh1.js";import{u as N,i as u,a as m}from"./useChart-AwFHZWNy.js";import{u as k,i as w,a as C,b as L,c as R,d as $,e as z,f as T}from"./echarts-BIWefrIc.js";k([w,C,L,R,$,z,T]);function q(){const[l,n]=g.useState(""),i=N(),e=v({queryKey:["stats",l||void 0],queryFn:()=>S(l?Number(l):void 0)}).data,p=u("2"),r=u("3"),h=m(()=>({grid:{left:34,right:12,top:14,bottom:24},tooltip:{trigger:"axis"},xAxis:{type:"category",data:(e==null?void 0:e.monthly.map(a=>a.ym.slice(2)))??[],axisLine:{lineStyle:{color:r}},axisTick:{show:!1},axisLabel:{color:r,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{color:"rgba(128,138,155,0.15)"}},axisLabel:{color:r,fontSize:10}},series:[{type:"bar",data:(e==null?void 0:e.monthly.map(a=>a.count))??[],barMaxWidth:18,itemStyle:{color:"#3056d3",borderRadius:[3,3,0,0]}}]}),[e,i]),b=m(()=>{const a=((e==null?void 0:e.by_type)??[]).filter(s=>s.count>0);return{tooltip:{trigger:"item"},legend:{orient:"vertical",right:4,top:"middle",textStyle:{color:p,fontSize:11},itemWidth:10,itemHeight:10},series:[{type:"pie",radius:["48%","72%"],center:["34%","50%"],label:{show:!1},data:a.map(s=>({name:s.label,value:s.count,itemStyle:{color:s.color||"#64748b"}}))}]}},[e,i]),y=m(()=>{const a=((e==null?void 0:e.by_level)??[]).filter(s=>s.count>0).slice().reverse();return{grid:{left:64,right:24,top:8,bottom:22},tooltip:{trigger:"axis"},xAxis:{type:"value",splitLine:{lineStyle:{color:"rgba(128,138,155,0.15)"}},axisLabel:{color:r,fontSize:10}},yAxis:{type:"category",data:a.map(s=>s.label),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:p,fontSize:11}},series:[{type:"bar",data:a.map(s=>({value:s.count,itemStyle:{color:s.color||"#3056d3",borderRadius:[0,3,3,0]}})),barMaxWidth:14}]}},[e,i]),f=((e==null?void 0:e.metrics)??[]).slice(0,3);return t.jsxs("div",{className:"mx-auto max-w-[1080px] px-3 py-4 sm:px-6 sm:py-5",children:[t.jsxs("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-3",children:[t.jsxs("div",{className:"flex flex-wrap gap-3",children:[t.jsx(o,{label:"总记录",value:(e==null?void 0:e.total)??0}),t.jsx(o,{label:l?l+" 年新增":"本年新增",value:(e==null?void 0:e.total_this_year)??0}),t.jsx(o,{label:"附件总数",value:(e==null?void 0:e.attachment_total)??0}),f.map(a=>t.jsx(o,{label:a.label,value:a.value,unit:a.unit??""},a.key))]}),t.jsx(j,{className:"w-[120px]",value:l,onChange:a=>n(a.target.value),options:[{value:"",label:"全部年份"},...((e==null?void 0:e.years)??[]).map(a=>({value:String(a),label:a+" 年"}))]})]}),!(e!=null&&e.metrics.length)&&t.jsx("div",{className:"mb-4 rounded-md border border-dashed border-line px-4 py-2 text-[12px] text-ink-3",children:"提示:在「统计」配置中注册指标(如志愿时长、读书本数),带单位的数值字段即可在此量化展示。"}),t.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[t.jsxs(c,{children:[t.jsx(d,{title:"近 12 个月活跃度"}),t.jsx(x,{children:t.jsx("div",{ref:h,className:"h-[220px]"})})]}),t.jsxs(c,{children:[t.jsx(d,{title:"类型分布"}),t.jsx(x,{children:t.jsx("div",{ref:b,className:"h-[220px]"})})]}),t.jsxs(c,{className:"col-span-2",children:[t.jsx(d,{title:"级别分布"}),t.jsx(x,{children:t.jsx("div",{ref:y,className:"h-[200px]"})})]})]})]})}function o({label:l,value:n,unit:i}){return t.jsxs("div",{className:"min-w-[120px] rounded-lg border border-line bg-surface px-4 py-3 shadow-card",children:[t.jsx("div",{className:"text-[12px] text-ink-3",children:l}),t.jsxs("div",{className:"num mt-0.5 text-[22px] font-semibold leading-tight text-ink-1",children:[n,i&&t.jsx("span",{className:"ml-1 text-[12px] font-normal text-ink-3",children:i})]})]})}export{q as DashboardPage}; +import{r as g,e as v,j as t,S as j,s as S}from"./index-BFEQKHK8.js";import{C as c,a as d,b as x}from"./card-BXfIbybL.js";import{u as N,i as u,a as m}from"./useChart-BGht3gc0.js";import{u as k,i as w,a as C,b as L,c as R,d as $,e as z,f as T}from"./echarts-BIWefrIc.js";k([w,C,L,R,$,z,T]);function q(){const[l,n]=g.useState(""),i=N(),e=v({queryKey:["stats",l||void 0],queryFn:()=>S(l?Number(l):void 0)}).data,p=u("2"),r=u("3"),h=m(()=>({grid:{left:34,right:12,top:14,bottom:24},tooltip:{trigger:"axis"},xAxis:{type:"category",data:(e==null?void 0:e.monthly.map(a=>a.ym.slice(2)))??[],axisLine:{lineStyle:{color:r}},axisTick:{show:!1},axisLabel:{color:r,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{color:"rgba(128,138,155,0.15)"}},axisLabel:{color:r,fontSize:10}},series:[{type:"bar",data:(e==null?void 0:e.monthly.map(a=>a.count))??[],barMaxWidth:18,itemStyle:{color:"#3056d3",borderRadius:[3,3,0,0]}}]}),[e,i]),b=m(()=>{const a=((e==null?void 0:e.by_type)??[]).filter(s=>s.count>0);return{tooltip:{trigger:"item"},legend:{orient:"vertical",right:4,top:"middle",textStyle:{color:p,fontSize:11},itemWidth:10,itemHeight:10},series:[{type:"pie",radius:["48%","72%"],center:["34%","50%"],label:{show:!1},data:a.map(s=>({name:s.label,value:s.count,itemStyle:{color:s.color||"#64748b"}}))}]}},[e,i]),y=m(()=>{const a=((e==null?void 0:e.by_level)??[]).filter(s=>s.count>0).slice().reverse();return{grid:{left:64,right:24,top:8,bottom:22},tooltip:{trigger:"axis"},xAxis:{type:"value",splitLine:{lineStyle:{color:"rgba(128,138,155,0.15)"}},axisLabel:{color:r,fontSize:10}},yAxis:{type:"category",data:a.map(s=>s.label),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:p,fontSize:11}},series:[{type:"bar",data:a.map(s=>({value:s.count,itemStyle:{color:s.color||"#3056d3",borderRadius:[0,3,3,0]}})),barMaxWidth:14}]}},[e,i]),f=((e==null?void 0:e.metrics)??[]).slice(0,3);return t.jsxs("div",{className:"mx-auto max-w-[1080px] px-3 py-4 sm:px-6 sm:py-5",children:[t.jsxs("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-3",children:[t.jsxs("div",{className:"flex flex-wrap gap-3",children:[t.jsx(o,{label:"总记录",value:(e==null?void 0:e.total)??0}),t.jsx(o,{label:l?l+" 年新增":"本年新增",value:(e==null?void 0:e.total_this_year)??0}),t.jsx(o,{label:"附件总数",value:(e==null?void 0:e.attachment_total)??0}),f.map(a=>t.jsx(o,{label:a.label,value:a.value,unit:a.unit??""},a.key))]}),t.jsx(j,{className:"w-[120px]",value:l,onChange:a=>n(a.target.value),options:[{value:"",label:"全部年份"},...((e==null?void 0:e.years)??[]).map(a=>({value:String(a),label:a+" 年"}))]})]}),!(e!=null&&e.metrics.length)&&t.jsx("div",{className:"mb-4 rounded-md border border-dashed border-line px-4 py-2 text-[12px] text-ink-3",children:"提示:在「统计」配置中注册指标(如志愿时长、读书本数),带单位的数值字段即可在此量化展示。"}),t.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[t.jsxs(c,{children:[t.jsx(d,{title:"近 12 个月活跃度"}),t.jsx(x,{children:t.jsx("div",{ref:h,className:"h-[220px]"})})]}),t.jsxs(c,{children:[t.jsx(d,{title:"类型分布"}),t.jsx(x,{children:t.jsx("div",{ref:b,className:"h-[220px]"})})]}),t.jsxs(c,{className:"col-span-2",children:[t.jsx(d,{title:"级别分布"}),t.jsx(x,{children:t.jsx("div",{ref:y,className:"h-[200px]"})})]})]})]})}function o({label:l,value:n,unit:i}){return t.jsxs("div",{className:"min-w-[120px] rounded-lg border border-line bg-surface px-4 py-3 shadow-card",children:[t.jsx("div",{className:"text-[12px] text-ink-3",children:l}),t.jsxs("div",{className:"num mt-0.5 text-[22px] font-semibold leading-tight text-ink-1",children:[n,i&&t.jsx("span",{className:"ml-1 text-[12px] font-normal text-ink-3",children:i})]})]})}export{q as DashboardPage}; diff --git a/sync-server/www/assets/GradesPage-UWhIuB_c.js b/sync-server/www/assets/GradesPage-O03L_FsK.js similarity index 99% rename from sync-server/www/assets/GradesPage-UWhIuB_c.js rename to sync-server/www/assets/GradesPage-O03L_FsK.js index 1168560..2c53d1b 100644 --- a/sync-server/www/assets/GradesPage-UWhIuB_c.js +++ b/sync-server/www/assets/GradesPage-O03L_FsK.js @@ -1,4 +1,4 @@ -import{c as K,e as I,j as e,E as O,v as $,u as k,b as S,r as u,f as y,w as H,x as W,B as g,P as q,C as Q,y as J,z as T,A as U,l as N,k as G,T as E,I as j,D as Y,F as C,H as B,J as V}from"./index-Cpiyh4tF.js";import{C as f,a as z,b as _}from"./card-CiUXsmh1.js";import{u as X,i as M,a as L}from"./useChart-AwFHZWNy.js";import{u as Z,i as ee,b as se,a as te,c as ae,d as re,e as ne,f as le}from"./echarts-BIWefrIc.js";/** +import{c as K,e as I,j as e,E as O,v as $,u as k,b as S,r as u,f as y,w as H,x as W,B as g,P as q,C as Q,y as J,z as T,A as U,l as N,k as G,T as E,I as j,D as Y,F as C,H as B,J as V}from"./index-BFEQKHK8.js";import{C as f,a as z,b as _}from"./card-BXfIbybL.js";import{u as X,i as M,a as L}from"./useChart-BGht3gc0.js";import{u as Z,i as ee,b as se,a as te,c as ae,d as re,e as ne,f as le}from"./echarts-BIWefrIc.js";/** * @license lucide-react v0.475.0 - ISC * * This source code is licensed under the ISC license. diff --git a/sync-server/www/assets/RecordsPage-vn5nIHCp.js b/sync-server/www/assets/RecordsPage-Gvh-PxIo.js similarity index 99% rename from sync-server/www/assets/RecordsPage-vn5nIHCp.js rename to sync-server/www/assets/RecordsPage-Gvh-PxIo.js index bac73e6..dd9d2d2 100644 --- a/sync-server/www/assets/RecordsPage-vn5nIHCp.js +++ b/sync-server/www/assets/RecordsPage-Gvh-PxIo.js @@ -1,4 +1,4 @@ -import{c as pe,j as e,a as x,r as t,u as he,b as ve,d as je,e as w,f as fe,I as ge,S as h,B as v,P as L,g as U,L as V,G as X,R as ye,h as $,i as be,k as Ne,T as ke,E as ee,l as _e,m as Ce,n as we,C as Se,o as Ee,p as qe,q as ze,s as Ie,t as De}from"./index-Cpiyh4tF.js";/** +import{c as pe,j as e,a as x,r as t,u as he,b as ve,d as je,e as w,f as fe,I as ge,S as h,B as v,P as L,g as U,L as V,G as X,R as ye,h as $,i as be,k as Ne,T as ke,E as ee,l as _e,m as Ce,n as we,C as Se,o as Ee,p as qe,q as ze,s as Ie,t as De}from"./index-BFEQKHK8.js";/** * @license lucide-react v0.475.0 - ISC * * This source code is licensed under the ISC license. diff --git a/sync-server/www/assets/TaxonomyPage-B4KhiXdr.js b/sync-server/www/assets/TaxonomyPage-7GdxiFCp.js similarity index 97% rename from sync-server/www/assets/TaxonomyPage-B4KhiXdr.js rename to sync-server/www/assets/TaxonomyPage-7GdxiFCp.js index b117e56..2ea12bd 100644 --- a/sync-server/www/assets/TaxonomyPage-B4KhiXdr.js +++ b/sync-server/www/assets/TaxonomyPage-7GdxiFCp.js @@ -1 +1 @@ -import{j as e,u as k,b as q,e as Q,r as g,f as h,Q as F,U as w,B as j,T as z,I as D,P as T,C as E,V as M,W as B,q as P,X as V}from"./index-Cpiyh4tF.js";import{C as K,a as S}from"./card-CiUXsmh1.js";const f=["#3056d3","#7c3aed","#0891b2","#16a34a","#d97706","#dc2626","#db2777","#64748b"];function H(){return e.jsxs("div",{className:"mx-auto max-w-[1080px] px-3 py-4 sm:px-6 sm:py-5",children:[e.jsx("p",{className:"mb-4 text-[12px] text-ink-3",children:"字典驱动录入表单中的下拉选项;维度是自定义的成长分类轴,一条记录可挂多个维度。"}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[e.jsx(C,{kind:"level",title:"级别字典",description:"国际级、国家级、省市级等,可按学校口径增改"}),e.jsx(C,{kind:"role",title:"角色字典",description:"主导、核心、参加等参与角色"}),e.jsx(I,{})]})]})}function C({kind:r,title:x,description:N}){var v;const l=k(),o=q(),n=(((v=Q({queryKey:["taxonomy-all"],queryFn:()=>P()}).data)==null?void 0:v.items)??[]).filter(s=>s.kind===r).sort((s,m)=>s.sort-m.sort),[a,c]=g.useState(""),[u,d]=g.useState(null),t=h({mutationFn:F,onSuccess:()=>void l.invalidateQueries({queryKey:["taxonomy-all"]})}),i=h({mutationFn:s=>w(s),onSuccess:()=>{l.invalidateQueries({queryKey:["taxonomy-all"]}),o("success","已删除"),d(null)},onError:s=>{o("error",s.message),d(null)}});return e.jsxs(K,{children:[e.jsx(S,{title:x,extra:e.jsx("span",{className:"text-[11px] text-ink-3",children:N})}),e.jsxs("div",{className:"flex flex-col gap-1 p-3",children:[n.map((s,m)=>e.jsxs("div",{className:"flex items-center gap-2 rounded-md px-1 py-1 hover:bg-surface-2",children:[e.jsx("input",{type:"color",value:s.color??f[m%f.length],className:"size-5 cursor-pointer rounded border border-line bg-surface",onChange:y=>t.mutate({id:s.id,kind:r,value:s.value,color:y.target.value,sort:s.sort})}),e.jsx("input",{className:"h-7 flex-1 rounded border border-transparent bg-transparent px-1.5 text-[13px] text-ink-1 hover:border-line focus:border-brand focus:outline-none",value:s.value,onChange:()=>{},onBlur:y=>{const b=y.target.value.trim();b&&b!==s.value&&t.mutate({id:s.id,kind:r,value:b,color:s.color,sort:s.sort})},defaultValue:s.value},s.value),e.jsxs("span",{className:"num w-14 text-right text-[11px] text-ink-3",children:["#",s.sort]}),s.is_builtin?e.jsx("span",{className:"w-7 text-center text-[11px] text-ink-3",children:"内置"}):e.jsx(j,{variant:"ghost",size:"icon-sm","aria-label":"删除",onClick:()=>d({id:s.id,value:s.value}),children:e.jsx(z,{size:13})})]},s.id)),e.jsxs("div",{className:"mt-1 flex items-center gap-2 border-t border-line pt-2",children:[e.jsx(D,{className:"flex-1",placeholder:"新增条目,回车或点击按钮",value:a,onChange:s=>c(s.target.value),onKeyDown:s=>{var m;s.key==="Enter"&&a.trim()&&(t.mutate({kind:r,value:a.trim(),sort:(((m=n.at(-1))==null?void 0:m.sort)??0)+10}),c(""))}}),e.jsxs(j,{size:"sm",variant:"secondary",disabled:!a.trim(),onClick:()=>{var s;t.mutate({kind:r,value:a.trim(),sort:(((s=n.at(-1))==null?void 0:s.sort)??0)+10}),c("")},children:[e.jsx(T,{size:13})," 添加"]})]})]}),e.jsx(E,{open:!!u,title:"删除字典条目",content:u?"确定删除「"+u.value+"」吗?":"",onCancel:()=>d(null),onOk:()=>u&&i.mutate(u.id)})]})}function I(){var d;const r=k(),x=q(),l=[...((d=Q({queryKey:["dimensions"],queryFn:V}).data)==null?void 0:d.items)??[]].sort((t,i)=>t.sort-i.sort),[o,p]=g.useState(""),[n,a]=g.useState(null),c=h({mutationFn:M,onSuccess:()=>void r.invalidateQueries({queryKey:["dimensions"]})}),u=h({mutationFn:t=>B(t),onSuccess:()=>{r.invalidateQueries({queryKey:["dimensions"]}),x("success","已删除"),a(null)},onError:t=>{x("error",t.message),a(null)}});return e.jsxs(K,{children:[e.jsx(S,{title:"成长维度",extra:e.jsx("span",{className:"text-[11px] text-ink-3",children:"如:学业深造 / 职业发展 / 兴趣生活"})}),e.jsxs("div",{className:"flex flex-col gap-1 p-3",children:[l.map((t,i)=>e.jsxs("div",{className:"flex items-center gap-2 rounded-md px-1 py-1 hover:bg-surface-2",children:[e.jsx("span",{className:"size-3 rounded-full",style:{backgroundColor:t.color??f[i%f.length]}}),e.jsx("input",{className:"h-7 flex-1 rounded border border-transparent bg-transparent px-1.5 text-[13px] text-ink-1 hover:border-line focus:border-brand focus:outline-none",defaultValue:t.name,onBlur:v=>{const s=v.target.value.trim();s&&s!==t.name&&c.mutate({id:t.id,name:s,color:t.color,sort:t.sort})}},t.name),e.jsx(j,{variant:"ghost",size:"icon-sm","aria-label":"删除",onClick:()=>a({id:t.id,name:t.name}),children:e.jsx(z,{size:13})})]},t.id)),!l.length&&e.jsx("div",{className:"py-2 text-center text-[12px] text-ink-3",children:"尚未配置维度"}),e.jsxs("div",{className:"mt-1 flex items-center gap-2 border-t border-line pt-2",children:[e.jsx(D,{className:"flex-1",placeholder:"新增维度名称",value:o,onChange:t=>p(t.target.value),onKeyDown:t=>{var i;t.key==="Enter"&&o.trim()&&(c.mutate({name:o.trim(),sort:(((i=l.at(-1))==null?void 0:i.sort)??0)+10}),p(""))}}),e.jsxs(j,{size:"sm",variant:"secondary",disabled:!o.trim(),onClick:()=>{var t;c.mutate({name:o.trim(),sort:(((t=l.at(-1))==null?void 0:t.sort)??0)+10}),p("")},children:[e.jsx(T,{size:13})," 添加"]})]})]}),e.jsx(E,{open:!!n,title:"删除维度",content:n?"确定删除「"+n.name+"」吗?记录与该维度的关联将一并移除。":"",onCancel:()=>a(null),onOk:()=>n&&u.mutate(n.id)})]})}export{H as TaxonomyPage}; +import{j as e,u as k,b as q,e as Q,r as g,f as h,Q as F,U as w,B as j,T as z,I as D,P as T,C as E,V as M,W as B,q as P,X as V}from"./index-BFEQKHK8.js";import{C as K,a as S}from"./card-BXfIbybL.js";const f=["#3056d3","#7c3aed","#0891b2","#16a34a","#d97706","#dc2626","#db2777","#64748b"];function H(){return e.jsxs("div",{className:"mx-auto max-w-[1080px] px-3 py-4 sm:px-6 sm:py-5",children:[e.jsx("p",{className:"mb-4 text-[12px] text-ink-3",children:"字典驱动录入表单中的下拉选项;维度是自定义的成长分类轴,一条记录可挂多个维度。"}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[e.jsx(C,{kind:"level",title:"级别字典",description:"国际级、国家级、省市级等,可按学校口径增改"}),e.jsx(C,{kind:"role",title:"角色字典",description:"主导、核心、参加等参与角色"}),e.jsx(I,{})]})]})}function C({kind:r,title:x,description:N}){var v;const l=k(),o=q(),n=(((v=Q({queryKey:["taxonomy-all"],queryFn:()=>P()}).data)==null?void 0:v.items)??[]).filter(s=>s.kind===r).sort((s,m)=>s.sort-m.sort),[a,c]=g.useState(""),[u,d]=g.useState(null),t=h({mutationFn:F,onSuccess:()=>void l.invalidateQueries({queryKey:["taxonomy-all"]})}),i=h({mutationFn:s=>w(s),onSuccess:()=>{l.invalidateQueries({queryKey:["taxonomy-all"]}),o("success","已删除"),d(null)},onError:s=>{o("error",s.message),d(null)}});return e.jsxs(K,{children:[e.jsx(S,{title:x,extra:e.jsx("span",{className:"text-[11px] text-ink-3",children:N})}),e.jsxs("div",{className:"flex flex-col gap-1 p-3",children:[n.map((s,m)=>e.jsxs("div",{className:"flex items-center gap-2 rounded-md px-1 py-1 hover:bg-surface-2",children:[e.jsx("input",{type:"color",value:s.color??f[m%f.length],className:"size-5 cursor-pointer rounded border border-line bg-surface",onChange:y=>t.mutate({id:s.id,kind:r,value:s.value,color:y.target.value,sort:s.sort})}),e.jsx("input",{className:"h-7 flex-1 rounded border border-transparent bg-transparent px-1.5 text-[13px] text-ink-1 hover:border-line focus:border-brand focus:outline-none",value:s.value,onChange:()=>{},onBlur:y=>{const b=y.target.value.trim();b&&b!==s.value&&t.mutate({id:s.id,kind:r,value:b,color:s.color,sort:s.sort})},defaultValue:s.value},s.value),e.jsxs("span",{className:"num w-14 text-right text-[11px] text-ink-3",children:["#",s.sort]}),s.is_builtin?e.jsx("span",{className:"w-7 text-center text-[11px] text-ink-3",children:"内置"}):e.jsx(j,{variant:"ghost",size:"icon-sm","aria-label":"删除",onClick:()=>d({id:s.id,value:s.value}),children:e.jsx(z,{size:13})})]},s.id)),e.jsxs("div",{className:"mt-1 flex items-center gap-2 border-t border-line pt-2",children:[e.jsx(D,{className:"flex-1",placeholder:"新增条目,回车或点击按钮",value:a,onChange:s=>c(s.target.value),onKeyDown:s=>{var m;s.key==="Enter"&&a.trim()&&(t.mutate({kind:r,value:a.trim(),sort:(((m=n.at(-1))==null?void 0:m.sort)??0)+10}),c(""))}}),e.jsxs(j,{size:"sm",variant:"secondary",disabled:!a.trim(),onClick:()=>{var s;t.mutate({kind:r,value:a.trim(),sort:(((s=n.at(-1))==null?void 0:s.sort)??0)+10}),c("")},children:[e.jsx(T,{size:13})," 添加"]})]})]}),e.jsx(E,{open:!!u,title:"删除字典条目",content:u?"确定删除「"+u.value+"」吗?":"",onCancel:()=>d(null),onOk:()=>u&&i.mutate(u.id)})]})}function I(){var d;const r=k(),x=q(),l=[...((d=Q({queryKey:["dimensions"],queryFn:V}).data)==null?void 0:d.items)??[]].sort((t,i)=>t.sort-i.sort),[o,p]=g.useState(""),[n,a]=g.useState(null),c=h({mutationFn:M,onSuccess:()=>void r.invalidateQueries({queryKey:["dimensions"]})}),u=h({mutationFn:t=>B(t),onSuccess:()=>{r.invalidateQueries({queryKey:["dimensions"]}),x("success","已删除"),a(null)},onError:t=>{x("error",t.message),a(null)}});return e.jsxs(K,{children:[e.jsx(S,{title:"成长维度",extra:e.jsx("span",{className:"text-[11px] text-ink-3",children:"如:学业深造 / 职业发展 / 兴趣生活"})}),e.jsxs("div",{className:"flex flex-col gap-1 p-3",children:[l.map((t,i)=>e.jsxs("div",{className:"flex items-center gap-2 rounded-md px-1 py-1 hover:bg-surface-2",children:[e.jsx("span",{className:"size-3 rounded-full",style:{backgroundColor:t.color??f[i%f.length]}}),e.jsx("input",{className:"h-7 flex-1 rounded border border-transparent bg-transparent px-1.5 text-[13px] text-ink-1 hover:border-line focus:border-brand focus:outline-none",defaultValue:t.name,onBlur:v=>{const s=v.target.value.trim();s&&s!==t.name&&c.mutate({id:t.id,name:s,color:t.color,sort:t.sort})}},t.name),e.jsx(j,{variant:"ghost",size:"icon-sm","aria-label":"删除",onClick:()=>a({id:t.id,name:t.name}),children:e.jsx(z,{size:13})})]},t.id)),!l.length&&e.jsx("div",{className:"py-2 text-center text-[12px] text-ink-3",children:"尚未配置维度"}),e.jsxs("div",{className:"mt-1 flex items-center gap-2 border-t border-line pt-2",children:[e.jsx(D,{className:"flex-1",placeholder:"新增维度名称",value:o,onChange:t=>p(t.target.value),onKeyDown:t=>{var i;t.key==="Enter"&&o.trim()&&(c.mutate({name:o.trim(),sort:(((i=l.at(-1))==null?void 0:i.sort)??0)+10}),p(""))}}),e.jsxs(j,{size:"sm",variant:"secondary",disabled:!o.trim(),onClick:()=>{var t;c.mutate({name:o.trim(),sort:(((t=l.at(-1))==null?void 0:t.sort)??0)+10}),p("")},children:[e.jsx(T,{size:13})," 添加"]})]})]}),e.jsx(E,{open:!!n,title:"删除维度",content:n?"确定删除「"+n.name+"」吗?记录与该维度的关联将一并移除。":"",onCancel:()=>a(null),onOk:()=>n&&u.mutate(n.id)})]})}export{H as TaxonomyPage}; diff --git a/sync-server/www/assets/TypesPage-DPXemdVG.js b/sync-server/www/assets/TypesPage-Dvoz4pB9.js similarity index 98% rename from sync-server/www/assets/TypesPage-DPXemdVG.js rename to sync-server/www/assets/TypesPage-Dvoz4pB9.js index 4a3318c..b103e87 100644 --- a/sync-server/www/assets/TypesPage-DPXemdVG.js +++ b/sync-server/www/assets/TypesPage-Dvoz4pB9.js @@ -1,4 +1,4 @@ -import{c as A,u as Q,b as z,e as B,r as i,f as T,j as e,B as p,P as F,K as q,l as E,k as D,T as I,C as K,M as L,D as G,F as r,I as j,N as H,S as R,O as W,p as J}from"./index-Cpiyh4tF.js";import{C as U}from"./card-CiUXsmh1.js";/** +import{c as A,u as Q,b as z,e as B,r as i,f as T,j as e,B as p,P as F,K as q,l as E,k as D,T as I,C as K,M as L,D as G,F as r,I as j,N as H,S as R,O as W,p as J}from"./index-BFEQKHK8.js";import{C as U}from"./card-BXfIbybL.js";/** * @license lucide-react v0.475.0 - ISC * * This source code is licensed under the ISC license. diff --git a/sync-server/www/assets/card-CiUXsmh1.js b/sync-server/www/assets/card-BXfIbybL.js similarity index 89% rename from sync-server/www/assets/card-CiUXsmh1.js rename to sync-server/www/assets/card-BXfIbybL.js index 35d0f59..2652e47 100644 --- a/sync-server/www/assets/card-CiUXsmh1.js +++ b/sync-server/www/assets/card-BXfIbybL.js @@ -1 +1 @@ -import{j as s,a}from"./index-Cpiyh4tF.js";function i({className:r,...e}){return s.jsx("div",{className:a("rounded-lg border border-line bg-surface shadow-card",r),...e})}function t({title:r,extra:e,className:n}){return s.jsxs("div",{className:a("flex min-h-11 flex-wrap items-center justify-between gap-2 border-b border-line px-4 py-1.5",n),children:[s.jsx("h3",{className:"text-[13px] font-semibold text-ink-1",children:r}),e&&s.jsx("div",{className:"flex flex-wrap items-center gap-2",children:e})]})}function c({className:r,...e}){return s.jsx("div",{className:a("p-4",r),...e})}export{i as C,t as a,c as b}; +import{j as s,a}from"./index-BFEQKHK8.js";function i({className:r,...e}){return s.jsx("div",{className:a("rounded-lg border border-line bg-surface shadow-card",r),...e})}function t({title:r,extra:e,className:n}){return s.jsxs("div",{className:a("flex min-h-11 flex-wrap items-center justify-between gap-2 border-b border-line px-4 py-1.5",n),children:[s.jsx("h3",{className:"text-[13px] font-semibold text-ink-1",children:r}),e&&s.jsx("div",{className:"flex flex-wrap items-center gap-2",children:e})]})}function c({className:r,...e}){return s.jsx("div",{className:a("p-4",r),...e})}export{i as C,t as a,c as b}; diff --git a/sync-server/www/assets/index-Cpiyh4tF.js b/sync-server/www/assets/index-BFEQKHK8.js similarity index 59% rename from sync-server/www/assets/index-Cpiyh4tF.js rename to sync-server/www/assets/index-BFEQKHK8.js index 38dcdc7..6e52b27 100644 --- a/sync-server/www/assets/index-Cpiyh4tF.js +++ b/sync-server/www/assets/index-BFEQKHK8.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-CHmDjL1e.js","assets/card-CiUXsmh1.js","assets/useChart-AwFHZWNy.js","assets/echarts-BIWefrIc.js","assets/GradesPage-UWhIuB_c.js","assets/TypesPage-DPXemdVG.js","assets/TaxonomyPage-B4KhiXdr.js","assets/AdminPage-BbzGIMOU.js"])))=>i.map(i=>d[i]); -var Tp=n=>{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=(n,r,s)=>(Vf(n,r,"read from private field"),s?s.call(n):r.get(n)),ce=(n,r,s)=>r.has(n)?Tp("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(n):r.set(n,s),P=(n,r,s,c)=>(Vf(n,r,"write to private field"),c?c.call(n,s):r.set(n,s),s),Ee=(n,r,s)=>(Vf(n,r,"access private method"),s);var Gs=(n,r,s,c)=>({set _(f){P(n,r,f,s)},get _(){return _(n,r,c)}});(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))c(f);new MutationObserver(f=>{for(const h of f)if(h.type==="childList")for(const d of h.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&c(d)}).observe(document,{childList:!0,subtree:!0});function s(f){const h={};return f.integrity&&(h.integrity=f.integrity),f.referrerPolicy&&(h.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?h.credentials="include":f.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function c(f){if(f.ep)return;f.ep=!0;const h=s(f);fetch(f.href,h)}})();var T5=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Og(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Xf={exports:{}},Pu={};/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-JDr60Xk1.js","assets/card-BXfIbybL.js","assets/useChart-BGht3gc0.js","assets/echarts-BIWefrIc.js","assets/GradesPage-O03L_FsK.js","assets/TypesPage-Dvoz4pB9.js","assets/TaxonomyPage-7GdxiFCp.js","assets/AdminPage-CrZVvSas.js"])))=>i.map(i=>d[i]); +var Tp=n=>{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=(n,r,s)=>(Vf(n,r,"read from private field"),s?s.call(n):r.get(n)),ce=(n,r,s)=>r.has(n)?Tp("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(n):r.set(n,s),W=(n,r,s,c)=>(Vf(n,r,"write to private field"),c?c.call(n,s):r.set(n,s),s),Ee=(n,r,s)=>(Vf(n,r,"access private method"),s);var Gs=(n,r,s,c)=>({set _(f){W(n,r,f,s)},get _(){return _(n,r,c)}});(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))c(f);new MutationObserver(f=>{for(const h of f)if(h.type==="childList")for(const d of h.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&c(d)}).observe(document,{childList:!0,subtree:!0});function s(f){const h={};return f.integrity&&(h.integrity=f.integrity),f.referrerPolicy&&(h.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?h.credentials="include":f.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function c(f){if(f.ep)return;f.ep=!0;const h=s(f);fetch(f.href,h)}})();var N5=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Og(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Xf={exports:{}},Wu={};/** * @license React * react-jsx-runtime.production.js * @@ -7,7 +7,7 @@ var Tp=n=>{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=( * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Np;function Wx(){if(Np)return Pu;Np=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function s(c,f,h){var d=null;if(h!==void 0&&(d=""+h),f.key!==void 0&&(d=""+f.key),"key"in f){h={};for(var p in f)p!=="key"&&(h[p]=f[p])}else h=f;return f=h.ref,{$$typeof:n,type:c,key:d,ref:f!==void 0?f:null,props:h}}return Pu.Fragment=r,Pu.jsx=s,Pu.jsxs=s,Pu}var Cp;function Px(){return Cp||(Cp=1,Xf.exports=Wx()),Xf.exports}var m=Px(),Kf={exports:{}},ge={};/** + */var Np;function Px(){if(Np)return Wu;Np=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function s(c,f,h){var d=null;if(h!==void 0&&(d=""+h),f.key!==void 0&&(d=""+f.key),"key"in f){h={};for(var v in f)v!=="key"&&(h[v]=f[v])}else h=f;return f=h.ref,{$$typeof:n,type:c,key:d,ref:f!==void 0?f:null,props:h}}return Wu.Fragment=r,Wu.jsx=s,Wu.jsxs=s,Wu}var Cp;function Wx(){return Cp||(Cp=1,Xf.exports=Px()),Xf.exports}var m=Wx(),Kf={exports:{}},ge={};/** * @license React * react.production.js * @@ -15,7 +15,7 @@ var Tp=n=>{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=( * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var wp;function Ix(){if(wp)return ge;wp=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),d=Symbol.for("react.context"),p=Symbol.for("react.forward_ref"),b=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),w=Symbol.for("react.view_transition"),L=Symbol.iterator;function V(C){return C===null||typeof C!="object"?null:(C=L&&C[L]||C["@@iterator"],typeof C=="function"?C:null)}var k={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D=Object.assign,H={};function G(C,Q,te){this.props=C,this.context=Q,this.refs=H,this.updater=te||k}G.prototype.isReactComponent={},G.prototype.setState=function(C,Q){if(typeof C!="object"&&typeof C!="function"&&C!=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,C,Q,"setState")},G.prototype.forceUpdate=function(C){this.updater.enqueueForceUpdate(this,C,"forceUpdate")};function X(){}X.prototype=G.prototype;function K(C,Q,te){this.props=C,this.context=Q,this.refs=H,this.updater=te||k}var Y=K.prototype=new X;Y.constructor=K,D(Y,G.prototype),Y.isPureReactComponent=!0;var oe=Array.isArray;function Z(){}var U={H:null,A:null,T:null,S:null},$=Object.prototype.hasOwnProperty;function ve(C,Q,te){var re=te.ref;return{$$typeof:n,type:C,key:Q,ref:re!==void 0?re:null,props:te}}function Ye(C,Q){return ve(C.type,Q,C.props)}function I(C){return typeof C=="object"&&C!==null&&C.$$typeof===n}function Ne(C){var Q={"=":"=0",":":"=2"};return"$"+C.replace(/[=:]/g,function(te){return Q[te]})}var be=/\/+/g;function fe(C,Q){return typeof C=="object"&&C!==null&&C.key!=null?Ne(""+C.key):Q.toString(36)}function N(C){switch(C.status){case"fulfilled":return C.value;case"rejected":throw C.reason;default:switch(typeof C.status=="string"?C.then(Z,Z):(C.status="pending",C.then(function(Q){C.status==="pending"&&(C.status="fulfilled",C.value=Q)},function(Q){C.status==="pending"&&(C.status="rejected",C.reason=Q)})),C.status){case"fulfilled":return C.value;case"rejected":throw C.reason}}throw C}function F(C,Q,te,re,ze){var he=typeof C;(he==="undefined"||he==="boolean")&&(C=null);var Me=!1;if(C===null)Me=!0;else switch(he){case"bigint":case"string":case"number":Me=!0;break;case"object":switch(C.$$typeof){case n:case r:Me=!0;break;case x:return Me=C._init,F(Me(C._payload),Q,te,re,ze)}}if(Me)return ze=ze(C),Me=re===""?"."+fe(C,0):re,oe(ze)?(te="",Me!=null&&(te=Me.replace(be,"$&/")+"/"),F(ze,Q,te,"",function(Gt){return Gt})):ze!=null&&(I(ze)&&(ze=Ye(ze,te+(ze.key==null||C&&C.key===ze.key?"":(""+ze.key).replace(be,"$&/")+"/")+Me)),Q.push(ze)),1;Me=0;var ie=re===""?".":re+":";if(oe(C))for(var me=0;me{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=( * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var jp;function t2(){return jp||(jp=1,(function(n){function r(N,F){var ee=N.length;N.push(F);e:for(;0>>1,J=N[de];if(0>>1;def(zl,ee))Cf(Q,zl)?(N[de]=Q,N[C]=ee,de=C):(N[de]=zl,N[ll]=ee,de=ll);else if(Cf(Q,ee))N[de]=Q,N[C]=ee,de=C;else break e}}return F}function f(N,F){var ee=N.sortIndex-F.sortIndex;return ee!==0?ee:N.id-F.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;n.unstable_now=function(){return h.now()}}else{var d=Date,p=d.now();n.unstable_now=function(){return d.now()-p}}var b=[],v=[],x=1,g=null,w=3,L=!1,V=!1,k=!1,D=!1,H=typeof setTimeout=="function"?setTimeout:null,G=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function K(N){for(var F=s(v);F!==null;){if(F.callback===null)c(v);else if(F.startTime<=N)c(v),F.sortIndex=F.expirationTime,r(b,F);else break;F=s(v)}}function Y(N){if(k=!1,K(N),!V)if(s(b)!==null)V=!0,oe||(oe=!0,I());else{var F=s(v);F!==null&&fe(Y,F.startTime-N)}}var oe=!1,Z=-1,U=5,$=-1;function ve(){return D?!0:!(n.unstable_now()-$N&&ve());){var de=g.callback;if(typeof de=="function"){g.callback=null,w=g.priorityLevel;var J=de(g.expirationTime<=N);if(N=n.unstable_now(),typeof J=="function"){g.callback=J,K(N),F=!0;break t}g===s(b)&&c(b),K(N)}else c(b);g=s(b)}if(g!==null)F=!0;else{var Ut=s(v);Ut!==null&&fe(Y,Ut.startTime-N),F=!1}}break e}finally{g=null,w=ee,L=!1}F=void 0}}finally{F?I():oe=!1}}}var I;if(typeof X=="function")I=function(){X(Ye)};else if(typeof MessageChannel<"u"){var Ne=new MessageChannel,be=Ne.port2;Ne.port1.onmessage=Ye,I=function(){be.postMessage(null)}}else I=function(){H(Ye,0)};function fe(N,F){Z=H(function(){N(n.unstable_now())},F)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(N){N.callback=null},n.unstable_forceFrameRate=function(N){0>N||125de?(N.sortIndex=ee,r(v,N),s(b)===null&&N===s(v)&&(k?(G(Z),Z=-1):k=!0,fe(Y,ee-de))):(N.sortIndex=J,r(b,N),V||L||(V=!0,oe||(oe=!0,I()))),N},n.unstable_shouldYield=ve,n.unstable_wrapCallback=function(N){var F=w;return function(){var ee=w;w=F;try{return N.apply(this,arguments)}finally{w=ee}}}})(Ff)),Ff}var Op;function l2(){return Op||(Op=1,Jf.exports=t2()),Jf.exports}var $f={exports:{}},_t={};/** + */var zp;function t2(){return zp||(zp=1,(function(n){function r(C,F){var ee=C.length;C.push(F);e:for(;0>>1,J=C[ve];if(0>>1;vef(jl,ee))wf(Q,jl)?(C[ve]=Q,C[w]=ee,ve=w):(C[ve]=jl,C[ll]=ee,ve=ll);else if(wf(Q,ee))C[ve]=Q,C[w]=ee,ve=w;else break e}}return F}function f(C,F){var ee=C.sortIndex-F.sortIndex;return ee!==0?ee:C.id-F.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;n.unstable_now=function(){return h.now()}}else{var d=Date,v=d.now();n.unstable_now=function(){return d.now()-v}}var b=[],p=[],x=1,g=null,N=3,q=!1,V=!1,k=!1,D=!1,H=typeof setTimeout=="function"?setTimeout:null,G=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function K(C){for(var F=s(p);F!==null;){if(F.callback===null)c(p);else if(F.startTime<=C)c(p),F.sortIndex=F.expirationTime,r(b,F);else break;F=s(p)}}function Y(C){if(k=!1,K(C),!V)if(s(b)!==null)V=!0,oe||(oe=!0,I());else{var F=s(p);F!==null&&fe(Y,F.startTime-C)}}var oe=!1,Z=-1,U=5,$=-1;function ye(){return D?!0:!(n.unstable_now()-$C&&ye());){var ve=g.callback;if(typeof ve=="function"){g.callback=null,N=g.priorityLevel;var J=ve(g.expirationTime<=C);if(C=n.unstable_now(),typeof J=="function"){g.callback=J,K(C),F=!0;break t}g===s(b)&&c(b),K(C)}else c(b);g=s(b)}if(g!==null)F=!0;else{var Ut=s(p);Ut!==null&&fe(Y,Ut.startTime-C),F=!1}}break e}finally{g=null,N=ee,q=!1}F=void 0}}finally{F?I():oe=!1}}}var I;if(typeof X=="function")I=function(){X(Ye)};else if(typeof MessageChannel<"u"){var Ne=new MessageChannel,be=Ne.port2;Ne.port1.onmessage=Ye,I=function(){be.postMessage(null)}}else I=function(){H(Ye,0)};function fe(C,F){Z=H(function(){C(n.unstable_now())},F)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(C){C.callback=null},n.unstable_forceFrameRate=function(C){0>C||125ve?(C.sortIndex=ee,r(p,C),s(b)===null&&C===s(p)&&(k?(G(Z),Z=-1):k=!0,fe(Y,ee-ve))):(C.sortIndex=J,r(b,C),V||q||(V=!0,oe||(oe=!0,I()))),C},n.unstable_shouldYield=ye,n.unstable_wrapCallback=function(C){var F=N;return function(){var ee=N;N=F;try{return C.apply(this,arguments)}finally{N=ee}}}})(Ff)),Ff}var Op;function l2(){return Op||(Op=1,Jf.exports=t2()),Jf.exports}var $f={exports:{}},_t={};/** * @license React * react-dom.production.js * @@ -31,7 +31,7 @@ var Tp=n=>{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=( * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Rp;function a2(){if(Rp)return _t;Rp=1;var n=Cd();function r(x){var g="https://react.dev/errors/"+x;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),$f.exports=a2(),$f.exports}/** + */var Rp;function a2(){if(Rp)return _t;Rp=1;var n=Cd();function r(x){var g="https://react.dev/errors/"+x;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),$f.exports=a2(),$f.exports}/** * @license React * react-dom-client.production.js * @@ -39,15 +39,15 @@ var Tp=n=>{throw TypeError(n)};var Vf=(n,r,s)=>r.has(n)||Tp("Cannot "+s);var _=( * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Mp;function n2(){if(Mp)return Iu;Mp=1;var n=l2(),r=Cd(),s=Rg();function c(e){var t="https://react.dev/errors/"+e;if(1Vn||(e.current=va[Vn],va[Vn]=null,Vn--)}function Ke(e,t){Vn++,va[Vn]=e.current,e.current=t}var Ol=jl(null),nu=jl(null),pa=jl(null),dr=jl(null);function hr(e,t){switch(Ke(pa,t),Ke(nu,e),Ke(Ol,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Mv(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Mv(t),e=Dv(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}vt(Ol),Ke(Ol,e)}function Xn(){vt(Ol),vt(nu),vt(pa)}function sc(e){var t=e.memoizedState;t!==null&&(Ai._currentValue=t.memoizedState,Ke(dr,e)),t=Ol.current;var l=Dv(t,e.type);t!==l&&(Ke(nu,e),Ke(Ol,l))}function mr(e){nu.current===e&&(vt(Ol),vt(nu)),dr.current===e&&(vt(dr),Ai._currentValue=Gt)}var cc,eh;function ga(e){if(cc===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);cc=t&&t[1]||"",eh=-1Vn||(e.current=pa[Vn],pa[Vn]=null,Vn--)}function Ke(e,t){Vn++,pa[Vn]=e.current,e.current=t}var Ol=zl(null),nu=zl(null),ga=zl(null),dr=zl(null);function hr(e,t){switch(Ke(ga,t),Ke(nu,e),Ke(Ol,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Mv(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Mv(t),e=Dv(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}vt(Ol),Ke(Ol,e)}function Xn(){vt(Ol),vt(nu),vt(ga)}function sc(e){var t=e.memoizedState;t!==null&&(Ai._currentValue=t.memoizedState,Ke(dr,e)),t=Ol.current;var l=Dv(t,e.type);t!==l&&(Ke(nu,e),Ke(Ol,l))}function mr(e){nu.current===e&&(vt(Ol),vt(nu)),dr.current===e&&(vt(dr),Ai._currentValue=Gt)}var cc,eh;function ba(e){if(cc===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);cc=t&&t[1]||"",eh=-1)":-1i||S[a]!==O[i]){var M=` -`+S[a].replace(" at new "," at ");return e.displayName&&M.includes("")&&(M=M.replace("",e.displayName)),M}while(1<=a&&0<=i);break}}}finally{oc=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?ga(l):""}function t1(e,t){switch(e.tag){case 26:case 27:case 5:return ga(e.type);case 16:return ga("Lazy");case 13:return e.child!==t&&t!==null?ga("Suspense Fallback"):ga("Suspense");case 19:return ga("SuspenseList");case 0:case 15:return fc(e.type,!1);case 11:return fc(e.type.render,!1);case 1:return fc(e.type,!0);case 31:return ga("Activity");case 30:return ga("ViewTransition");default:return""}}function th(e){try{var t="",l=null;do t+=t1(e,l),l=e,e=e.return;while(e);return t}catch(a){return` +`+S[a].replace(" at new "," at ");return e.displayName&&M.includes("")&&(M=M.replace("",e.displayName)),M}while(1<=a&&0<=i);break}}}finally{oc=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?ba(l):""}function t1(e,t){switch(e.tag){case 26:case 27:case 5:return ba(e.type);case 16:return ba("Lazy");case 13:return e.child!==t&&t!==null?ba("Suspense Fallback"):ba("Suspense");case 19:return ba("SuspenseList");case 0:case 15:return fc(e.type,!1);case 11:return fc(e.type.render,!1);case 1:return fc(e.type,!0);case 31:return ba("Activity");case 30:return ba("ViewTransition");default:return""}}function th(e){try{var t="",l=null;do t+=t1(e,l),l=e,e=e.return;while(e);return t}catch(a){return` Error generating stack: `+a.message+` -`+a.stack}}var dc=Object.prototype.hasOwnProperty,hc=n.unstable_scheduleCallback,mc=n.unstable_cancelCallback,l1=n.unstable_shouldYield,a1=n.unstable_requestPaint,Yt=n.unstable_now,n1=n.unstable_getCurrentPriorityLevel,lh=n.unstable_ImmediatePriority,ah=n.unstable_UserBlockingPriority,yr=n.unstable_NormalPriority,i1=n.unstable_LowPriority,nh=n.unstable_IdlePriority,u1=n.log,r1=n.unstable_setDisableYieldValue,iu=null,Vt=null;function ba(e){if(typeof u1=="function"&&r1(e),Vt&&typeof Vt.setStrictMode=="function")try{Vt.setStrictMode(iu,e)}catch{}}var Xt=Math.clz32?Math.clz32:o1,s1=Math.log,c1=Math.LN2;function o1(e){return e>>>=0,e===0?32:31-(s1(e)/c1|0)|0}var vr=256,pr=262144,gr=4194304;function nn(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&-e;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 br(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var i=0,u=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var y=a&134217727;return y!==0?(a=y&~u,a!==0?i=nn(a):(o&=y,o!==0?i=nn(o):l||(l=y&~e,l!==0&&(i=nn(l))))):(y=a&~u,y!==0?i=nn(y):o!==0?i=nn(o):l||(l=a&~e,l!==0&&(i=nn(l)))),i===0?0:t!==0&&t!==i&&(t&u)===0&&(u=i&-i,l=t&-t,u>=l||u===32&&(l&4194048)!==0)?t:i}function uu(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ih(e,t){(t&8)!==0&&(t|=t&32);var l=e.entangledLanes;if(l!==0)for(e=e.entanglements,l&=t;0l;l++)t.push(e);return t}function ru(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function d1(e,t,l,a,i,u){var o=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var y=e.entanglements,S=e.expirationTimes,O=e.hiddenUpdates;for(l=o&~l;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Nc=!1;if(Fl)try{var fu={};Object.defineProperty(fu,"passive",{get:function(){Nc=!0}}),window.addEventListener("test",fu,fu),window.removeEventListener("test",fu,fu)}catch{Nc=!1}var xa=null,Cc=null,Nr=null;function jh(){if(Nr)return Nr;var e,t=Cc,l=t.length,a,i="value"in xa?xa.value:xa.textContent,u=i.length;for(e=0;e=mu),Uh=" ",kh=!1;function Hh(e,t){switch(e){case"keyup":return J1.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ei=!1;function $1(e,t){switch(e){case"compositionend":return qh(t);case"keypress":return t.which!==32?null:(kh=!0,Uh);case"textInput":return e=t.data,e===Uh&&kh?null:e;default:return null}}function W1(e,t){if(ei)return e==="compositionend"||!Rc&&Hh(e,t)?(e=jh(),Nr=Cc=xa=null,ei=!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"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Kh(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Zh(e,t){var l=Kh(e);e=0;for(var a;l;){if(l.nodeType===3){if(a=e+l.textContent.length,e<=t&&a>=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Kh(l)}}function Jh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Jh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Dc(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Dc(e.document)}return t}function Uc(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 ib=Fl&&"documentMode"in document&&11>=document.documentMode,ti=null,kc=null,gu=null,Hc=!1;function $h(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Hc||ti==null||ti!==Dc(a)||(a=ti,"selectionStart"in a&&Uc(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),gu&&pu(gu,a)||(gu=a,a=Os(kc,"onSelect"),0>=o,i-=o,Al=1<<32-Xt(t)+i|l<ye?(ut=se,se=null):ut=se.sibling;var De=z(j,se,R[ye],q);if(De===null){se===null&&(se=ut);break}e&&se&&De.alternate===null&&t(j,se),T=u(De,T,ye),Oe===null?le=De:Oe.sibling=De,Oe=De,se=ut}if(ye===R.length)return l(j,se),_e&&Il(j,ye),le;if(se===null){for(;yeye?(ut=se,se=null):ut=se.sibling;var Xa=z(j,se,De.value,q);if(Xa===null){se===null&&(se=ut);break}e&&se&&Xa.alternate===null&&t(j,se),T=u(Xa,T,ye),Oe===null?le=Xa:Oe.sibling=Xa,Oe=Xa,se=ut}if(De.done)return l(j,se),_e&&Il(j,ye),le;if(se===null){for(;!De.done;ye++,De=R.next())De=B(j,De.value,q),De!==null&&(T=u(De,T,ye),Oe===null?le=De:Oe.sibling=De,Oe=De);return _e&&Il(j,ye),le}for(se=a(se);!De.done;ye++,De=R.next())De=A(se,j,ye,De.value,q),De!==null&&(e&&(ut=De.alternate,ut!==null&&se.delete(ut.key===null?ye:ut.key)),T=u(De,T,ye),Oe===null?le=De:Oe.sibling=De,Oe=De);return e&&se.forEach(function($x){return t(j,$x)}),_e&&Il(j,ye),le}function Se(j,T,R,q){if(typeof R=="object"&&R!==null&&R.type===Ye&&R.key===null&&R.props.ref===void 0&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case $:e:{for(var le=R.key;T!==null;){if(T.key===le){if(le=R.type,le===Ye){if(T.tag===7){l(j,T.sibling),q=i(T,R.props.children),Ca(q,R),q.return=j,j=q;break e}}else if(T.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===J&&gn(le)===T.type){l(j,T.sibling),q=i(T,R.props),Ca(q,R),q.return=j,j=q;break e}l(j,T);break}else t(j,T);T=T.sibling}R.type===Ye?(q=fn(R.props.children,j.mode,q,R.key),Ca(q,R),q.return=j,j=q):(q=Ur(R.type,R.key,R.props,null,j.mode,q),Ca(q,R),q.return=j,j=q)}return o(j);case ve:e:{for(le=R.key;T!==null;){if(T.key===le)if(T.tag===4&&T.stateNode.containerInfo===R.containerInfo&&T.stateNode.implementation===R.implementation){l(j,T.sibling),q=i(T,R.children||[]),q.return=j,j=q;break e}else{l(j,T);break}else t(j,T);T=T.sibling}q=Vc(R,j.mode,q),q.return=j,j=q}return o(j);case J:return R=gn(R),Se(j,T,R,q)}if(Me(R))return W(j,T,R,q);if(re(R)){if(le=re(R),typeof le!="function")throw Error(c(150));return R=le.call(R),ue(j,T,R,q)}if(typeof R.then=="function")return Se(j,T,Xr(R),q);if(R.$$typeof===fe)return Se(j,T,Qr(j,R),q);Kr(j,R)}return typeof R=="string"&&R!==""||typeof R=="number"||typeof R=="bigint"?(R=""+R,T!==null&&T.tag===6?(l(j,T.sibling),q=i(T,R),q.return=j,j=q):(l(j,T),q=Yc(R,j.mode,q),q.return=j,j=q),o(j)):l(j,T)}return function(j,T,R,q){try{Tu=0;var le=Se(j,T,R,q);return oi=null,le}catch(se){if(se===ci||se===Yr)throw se;var Oe=Ht(29,se,null,j.mode);return Oe.lanes=q,Oe.return=j,Oe}finally{}}}var xn=xm(!0),Sm=xm(!1),wa=!1;function eo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function to(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 za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ja(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(He&2)!==0){var i=a.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),a.pending=t,t=Dr(e),nm(e,null,l),t}return Mr(e,a,t,l),Dr(e)}function Nu(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,sh(e,l)}}function lo(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var i=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var o={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?i=u=o:u=u.next=o,l=l.next}while(l!==null);u===null?i=u=t:u=u.next=t}else i=u=t;l={baseState:a.baseState,firstBaseUpdate:i,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var ao=!1;function Cu(){if(ao){var e=si;if(e!==null)throw e}}function wu(e,t,l,a){ao=!1;var i=e.updateQueue;wa=!1;var u=i.firstBaseUpdate,o=i.lastBaseUpdate,y=i.shared.pending;if(y!==null){i.shared.pending=null;var S=y,O=S.next;S.next=null,o===null?u=O:o.next=O,o=S;var M=e.alternate;M!==null&&(M=M.updateQueue,y=M.lastBaseUpdate,y!==o&&(y===null?M.firstBaseUpdate=O:y.next=O,M.lastBaseUpdate=S))}if(u!==null){var B=i.baseState;o=0,M=O=S=null,y=u;do{var z=y.lane&-536870913,A=z!==y.lane;if(A?(je&z)===z:(a&z)===z){z!==0&&z===vn&&(ao=!0),M!==null&&(M=M.next={lane:0,tag:y.tag,payload:y.payload,callback:null,next:null});e:{var W=e,ue=y;z=t;var Se=l;switch(ue.tag){case 1:if(W=ue.payload,typeof W=="function"){B=W.call(Se,B,z);break e}B=W;break e;case 3:W.flags=W.flags&-65537|128;case 0:if(W=ue.payload,z=typeof W=="function"?W.call(Se,B,z):W,z==null)break e;B=Z({},B,z);break e;case 2:wa=!0}}z=y.callback,z!==null&&(e.flags|=64,A&&(e.flags|=8192),A=i.callbacks,A===null?i.callbacks=[z]:A.push(z))}else A={lane:z,tag:y.tag,payload:y.payload,callback:y.callback,next:null},M===null?(O=M=A,S=B):M=M.next=A,o|=z;if(y=y.next,y===null){if(y=i.shared.pending,y===null)break;A=y,y=A.next,A.next=null,i.lastBaseUpdate=A,i.shared.pending=null}}while(!0);M===null&&(S=B),i.baseState=S,i.firstBaseUpdate=O,i.lastBaseUpdate=M,u===null&&(i.shared.lanes=0),ka|=o,e.lanes=o,e.memoizedState=B}}function Em(e,t){if(typeof e!="function")throw Error(c(191,e));e.call(t)}function _m(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eu?u:8;var o=ie.T,y={};y.types=o!==null?o.types:null,ie.T=y,To(e,!1,t,l);try{var S=i(),O=ie.S;if(O!==null&&O(y,S),S!==null&&typeof S=="object"&&typeof S.then=="function"){var M=vb(S,a);Ru(e,t,M,Pt(e))}else Ru(e,t,a,Pt(e))}catch(B){Ru(e,t,{then:function(){},status:"rejected",reason:B},Pt())}finally{me.p=u,o!==null&&y.types!==null&&(o.types=y.types),ie.T=o}}function Eb(){}function Eo(e,t,l,a){if(e.tag!==5)throw Error(c(476));var i=ty(e).queue;ey(e,i,t,Gt,l===null?Eb:function(){return ly(e),l(a)})}function ty(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Gt,baseState:Gt,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:aa,lastRenderedState:Gt},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:aa,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ly(e){var t=ty(e);t.next===null&&(t=e.alternate.memoizedState),Ru(e,t.next.queue,{},Pt())}function _o(){return gt(Ai)}function ay(){return lt().memoizedState}function ny(){return lt().memoizedState}function _b(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=Pt();e=za(l);var a=ja(t,e,l);a!==null&&(Qt(a,t,l),Nu(a,t,l)),t={cache:$c()},e.payload=t;return}t=t.return}}function Tb(e,t,l){var a=Pt();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ls(e)?uy(t,l):(l=Qc(e,t,l,a),l!==null&&(Qt(l,e,a),ry(l,t,a)))}function iy(e,t,l){var a=Pt();Ru(e,t,l,a)}function Ru(e,t,l,a){var i={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(ls(e))uy(t,i);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var o=t.lastRenderedState,y=u(o,l);if(i.hasEagerState=!0,i.eagerState=y,Zt(y,o))return Mr(e,t,i,0),Xe===null&&Ar(),!1}catch{}finally{}if(l=Qc(e,t,i,a),l!==null)return Qt(l,e,a),ry(l,t,a),!0}return!1}function To(e,t,l,a){if(a={lane:2,revertLane:yf(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ls(e)){if(t)throw Error(c(479))}else t=Qc(e,l,a,2),t!==null&&Qt(t,e,2)}function ls(e){var t=e.alternate;return e===xe||t!==null&&t===xe}function uy(e,t){fi=Fr=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function ry(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,sh(e,l)}}var as={readContext:gt,use:Pr,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useLayoutEffect:et,useInsertionEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useSyncExternalStore:et,useId:et,useHostTransitionStatus:et,useFormState:et,useActionState:et,useOptimistic:et,useMemoCache:et,useCacheRefresh:et,useEffectEvent:et},sy={readContext:gt,use:Pr,useCallback:function(e,t){return jt().memoizedState=[e,t===void 0?null:t],e},useContext:gt,useEffect:Xm,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,es(4194308,4,Fm.bind(null,t,e),l)},useLayoutEffect:function(e,t){return es(4194308,4,e,t)},useInsertionEffect:function(e,t){es(4,2,e,t)},useMemo:function(e,t){var l=jt();t=t===void 0?null:t;var a=e();if(Sn){ba(!0);try{e()}finally{ba(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=jt();if(l!==void 0){var i=l(t);if(Sn){ba(!0);try{l(t)}finally{ba(!1)}}}else i=t;return a.memoizedState=a.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},a.queue=e,e=e.dispatch=Tb.bind(null,xe,e),[a.memoizedState,e]},useRef:function(e){var t=jt();return e={current:e},t.memoizedState=e},useState:function(e){e=po(e);var t=e.queue,l=iy.bind(null,xe,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:xo,useDeferredValue:function(e,t){var l=jt();return So(l,e,t)},useTransition:function(){var e=po(!1);return e=ey.bind(null,xe,e.queue,!0,!1),jt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=xe,i=jt();if(_e){if(l===void 0)throw Error(c(407));l=l()}else{if(l=t(),Xe===null)throw Error(c(349));(je&127)!==0||jm(a,t,l)}i.memoizedState=l;var u={value:l,getSnapshot:t};return i.queue=u,Xm(Rm.bind(null,a,u,e),[e]),a.flags|=2048,hi(9,{destroy:void 0},Om.bind(null,a,u,l,t),null),l},useId:function(){var e=jt(),t=Xe.identifierPrefix;if(_e){var l=Ml,a=Al;l=(a&~(1<<32-Xt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=$r++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?o.createElement("select",{is:a.is}):o.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?o.createElement(i,{is:a.is}):o.createElement(i)}}u[pt]=t,u[kt]=a;e:for(o=t.child;o!==null;){if(o.tag===5||o.tag===6)u.appendChild(o.stateNode);else if(o.tag!==4&&o.tag!==27&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===t)break e;for(;o.sibling===null;){if(o.return===null||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=u;e:switch(Et(u,i,a),i){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&ia(t)}}return Je(t),t.subtreeFlags&=-33554433,Ho(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&ia(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(c(166));if(e=pa.current,ri(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,i=ht,i!==null)switch(i.tag){case 27:case 5:a=i.memoizedProps}e[pt]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||Rv(e.nodeValue,l)),e||Ta(t,!0)}else e=Vu(e).createTextNode(a),e[pt]=t,t.stateNode=e}return Je(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=ri(t),l!==null){if(e===null){if(!a)throw Error(c(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(557));e[pt]=t}else dn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Je(t),e=!1}else l=Zc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(Jt(t),t):(Jt(t),null);if((t.flags&128)!==0)throw Error(c(558))}return Je(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=ri(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(c(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(c(317));i[pt]=t}else dn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Je(t),i=!1}else i=Zc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Jt(t),t):(Jt(t),null)}return Jt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,i=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(i=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==i&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),cs(t,t.updateQueue),Je(t),null);case 4:return Xn(),e===null&&bf(t.stateNode.containerInfo),t.flags|=67108864,Je(t),null;case 10:return ta(t.type),Je(t),null;case 19:if(ro(t),a=t.memoizedState,a===null)return Je(t),null;if(i=(t.flags&128)!==0,u=a.rendering,u===null)if(i)Mu(a,!1);else{if(tt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=Jr(e),u!==null){for(t.flags|=128,Mu(a,!1),e=u.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)im(l,e),l=l.sibling;return zu(t,xt.current&1|2),_e&&Il(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Yt()>Ss&&(t.flags|=128,i=!0,Mu(a,!1),t.lanes=4194304)}else{if(!i)if(e=Jr(u),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),Mu(a,!0),a.tail===null&&a.tailMode!=="collapsed"&&a.tailMode!=="visible"&&!u.alternate&&!_e)return Je(t),null}else 2*Yt()-a.renderingStartTime>Ss&&l!==536870912&&(t.flags|=128,i=!0,Mu(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(e=a.last,e!==null?e.sibling=u:t.child=u,a.last=u)}if(a.tail!==null){e=a.tail;e:{for(l=e;l!==null;){if(l.alternate!==null){l=!1;break e}l=l.sibling}l=!0}return a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Yt(),e.sibling=null,u=xt.current,u=i?u&1|2:u&1,a.tailMode==="visible"||a.tailMode==="collapsed"||!l||_e?zu(t,u):(l=u,Ke(bt,t),Ke(xt,l),Tt===null&&(Tt=t)),_e&&Il(t,a.treeForkCount),e}return Je(t),null;case 22:case 23:return Jt(t),io(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(Je(t),t.subtreeFlags&6&&(t.flags|=8192)):Je(t),l=t.updateQueue,l!==null&&cs(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&vt(pn),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),ta(at),Je(t),null;case 25:return null;case 30:return t.flags|=33554432,Je(t),null}throw Error(c(156,t.tag))}function Rb(e,t){switch(Xc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ta(at),Xn(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return mr(t),null;case 31:if(t.memoizedState!==null){if(Jt(t),t.alternate===null)throw Error(c(340));dn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Jt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));dn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ro(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Xn(),null;case 10:return ta(t.type),null;case 22:case 23:return Jt(t),io(),e!==null&&vt(pn),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ta(at),null;case 25:return null;default:return null}}function My(e,t){switch(Xc(t),t.tag){case 3:ta(at),Xn();break;case 26:case 27:case 5:mr(t);break;case 4:Xn();break;case 31:t.memoizedState!==null&&Jt(t);break;case 13:Jt(t);break;case 19:ro(t);break;case 10:ta(t.type);break;case 22:case 23:Jt(t),io(),e!==null&&vt(pn);break;case 24:ta(at)}}function Du(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var i=a.next;l=i;do{if((l.tag&e)===e){a=void 0;var u=l.create,o=l.inst;a=u(),o.destroy=a}l=l.next}while(l!==i)}}catch(y){Qe(t,t.return,y)}}function Ma(e,t,l){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var u=i.next;a=u;do{if((a.tag&e)===e){var o=a.inst,y=o.destroy;if(y!==void 0){o.destroy=void 0,i=t;var S=l,O=y;try{O()}catch(M){Qe(i,S,M)}}}a=a.next}while(a!==u)}}catch(M){Qe(t,t.return,M)}}function Dy(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{_m(t,l)}catch(a){Qe(e,e.return,a)}}}function Uy(e,t,l){l.props=En(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){Qe(e,t,a)}}function Dl(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:var i=e.stateNode,u=$l(e.memoizedProps,i);(i.ref===null||i.ref.name!==u)&&(i.ref=Gv(u)),a=i.ref;break;case 7:if(e.stateNode===null){var o=new It(e);g(e.child,!1,Sx,o,void 0,void 0),e.stateNode=o}a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(y){Qe(e,t,y)}}function St(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(i){Qe(e,t,i)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(i){Qe(e,t,i)}else l.current=null}function os(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var l=0;l title"))),Et(a,t,l),a[pt]=e,dt(a),t=a;break e;case"link":if(u=ip("link","href",i).get(t+(l.href||""))){for(o=0;oSe&&(o=Se,Se=ue,ue=o);var j=Zh(y,ue),T=Zh(y,Se);if(j&&T&&(A.rangeCount!==1||A.anchorNode!==j.node||A.anchorOffset!==j.offset||A.focusNode!==T.node||A.focusOffset!==T.offset)){var R=B.createRange();R.setStart(j.node,j.offset),A.removeAllRanges(),ue>Se?(A.addRange(R),A.extend(T.node,T.offset)):(R.setEnd(T.node,T.offset),A.addRange(R))}}}}for(B=[],A=y;A=A.parentNode;)A.nodeType===1&&B.push({element:A,left:A.scrollLeft,top:A.scrollTop});for(typeof y.focus=="function"&&y.focus(),y=0;yl?32:l,ie.T=null,l=nf,nf=null;var u=Sl,o=Bl;if(Pe=0,Cn=Sl=null,Bl=0,(He&6)!==0)throw Error(c(331));var y=He;if(He|=4,nv(u.current),tv(u,u.current,o,l),He=y,Qu(0,!1),Vt&&typeof Vt.onPostCommitFiberRoot=="function")try{Vt.onPostCommitFiberRoot(iu,u)}catch{}return!0}finally{me.p=i,ie.T=a,bv(e,t)}}function xv(e,t,l){t=il(l,t),t=wo(e.stateNode,t,2),e=ja(e,t,2),e!==null&&(ru(e,2),Ql(e))}function Qe(e,t,l){if(e.tag===3)xv(e,e,l);else for(;t!==null;){if(t.tag===3){xv(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Ha===null||!Ha.has(a))){e=il(l,e),l=vy(2),a=ja(t,l,2),a!==null&&(py(l,a,t,e),ru(a,2),Ql(a));break}}t=t.return}}function df(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new Ub;var i=new Set;a.set(t,i)}else i=a.get(t),i===void 0&&(i=new Set,a.set(t,i));i.has(l)||(tf=!0,i.add(l),e=Yb.bind(null,e,t,l),t.then(e,e))}function Yb(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Xe===e&&(je&l)===l&&((tt===4||tt===3&&(je&62914560)===je&&300>Yt()-xs)&&(He&2)===0?Ti(e,0):bs|=l,bi===je&&(bi=0)),Ql(e)}function Sv(e,t){t===0&&(t=uh()),e=on(e,t),e!==null&&(ru(e,t),Ql(e))}function Vb(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Sv(e,l)}function Xb(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,i=e.memoizedState;i!==null&&(l=i.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(c(314))}a!==null&&a.delete(t),Sv(e,l)}function Kb(e,t){return hc(e,t)}var Ci=null,wi=null,hf=!1,zs=!1,mf=!1,La=0;function Ql(e){e!==wi&&e.next===null&&(wi===null?Ci=wi=e:wi=wi.next=e),zs=!0,hf||(hf=!0,Jb())}function Qu(e,t){if(!mf&&zs){mf=!0;do for(var l=!1,a=Ci;a!==null;){if(e!==0){var i=a.pendingLanes;if(i===0)var u=0;else{var o=a.suspendedLanes,y=a.pingedLanes;u=(1<<31-Xt(42|e)+1)-1,u&=i&~(o&~y),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,Nv(a,u))}else u=je,u=br(a,a===Xe?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||uu(a,u)||(l=!0,Nv(a,u));a=a.next}while(l);mf=!1}}function Zb(){Ev()}function Ev(){zs=hf=!1;var e=0;La!==0&&ix()&&(e=La);for(var t=Yt(),l=null,a=Ci;a!==null;){var i=a.next,u=_v(a,t);u===0?(a.next=null,l===null?Ci=i:l.next=i,i===null&&(wi=l)):(l=a,(e!==0||(u&3)!==0)&&(zs=!0)),a=i}Pe!==0&&Pe!==5||Qu(e),La!==0&&(La=0)}function _v(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,i=e.expirationTimes,u=e.pendingLanes&-62914561;0y)break;var M=S.transferSize,B=S.initiatorType;M&&Av(B)&&(S=S.responseEnd,o+=M*(SMs){ue.length=W;break}R=new Promise(fx.bind(R)),ue.push(R)}}}if(0"u"?null:document;function tp(e,t,l){var a=ji;if(a&&typeof t=="string"&&t){var i=al(t);i='link[rel="'+e+'"][href="'+i+'"]',typeof l=="string"&&(i+='[crossorigin="'+l+'"]'),ep.has(i)||(ep.add(i),e={rel:e,crossOrigin:l,href:t},a.querySelector(i)===null&&(t=a.createElement("link"),Et(t,"link",e),dt(t),a.head.appendChild(t)))}}function Ox(e){ra.D(e),tp("dns-prefetch",e,null)}function Rx(e,t){ra.C(e,t),tp("preconnect",e,t)}function Ax(e,t,l){ra.L(e,t,l);var a=ji;if(a&&e&&t){var i='link[rel="preload"][as="'+al(t)+'"]';t==="image"&&l&&l.imageSrcSet?(i+='[imagesrcset="'+al(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(i+='[imagesizes="'+al(l.imageSizes)+'"]')):i+='[href="'+al(e)+'"]';var u=i;switch(t){case"style":u=Oi(e);break;case"script":u=Ri(e)}if(!(fl.has(u)||(e=Z({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),fl.set(u,e),a.querySelector(i)!==null||t==="style"&&a.querySelector(Ku(u))||t==="script"&&a.querySelector(Zu(u))))){var o=a.createElement("link");Et(o,"link",e),t==="style"&&(o[xr]=!0,o.onload=o.onerror=function(){mh(o)}),dt(o),a.head.appendChild(o)}}}function Mx(e,t){ra.m(e,t);var l=ji;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+al(a)+'"][href="'+al(e)+'"]',u=i;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ri(e)}if(!fl.has(u)&&(e=Z({rel:"modulepreload",href:e},t),fl.set(u,e),l.querySelector(i)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Zu(u)))return}a=l.createElement("link"),Et(a,"link",e),dt(a),l.head.appendChild(a)}}}function Dx(e,t,l){ra.S(e,t,l);var a=ji;if(a&&e){var i=Jn(a).hoistableStyles,u=Oi(e);t=t||"default";var o=i.get(u);if(!o){var y={loading:0,preload:null};if(o=a.querySelector(Ku(u)))y.loading=5;else{e=Z({rel:"stylesheet",href:e,"data-precedence":t},l),(l=fl.get(u))&&Uf(e,l);var S=o=a.createElement("link");dt(S),Et(S,"link",e),S._p=new Promise(function(O,M){S.onload=O,S.onerror=M}),S.addEventListener("load",function(){y.loading|=1}),S.addEventListener("error",function(){y.loading|=2}),y.loading|=4,Rs(o,t,a)}o={type:"stylesheet",instance:o,count:1,state:y},i.set(u,o)}}}function Ux(e,t){ra.X(e,t);var l=ji;if(l&&e){var a=Jn(l).hoistableScripts,i=Ri(e),u=a.get(i);u||(u=l.querySelector(Zu(i)),u||(e=Z({src:e,async:!0},t),(t=fl.get(i))&&kf(e,t),u=l.createElement("script"),dt(u),Et(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(i,u))}}function kx(e,t){ra.M(e,t);var l=ji;if(l&&e){var a=Jn(l).hoistableScripts,i=Ri(e),u=a.get(i);u||(u=l.querySelector(Zu(i)),u||(e=Z({src:e,async:!0,type:"module"},t),(t=fl.get(i))&&kf(e,t),u=l.createElement("script"),dt(u),Et(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(i,u))}}function lp(e,t,l,a){var i=(i=pa.current)?Xu(i):null;if(!i)throw Error(c(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(l=Oi(l.href),t=Jn(i).hoistableStyles,a=t.get(l),a||(a={type:"style",instance:null,count:0,state:null},t.set(l,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=Oi(l.href);var u=Jn(i).hoistableStyles,o=u.get(e);if(o||(i=i.ownerDocument||i,o={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,o),(u=i.querySelector(Ku(e)))?u._p||(o.instance=u,o.state.loading=5):(u=fl.get(e),u||(u={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},fl.set(e,u)),Hx(i,e,u,o.state))),t&&a===null)throw Error(c(528,""));return o}if(t&&a!==null)throw Error(c(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(l=Ri(l),t=Jn(i).hoistableScripts,a=t.get(l),a||(a={type:"script",instance:null,count:0,state:null},t.set(l,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,e))}}function Oi(e){return'href="'+al(e)+'"'}function Ku(e){return'link[rel="stylesheet"]['+e+"]"}function ap(e){return Z({},e,{"data-precedence":e.precedence,precedence:null})}function Hx(e,t,l,a){if(t=e.querySelector('link[rel="preload"][as="style"]['+t+"]")){if(t[xr]!==!0){a.loading=1;return}}else t=e.createElement("link"),t[xr]=!0,t.onload=t.onerror=mh.bind(null,t),Et(t,"link",l),dt(t),e.head.appendChild(t);a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2})}function Ri(e){return'[src="'+al(e)+'"]'}function Zu(e){return"script[async]"+e}function np(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+al(l.href)+'"]');if(a)return t.instance=a,dt(a),a;var i=Z({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),dt(a),Et(a,"style",i),Rs(a,l.precedence,e),t.instance=a;case"stylesheet":i=Oi(l.href);var u=e.querySelector(Ku(i));if(u)return t.state.loading|=4,t.instance=u,dt(u),u;a=ap(l),(i=fl.get(i))&&Uf(a,i),u=(e.ownerDocument||e).createElement("link"),dt(u);var o=u;return o._p=new Promise(function(y,S){o.onload=y,o.onerror=S}),Et(u,"link",a),t.state.loading|=4,Rs(u,l.precedence,e),t.instance=u;case"script":return u=Ri(l.src),(i=e.querySelector(Zu(u)))?(t.instance=i,dt(i),i):(a=l,(i=fl.get(u))&&(a=Z({},l),kf(a,i)),e=e.ownerDocument||e,i=e.createElement("script"),dt(i),Et(i,"link",a),e.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(c(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Rs(a,l.precedence,e));return t.instance}function Rs(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=a.length?a[a.length-1]:null,u=i,o=0;o title"):null)}function qx(e,t,l){if(l===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 up(e,t){return e==="img"&&t.src!=null&&t.src!==""&&t.onLoad==null&&t.loading!=="lazy"}function rp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function sp(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function cp(e,t){typeof t.decode=="function"&&(e.imgCount++,t.complete||(e.imgBytes+=sp(t),e.suspenseyImages.push(t)),e=Qx.bind(e),t.decode().then(e,e))}function Lx(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var i=Oi(a.href),u=t.querySelector(Ku(i));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Ju.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=u,dt(u);return}u=t.ownerDocument||t,a=ap(a),(i=fl.get(i))&&Uf(a,i),u=u.createElement("link"),dt(u);var o=u;o._p=new Promise(function(y,S){o.onload=y,o.onerror=S}),Et(u,"link",a),l.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Ju.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var Ms=0;function Bx(e,t){return e.stylesheets&&e.count===0&&Us(e,e.stylesheets),0Ms?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(i)}}:null}function op(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)Us(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function Ju(){this.count--,op(this)}function Qx(){this.imgCount--,op(this)}var Ds=null;function Us(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Ds=new Map,t.forEach(Gx,e),Ds=null,Ju.call(e))}function Gx(e,t){if(!(t.state.loading&4)){var l=Ds.get(e);if(l)var a=l.get(null);else{l=new Map,Ds.set(e,l);for(var i=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),Zf.exports=n2(),Zf.exports}var u2=i2();const r2=Og(u2);/** +`+a.stack}}var dc=Object.prototype.hasOwnProperty,hc=n.unstable_scheduleCallback,mc=n.unstable_cancelCallback,l1=n.unstable_shouldYield,a1=n.unstable_requestPaint,Yt=n.unstable_now,n1=n.unstable_getCurrentPriorityLevel,lh=n.unstable_ImmediatePriority,ah=n.unstable_UserBlockingPriority,yr=n.unstable_NormalPriority,i1=n.unstable_LowPriority,nh=n.unstable_IdlePriority,u1=n.log,r1=n.unstable_setDisableYieldValue,iu=null,Vt=null;function xa(e){if(typeof u1=="function"&&r1(e),Vt&&typeof Vt.setStrictMode=="function")try{Vt.setStrictMode(iu,e)}catch{}}var Xt=Math.clz32?Math.clz32:o1,s1=Math.log,c1=Math.LN2;function o1(e){return e>>>=0,e===0?32:31-(s1(e)/c1|0)|0}var vr=256,pr=262144,gr=4194304;function nn(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&-e;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 br(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var i=0,u=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var y=a&134217727;return y!==0?(a=y&~u,a!==0?i=nn(a):(o&=y,o!==0?i=nn(o):l||(l=y&~e,l!==0&&(i=nn(l))))):(y=a&~u,y!==0?i=nn(y):o!==0?i=nn(o):l||(l=a&~e,l!==0&&(i=nn(l)))),i===0?0:t!==0&&t!==i&&(t&u)===0&&(u=i&-i,l=t&-t,u>=l||u===32&&(l&4194048)!==0)?t:i}function uu(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ih(e,t){(t&8)!==0&&(t|=t&32);var l=e.entangledLanes;if(l!==0)for(e=e.entanglements,l&=t;0l;l++)t.push(e);return t}function ru(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function d1(e,t,l,a,i,u){var o=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var y=e.entanglements,S=e.expirationTimes,O=e.hiddenUpdates;for(l=o&~l;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Nc=!1;if($l)try{var fu={};Object.defineProperty(fu,"passive",{get:function(){Nc=!0}}),window.addEventListener("test",fu,fu),window.removeEventListener("test",fu,fu)}catch{Nc=!1}var Sa=null,Cc=null,Nr=null;function zh(){if(Nr)return Nr;var e,t=Cc,l=t.length,a,i="value"in Sa?Sa.value:Sa.textContent,u=i.length;for(e=0;e=mu),Uh=" ",kh=!1;function Hh(e,t){switch(e){case"keyup":return J1.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ei=!1;function $1(e,t){switch(e){case"compositionend":return qh(t);case"keypress":return t.which!==32?null:(kh=!0,Uh);case"textInput":return e=t.data,e===Uh&&kh?null:e;default:return null}}function P1(e,t){if(ei)return e==="compositionend"||!Rc&&Hh(e,t)?(e=zh(),Nr=Cc=Sa=null,ei=!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"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Kh(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Zh(e,t){var l=Kh(e);e=0;for(var a;l;){if(l.nodeType===3){if(a=e+l.textContent.length,e<=t&&a>=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Kh(l)}}function Jh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Jh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Dc(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Dc(e.document)}return t}function Uc(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 ib=$l&&"documentMode"in document&&11>=document.documentMode,ti=null,kc=null,gu=null,Hc=!1;function $h(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Hc||ti==null||ti!==Dc(a)||(a=ti,"selectionStart"in a&&Uc(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),gu&&pu(gu,a)||(gu=a,a=Os(kc,"onSelect"),0>=o,i-=o,Al=1<<32-Xt(t)+i|l<me?(ut=se,se=null):ut=se.sibling;var De=j(z,se,R[me],L);if(De===null){se===null&&(se=ut);break}e&&se&&De.alternate===null&&t(z,se),T=u(De,T,me),Oe===null?le=De:Oe.sibling=De,Oe=De,se=ut}if(me===R.length)return l(z,se),_e&&ea(z,me),le;if(se===null){for(;meme?(ut=se,se=null):ut=se.sibling;var Ka=j(z,se,De.value,L);if(Ka===null){se===null&&(se=ut);break}e&&se&&Ka.alternate===null&&t(z,se),T=u(Ka,T,me),Oe===null?le=Ka:Oe.sibling=Ka,Oe=Ka,se=ut}if(De.done)return l(z,se),_e&&ea(z,me),le;if(se===null){for(;!De.done;me++,De=R.next())De=B(z,De.value,L),De!==null&&(T=u(De,T,me),Oe===null?le=De:Oe.sibling=De,Oe=De);return _e&&ea(z,me),le}for(se=a(se);!De.done;me++,De=R.next())De=A(se,z,me,De.value,L),De!==null&&(e&&(ut=De.alternate,ut!==null&&se.delete(ut.key===null?me:ut.key)),T=u(De,T,me),Oe===null?le=De:Oe.sibling=De,Oe=De);return e&&se.forEach(function($x){return t(z,$x)}),_e&&ea(z,me),le}function Se(z,T,R,L){if(typeof R=="object"&&R!==null&&R.type===Ye&&R.key===null&&R.props.ref===void 0&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case $:e:{for(var le=R.key;T!==null;){if(T.key===le){if(le=R.type,le===Ye){if(T.tag===7){l(z,T.sibling),L=i(T,R.props.children),wa(L,R),L.return=z,z=L;break e}}else if(T.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===J&&gn(le)===T.type){l(z,T.sibling),L=i(T,R.props),wa(L,R),L.return=z,z=L;break e}l(z,T);break}else t(z,T);T=T.sibling}R.type===Ye?(L=fn(R.props.children,z.mode,L,R.key),wa(L,R),L.return=z,z=L):(L=Ur(R.type,R.key,R.props,null,z.mode,L),wa(L,R),L.return=z,z=L)}return o(z);case ye:e:{for(le=R.key;T!==null;){if(T.key===le)if(T.tag===4&&T.stateNode.containerInfo===R.containerInfo&&T.stateNode.implementation===R.implementation){l(z,T.sibling),L=i(T,R.children||[]),L.return=z,z=L;break e}else{l(z,T);break}else t(z,T);T=T.sibling}L=Vc(R,z.mode,L),L.return=z,z=L}return o(z);case J:return R=gn(R),Se(z,T,R,L)}if(Me(R))return P(z,T,R,L);if(re(R)){if(le=re(R),typeof le!="function")throw Error(c(150));return R=le.call(R),ue(z,T,R,L)}if(typeof R.then=="function")return Se(z,T,Xr(R),L);if(R.$$typeof===fe)return Se(z,T,Qr(z,R),L);Kr(z,R)}return typeof R=="string"&&R!==""||typeof R=="number"||typeof R=="bigint"?(R=""+R,T!==null&&T.tag===6?(l(z,T.sibling),L=i(T,R),L.return=z,z=L):(l(z,T),L=Yc(R,z.mode,L),L.return=z,z=L),o(z)):l(z,T)}return function(z,T,R,L){try{Tu=0;var le=Se(z,T,R,L);return oi=null,le}catch(se){if(se===ci||se===Yr)throw se;var Oe=Ht(29,se,null,z.mode);return Oe.lanes=L,Oe.return=z,Oe}finally{}}}var xn=xm(!0),Sm=xm(!1),ja=!1;function eo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function to(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 za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Oa(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(He&2)!==0){var i=a.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),a.pending=t,t=Dr(e),nm(e,null,l),t}return Mr(e,a,t,l),Dr(e)}function Nu(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,sh(e,l)}}function lo(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var i=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var o={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?i=u=o:u=u.next=o,l=l.next}while(l!==null);u===null?i=u=t:u=u.next=t}else i=u=t;l={baseState:a.baseState,firstBaseUpdate:i,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var ao=!1;function Cu(){if(ao){var e=si;if(e!==null)throw e}}function wu(e,t,l,a){ao=!1;var i=e.updateQueue;ja=!1;var u=i.firstBaseUpdate,o=i.lastBaseUpdate,y=i.shared.pending;if(y!==null){i.shared.pending=null;var S=y,O=S.next;S.next=null,o===null?u=O:o.next=O,o=S;var M=e.alternate;M!==null&&(M=M.updateQueue,y=M.lastBaseUpdate,y!==o&&(y===null?M.firstBaseUpdate=O:y.next=O,M.lastBaseUpdate=S))}if(u!==null){var B=i.baseState;o=0,M=O=S=null,y=u;do{var j=y.lane&-536870913,A=j!==y.lane;if(A?(ze&j)===j:(a&j)===j){j!==0&&j===vn&&(ao=!0),M!==null&&(M=M.next={lane:0,tag:y.tag,payload:y.payload,callback:null,next:null});e:{var P=e,ue=y;j=t;var Se=l;switch(ue.tag){case 1:if(P=ue.payload,typeof P=="function"){B=P.call(Se,B,j);break e}B=P;break e;case 3:P.flags=P.flags&-65537|128;case 0:if(P=ue.payload,j=typeof P=="function"?P.call(Se,B,j):P,j==null)break e;B=Z({},B,j);break e;case 2:ja=!0}}j=y.callback,j!==null&&(e.flags|=64,A&&(e.flags|=8192),A=i.callbacks,A===null?i.callbacks=[j]:A.push(j))}else A={lane:j,tag:y.tag,payload:y.payload,callback:y.callback,next:null},M===null?(O=M=A,S=B):M=M.next=A,o|=j;if(y=y.next,y===null){if(y=i.shared.pending,y===null)break;A=y,y=A.next,A.next=null,i.lastBaseUpdate=A,i.shared.pending=null}}while(!0);M===null&&(S=B),i.baseState=S,i.firstBaseUpdate=O,i.lastBaseUpdate=M,u===null&&(i.shared.lanes=0),Ha|=o,e.lanes=o,e.memoizedState=B}}function Em(e,t){if(typeof e!="function")throw Error(c(191,e));e.call(t)}function _m(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;eu?u:8;var o=ie.T,y={};y.types=o!==null?o.types:null,ie.T=y,To(e,!1,t,l);try{var S=i(),O=ie.S;if(O!==null&&O(y,S),S!==null&&typeof S=="object"&&typeof S.then=="function"){var M=vb(S,a);Ru(e,t,M,Wt(e))}else Ru(e,t,a,Wt(e))}catch(B){Ru(e,t,{then:function(){},status:"rejected",reason:B},Wt())}finally{he.p=u,o!==null&&y.types!==null&&(o.types=y.types),ie.T=o}}function Eb(){}function Eo(e,t,l,a){if(e.tag!==5)throw Error(c(476));var i=ty(e).queue;ey(e,i,t,Gt,l===null?Eb:function(){return ly(e),l(a)})}function ty(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Gt,baseState:Gt,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:na,lastRenderedState:Gt},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:na,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ly(e){var t=ty(e);t.next===null&&(t=e.alternate.memoizedState),Ru(e,t.next.queue,{},Wt())}function _o(){return gt(Ai)}function ay(){return lt().memoizedState}function ny(){return lt().memoizedState}function _b(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=Wt();e=za(l);var a=Oa(t,e,l);a!==null&&(Qt(a,t,l),Nu(a,t,l)),t={cache:$c()},e.payload=t;return}t=t.return}}function Tb(e,t,l){var a=Wt();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ls(e)?uy(t,l):(l=Qc(e,t,l,a),l!==null&&(Qt(l,e,a),ry(l,t,a)))}function iy(e,t,l){var a=Wt();Ru(e,t,l,a)}function Ru(e,t,l,a){var i={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(ls(e))uy(t,i);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var o=t.lastRenderedState,y=u(o,l);if(i.hasEagerState=!0,i.eagerState=y,Zt(y,o))return Mr(e,t,i,0),Xe===null&&Ar(),!1}catch{}finally{}if(l=Qc(e,t,i,a),l!==null)return Qt(l,e,a),ry(l,t,a),!0}return!1}function To(e,t,l,a){if(a={lane:2,revertLane:yf(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ls(e)){if(t)throw Error(c(479))}else t=Qc(e,l,a,2),t!==null&&Qt(t,e,2)}function ls(e){var t=e.alternate;return e===xe||t!==null&&t===xe}function uy(e,t){fi=Fr=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function ry(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,sh(e,l)}}var as={readContext:gt,use:Wr,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useLayoutEffect:et,useInsertionEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useSyncExternalStore:et,useId:et,useHostTransitionStatus:et,useFormState:et,useActionState:et,useOptimistic:et,useMemoCache:et,useCacheRefresh:et,useEffectEvent:et},sy={readContext:gt,use:Wr,useCallback:function(e,t){return zt().memoizedState=[e,t===void 0?null:t],e},useContext:gt,useEffect:Xm,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,es(4194308,4,Fm.bind(null,t,e),l)},useLayoutEffect:function(e,t){return es(4194308,4,e,t)},useInsertionEffect:function(e,t){es(4,2,e,t)},useMemo:function(e,t){var l=zt();t=t===void 0?null:t;var a=e();if(Sn){xa(!0);try{e()}finally{xa(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=zt();if(l!==void 0){var i=l(t);if(Sn){xa(!0);try{l(t)}finally{xa(!1)}}}else i=t;return a.memoizedState=a.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},a.queue=e,e=e.dispatch=Tb.bind(null,xe,e),[a.memoizedState,e]},useRef:function(e){var t=zt();return e={current:e},t.memoizedState=e},useState:function(e){e=po(e);var t=e.queue,l=iy.bind(null,xe,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:xo,useDeferredValue:function(e,t){var l=zt();return So(l,e,t)},useTransition:function(){var e=po(!1);return e=ey.bind(null,xe,e.queue,!0,!1),zt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=xe,i=zt();if(_e){if(l===void 0)throw Error(c(407));l=l()}else{if(l=t(),Xe===null)throw Error(c(349));(ze&127)!==0||zm(a,t,l)}i.memoizedState=l;var u={value:l,getSnapshot:t};return i.queue=u,Xm(Rm.bind(null,a,u,e),[e]),a.flags|=2048,hi(9,{destroy:void 0},Om.bind(null,a,u,l,t),null),l},useId:function(){var e=zt(),t=Xe.identifierPrefix;if(_e){var l=Ml,a=Al;l=(a&~(1<<32-Xt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=$r++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?o.createElement("select",{is:a.is}):o.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?o.createElement(i,{is:a.is}):o.createElement(i)}}u[pt]=t,u[kt]=a;e:for(o=t.child;o!==null;){if(o.tag===5||o.tag===6)u.appendChild(o.stateNode);else if(o.tag!==4&&o.tag!==27&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===t)break e;for(;o.sibling===null;){if(o.return===null||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=u;e:switch(Et(u,i,a),i){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&ua(t)}}return Je(t),t.subtreeFlags&=-33554433,Ho(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&ua(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(c(166));if(e=ga.current,ri(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,i=ht,i!==null)switch(i.tag){case 27:case 5:a=i.memoizedProps}e[pt]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||Rv(e.nodeValue,l)),e||Na(t,!0)}else e=Vu(e).createTextNode(a),e[pt]=t,t.stateNode=e}return Je(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=ri(t),l!==null){if(e===null){if(!a)throw Error(c(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(557));e[pt]=t}else dn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Je(t),e=!1}else l=Zc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(Jt(t),t):(Jt(t),null);if((t.flags&128)!==0)throw Error(c(558))}return Je(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=ri(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(c(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(c(317));i[pt]=t}else dn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Je(t),i=!1}else i=Zc(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Jt(t),t):(Jt(t),null)}return Jt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,i=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(i=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==i&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),cs(t,t.updateQueue),Je(t),null);case 4:return Xn(),e===null&&bf(t.stateNode.containerInfo),t.flags|=67108864,Je(t),null;case 10:return la(t.type),Je(t),null;case 19:if(ro(t),a=t.memoizedState,a===null)return Je(t),null;if(i=(t.flags&128)!==0,u=a.rendering,u===null)if(i)Mu(a,!1);else{if(tt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=Jr(e),u!==null){for(t.flags|=128,Mu(a,!1),e=u.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)im(l,e),l=l.sibling;return ju(t,xt.current&1|2),_e&&ea(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Yt()>Ss&&(t.flags|=128,i=!0,Mu(a,!1),t.lanes=4194304)}else{if(!i)if(e=Jr(u),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),Mu(a,!0),a.tail===null&&a.tailMode!=="collapsed"&&a.tailMode!=="visible"&&!u.alternate&&!_e)return Je(t),null}else 2*Yt()-a.renderingStartTime>Ss&&l!==536870912&&(t.flags|=128,i=!0,Mu(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(e=a.last,e!==null?e.sibling=u:t.child=u,a.last=u)}if(a.tail!==null){e=a.tail;e:{for(l=e;l!==null;){if(l.alternate!==null){l=!1;break e}l=l.sibling}l=!0}return a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Yt(),e.sibling=null,u=xt.current,u=i?u&1|2:u&1,a.tailMode==="visible"||a.tailMode==="collapsed"||!l||_e?ju(t,u):(l=u,Ke(bt,t),Ke(xt,l),Tt===null&&(Tt=t)),_e&&ea(t,a.treeForkCount),e}return Je(t),null;case 22:case 23:return Jt(t),io(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(Je(t),t.subtreeFlags&6&&(t.flags|=8192)):Je(t),l=t.updateQueue,l!==null&&cs(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&vt(pn),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),la(at),Je(t),null;case 25:return null;case 30:return t.flags|=33554432,Je(t),null}throw Error(c(156,t.tag))}function Rb(e,t){switch(Xc(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return la(at),Xn(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return mr(t),null;case 31:if(t.memoizedState!==null){if(Jt(t),t.alternate===null)throw Error(c(340));dn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Jt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));dn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ro(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Xn(),null;case 10:return la(t.type),null;case 22:case 23:return Jt(t),io(),e!==null&&vt(pn),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return la(at),null;case 25:return null;default:return null}}function My(e,t){switch(Xc(t),t.tag){case 3:la(at),Xn();break;case 26:case 27:case 5:mr(t);break;case 4:Xn();break;case 31:t.memoizedState!==null&&Jt(t);break;case 13:Jt(t);break;case 19:ro(t);break;case 10:la(t.type);break;case 22:case 23:Jt(t),io(),e!==null&&vt(pn);break;case 24:la(at)}}function Du(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var i=a.next;l=i;do{if((l.tag&e)===e){a=void 0;var u=l.create,o=l.inst;a=u(),o.destroy=a}l=l.next}while(l!==i)}}catch(y){Qe(t,t.return,y)}}function Da(e,t,l){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var u=i.next;a=u;do{if((a.tag&e)===e){var o=a.inst,y=o.destroy;if(y!==void 0){o.destroy=void 0,i=t;var S=l,O=y;try{O()}catch(M){Qe(i,S,M)}}}a=a.next}while(a!==u)}}catch(M){Qe(t,t.return,M)}}function Dy(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{_m(t,l)}catch(a){Qe(e,e.return,a)}}}function Uy(e,t,l){l.props=En(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){Qe(e,t,a)}}function Dl(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:var i=e.stateNode,u=Pl(e.memoizedProps,i);(i.ref===null||i.ref.name!==u)&&(i.ref=Gv(u)),a=i.ref;break;case 7:if(e.stateNode===null){var o=new It(e);g(e.child,!1,Sx,o,void 0,void 0),e.stateNode=o}a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(y){Qe(e,t,y)}}function St(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(i){Qe(e,t,i)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(i){Qe(e,t,i)}else l.current=null}function os(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var l=0;l title"))),Et(a,t,l),a[pt]=e,dt(a),t=a;break e;case"link":if(u=ip("link","href",i).get(t+(l.href||""))){for(o=0;oSe&&(o=Se,Se=ue,ue=o);var z=Zh(y,ue),T=Zh(y,Se);if(z&&T&&(A.rangeCount!==1||A.anchorNode!==z.node||A.anchorOffset!==z.offset||A.focusNode!==T.node||A.focusOffset!==T.offset)){var R=B.createRange();R.setStart(z.node,z.offset),A.removeAllRanges(),ue>Se?(A.addRange(R),A.extend(T.node,T.offset)):(R.setEnd(T.node,T.offset),A.addRange(R))}}}}for(B=[],A=y;A=A.parentNode;)A.nodeType===1&&B.push({element:A,left:A.scrollLeft,top:A.scrollTop});for(typeof y.focus=="function"&&y.focus(),y=0;yl?32:l,ie.T=null,l=nf,nf=null;var u=Sl,o=Bl;if(We=0,Cn=Sl=null,Bl=0,(He&6)!==0)throw Error(c(331));var y=He;if(He|=4,nv(u.current),tv(u,u.current,o,l),He=y,Qu(0,!1),Vt&&typeof Vt.onPostCommitFiberRoot=="function")try{Vt.onPostCommitFiberRoot(iu,u)}catch{}return!0}finally{he.p=i,ie.T=a,bv(e,t)}}function xv(e,t,l){t=il(l,t),t=wo(e.stateNode,t,2),e=Oa(e,t,2),e!==null&&(ru(e,2),Ql(e))}function Qe(e,t,l){if(e.tag===3)xv(e,e,l);else for(;t!==null;){if(t.tag===3){xv(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(qa===null||!qa.has(a))){e=il(l,e),l=vy(2),a=Oa(t,l,2),a!==null&&(py(l,a,t,e),ru(a,2),Ql(a));break}}t=t.return}}function df(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new Ub;var i=new Set;a.set(t,i)}else i=a.get(t),i===void 0&&(i=new Set,a.set(t,i));i.has(l)||(tf=!0,i.add(l),e=Yb.bind(null,e,t,l),t.then(e,e))}function Yb(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Xe===e&&(ze&l)===l&&((tt===4||tt===3&&(ze&62914560)===ze&&300>Yt()-xs)&&(He&2)===0?Ti(e,0):bs|=l,bi===ze&&(bi=0)),Ql(e)}function Sv(e,t){t===0&&(t=uh()),e=on(e,t),e!==null&&(ru(e,t),Ql(e))}function Vb(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),Sv(e,l)}function Xb(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,i=e.memoizedState;i!==null&&(l=i.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(c(314))}a!==null&&a.delete(t),Sv(e,l)}function Kb(e,t){return hc(e,t)}var Ci=null,wi=null,hf=!1,js=!1,mf=!1,Ba=0;function Ql(e){e!==wi&&e.next===null&&(wi===null?Ci=wi=e:wi=wi.next=e),js=!0,hf||(hf=!0,Jb())}function Qu(e,t){if(!mf&&js){mf=!0;do for(var l=!1,a=Ci;a!==null;){if(e!==0){var i=a.pendingLanes;if(i===0)var u=0;else{var o=a.suspendedLanes,y=a.pingedLanes;u=(1<<31-Xt(42|e)+1)-1,u&=i&~(o&~y),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,Nv(a,u))}else u=ze,u=br(a,a===Xe?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||uu(a,u)||(l=!0,Nv(a,u));a=a.next}while(l);mf=!1}}function Zb(){Ev()}function Ev(){js=hf=!1;var e=0;Ba!==0&&ix()&&(e=Ba);for(var t=Yt(),l=null,a=Ci;a!==null;){var i=a.next,u=_v(a,t);u===0?(a.next=null,l===null?Ci=i:l.next=i,i===null&&(wi=l)):(l=a,(e!==0||(u&3)!==0)&&(js=!0)),a=i}We!==0&&We!==5||Qu(e),Ba!==0&&(Ba=0)}function _v(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,i=e.expirationTimes,u=e.pendingLanes&-62914561;0y)break;var M=S.transferSize,B=S.initiatorType;M&&Av(B)&&(S=S.responseEnd,o+=M*(SMs){ue.length=P;break}R=new Promise(fx.bind(R)),ue.push(R)}}}if(0"u"?null:document;function tp(e,t,l){var a=zi;if(a&&typeof t=="string"&&t){var i=al(t);i='link[rel="'+e+'"][href="'+i+'"]',typeof l=="string"&&(i+='[crossorigin="'+l+'"]'),ep.has(i)||(ep.add(i),e={rel:e,crossOrigin:l,href:t},a.querySelector(i)===null&&(t=a.createElement("link"),Et(t,"link",e),dt(t),a.head.appendChild(t)))}}function Ox(e){sa.D(e),tp("dns-prefetch",e,null)}function Rx(e,t){sa.C(e,t),tp("preconnect",e,t)}function Ax(e,t,l){sa.L(e,t,l);var a=zi;if(a&&e&&t){var i='link[rel="preload"][as="'+al(t)+'"]';t==="image"&&l&&l.imageSrcSet?(i+='[imagesrcset="'+al(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(i+='[imagesizes="'+al(l.imageSizes)+'"]')):i+='[href="'+al(e)+'"]';var u=i;switch(t){case"style":u=Oi(e);break;case"script":u=Ri(e)}if(!(fl.has(u)||(e=Z({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),fl.set(u,e),a.querySelector(i)!==null||t==="style"&&a.querySelector(Ku(u))||t==="script"&&a.querySelector(Zu(u))))){var o=a.createElement("link");Et(o,"link",e),t==="style"&&(o[xr]=!0,o.onload=o.onerror=function(){mh(o)}),dt(o),a.head.appendChild(o)}}}function Mx(e,t){sa.m(e,t);var l=zi;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+al(a)+'"][href="'+al(e)+'"]',u=i;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ri(e)}if(!fl.has(u)&&(e=Z({rel:"modulepreload",href:e},t),fl.set(u,e),l.querySelector(i)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Zu(u)))return}a=l.createElement("link"),Et(a,"link",e),dt(a),l.head.appendChild(a)}}}function Dx(e,t,l){sa.S(e,t,l);var a=zi;if(a&&e){var i=Jn(a).hoistableStyles,u=Oi(e);t=t||"default";var o=i.get(u);if(!o){var y={loading:0,preload:null};if(o=a.querySelector(Ku(u)))y.loading=5;else{e=Z({rel:"stylesheet",href:e,"data-precedence":t},l),(l=fl.get(u))&&Uf(e,l);var S=o=a.createElement("link");dt(S),Et(S,"link",e),S._p=new Promise(function(O,M){S.onload=O,S.onerror=M}),S.addEventListener("load",function(){y.loading|=1}),S.addEventListener("error",function(){y.loading|=2}),y.loading|=4,Rs(o,t,a)}o={type:"stylesheet",instance:o,count:1,state:y},i.set(u,o)}}}function Ux(e,t){sa.X(e,t);var l=zi;if(l&&e){var a=Jn(l).hoistableScripts,i=Ri(e),u=a.get(i);u||(u=l.querySelector(Zu(i)),u||(e=Z({src:e,async:!0},t),(t=fl.get(i))&&kf(e,t),u=l.createElement("script"),dt(u),Et(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(i,u))}}function kx(e,t){sa.M(e,t);var l=zi;if(l&&e){var a=Jn(l).hoistableScripts,i=Ri(e),u=a.get(i);u||(u=l.querySelector(Zu(i)),u||(e=Z({src:e,async:!0,type:"module"},t),(t=fl.get(i))&&kf(e,t),u=l.createElement("script"),dt(u),Et(u,"link",e),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(i,u))}}function lp(e,t,l,a){var i=(i=ga.current)?Xu(i):null;if(!i)throw Error(c(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(l=Oi(l.href),t=Jn(i).hoistableStyles,a=t.get(l),a||(a={type:"style",instance:null,count:0,state:null},t.set(l,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=Oi(l.href);var u=Jn(i).hoistableStyles,o=u.get(e);if(o||(i=i.ownerDocument||i,o={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(e,o),(u=i.querySelector(Ku(e)))?u._p||(o.instance=u,o.state.loading=5):(u=fl.get(e),u||(u={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},fl.set(e,u)),Hx(i,e,u,o.state))),t&&a===null)throw Error(c(528,""));return o}if(t&&a!==null)throw Error(c(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(l=Ri(l),t=Jn(i).hoistableScripts,a=t.get(l),a||(a={type:"script",instance:null,count:0,state:null},t.set(l,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,e))}}function Oi(e){return'href="'+al(e)+'"'}function Ku(e){return'link[rel="stylesheet"]['+e+"]"}function ap(e){return Z({},e,{"data-precedence":e.precedence,precedence:null})}function Hx(e,t,l,a){if(t=e.querySelector('link[rel="preload"][as="style"]['+t+"]")){if(t[xr]!==!0){a.loading=1;return}}else t=e.createElement("link"),t[xr]=!0,t.onload=t.onerror=mh.bind(null,t),Et(t,"link",l),dt(t),e.head.appendChild(t);a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2})}function Ri(e){return'[src="'+al(e)+'"]'}function Zu(e){return"script[async]"+e}function np(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+al(l.href)+'"]');if(a)return t.instance=a,dt(a),a;var i=Z({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),dt(a),Et(a,"style",i),Rs(a,l.precedence,e),t.instance=a;case"stylesheet":i=Oi(l.href);var u=e.querySelector(Ku(i));if(u)return t.state.loading|=4,t.instance=u,dt(u),u;a=ap(l),(i=fl.get(i))&&Uf(a,i),u=(e.ownerDocument||e).createElement("link"),dt(u);var o=u;return o._p=new Promise(function(y,S){o.onload=y,o.onerror=S}),Et(u,"link",a),t.state.loading|=4,Rs(u,l.precedence,e),t.instance=u;case"script":return u=Ri(l.src),(i=e.querySelector(Zu(u)))?(t.instance=i,dt(i),i):(a=l,(i=fl.get(u))&&(a=Z({},l),kf(a,i)),e=e.ownerDocument||e,i=e.createElement("script"),dt(i),Et(i,"link",a),e.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(c(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Rs(a,l.precedence,e));return t.instance}function Rs(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=a.length?a[a.length-1]:null,u=i,o=0;o title"):null)}function qx(e,t,l){if(l===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 up(e,t){return e==="img"&&t.src!=null&&t.src!==""&&t.onLoad==null&&t.loading!=="lazy"}function rp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function sp(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function cp(e,t){typeof t.decode=="function"&&(e.imgCount++,t.complete||(e.imgBytes+=sp(t),e.suspenseyImages.push(t)),e=Qx.bind(e),t.decode().then(e,e))}function Lx(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var i=Oi(a.href),u=t.querySelector(Ku(i));if(u){t=u._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Ju.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=u,dt(u);return}u=t.ownerDocument||t,a=ap(a),(i=fl.get(i))&&Uf(a,i),u=u.createElement("link"),dt(u);var o=u;o._p=new Promise(function(y,S){o.onload=y,o.onerror=S}),Et(u,"link",a),l.instance=u}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Ju.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var Ms=0;function Bx(e,t){return e.stylesheets&&e.count===0&&Us(e,e.stylesheets),0Ms?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(i)}}:null}function op(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)Us(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function Ju(){this.count--,op(this)}function Qx(){this.imgCount--,op(this)}var Ds=null;function Us(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Ds=new Map,t.forEach(Gx,e),Ds=null,Ju.call(e))}function Gx(e,t){if(!(t.state.loading&4)){var l=Ds.get(e);if(l)var a=l.get(null);else{l=new Map,Ds.set(e,l);for(var i=e.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),Zf.exports=n2(),Zf.exports}var u2=i2();const r2=Og(u2);/** * react-router v7.18.4 * * Copyright (c) Remix Software Inc. @@ -56,9 +56,9 @@ Error generating stack: `+a.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */var wd=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,Ag=/^[\\/]{2}/;function s2(n,r){return r+n.replace(/\\/g,"/")}var Up="popstate";function kp(n){return typeof n=="object"&&n!=null&&"pathname"in n&&"search"in n&&"hash"in n&&"state"in n&&"key"in n}function c2(n={}){function r(f,h){let{pathname:d="/",search:p="",hash:b=""}=Gn(f.location.hash.substring(1));return!d.startsWith("/")&&!d.startsWith(".")&&(d="/"+d),ld("",{pathname:d,search:p,hash:b},h.state&&h.state.usr||null,h.state&&h.state.key||"default")}function s(f,h){let d=f.document.querySelector("base"),p="";if(d&&d.getAttribute("href")){let b=f.location.href,v=b.indexOf("#");p=v===-1?b:b.slice(0,v)}return p+"#"+(typeof h=="string"?h:Bn(h))}function c(f,h){el(f.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(h)})`)}return f2(r,s,c,n)}function We(n,r){if(n===!1||n===null||typeof n>"u")throw new Error(r)}function el(n,r){if(!n){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function o2(){return Math.random().toString(36).substring(2,10)}function Hp(n,r){return{usr:n.state,key:n.key,idx:r,masked:n.mask?{pathname:n.pathname,search:n.search,hash:n.hash}:void 0}}function ld(n,r,s=null,c,f){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof r=="string"?Gn(r):r,state:s,key:r&&r.key||c||o2(),mask:f}}function Bn({pathname:n="/",search:r="",hash:s=""}){return r&&r!=="?"&&(n+=r.charAt(0)==="?"?r:"?"+r),s&&s!=="#"&&(n+=s.charAt(0)==="#"?s:"#"+s),n}function Gn(n){let r={};if(n){let s=n.indexOf("#");s>=0&&(r.hash=n.substring(s),n=n.substring(0,s));let c=n.indexOf("?");c>=0&&(r.search=n.substring(c),n=n.substring(0,c)),n&&(r.pathname=n)}return r}function f2(n,r,s,c={}){let{window:f=document.defaultView,v5Compat:h=!1}=c,d=f.history,p="POP",b=null,v=x();v==null&&(v=0,d.replaceState({...d.state,idx:v},""));function x(){return(d.state||{idx:null}).idx}function g(){p="POP";let D=x(),H=D==null?null:D-v;v=D,b&&b({action:p,location:k.location,delta:H})}function w(D,H){p="PUSH";let G=kp(D)?D:ld(k.location,D,H);s&&s(G,D),v=x()+1;let X=Hp(G,v),K=k.createHref(G.mask||G);try{d.pushState(X,"",K)}catch(Y){if(Y instanceof DOMException&&Y.name==="DataCloneError")throw Y;f.location.assign(K)}h&&b&&b({action:p,location:k.location,delta:1})}function L(D,H){p="REPLACE";let G=kp(D)?D:ld(k.location,D,H);s&&s(G,D),v=x();let X=Hp(G,v),K=k.createHref(G.mask||G);d.replaceState(X,"",K),h&&b&&b({action:p,location:k.location,delta:0})}function V(D){return d2(f,D)}let k={get action(){return p},get location(){return n(f,d)},listen(D){if(b)throw new Error("A history only accepts one active listener");return f.addEventListener(Up,g),b=D,()=>{f.removeEventListener(Up,g),b=null}},createHref(D){return r(f,D)},createURL:V,encodeLocation(D){let H=V(D);return{pathname:H.pathname,search:H.search,hash:H.hash}},push:w,replace:L,go(D){return d.go(D)}};return k}function d2(n,r,s=!1){let c="http://localhost";n&&(c=n.location.origin!=="null"?n.location.origin:n.location.href),We(c,"No window.location.(origin|href) available to create URL");let f=typeof r=="string"?r:Bn(r);return f=f.replace(/ $/,"%20"),!s&&Ag.test(f)&&(f=c+f),new URL(f,c)}function Mg(n,r,s="/"){return h2(n,r,s,!1)}function h2(n,r,s,c,f){let h=typeof r=="string"?Gn(r):r,d=ma(h.pathname||"/",s);if(d==null)return null;let p=m2(n),b=null,v=N2(d);for(let x=0;b==null&&x{let x={relativePath:v===void 0?d.path||"":v,caseSensitive:d.caseSensitive===!0,childrenIndex:p,route:d};if(x.relativePath.startsWith("/")){if(!x.relativePath.startsWith(c)&&b)return;We(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 g=Cl([c,x.relativePath]),w=s.concat(x);d.children&&d.children.length>0&&(We(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${g}".`),Dg(d.children,r,w,g,b)),!(d.path==null&&!d.index)&&r.push({path:g,score:E2(g,d.index),routesMeta:w.map((L,V)=>{let[k,D]=Hg(L.relativePath,L.caseSensitive,V===w.length-1);return{...L,matcher:k,compiledParams:D}})})};return n.forEach((d,p)=>{var b;if(d.path===""||!((b=d.path)!=null&&b.includes("?")))h(d,p);else for(let v of Ug(d.path))h(d,p,!0,v)}),r}function Ug(n){let r=n.split("/");if(r.length===0)return[];let[s,...c]=r,f=s.endsWith("?"),h=s.replace(/\?$/,"");if(c.length===0)return f?[h,""]:[h];let d=Ug(c.join("/")),p=[];return p.push(...d.map(b=>b===""?h:[h,b].join("/"))),f&&p.push(...d),p.map(b=>n.startsWith("/")&&b===""?"/":b)}function y2(n){n.sort((r,s)=>r.score!==s.score?s.score-r.score:_2(r.routesMeta.map(c=>c.childrenIndex),s.routesMeta.map(c=>c.childrenIndex)))}var v2=/^:[\w-]+$/,p2=3,g2=2,b2=1,x2=10,S2=-2,qp=n=>n==="*";function E2(n,r){let s=n.split("/"),c=s.length;return s.some(qp)&&(c+=S2),r&&(c+=g2),s.filter(f=>!qp(f)).reduce((f,h)=>f+(v2.test(h)?p2:h===""?b2:x2),c)}function _2(n,r){return n.length===r.length&&n.slice(0,-1).every((c,f)=>c===r[f])?n[n.length-1]-r[r.length-1]:0}function T2(n,r,s=!1){let{routesMeta:c}=n,f={},h="/",d=[];for(let p=0;p{if(x==="*"){let V=p[w]||"";d=Wi(h.slice(0,h.length-V.length),1)}const L=p[w];return g&&!L?v[x]=void 0:v[x]=(L||"").replace(/%2F/g,"/"),v},{}),pathname:h,pathnameBase:d,pattern:n}}function Hg(n,r=!1,s=!0){el(n==="*"||!n.endsWith("*")||n.endsWith("/*"),`Route path "${n}" will be treated as if it were "${n.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${n.replace(/\*$/,"/*")}".`);let c=[],f="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(d,p,b,v,x)=>{if(c.push({paramName:p,isOptional:b!=null}),b){let g=x.charAt(v+d.length);return g&&g!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return n.endsWith("*")?(c.push({paramName:"*"}),f+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?f+="\\/*$":n!==""&&n!=="/"&&(f+="(?:(?=\\/|$))"),[new RegExp(f,r?void 0:"i"),c]}function N2(n){try{return n.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return el(!1,`The URL path "${n}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${r}).`),n}}function ma(n,r){if(r==="/")return n;if(!n.toLowerCase().startsWith(r.toLowerCase()))return null;let s=r.endsWith("/")?r.length-1:r.length,c=n.charAt(s);return c&&c!=="/"?null:n.slice(s)||"/"}function C2(n,r="/"){let{pathname:s,search:c="",hash:f=""}=typeof n=="string"?Gn(n):n,h;return s?(s=qg(s),s.startsWith("/")||s.startsWith("\\")?h=Lp(s.substring(1),"/"):h=Lp(s,r)):h=r,{pathname:h,search:j2(c),hash:O2(f)}}function Lp(n,r){let s=Wi(r).split("/");return n.split("/").forEach(f=>{f===".."?s.length>1&&s.pop():f!=="."&&s.push(f)}),s.length>1?s.join("/"):"/"}function Wf(n,r,s,c){return`Cannot include a '${n}' character in a manually specified \`to.${r}\` field [${JSON.stringify(c)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function w2(n){return n.filter((r,s)=>s===0||r.route.path&&r.route.path.length>0)}function zd(n){let r=w2(n);return r.map((s,c)=>c===r.length-1?s.pathname:s.pathnameBase)}function ec(n,r,s,c=!1){let f;typeof n=="string"?f=Gn(n):(f={...n},We(!f.pathname||!f.pathname.includes("?"),Wf("?","pathname","search",f)),We(!f.pathname||!f.pathname.includes("#"),Wf("#","pathname","hash",f)),We(!f.search||!f.search.includes("#"),Wf("#","search","hash",f)));let h=n===""||f.pathname==="",d=h?"/":f.pathname,p;if(d==null)p=s;else{let g=r.length-1;if(!c&&d.startsWith("..")){let w=d.split("/");for(;w[0]==="..";)w.shift(),g-=1;f.pathname=w.join("/")}p=g>=0?r[g]:"/"}let b=C2(f,p),v=d&&d!=="/"&&d.endsWith("/"),x=(h||d===".")&&s.endsWith("/");return!b.pathname.endsWith("/")&&(v||x)&&(b.pathname+="/"),b}var qg=n=>n.replace(/[\\/]{2,}/g,"/"),Cl=n=>qg(n.join("/"));function Wi(n,r=0){let s=n.length;for(;s>r&&n.charCodeAt(s-1)===47;)s--;return s===n.length?n:n.slice(0,s)}var z2=n=>Wi(n).replace(/^\/*/,"/"),j2=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,O2=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n,R2=class{constructor(n,r,s,c=!1){this.status=n,this.statusText=r||"",this.internal=c,s instanceof Error?(this.data=s.toString(),this.error=s):this.data=s}};function A2(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}function M2(n){let r=n.map(s=>s.route.path).filter(Boolean);return Cl(r)||"/"}var Lg=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Bg(n,r){let s=n;if(typeof s!="string"||!wd.test(s))return{absoluteURL:void 0,isExternal:!1,to:s};let c=s,f=!1;if(Lg)try{let h=new URL(window.location.href),d=Ag.test(s)?new URL(s2(s,h.protocol)):new URL(s),p=ma(d.pathname,r);d.origin===h.origin&&p!=null?s=p+d.search+d.hash:f=!0}catch{el(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:c,isExternal:f,to:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Bp=new URL("http://localhost");function jd(n){if(n.createURL)return n.createURL("/");try{return new URL(n.createHref("/"),Bp)}catch{return Bp}}function Pf(n,r){return n.origin===r.origin&&(n.origin!=="null"||n.protocol===r.protocol&&n.host===r.host)}function D2(n,r){if(n.startsWith("//"))return!0;let s=r.protocol.toLowerCase();return n.toLowerCase().startsWith(s)?r.host===""||n.slice(s.length).startsWith("//"):!1}function Od(n,r,s,c){let f=null;try{f=n==null?null:new URL(n,s)}catch{}let h=new URL(r,s),d=f!=null&&!Pf(f,s),p=!Pf(h,s);if(c==="reject"){if(d||p)throw new Error("External navigation is not allowed")}else if(p&&(f==null||!D2(n,f)||!Pf(f,h)))throw new Error("External navigation is not allowed")}var Qg=["POST","PUT","PATCH","DELETE"];new Set(Qg);var U2=["GET",...Qg];new Set(U2);var k2=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function H2(n){try{return k2.includes(new URL(n).protocol)}catch{return!1}}var eu=E.createContext(null);eu.displayName="DataRouter";var tc=E.createContext(null);tc.displayName="DataRouterState";var Gg=E.createContext(!1);function q2(){return E.useContext(Gg)}var Yg=E.createContext({isTransitioning:!1});Yg.displayName="ViewTransition";var L2=E.createContext(new Map);L2.displayName="Fetchers";var B2=E.createContext(null);B2.displayName="Await";var tl=E.createContext(null);tl.displayName="Navigation";var or=E.createContext(null);or.displayName="Location";var wl=E.createContext({outlet:null,matches:[],isDataRoute:!1});wl.displayName="Route";var Rd=E.createContext(null);Rd.displayName="RouteError";var Vg="REACT_ROUTER_ERROR",Q2="REDIRECT",G2="ROUTE_ERROR_RESPONSE";function Y2(n){if(n.startsWith(`${Vg}:${Q2}:{`))try{let r=JSON.parse(n.slice(28));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.location=="string"&&typeof r.reloadDocument=="boolean"&&typeof r.replace=="boolean")return r}catch{}}function V2(n){if(n.startsWith(`${Vg}:${G2}:{`))try{let r=JSON.parse(n.slice(40));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string")return new R2(r.status,r.statusText,r.data)}catch{}}function X2(n,{relative:r}={}){We(tu(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:c}=E.useContext(tl),{hash:f,pathname:h,search:d}=fr(n,{relative:r}),p=h;return s!=="/"&&(p=h==="/"?s:Cl([s,h])),c.createHref({pathname:p,search:d,hash:f})}function tu(){return E.useContext(or)!=null}function vl(){return We(tu(),"useLocation() may be used only in the context of a component."),E.useContext(or).location}var Xg="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Kg(n){E.useContext(tl).static||E.useLayoutEffect(n)}function lc(){let{isDataRoute:n}=E.useContext(wl);return n?uS():K2()}function K2(){We(tu(),"useNavigate() may be used only in the context of a component.");let n=E.useContext(eu),{basename:r,navigator:s}=E.useContext(tl),{matches:c}=E.useContext(wl),{pathname:f}=vl(),h=JSON.stringify(zd(c)),d=E.useRef(!1);return Kg(()=>{d.current=!0}),E.useCallback((b,v={})=>{if(el(d.current,Xg),!d.current)return;if(typeof b=="number"){s.go(b);return}let x=ec(b,JSON.parse(h),f,v.relative==="path");n==null&&r!=="/"&&(x.pathname=x.pathname==="/"?r:Cl([r,x.pathname])),Od(typeof b=="string"?b:Bn(b),s.createHref(x),jd(s),"reject"),(v.replace?s.replace:s.push)(x,v.state,v)},[r,s,h,f,n])}var Z2=E.createContext(null);function J2(n){let r=E.useContext(wl).outlet;return E.useMemo(()=>r&&E.createElement(Z2.Provider,{value:n},r),[r,n])}function fr(n,{relative:r}={}){let{matches:s}=E.useContext(wl),{pathname:c}=vl(),f=JSON.stringify(zd(s));return E.useMemo(()=>ec(n,JSON.parse(f),c,r==="path"),[n,f,c,r])}function F2(n,r){return Zg(n,r)}function Zg(n,r,s){var D;We(tu(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=E.useContext(tl),{matches:f}=E.useContext(wl),h=f[f.length-1],d=h?h.params:{},p=h?h.pathname:"/",b=h?h.pathnameBase:"/",v=h&&h.route;{let H=v&&v.path||"";Fg(p,!v||H.endsWith("*")||H.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${p}" (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. + */var wd=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,Ag=/^[\\/]{2}/;function s2(n,r){return r+n.replace(/\\/g,"/")}var Up="popstate";function kp(n){return typeof n=="object"&&n!=null&&"pathname"in n&&"search"in n&&"hash"in n&&"state"in n&&"key"in n}function c2(n={}){function r(f,h){let{pathname:d="/",search:v="",hash:b=""}=Gn(f.location.hash.substring(1));return!d.startsWith("/")&&!d.startsWith(".")&&(d="/"+d),ld("",{pathname:d,search:v,hash:b},h.state&&h.state.usr||null,h.state&&h.state.key||"default")}function s(f,h){let d=f.document.querySelector("base"),v="";if(d&&d.getAttribute("href")){let b=f.location.href,p=b.indexOf("#");v=p===-1?b:b.slice(0,p)}return v+"#"+(typeof h=="string"?h:Bn(h))}function c(f,h){el(f.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(h)})`)}return f2(r,s,c,n)}function Pe(n,r){if(n===!1||n===null||typeof n>"u")throw new Error(r)}function el(n,r){if(!n){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function o2(){return Math.random().toString(36).substring(2,10)}function Hp(n,r){return{usr:n.state,key:n.key,idx:r,masked:n.mask?{pathname:n.pathname,search:n.search,hash:n.hash}:void 0}}function ld(n,r,s=null,c,f){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof r=="string"?Gn(r):r,state:s,key:r&&r.key||c||o2(),mask:f}}function Bn({pathname:n="/",search:r="",hash:s=""}){return r&&r!=="?"&&(n+=r.charAt(0)==="?"?r:"?"+r),s&&s!=="#"&&(n+=s.charAt(0)==="#"?s:"#"+s),n}function Gn(n){let r={};if(n){let s=n.indexOf("#");s>=0&&(r.hash=n.substring(s),n=n.substring(0,s));let c=n.indexOf("?");c>=0&&(r.search=n.substring(c),n=n.substring(0,c)),n&&(r.pathname=n)}return r}function f2(n,r,s,c={}){let{window:f=document.defaultView,v5Compat:h=!1}=c,d=f.history,v="POP",b=null,p=x();p==null&&(p=0,d.replaceState({...d.state,idx:p},""));function x(){return(d.state||{idx:null}).idx}function g(){v="POP";let D=x(),H=D==null?null:D-p;p=D,b&&b({action:v,location:k.location,delta:H})}function N(D,H){v="PUSH";let G=kp(D)?D:ld(k.location,D,H);s&&s(G,D),p=x()+1;let X=Hp(G,p),K=k.createHref(G.mask||G);try{d.pushState(X,"",K)}catch(Y){if(Y instanceof DOMException&&Y.name==="DataCloneError")throw Y;f.location.assign(K)}h&&b&&b({action:v,location:k.location,delta:1})}function q(D,H){v="REPLACE";let G=kp(D)?D:ld(k.location,D,H);s&&s(G,D),p=x();let X=Hp(G,p),K=k.createHref(G.mask||G);d.replaceState(X,"",K),h&&b&&b({action:v,location:k.location,delta:0})}function V(D){return d2(f,D)}let k={get action(){return v},get location(){return n(f,d)},listen(D){if(b)throw new Error("A history only accepts one active listener");return f.addEventListener(Up,g),b=D,()=>{f.removeEventListener(Up,g),b=null}},createHref(D){return r(f,D)},createURL:V,encodeLocation(D){let H=V(D);return{pathname:H.pathname,search:H.search,hash:H.hash}},push:N,replace:q,go(D){return d.go(D)}};return k}function d2(n,r,s=!1){let c="http://localhost";n&&(c=n.location.origin!=="null"?n.location.origin:n.location.href),Pe(c,"No window.location.(origin|href) available to create URL");let f=typeof r=="string"?r:Bn(r);return f=f.replace(/ $/,"%20"),!s&&Ag.test(f)&&(f=c+f),new URL(f,c)}function Mg(n,r,s="/"){return h2(n,r,s,!1)}function h2(n,r,s,c,f){let h=typeof r=="string"?Gn(r):r,d=ma(h.pathname||"/",s);if(d==null)return null;let v=m2(n),b=null,p=N2(d);for(let x=0;b==null&&x{let x={relativePath:p===void 0?d.path||"":p,caseSensitive:d.caseSensitive===!0,childrenIndex:v,route:d};if(x.relativePath.startsWith("/")){if(!x.relativePath.startsWith(c)&&b)return;Pe(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 g=Cl([c,x.relativePath]),N=s.concat(x);d.children&&d.children.length>0&&(Pe(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${g}".`),Dg(d.children,r,N,g,b)),!(d.path==null&&!d.index)&&r.push({path:g,score:E2(g,d.index),routesMeta:N.map((q,V)=>{let[k,D]=Hg(q.relativePath,q.caseSensitive,V===N.length-1);return{...q,matcher:k,compiledParams:D}})})};return n.forEach((d,v)=>{var b;if(d.path===""||!((b=d.path)!=null&&b.includes("?")))h(d,v);else for(let p of Ug(d.path))h(d,v,!0,p)}),r}function Ug(n){let r=n.split("/");if(r.length===0)return[];let[s,...c]=r,f=s.endsWith("?"),h=s.replace(/\?$/,"");if(c.length===0)return f?[h,""]:[h];let d=Ug(c.join("/")),v=[];return v.push(...d.map(b=>b===""?h:[h,b].join("/"))),f&&v.push(...d),v.map(b=>n.startsWith("/")&&b===""?"/":b)}function y2(n){n.sort((r,s)=>r.score!==s.score?s.score-r.score:_2(r.routesMeta.map(c=>c.childrenIndex),s.routesMeta.map(c=>c.childrenIndex)))}var v2=/^:[\w-]+$/,p2=3,g2=2,b2=1,x2=10,S2=-2,qp=n=>n==="*";function E2(n,r){let s=n.split("/"),c=s.length;return s.some(qp)&&(c+=S2),r&&(c+=g2),s.filter(f=>!qp(f)).reduce((f,h)=>f+(v2.test(h)?p2:h===""?b2:x2),c)}function _2(n,r){return n.length===r.length&&n.slice(0,-1).every((c,f)=>c===r[f])?n[n.length-1]-r[r.length-1]:0}function T2(n,r,s=!1){let{routesMeta:c}=n,f={},h="/",d=[];for(let v=0;v{if(x==="*"){let V=v[N]||"";d=Pi(h.slice(0,h.length-V.length),1)}const q=v[N];return g&&!q?p[x]=void 0:p[x]=(q||"").replace(/%2F/g,"/"),p},{}),pathname:h,pathnameBase:d,pattern:n}}function Hg(n,r=!1,s=!0){el(n==="*"||!n.endsWith("*")||n.endsWith("/*"),`Route path "${n}" will be treated as if it were "${n.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${n.replace(/\*$/,"/*")}".`);let c=[],f="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(d,v,b,p,x)=>{if(c.push({paramName:v,isOptional:b!=null}),b){let g=x.charAt(p+d.length);return g&&g!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return n.endsWith("*")?(c.push({paramName:"*"}),f+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?f+="\\/*$":n!==""&&n!=="/"&&(f+="(?:(?=\\/|$))"),[new RegExp(f,r?void 0:"i"),c]}function N2(n){try{return n.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return el(!1,`The URL path "${n}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${r}).`),n}}function ma(n,r){if(r==="/")return n;if(!n.toLowerCase().startsWith(r.toLowerCase()))return null;let s=r.endsWith("/")?r.length-1:r.length,c=n.charAt(s);return c&&c!=="/"?null:n.slice(s)||"/"}function C2(n,r="/"){let{pathname:s,search:c="",hash:f=""}=typeof n=="string"?Gn(n):n,h;return s?(s=qg(s),s.startsWith("/")||s.startsWith("\\")?h=Lp(s.substring(1),"/"):h=Lp(s,r)):h=r,{pathname:h,search:z2(c),hash:O2(f)}}function Lp(n,r){let s=Pi(r).split("/");return n.split("/").forEach(f=>{f===".."?s.length>1&&s.pop():f!=="."&&s.push(f)}),s.length>1?s.join("/"):"/"}function Pf(n,r,s,c){return`Cannot include a '${n}' character in a manually specified \`to.${r}\` field [${JSON.stringify(c)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function w2(n){return n.filter((r,s)=>s===0||r.route.path&&r.route.path.length>0)}function jd(n){let r=w2(n);return r.map((s,c)=>c===r.length-1?s.pathname:s.pathnameBase)}function ec(n,r,s,c=!1){let f;typeof n=="string"?f=Gn(n):(f={...n},Pe(!f.pathname||!f.pathname.includes("?"),Pf("?","pathname","search",f)),Pe(!f.pathname||!f.pathname.includes("#"),Pf("#","pathname","hash",f)),Pe(!f.search||!f.search.includes("#"),Pf("#","search","hash",f)));let h=n===""||f.pathname==="",d=h?"/":f.pathname,v;if(d==null)v=s;else{let g=r.length-1;if(!c&&d.startsWith("..")){let N=d.split("/");for(;N[0]==="..";)N.shift(),g-=1;f.pathname=N.join("/")}v=g>=0?r[g]:"/"}let b=C2(f,v),p=d&&d!=="/"&&d.endsWith("/"),x=(h||d===".")&&s.endsWith("/");return!b.pathname.endsWith("/")&&(p||x)&&(b.pathname+="/"),b}var qg=n=>n.replace(/[\\/]{2,}/g,"/"),Cl=n=>qg(n.join("/"));function Pi(n,r=0){let s=n.length;for(;s>r&&n.charCodeAt(s-1)===47;)s--;return s===n.length?n:n.slice(0,s)}var j2=n=>Pi(n).replace(/^\/*/,"/"),z2=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,O2=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n,R2=class{constructor(n,r,s,c=!1){this.status=n,this.statusText=r||"",this.internal=c,s instanceof Error?(this.data=s.toString(),this.error=s):this.data=s}};function A2(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}function M2(n){let r=n.map(s=>s.route.path).filter(Boolean);return Cl(r)||"/"}var Lg=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Bg(n,r){let s=n;if(typeof s!="string"||!wd.test(s))return{absoluteURL:void 0,isExternal:!1,to:s};let c=s,f=!1;if(Lg)try{let h=new URL(window.location.href),d=Ag.test(s)?new URL(s2(s,h.protocol)):new URL(s),v=ma(d.pathname,r);d.origin===h.origin&&v!=null?s=v+d.search+d.hash:f=!0}catch{el(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:c,isExternal:f,to:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Bp=new URL("http://localhost");function zd(n){if(n.createURL)return n.createURL("/");try{return new URL(n.createHref("/"),Bp)}catch{return Bp}}function Wf(n,r){return n.origin===r.origin&&(n.origin!=="null"||n.protocol===r.protocol&&n.host===r.host)}function D2(n,r){if(n.startsWith("//"))return!0;let s=r.protocol.toLowerCase();return n.toLowerCase().startsWith(s)?r.host===""||n.slice(s.length).startsWith("//"):!1}function Od(n,r,s,c){let f=null;try{f=n==null?null:new URL(n,s)}catch{}let h=new URL(r,s),d=f!=null&&!Wf(f,s),v=!Wf(h,s);if(c==="reject"){if(d||v)throw new Error("External navigation is not allowed")}else if(v&&(f==null||!D2(n,f)||!Wf(f,h)))throw new Error("External navigation is not allowed")}var Qg=["POST","PUT","PATCH","DELETE"];new Set(Qg);var U2=["GET",...Qg];new Set(U2);var k2=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function H2(n){try{return k2.includes(new URL(n).protocol)}catch{return!1}}var eu=E.createContext(null);eu.displayName="DataRouter";var tc=E.createContext(null);tc.displayName="DataRouterState";var Gg=E.createContext(!1);function q2(){return E.useContext(Gg)}var Yg=E.createContext({isTransitioning:!1});Yg.displayName="ViewTransition";var L2=E.createContext(new Map);L2.displayName="Fetchers";var B2=E.createContext(null);B2.displayName="Await";var tl=E.createContext(null);tl.displayName="Navigation";var or=E.createContext(null);or.displayName="Location";var wl=E.createContext({outlet:null,matches:[],isDataRoute:!1});wl.displayName="Route";var Rd=E.createContext(null);Rd.displayName="RouteError";var Vg="REACT_ROUTER_ERROR",Q2="REDIRECT",G2="ROUTE_ERROR_RESPONSE";function Y2(n){if(n.startsWith(`${Vg}:${Q2}:{`))try{let r=JSON.parse(n.slice(28));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.location=="string"&&typeof r.reloadDocument=="boolean"&&typeof r.replace=="boolean")return r}catch{}}function V2(n){if(n.startsWith(`${Vg}:${G2}:{`))try{let r=JSON.parse(n.slice(40));if(typeof r=="object"&&r&&typeof r.status=="number"&&typeof r.statusText=="string")return new R2(r.status,r.statusText,r.data)}catch{}}function X2(n,{relative:r}={}){Pe(tu(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:c}=E.useContext(tl),{hash:f,pathname:h,search:d}=fr(n,{relative:r}),v=h;return s!=="/"&&(v=h==="/"?s:Cl([s,h])),c.createHref({pathname:v,search:d,hash:f})}function tu(){return E.useContext(or)!=null}function vl(){return Pe(tu(),"useLocation() may be used only in the context of a component."),E.useContext(or).location}var Xg="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Kg(n){E.useContext(tl).static||E.useLayoutEffect(n)}function lc(){let{isDataRoute:n}=E.useContext(wl);return n?uS():K2()}function K2(){Pe(tu(),"useNavigate() may be used only in the context of a component.");let n=E.useContext(eu),{basename:r,navigator:s}=E.useContext(tl),{matches:c}=E.useContext(wl),{pathname:f}=vl(),h=JSON.stringify(jd(c)),d=E.useRef(!1);return Kg(()=>{d.current=!0}),E.useCallback((b,p={})=>{if(el(d.current,Xg),!d.current)return;if(typeof b=="number"){s.go(b);return}let x=ec(b,JSON.parse(h),f,p.relative==="path");n==null&&r!=="/"&&(x.pathname=x.pathname==="/"?r:Cl([r,x.pathname])),Od(typeof b=="string"?b:Bn(b),s.createHref(x),zd(s),"reject"),(p.replace?s.replace:s.push)(x,p.state,p)},[r,s,h,f,n])}var Z2=E.createContext(null);function J2(n){let r=E.useContext(wl).outlet;return E.useMemo(()=>r&&E.createElement(Z2.Provider,{value:n},r),[r,n])}function fr(n,{relative:r}={}){let{matches:s}=E.useContext(wl),{pathname:c}=vl(),f=JSON.stringify(jd(s));return E.useMemo(()=>ec(n,JSON.parse(f),c,r==="path"),[n,f,c,r])}function F2(n,r){return Zg(n,r)}function Zg(n,r,s){var D;Pe(tu(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=E.useContext(tl),{matches:f}=E.useContext(wl),h=f[f.length-1],d=h?h.params:{},v=h?h.pathname:"/",b=h?h.pathnameBase:"/",p=h&&h.route;{let H=p&&p.path||"";Fg(v,!p||H.endsWith("*")||H.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${v}" (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=vl(),g;if(r){let H=typeof r=="string"?Gn(r):r;We(b==="/"||((D=H.pathname)==null?void 0:D.startsWith(b)),`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 "${b}" but pathname "${H.pathname}" was given in the \`location\` prop.`),g=H}else g=x;let w=g.pathname||"/",L=w;if(b!=="/"){let H=b.replace(/^\//,"").split("/");L="/"+w.replace(/^\//,"").split("/").slice(H.length).join("/")}let V=s&&s.state.matches.length?s.state.matches.map(H=>Object.assign(H,{route:s.manifest[H.route.id]||H.route})):Mg(n,{pathname:L});el(v||V!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),el(V==null||V[V.length-1].route.element!==void 0||V[V.length-1].route.Component!==void 0||V[V.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let k=eS(V&&V.map(H=>Object.assign({},H,{params:Object.assign({},d,H.params),pathname:Cl([b,c.encodeLocation?c.encodeLocation(H.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:H.pathname]),pathnameBase:H.pathnameBase==="/"?b:Cl([b,c.encodeLocation?c.encodeLocation(H.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:H.pathnameBase])})),f,s);return r&&k?E.createElement(or.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...g},navigationType:"POP"}},k):k}function $2(){let n=iS(),r=A2(n)?`${n.status} ${n.statusText}`:n instanceof Error?n.message:JSON.stringify(n),s=n instanceof Error?n.stack:null,c="rgba(200,200,200, 0.5)",f={padding:"0.5rem",backgroundColor:c},h={padding:"2px 4px",backgroundColor:c},d=null;return console.error("Error handled by React Router default ErrorBoundary:",n),d=E.createElement(E.Fragment,null,E.createElement("p",null,"💿 Hey developer 👋"),E.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",E.createElement("code",{style:h},"ErrorBoundary")," or"," ",E.createElement("code",{style:h},"errorElement")," prop on your route.")),E.createElement(E.Fragment,null,E.createElement("h2",null,"Unexpected Application Error!"),E.createElement("h3",{style:{fontStyle:"italic"}},r),s?E.createElement("pre",{style:f},s):null,d)}var W2=E.createElement($2,null),Jg=class extends E.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,r){return r.location!==n.location||r.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:r.error,location:r.location,revalidation:n.revalidation||r.revalidation}}componentDidCatch(n,r){this.props.onError?this.props.onError(n,r):console.error("React Router caught the following error during render",n)}render(){let n=this.state.error;if(this.context&&typeof n=="object"&&n&&"digest"in n&&typeof n.digest=="string"){const s=V2(n.digest);s&&(n=s)}let r=n!==void 0?E.createElement(wl.Provider,{value:this.props.routeContext},E.createElement(Rd.Provider,{value:n,children:this.props.component})):this.props.children;return this.context?E.createElement(P2,{error:n},r):r}};Jg.contextType=Gg;var If=new WeakMap;function P2({children:n,error:r}){let{basename:s,navigator:c}=E.useContext(tl);if(typeof r=="object"&&r&&"digest"in r&&typeof r.digest=="string"){let f=Y2(r.digest);if(f){let h=If.get(r);if(h)throw h;let d=Bg(f.location,s),p=d.absoluteURL||d.to;if(Od(f.location,p,jd(c),"allow-explicit"),H2(p))throw new Error("Invalid redirect location");if(Lg&&!If.get(r))if(d.isExternal||f.reloadDocument)window.location.href=p;else{const b=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(d.to,{replace:f.replace}));throw If.set(r,b),b}return E.createElement("meta",{httpEquiv:"refresh",content:`0;url=${p}`})}}return n}function I2({routeContext:n,match:r,children:s}){let c=E.useContext(eu);return c&&c.static&&c.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=r.route.id),E.createElement(wl.Provider,{value:n},s)}function eS(n,r=[],s){let c=s==null?void 0:s.state;if(n==null){if(!c)return null;if(c.errors)n=c.matches;else if(r.length===0&&!c.initialized&&c.matches.length>0)n=c.matches;else return null}let f=n,h=c==null?void 0:c.errors;if(h!=null){let x=f.findIndex(g=>g.route.id&&(h==null?void 0:h[g.route.id])!==void 0);We(x>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(h).join(",")}`),f=f.slice(0,Math.min(f.length,x+1))}let d=!1,p=-1;if(s&&c){d=c.renderFallback;for(let x=0;x=0?f=f.slice(0,p+1):f=[f[0]];break}}}}let b=s==null?void 0:s.onError,v=c&&b?(x,g)=>{var w,L;b(x,{location:c.location,params:((L=(w=c.matches)==null?void 0:w[0])==null?void 0:L.params)??{},pattern:M2(c.matches),errorInfo:g})}:void 0;return f.reduceRight((x,g,w)=>{let L,V=!1,k=null,D=null;c&&(L=h&&g.route.id?h[g.route.id]:void 0,k=g.route.errorElement||W2,d&&(p<0&&w===0?(Fg("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),V=!0,D=null):p===w&&(V=!0,D=g.route.hydrateFallbackElement||null)));let H=r.concat(f.slice(0,w+1)),G=()=>{let X;return L?X=k:V?X=D:g.route.Component?X=E.createElement(g.route.Component,null):g.route.element?X=g.route.element:X=x,E.createElement(I2,{match:g,routeContext:{outlet:x,matches:H,isDataRoute:c!=null},children:X})};return c&&(g.route.ErrorBoundary||g.route.errorElement||w===0)?E.createElement(Jg,{location:c.location,revalidation:c.revalidation,component:k,error:L,children:G(),routeContext:{outlet:null,matches:H,isDataRoute:!0},onError:v}):G()},null)}function Ad(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tS(n){let r=E.useContext(eu);return We(r,Ad(n)),r}function lS(n){let r=E.useContext(tc);return We(r,Ad(n)),r}function aS(n){let r=E.useContext(wl);return We(r,Ad(n)),r}function Md(n){let r=aS(n),s=r.matches[r.matches.length-1];return We(s.route.id,`${n} can only be used on routes that contain a unique "id"`),s.route.id}function nS(){return Md("useRouteId")}function iS(){var c;let n=E.useContext(Rd),r=lS("useRouteError"),s=Md("useRouteError");return n!==void 0?n:(c=r.errors)==null?void 0:c[s]}function uS(){let{router:n}=tS("useNavigate"),r=Md("useNavigate"),s=E.useRef(!1);return Kg(()=>{s.current=!0}),E.useCallback(async(f,h={})=>{el(s.current,Xg),s.current&&(typeof f=="number"?await n.navigate(f):await n.navigate(f,{fromRouteId:r,...h}))},[n,r])}var Qp={};function Fg(n,r,s){!r&&!Qp[n]&&(Qp[n]=!0,el(!1,s))}E.memo(rS);function rS({routes:n,manifest:r,future:s,state:c,isStatic:f,onError:h}){return Zg(n,void 0,{manifest:r,state:c,isStatic:f,onError:h})}function Gp({to:n,replace:r,state:s,relative:c}){We(tu()," may be used only in the context of a component.");let{static:f,navigator:h}=E.useContext(tl);el(!f," 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:d}=E.useContext(wl),{pathname:p}=vl(),b=lc(),v=ec(n,zd(d),p,c==="path");Od(typeof n=="string"?n:Bn(n),h.createHref(v),jd(h),"reject");let x=JSON.stringify(v);return E.useEffect(()=>{b(JSON.parse(x),{replace:r,state:s,relative:c})},[b,x,c,r,s]),null}function sS(n){return J2(n.context)}function _l(n){We(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function cS({basename:n="/",children:r=null,location:s,navigationType:c="POP",navigator:f,static:h=!1,useTransitions:d}){We(!tu(),"You cannot render a inside another . You should never have more than one in your app.");let p=n.replace(/^\/*/,"/"),b=E.useMemo(()=>({basename:p,navigator:f,static:h,useTransitions:d,future:{}}),[p,f,h,d]);typeof s=="string"&&(s=Gn(s));let{pathname:v="/",search:x="",hash:g="",state:w=null,key:L="default",mask:V}=s,k=E.useMemo(()=>{let D=ma(v,p);return D==null?null:{location:{pathname:D,search:x,hash:g,state:w,key:L,mask:V},navigationType:c}},[p,v,x,g,w,L,c,V]);return el(k!=null,` is not able to match the URL "${v}${x}${g}" because it does not start with the basename, so the won't render anything.`),k==null?null:E.createElement(tl.Provider,{value:b},E.createElement(or.Provider,{children:r,value:k}))}function oS({children:n,location:r}){return F2(ad(n),r)}function ad(n,r=[]){let s=[];return E.Children.forEach(n,(c,f)=>{if(!E.isValidElement(c))return;let h=[...r,f];if(c.type===E.Fragment){s.push.apply(s,ad(c.props.children,h));return}We(c.type===_l,`[${typeof c.type=="string"?c.type:c.type.name}] is not a component. All component children of must be a or `),We(!c.props.index||!c.props.children,"An index route cannot have child routes.");let d={id:c.props.id||h.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&&(d.children=ad(c.props.children,h)),s.push(d)}),s}var Zs="get",Js="application/x-www-form-urlencoded";function ac(n){return typeof HTMLElement<"u"&&n instanceof HTMLElement}function fS(n){return ac(n)&&n.tagName.toLowerCase()==="button"}function dS(n){return ac(n)&&n.tagName.toLowerCase()==="form"}function hS(n){return ac(n)&&n.tagName.toLowerCase()==="input"}function mS(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function yS(n,r){return n.button===0&&(!r||r==="_self")&&!mS(n)}function nd(n=""){return new URLSearchParams(typeof n=="string"||Array.isArray(n)||n instanceof URLSearchParams?n:Object.keys(n).reduce((r,s)=>{let c=n[s];return r.concat(Array.isArray(c)?c.map(f=>[s,f]):[[s,c]])},[]))}function vS(n,r){let s=nd(n);return r&&r.forEach((c,f)=>{s.has(f)||r.getAll(f).forEach(h=>{s.append(f,h)})}),s}var Ys=null;function pS(){if(Ys===null)try{new FormData(document.createElement("form"),0),Ys=!1}catch{Ys=!0}return Ys}var gS=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function ed(n){return n!=null&&!gS.has(n)?(el(!1,`"${n}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Js}"`),null):n}function bS(n,r){let s,c,f,h,d;if(dS(n)){let p=n.getAttribute("action");c=p?ma(p,r):null,s=n.getAttribute("method")||Zs,f=ed(n.getAttribute("enctype"))||Js,h=new FormData(n)}else if(fS(n)||hS(n)&&(n.type==="submit"||n.type==="image")){let p=n.form;if(p==null)throw new Error('Cannot submit a