@surenkid/acli-hub 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@surenkid/acli-hub",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Web workbench for AI CLIs — run Claude Code, Codex, Kimi and more in your browser (ttyd + tmux)",
5
5
  "license": "MIT",
6
6
  "bin": {
package/server/index.js CHANGED
@@ -17,6 +17,7 @@ const { AuthService, sessionTokenFromRequest } = require('./services/auth');
17
17
  const authRoute = require('./routes/auth');
18
18
  const sessionsRoute = require('./routes/sessions');
19
19
  const filesRoute = require('./routes/files');
20
+ const gitRoute = require('./routes/git');
20
21
  const setupWebSocket = require('./ws');
21
22
  const { checkDependencies, dependencyReport } = require('./services/deps');
22
23
 
@@ -106,6 +107,7 @@ app.use('/terminal', ttydProxy);
106
107
  // API routes
107
108
  app.use('/api/sessions', sessionsRoute(sessionManager));
108
109
  app.use('/api/files', filesRoute());
110
+ app.use('/api/git', gitRoute());
109
111
 
110
112
  // Serve frontend static files in production
111
113
  const publicDir = path.join(__dirname, 'public');
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/core-DchA7RCO.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/mammoth.browser-C_M0wsD2.js"])))=>i.map(i=>d[i]);
2
+ import{e as Ve,_ as s,a as Oe,u as je,r as f,p as ye,w as $e,o as Ce,b as Me,c as r,d as Se,f as n,g as o,h as g,t as d,i as ie,j as ne,k as ue,l as Z,F as P,G as qe,n as ge,m as we,q as Be,T as He,s as be,v as ze,x as ee,y as Fe,z as Ge,A as ke,B as Ne,C as Ue}from"./index-CGMIO8Dh.js";const Ke=50,We=16*1024*1024;function Xe(E){const m=E.document;if(!m)return 0;let u=(m.text?.length||0)+(m.highlighted?.length||0)+(m.rendered?.length||0)+(E.diff?.patch?.length||0);for(const p of m.rows||[])for(const y of p)u+=String(y).length;return u*2}function Je(E,m,{maxEntries:u=Ke,maxBytes:p=We}={}){const y=[...E,{...m,bytes:Xe(m)}].slice(-u);let L=p;for(let _=y.length-1;_>=0;_--){const D=y[_];D.bytes<=L?L-=D.bytes:y[_]={...D,document:null,diff:null,diffLoaded:!1,bytes:0}}return y}const Ye={javascript:()=>s(()=>import("./javascript-DUNaicwC.js"),[]),typescript:()=>s(()=>import("./typescript-5pldp2kO.js"),[]),xml:()=>s(()=>import("./xml-FcirFJJ2.js"),[]),css:()=>s(()=>import("./css-AVCICof-.js"),[]),scss:()=>s(()=>import("./scss-UZl0Ag-9.js"),[]),json:()=>s(()=>import("./json-DdsocbVI.js"),[]),python:()=>s(()=>import("./python-CXf-_D6G.js"),[]),bash:()=>s(()=>import("./bash-I8pq0VWm.js"),[]),yaml:()=>s(()=>import("./yaml-drsDnIKT.js"),[]),ini:()=>s(()=>import("./ini-B3BVgEsG.js"),[]),markdown:()=>s(()=>import("./markdown-fzgiUVUV.js"),[]),go:()=>s(()=>import("./go-4VmnRw3R.js"),[]),rust:()=>s(()=>import("./rust-DsMvwcVK.js"),[]),java:()=>s(()=>import("./java-DUnkFH8J.js"),[]),c:()=>s(()=>import("./c-D87IyN5J.js"),[]),cpp:()=>s(()=>import("./cpp-BFCWVspj.js"),[]),csharp:()=>s(()=>import("./csharp-D-6syieo.js"),[]),ruby:()=>s(()=>import("./ruby-CcVTKuP4.js"),[]),php:()=>s(()=>import("./php-kjAv1gW4.js"),[]),sql:()=>s(()=>import("./sql-BC88IN-V.js"),[]),swift:()=>s(()=>import("./swift-jkyvy0ac.js"),[]),kotlin:()=>s(()=>import("./kotlin-Za0-TyUR.js"),[]),lua:()=>s(()=>import("./lua-CD7o2Ci6.js"),[]),perl:()=>s(()=>import("./perl-BWtAWCfC.js"),[]),r:()=>s(()=>import("./r-DWz4c2Y4.js"),[]),dart:()=>s(()=>import("./dart-DbQNmsdu.js"),[]),dockerfile:()=>s(()=>import("./dockerfile-Co-AyC30.js"),[]),makefile:()=>s(()=>import("./makefile-BoJC05FH.js"),[]),diff:()=>s(()=>import("./diff-BLTryEFx.js"),[]),plaintext:()=>s(()=>import("./plaintext-CPM70vnn.js"),[])},Qe={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",vue:"xml",svelte:"xml",html:"xml",htm:"xml",xml:"xml",svg:"xml",css:"css",scss:"scss",sass:"scss",less:"css",json:"json",jsonc:"json",py:"python",sh:"bash",zsh:"bash",bash:"bash",fish:"bash",yml:"yaml",yaml:"yaml",toml:"ini",ini:"ini",cfg:"ini",conf:"ini",md:"markdown",markdown:"markdown",go:"go",rs:"rust",java:"java",c:"c",h:"c",cpp:"cpp",cc:"cpp",hpp:"cpp",cs:"csharp",rb:"ruby",php:"php",sql:"sql",swift:"swift",kt:"kotlin",kts:"kotlin",lua:"lua",pl:"perl",r:"r",dart:"dart",diff:"diff",patch:"diff"};async function Ze(E,m){if(new TextEncoder().encode(E).length>200*1024)return null;const u=m.toLowerCase(),p=u==="dockerfile"?"dockerfile":u==="makefile"?"makefile":Qe[Ve(m)];if(!p)return null;const[{default:y},{default:L}]=await Promise.all([s(()=>import("./core-DchA7RCO.js"),__vite__mapDeps([0,1])),Ye[p]()]);return y.getLanguage(p)||y.registerLanguage(p,L),y.highlight(E,{language:p,ignoreIllegals:!0}).value}const et={class:"preview-layout"},tt={class:"preview-header"},at=["disabled"],lt={class:"preview-heading"},rt={id:"preview-title"},ot=["title"],st={key:1,class:"change-summary",role:"status"},it=["disabled"],nt=["href","download"],ut=["id","aria-selected","tabindex","disabled","onClick"],ct={key:0,class:"change-summary"},dt={key:0,class:"navigation-error",role:"alert"},vt={key:1,class:"navigation-error",role:"status"},ft=["aria-labelledby","aria-busy"],pt={key:0,class:"preview-message",role:"status"},_t={class:"diff-baseline"},ht={key:0},mt={key:0,class:"navigation-error"},yt={key:1,class:"preview-message",role:"status"},gt={key:2,class:"preview-message error",role:"alert"},wt={key:0,class:"preview-message"},bt={key:1,class:"diff-lines","aria-label":"Git 文件差异"},kt={class:"line-number"},Et={class:"line-number"},Tt={class:"diff-sign"},Lt={class:"diff-text"},Dt={key:2,class:"preview-message error",role:"alert"},xt={key:0,class:"preview-note"},At={key:1,class:"preview-note"},Rt={class:"source"},Pt=["innerHTML"],It={key:1},Vt=["innerHTML"],Ot=["srcdoc","title"],jt=["src","alt"],$t=["src"],Ct=["src"],Mt=["src","title"],St={key:6,class:"table-preview"},qt={class:"preview-note"},Bt={class:"row-number"},Ht={key:7,class:"preview-message"},zt={__name:"PreviewDialog",props:{entry:{type:Object,required:!0},root:{type:String,required:!0},changes:{type:Array,default:()=>[]}},emits:["close","git-status"],setup(E,{emit:m}){const u=E,p=m,y=je(),L=f(null),_=f(null),D=f(null),F=f(null),l=f({entry:u.entry,type:ye(u.entry.name),isText:!1,rows:[]}),G=f(!1),b=f(!1),I=f(""),V=f(""),U=f(""),v=f("preview"),x=f(u.changes),M=ze([]),A=f(""),S=f(1e3),q=f(null),O=f(!1),B=f(""),j=f(!1),H=ee(()=>x.value.find(t=>t.path===l.value.entry.path)),Ee=ee(()=>!!H.value||l.value.entry.virtual||j.value),ce=ee(()=>Fe(q.value?.patch||"")),$=ee(()=>[...l.value.entry.virtual?[]:[{id:"preview",label:"预览"}],...l.value.isText?[{id:"source",label:"源码"}]:[],...Ee.value?[{id:"diff",label:"Git Diff"}]:[]]);let te=null,K=null,k=0,de,W={left:0,top:0},X=null;function ae(t,a){return y.apiRequest(t,{signal:a}).then(e=>e.json())}function le(t){return new URLSearchParams(t)}async function ve(t,a,e){if(t.size>e)throw new Error(`预览上限为 ${ne(e)},请下载文件查看。`);const T=(await y.apiRequest(ue(t.path,!1,u.root),{signal:a})).body.getReader(),i=[];let w=0;try{for(;;){const{done:z,value:Y}=await T.read();if(z)break;if(w+=Y.length,w>e)throw new Error(`预览上限为 ${ne(e)},请下载文件查看。`);i.push(Y)}}finally{await T.cancel().catch(()=>{})}const h=new Uint8Array(w);let R=0;for(const z of i)h.set(z,R),R+=z.length;return h}async function Te(t,a){const e={entry:t,type:ye(t.name),text:"",highlighted:null,rendered:"",rows:[],isText:!1,tableFallback:!1,token:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,url:`${ue(t.path,!1,u.root)}&revision=${Date.now()}`};if(t.virtual)return e;if(e.type==="docx"){const c=await ve(t,a,10485760),{default:T}=await s(async()=>{const{default:w}=await import("./mammoth.browser-C_M0wsD2.js").then(h=>h.m);return{default:w}},__vite__mapDeps([2,1])),i=await T.convertToHtml({arrayBuffer:c.buffer},{externalFileAccess:!1});e.rendered=ke(i.value,{linkToken:e.token})}else if(["text","markdown","html","table"].includes(e.type)){if(e.text=new TextDecoder().decode(await ve(t,a,2*1024*1024)),e.text.includes("\0"))return e.type="unsupported",e;if(e.isText=!0,e.highlighted=await Ze(e.text,t.name).catch(()=>null),e.type==="html")e.rendered=ke(e.text,{linkToken:e.token});else if(e.type==="markdown")e.rendered=await Ne(e.text,{path:t.path,root:u.root});else if(e.type==="table"){const c=await Ue(e.text,t.name);c?e.rows=c:(e.tableFallback=!0,e.type="text")}}return e}async function re(){K?.abort();const t=new AbortController;K=t;const a=k;O.value=!0,B.value="";try{const e=await ae(`/api/git/diff?${le({root:u.root,path:l.value.entry.path})}`,t.signal);if(t.signal.aborted||a!==k)return;q.value=e,j.value=!0,x.value=x.value.filter(c=>c.path!==l.value.entry.path),e.change&&(x.value=[...x.value,e.change])}catch(e){!t.signal.aborted&&a===k&&(B.value=e.message)}finally{!t.signal.aborted&&a===k&&(O.value=!1)}}async function J(t,{lookup:a=!t.virtual,refresh:e=!1,push:c=!1,anchor:T="",saved:i=null}={}){const w=c&&G.value?xe():null;te?.abort(),K?.abort();const h=new AbortController;te=h;const R=++k,z=v.value,Y=e&&j.value;b.value=!0,O.value=!1,V.value="";try{let C=t;if(a&&!i?.document){const[Q,N]=await Promise.allSettled([ae(`/api/files/stat?${le({root:u.root,path:t.path})}`,h.signal),e?ae(`/api/git/status?${le({root:u.root})}`,h.signal):Promise.resolve(null)]);if(h.signal.aborted)return;if(e&&(N.status==="fulfilled"?(x.value=N.value.changes,U.value=N.value.reason==="git-unavailable"?"未安装 Git,无法更新差异。":"",p("git-status",N.value)):U.value=`Git 状态更新失败,标记可能已过时:${N.reason.message}`),Q.status==="fulfilled")C=Q.value;else if(Q.reason.status===404&&x.value.some(me=>me.path===t.path&&me.deleted))C={...t,name:t.name||t.path.split("/").pop(),virtual:!0,size:0};else throw Q.reason}const _e=i?.document||await Te(C,h.signal);if(h.signal.aborted||R!==k)return;w&&(M.value=Je(M.value,w)),l.value=_e,G.value=!0,A.value=T;const he=i?.mode||(e?z:"preview");return v.value=C.virtual?"diff":he==="source"&&!_e.isText?"preview":he,I.value="",S.value=i?.visibleRows||1e3,q.value=i?.diff||null,j.value=i?.diffLoaded||!1,B.value=i?.diffError||"",W=i?.frameScroll||{left:0,top:0},X=i?W:null,b.value=!1,await be(),h.signal.aborted||R!==k?!1:(i?Ae(i,R):oe(),(v.value==="diff"&&!j.value||Y)&&await re(),!0)}catch(C){!h.signal.aborted&&R===k&&(G.value?V.value=C.message:I.value=C.message)}finally{!h.signal.aborted&&R===k&&(b.value=!1)}return!1}function Le(){J(l.value.entry,{lookup:!0,refresh:!0,anchor:A.value})}async function De(){const t=M.value.at(-1);t&&await J(t.entry,{saved:t,anchor:t.anchor})&&(M.value=M.value.slice(0,-1))}function xe(){return{entry:l.value.entry,document:l.value,anchor:A.value,mode:v.value,visibleRows:S.value,diff:q.value,diffLoaded:j.value,diffError:B.value,scroll:{left:_.value?.scrollLeft||0,top:_.value?.scrollTop||0},frameScroll:{...W}}}function Ae(t,a){const e=v.value,c=()=>{a!==k||v.value!==e||!_.value||_.value.scrollTo({...t.scroll,behavior:"instant"})};c();const T=_.value?.scrollTop,i=[...F.value?.querySelectorAll("img")||[]].filter(w=>!w.complete);i.length&&Promise.allSettled(i.map(w=>w.decode())).then(()=>{_.value?.scrollTop===T&&c()})}function Re(){X?(D.value?.contentWindow?.postMessage({type:"acli-preview-scroll",token:l.value.token,...X},"*"),X=null):oe()}function oe(){if(v.value==="preview")if(["html","docx"].includes(l.value.type))D.value?.contentWindow?.postMessage({type:"acli-preview-scroll",token:l.value.token,hash:A.value},"*");else if(A.value&&F.value){const t=[...F.value.querySelectorAll("[id]")].find(a=>a.id===A.value);t?t.scrollIntoView({block:"start"}):V.value=`未找到文档锚点:${A.value}`}else _.value&&(_.value.scrollTop=0)}async function se(t){v.value=t,t==="diff"&&!j.value&&!O.value&&await re(),t==="preview"&&(await be(),oe())}async function fe(t){V.value="";try{const a=Ge(t,l.value.entry.path,u.root);if(a.kind==="external"){const e=window.document.createElement("a");e.href=a.url,e.target="_blank",e.rel="noopener noreferrer",e.click()}else a.path===l.value.entry.path?(A.value=a.hash,await se("preview")):await J({path:a.path},{lookup:!0,push:!0,anchor:a.hash})}catch(a){V.value=a.message}}function Pe(t){const a=t.target instanceof Element?t.target.closest("a"):null;!a||!F.value?.contains(a)||(t.preventDefault(),!b.value&&fe(a.getAttribute("data-preview-href")??a.getAttribute("href")??""))}function pe(t){const a=t.data;t.source!==D.value?.contentWindow||t.origin!=="null"||v.value!=="preview"||b.value||!a||a.type!=="acli-preview-link"||a.token!==l.value.token||typeof a.href!="string"||a.href.length>8192||(Number.isFinite(a.scroll?.left)&&Number.isFinite(a.scroll?.top)&&(W={left:a.scroll.left,top:a.scroll.top}),fe(a.href))}function Ie(t){if(!["ArrowLeft","ArrowRight","Home","End"].includes(t.key))return;t.preventDefault();const a=$.value.findIndex(c=>c.id===v.value),e=t.key==="Home"?0:t.key==="End"?$.value.length-1:(a+(t.key==="ArrowRight"?1:-1)+$.value.length)%$.value.length;se($.value[e].id),L.value.querySelector(`#preview-tab-${$.value[e].id}`)?.focus()}return $e(()=>u.changes,t=>{x.value=t}),Ce(()=>{de=window.document.activeElement,L.value.showModal(),window.addEventListener("message",pe),J(u.entry)}),Me(()=>{k++,te?.abort(),K?.abort(),window.removeEventListener("message",pe),de?.focus()}),(t,a)=>(r(),Se(He,{to:"body"},[n("dialog",{ref_key:"dialog",ref:L,class:"preview-dialog","aria-labelledby":"preview-title",onCancel:a[5]||(a[5]=Be(e=>p("close"),["prevent"])),onClick:a[6]||(a[6]=e=>{e.target===L.value&&p("close")})},[n("div",et,[n("header",tt,[M.value.length?(r(),o("button",{key:0,class:"header-button",disabled:b.value,title:"返回上一个文档","aria-label":"返回上一个文档",onClick:De},"←",8,at)):g("",!0),n("div",lt,[n("h3",rt,d(l.value.entry.name),1),n("p",{title:l.value.entry.path},d(l.value.entry.path)+" · "+d(l.value.entry.virtual?"已删除":ie(ne)(l.value.entry.size)),9,ot)]),b.value&&G.value?(r(),o("span",st,"加载中…")):g("",!0),n("button",{class:"header-button refresh-button",disabled:b.value||O.value,title:"刷新当前文件、源码和已加载的 Diff","aria-label":"刷新当前文件、源码和已加载的 Diff",onClick:Le},"↻",8,it),l.value.entry.virtual?g("",!0):(r(),o("a",{key:2,class:"btn",href:ie(ue)(l.value.entry.path,!0,E.root),download:l.value.entry.name},"下载",8,nt)),n("button",{class:"close","aria-label":"关闭预览",autofocus:"",onClick:a[0]||(a[0]=e=>p("close"))},"×")]),n("div",{class:"preview-tabs",role:"tablist","aria-label":"文件查看模式",onKeydown:Ie},[(r(!0),o(P,null,Z($.value,e=>(r(),o("button",{id:`preview-tab-${e.id}`,key:e.id,role:"tab","aria-selected":v.value===e.id,"aria-controls":"preview-content",tabindex:v.value===e.id?0:-1,disabled:b.value,onClick:c=>se(e.id)},d(e.label),9,ut))),128)),H.value?(r(),o("span",ct,d(ie(qe)[H.value.status]),1)):g("",!0)],32),V.value?(r(),o("p",dt,d(V.value),1)):g("",!0),U.value?(r(),o("p",vt,d(U.value),1)):g("",!0),n("main",{id:"preview-content",ref_key:"body",ref:_,class:ge(["preview-body",{"frame-body":v.value==="preview"&&["html","docx","pdf"].includes(l.value.type),"diff-body":v.value==="diff"}]),role:"tabpanel","aria-labelledby":`preview-tab-${v.value}`,"aria-busy":b.value||O.value},[b.value&&!G.value?(r(),o("p",pt,"加载预览…")):v.value==="diff"?(r(),o(P,{key:1},[n("p",_t,[a[7]||(a[7]=we("上次提交 HEAD → 当前工作区",-1)),H.value?.originalPath?(r(),o("span",ht," · 原路径:"+d(H.value.originalPath),1)):g("",!0)]),H.value?.status==="C"?(r(),o("p",mt,"此文件存在合并冲突;这里仅展示当前差异,不提供三方合并。")):g("",!0),O.value?(r(),o("p",yt,"加载 Git Diff…")):B.value?(r(),o("p",gt,[we(d(B.value)+" ",1),n("button",{class:"header-button",onClick:re},"重试")])):(r(),o(P,{key:3},[q.value?.notice?(r(),o("p",wt,d(q.value.notice),1)):g("",!0),ce.value.length?(r(),o("div",bt,[(r(!0),o(P,null,Z(ce.value,(e,c)=>(r(),o("div",{key:c,class:ge(["diff-line",`diff-${e.type}`])},[n("span",kt,d(e.oldLine),1),n("span",Et,d(e.newLine),1),n("span",Tt,d(e.sign),1),n("span",Lt,d(e.text),1)],2))),128))])):g("",!0)],64))],64)):I.value?(r(),o("p",Dt,d(I.value),1)):v.value==="source"||l.value.type==="text"?(r(),o(P,{key:3},[l.value.tableFallback&&v.value==="preview"?(r(),o("p",xt,"表格解析失败,已显示原始文本。")):g("",!0),l.value.entry.size>200*1024?(r(),o("p",At,"文件超过 200 KiB,已使用纯文本预览。")):g("",!0),n("pre",Rt,[l.value.highlighted!==null?(r(),o("code",{key:0,class:"hljs",innerHTML:l.value.highlighted},null,8,Pt)):(r(),o("code",It,d(l.value.text),1))])],64)):(r(),o(P,{key:4},[l.value.type==="markdown"?(r(),o("article",{key:0,ref_key:"markdown",ref:F,class:"markdown-body",onClick:Pe,innerHTML:l.value.rendered},null,8,Vt)):l.value.type==="html"||l.value.type==="docx"?(r(),o("iframe",{key:l.value.url,ref_key:"frame",ref:D,srcdoc:l.value.rendered,sandbox:"allow-scripts",referrerpolicy:"no-referrer",title:l.value.entry.name,class:"document-frame",onLoad:Re},null,40,Ot)):l.value.type==="image"?(r(),o("img",{key:l.value.url,src:l.value.url,alt:l.value.entry.name,class:"image-preview",onError:a[1]||(a[1]=e=>I.value="浏览器无法显示这张图片,请下载查看。")},null,40,jt)):l.value.type==="audio"?(r(),o("audio",{key:l.value.url,src:l.value.url,controls:"",class:"media-preview",onError:a[2]||(a[2]=e=>I.value="浏览器不支持此音频格式,请下载查看。")},null,40,$t)):l.value.type==="video"?(r(),o("video",{key:l.value.url,src:l.value.url,controls:"",playsinline:"",class:"media-preview",onError:a[3]||(a[3]=e=>I.value="浏览器不支持此视频格式,请下载查看。")},null,40,Ct)):l.value.type==="pdf"?(r(),o("iframe",{key:l.value.url,src:l.value.url,title:l.value.entry.name,class:"document-frame"},null,8,Mt)):l.value.type==="table"?(r(),o("div",St,[n("p",qt,"已显示 "+d(Math.min(S.value,l.value.rows.length))+" / "+d(l.value.rows.length)+" 行",1),n("table",null,[n("tbody",null,[(r(!0),o(P,null,Z(l.value.rows.slice(0,S.value),(e,c)=>(r(),o("tr",{key:c},[n("td",Bt,d(c+1),1),(r(!0),o(P,null,Z(e,(T,i)=>(r(),o("td",{key:i},d(T),1))),128))]))),128))])]),S.value<l.value.rows.length?(r(),o("button",{key:0,class:"btn btn-primary show-more",onClick:a[4]||(a[4]=e=>S.value+=1e3)},"显示更多(1000 行)")):g("",!0)])):(r(),o("p",Ht,"此文件类型暂不支持预览,请下载查看。"))],64))],10,ft)])],544)]))}},Gt=Oe(zt,[["__scopeId","data-v-f8f7647a"]]);export{Gt as default};
@@ -0,0 +1 @@
1
+ pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.preview-dialog[data-v-f8f7647a]{margin:auto;width:min(1100px,calc(100vw - 32px));height:min(850px,calc(100dvh - 48px));max-width:none;max-height:none;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--bg-primary);color:var(--text-primary)}.preview-dialog[data-v-f8f7647a]::backdrop{background:#000a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.preview-layout[data-v-f8f7647a]{height:100%;display:flex;flex-direction:column}.preview-layout>header[data-v-f8f7647a],.preview-tabs[data-v-f8f7647a],.navigation-error[data-v-f8f7647a]{flex-shrink:0}.preview-header[data-v-f8f7647a]{display:flex;align-items:center;padding:12px 16px;gap:12px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.preview-heading[data-v-f8f7647a]{flex:1;min-width:0}.preview-heading h3[data-v-f8f7647a],.preview-heading p[data-v-f8f7647a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-heading h3[data-v-f8f7647a]{font-size:15px}.preview-heading p[data-v-f8f7647a]{color:var(--text-secondary);font-size:11px}.preview-header a[data-v-f8f7647a]{color:var(--text-primary);text-decoration:none;padding:4px 8px;border:1px solid var(--border-color)}.header-button[data-v-f8f7647a]{border:1px solid var(--border-color);border-radius:4px;background:transparent;color:var(--text-primary);cursor:pointer;padding:4px 8px}.refresh-button[data-v-f8f7647a]{font-size:19px;line-height:1}button[data-v-f8f7647a]:disabled{opacity:.45;cursor:default}.preview-tabs[data-v-f8f7647a]{display:flex;align-items:center;gap:6px;padding:0 12px;border-bottom:1px solid var(--border-color)}.preview-tabs>button[data-v-f8f7647a]{padding:10px 12px;border:0;border-bottom:2px solid transparent;color:var(--text-secondary);background:transparent;cursor:pointer;font:inherit;font-size:12px}.preview-tabs>button[aria-selected=true][data-v-f8f7647a]{color:var(--text-primary);border-bottom-color:var(--accent-primary)}.change-summary[data-v-f8f7647a]{margin-left:auto;color:#e5b45c;font-size:11px}.navigation-error[data-v-f8f7647a]{padding:8px 16px;font-size:12px;color:#e5b45c;background:var(--bg-secondary);overflow-wrap:anywhere}.close[data-v-f8f7647a]{border:none;color:var(--text-secondary);background:none;font-size:26px;cursor:pointer;padding:0 4px}.preview-body[data-v-f8f7647a]{flex:1;min-height:0;overflow:auto;padding:20px}.frame-body[data-v-f8f7647a]{padding:0;display:flex}.preview-message[data-v-f8f7647a]{padding:24px;color:var(--text-secondary)}.error[data-v-f8f7647a]{color:var(--danger)}.preview-note[data-v-f8f7647a]{color:var(--text-secondary);font-size:12px;margin-bottom:12px}.source[data-v-f8f7647a]{font:13px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:4}.source code[data-v-f8f7647a]{padding:0;background:transparent}.diff-body[data-v-f8f7647a]{padding:0}.diff-baseline[data-v-f8f7647a]{padding:10px 16px;color:var(--text-secondary);font-size:12px;overflow-wrap:anywhere;border-bottom:1px solid var(--border-color)}.diff-lines[data-v-f8f7647a]{min-width:100%;width:max-content;font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:4}.diff-line[data-v-f8f7647a]{display:grid;grid-template-columns:48px 48px 20px 1fr;min-height:21px;white-space:pre}.line-number[data-v-f8f7647a]{color:var(--text-tertiary);text-align:right;padding:0 8px;-webkit-user-select:none;user-select:none;border-right:1px solid var(--border-color)}.diff-sign[data-v-f8f7647a]{text-align:center;-webkit-user-select:none;user-select:none}.diff-text[data-v-f8f7647a]{padding-right:16px}.diff-add[data-v-f8f7647a]{background:#2ea04326}.diff-add .diff-sign[data-v-f8f7647a]{color:#71c993}.diff-delete[data-v-f8f7647a]{background:#f8514926}.diff-delete .diff-sign[data-v-f8f7647a]{color:#f08080}.diff-hunk[data-v-f8f7647a]{background:#388bfd20;color:#79b8ff}.diff-meta[data-v-f8f7647a]{color:var(--text-secondary)}.diff-meta .diff-text[data-v-f8f7647a],.diff-hunk .diff-text[data-v-f8f7647a]{white-space:pre-wrap;overflow-wrap:anywhere}.document-frame[data-v-f8f7647a]{border:none;background:#fff;width:100%;height:100%;min-height:0}.image-preview[data-v-f8f7647a]{display:block;max-width:100%;max-height:100%;object-fit:contain;margin:auto}.media-preview[data-v-f8f7647a]{display:block;width:100%;max-height:100%;margin:auto}table[data-v-f8f7647a]{border-collapse:collapse;font-size:12px}td[data-v-f8f7647a]{padding:5px 10px;border:1px solid var(--border-color);white-space:pre-wrap;min-width:60px;max-width:500px;overflow-wrap:anywhere}.row-number[data-v-f8f7647a]{color:var(--text-tertiary);text-align:right;min-width:35px;background:var(--bg-secondary)}.show-more[data-v-f8f7647a]{margin-top:16px}.markdown-body[data-v-f8f7647a]{line-height:1.7;overflow-wrap:anywhere}.markdown-body[data-v-f8f7647a] h1,.markdown-body[data-v-f8f7647a] h2,.markdown-body[data-v-f8f7647a] h3{margin:20px 0 12px}.markdown-body[data-v-f8f7647a] p,.markdown-body[data-v-f8f7647a] ul,.markdown-body[data-v-f8f7647a] ol,.markdown-body[data-v-f8f7647a] pre,.markdown-body[data-v-f8f7647a] table{margin-bottom:16px}.markdown-body[data-v-f8f7647a] ul,.markdown-body[data-v-f8f7647a] ol{padding-left:24px}.markdown-body[data-v-f8f7647a] a{color:#60a5fa}.markdown-body[data-v-f8f7647a] img{max-width:100%}.markdown-body[data-v-f8f7647a] pre,.markdown-body[data-v-f8f7647a] code{background:var(--bg-secondary);padding:2px 5px;border-radius:4px}.markdown-body[data-v-f8f7647a] pre{padding:12px;overflow:auto}.markdown-body[data-v-f8f7647a] blockquote{border-left:3px solid var(--border-color);color:var(--text-secondary);padding-left:14px}.markdown-body[data-v-f8f7647a] td,.markdown-body[data-v-f8f7647a] th{border:1px solid var(--border-color);padding:5px 10px}@media(max-width:600px){.preview-dialog[data-v-f8f7647a]{width:calc(100vw - 12px);height:calc(100dvh - 16px)}.preview-header[data-v-f8f7647a]{padding:10px}.preview-body[data-v-f8f7647a]:not(.frame-body){padding:12px}}
@@ -0,0 +1 @@
1
+ :root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-card: #1e293b;--bg-card-hover: #334155;--border-color: #334155;--border-color-hover: #475569;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-tertiary: #64748b;--accent-primary: #3b82f6;--accent-hover: #2563eb;--accent-dim: rgba(59, 130, 246, .15);--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--sidebar-width: 260px;--sidebar-collapsed-width: 0px;--toolbar-height: 56px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;background:var(--bg-primary);color:var(--text-primary);overflow:hidden;height:100vh;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.glass{background:#1e293bb3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all .2s;border:1px solid transparent;outline:none}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-hover)}input{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);padding:8px 12px;border-radius:var(--radius-md);outline:none;transition:border-color .2s}input:focus{border-color:var(--accent-primary)}.session-card[data-v-0e38e5ff]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-md);cursor:pointer;transition:all .2s;border:1px solid transparent;color:var(--text-secondary)}.session-card[data-v-0e38e5ff]:hover{background:var(--bg-card-hover);color:var(--text-primary)}.session-card.active[data-v-0e38e5ff]{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color)}.status-indicator[data-v-0e38e5ff]{width:8px;height:8px;border-radius:50%;background:var(--text-tertiary);flex-shrink:0}.status-indicator.running[data-v-0e38e5ff]{background:var(--success);box-shadow:0 0 8px #10b98166}.status-indicator.running.output-active[data-v-0e38e5ff]{background:var(--warning);box-shadow:0 0 8px #f59e0b66}.card-content[data-v-0e38e5ff]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.card-top[data-v-0e38e5ff]{display:flex;align-items:center;gap:4px}.session-name[data-v-0e38e5ff]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.alias-text[data-v-0e38e5ff]{overflow:hidden;text-overflow:ellipsis}.real-name[data-v-0e38e5ff]{flex-shrink:1;max-width:45%;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-weight:400;color:var(--text-tertiary)}.alias-input[data-v-0e38e5ff]{flex:1;min-width:0;padding:2px 6px;font-size:13px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;outline:none}.alias-input[data-v-0e38e5ff]:focus{border-color:var(--accent-primary, #3b82f6)}.close-btn[data-v-0e38e5ff]{display:none;align-items:center;justify-content:center;background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:2px;border-radius:4px;flex-shrink:0}.session-card:hover .close-btn[data-v-0e38e5ff]{display:flex}.close-btn[data-v-0e38e5ff]:hover{background:var(--bg-tertiary);color:var(--danger)}.session-info[data-v-0e38e5ff]{display:flex;align-items:baseline;gap:8px;font-size:11px;color:var(--text-tertiary)}.pane-title[data-v-0e38e5ff]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirm-bar[data-v-0e38e5ff]{display:flex;align-items:center;gap:6px;font-size:12px}.confirm-text[data-v-0e38e5ff]{color:var(--danger);font-weight:500}.confirm-yes[data-v-0e38e5ff],.confirm-no[data-v-0e38e5ff]{background:none;border:1px solid var(--border-color);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer;color:var(--text-secondary)}.confirm-yes[data-v-0e38e5ff]:hover{background:var(--danger);border-color:var(--danger);color:#fff}.confirm-no[data-v-0e38e5ff]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.session-card.collapsed[data-v-0e38e5ff]{justify-content:center;padding:12px}.session-card.collapsed .status-indicator[data-v-0e38e5ff]{width:10px;height:10px}li[data-v-5c068d88]{list-style:none}.tree-row[data-v-5c068d88]{display:flex;align-items:center;gap:5px;min-height:31px;padding:2px 6px;cursor:pointer;border-radius:3px;outline-offset:-2px}.tree-row[data-v-5c068d88]:hover,.tree-row[data-v-5c068d88]:focus-visible{background:var(--bg-tertiary)}.chevron[data-v-5c068d88]{flex:0 0 10px;color:var(--text-secondary)}.file-icon[data-v-5c068d88]{color:var(--text-secondary);font-size:18px;width:15px}.filename[data-v-5c068d88]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px}.dotfile[data-v-5c068d88]{opacity:.55}.deleted[data-v-5c068d88]{text-decoration:line-through;opacity:.65}.row-end[data-v-5c068d88]{position:relative;flex:0 0 20px;height:24px}.git-badge[data-v-5c068d88],.git-dot[data-v-5c068d88]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.git-badge[data-v-5c068d88]{font:600 11px/1.5 ui-monospace,monospace}.git-M[data-v-5c068d88],.git-dot[data-v-5c068d88]{color:#e5b45c}.git-A[data-v-5c068d88],.git-U[data-v-5c068d88]{color:#71c993}.git-D[data-v-5c068d88],.git-C[data-v-5c068d88]{color:#f08080}.git-R[data-v-5c068d88]{color:#79b8ff}.git-dot[data-v-5c068d88]{font-size:7px}.more[data-v-5c068d88]{position:absolute;inset:0;width:100%;background:var(--bg-tertiary);color:var(--text-secondary);border:none;border-radius:3px;cursor:pointer;padding:0;font-size:18px;opacity:0;pointer-events:none}.tree-row:hover .more[data-v-5c068d88],.tree-row:focus-within .more[data-v-5c068d88]{opacity:1;pointer-events:auto}.tree-row:hover .has-menu .git-badge[data-v-5c068d88],.tree-row:hover .has-menu .git-dot[data-v-5c068d88],.tree-row:focus-within .has-menu .git-badge[data-v-5c068d88],.tree-row:focus-within .has-menu .git-dot[data-v-5c068d88]{opacity:0}.tree-children[data-v-5c068d88]{margin-left:14px;padding-left:5px;border-left:1px solid var(--border-color)}.tree-status[data-v-5c068d88]{padding:5px 10px;color:var(--text-secondary);font-size:12px;overflow-wrap:anywhere}.tree-status button[data-v-5c068d88]{background:none;color:var(--text-primary);border:none;cursor:pointer;text-decoration:underline}.error[data-v-5c068d88]{color:var(--danger)}@media(hover:none){.more[data-v-5c068d88]{pointer-events:auto}.row-end:not(.has-status) .more[data-v-5c068d88]{opacity:1;background:transparent}}.file-dialog[data-v-5ceee09a]{margin:auto;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;padding:24px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg)}.file-dialog[data-v-5ceee09a]::backdrop{background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}p[data-v-5ceee09a]{margin:12px 0;color:var(--text-secondary)}.operation-path[data-v-5ceee09a]{overflow-wrap:anywhere;font:12px/1.6 monospace}label[data-v-5ceee09a]{display:flex;flex-direction:column;gap:8px}.dialog-actions[data-v-5ceee09a]{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn[data-v-5ceee09a]{background:var(--bg-tertiary);color:var(--text-primary)}.btn-primary[data-v-5ceee09a]{background:var(--accent-primary)}.delete-btn[data-v-5ceee09a]{background:var(--danger);color:#fff}.error[data-v-5ceee09a]{color:var(--danger)}button[data-v-5ceee09a]:disabled{opacity:.5;cursor:default}.clipboard-overlay[data-v-317cb3e2]{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.clipboard-dialog[data-v-317cb3e2]{width:min(520px,calc(100vw - 32px));padding:20px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}h3[data-v-317cb3e2]{font-size:16px}p[data-v-317cb3e2]{margin:12px 0;color:var(--text-secondary)}textarea[data-v-317cb3e2]{width:100%;height:180px;resize:vertical;padding:12px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);font:13px/1.5 monospace}textarea[data-v-317cb3e2]:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.clipboard-actions[data-v-317cb3e2]{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}button[type=button][data-v-317cb3e2]{color:var(--text-primary);background:var(--bg-tertiary)}button[data-v-317cb3e2]:disabled{opacity:.5;cursor:default}.file-panel[data-v-771bf310]{display:flex;flex-direction:column;min-height:0;flex:1}.file-toolbar[data-v-771bf310]{display:flex;align-items:center;gap:4px;padding:10px 12px 4px}.project-name[data-v-771bf310]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600}.file-toolbar button[data-v-771bf310],.panel-hint button[data-v-771bf310]{border:none;background:transparent;color:var(--text-secondary);padding:3px 5px;cursor:pointer;font-size:17px}.file-toolbar button[data-v-771bf310]:hover{background:var(--bg-tertiary);border-radius:4px}button[data-v-771bf310]:disabled{opacity:.4;cursor:default}.root-path[data-v-771bf310]{color:var(--text-secondary);font:11px/1.6 monospace;overflow-wrap:anywhere;padding:0 12px 10px;border-bottom:1px solid var(--border-color)}.file-tree[data-v-771bf310]{overflow:auto;padding:6px;flex:1;min-height:0}.panel-hint[data-v-771bf310]{padding:12px;color:var(--text-secondary);font-size:12px;list-style:none;overflow-wrap:anywhere}.error[data-v-771bf310]{color:var(--danger)}.git-warning[data-v-771bf310]{color:#e5b45c}.file-menu[data-v-771bf310]{position:fixed;z-index:110;width:min(230px,calc(100vw - 16px));padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.file-menu button[data-v-771bf310]{display:flex;justify-content:space-between;width:100%;text-align:left;padding:8px 10px;background:none;color:var(--text-primary);border:none;border-radius:4px;cursor:pointer}.file-menu button[data-v-771bf310]:hover:not(:disabled),.file-menu button[data-v-771bf310]:focus-visible{background:var(--bg-tertiary)}.file-menu span[data-v-771bf310]{color:var(--text-secondary)}.file-menu .danger[data-v-771bf310]{color:var(--danger)}.sidebar[data-v-b8faf56e]{width:var(--sidebar-width);border-right:1px solid var(--border-color);background:var(--bg-secondary);display:flex;flex-direction:column;flex-shrink:0;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden;height:100%;z-index:20}.sidebar.collapsed[data-v-b8faf56e]{width:72px}.sidebar-tabs[data-v-b8faf56e]{display:flex;flex-shrink:0;border-bottom:1px solid var(--border-color)}.sidebar-tabs button[data-v-b8faf56e]{flex:1;padding:12px 4px;border:none;border-bottom:2px solid transparent;background:none;color:var(--text-secondary);cursor:pointer;font:inherit;font-size:12px}.sidebar-tabs button[aria-selected=true][data-v-b8faf56e]{border-bottom-color:var(--accent-primary);color:var(--text-primary);background:var(--bg-primary)}.sessions-panel[data-v-b8faf56e],.files-panel[data-v-b8faf56e]{display:flex;flex-direction:column;min-height:0;flex:1}.sidebar-header[data-v-b8faf56e]{padding:16px;border-bottom:1px solid var(--border-color);display:flex;flex-direction:column;gap:12px}.sidebar-title[data-v-b8faf56e]{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);font-weight:600}.new-session-btn[data-v-b8faf56e]{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;background:var(--accent-primary);color:#fff;border:none;border-radius:var(--radius-md);padding:10px;cursor:pointer;font-weight:500;transition:all .2s}.new-session-btn[data-v-b8faf56e]:hover{background:var(--accent-hover)}.sidebar.collapsed .new-session-btn[data-v-b8faf56e]{padding:10px 0}.session-list[data-v-b8faf56e]{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:4px}.empty-hint[data-v-b8faf56e]{text-align:center;padding:40px 10px;color:var(--text-tertiary)}.empty-hint p[data-v-b8faf56e]{font-size:14px;margin-bottom:4px}.empty-hint .sub-hint[data-v-b8faf56e]{font-size:12px;opacity:.7}@media(max-width:768px){.sidebar[data-v-b8faf56e]{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);transform:translate(0);box-shadow:var(--shadow-md);z-index:50}.sidebar.collapsed[data-v-b8faf56e]{transform:translate(-100%);width:var(--sidebar-width)}}.brand-mark[data-v-f54af403]{display:block;flex-shrink:0;object-fit:contain}.terminal-area[data-v-95819edf]{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#000;position:relative}.terminal-frame[data-v-95819edf]{flex:1;width:100%;min-height:0;border:none;background:#000}.terminal-tools[data-v-95819edf]{display:flex;align-items:center;flex-shrink:0;gap:8px;padding:6px 12px;background:var(--bg-primary);border-bottom:1px solid var(--border-color);flex-wrap:wrap}.upload-progress[data-v-95819edf]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary)}.upload-progress progress[data-v-95819edf]{width:64px;height:4px;accent-color:var(--accent-primary)}.clipboard-btn[data-v-95819edf]{padding:4px 10px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer}.clipboard-btn[data-v-95819edf]:hover:not(:disabled){background:var(--bg-tertiary)}.clipboard-btn[data-v-95819edf]:disabled,.clipboard-menu button[data-v-95819edf]:disabled{opacity:.45;cursor:default}.selection-hint[data-v-95819edf]{color:var(--text-secondary);font-size:12px}.clipboard-menu[data-v-95819edf]{position:fixed;z-index:100;width:min(280px,calc(100vw - 16px));padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.clipboard-menu button[data-v-95819edf]{display:flex;justify-content:space-between;width:100%;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.clipboard-menu button[data-v-95819edf]:hover:not(:disabled),.clipboard-menu button[data-v-95819edf]:focus-visible{background:var(--bg-tertiary)}.clipboard-menu span[data-v-95819edf],.clipboard-menu p[data-v-95819edf]{color:var(--text-secondary);font-size:12px}.clipboard-menu p[data-v-95819edf]{padding:8px 10px 4px;border-top:1px solid var(--border-color)}@media(max-width:600px){.selection-hint[data-v-95819edf]{display:none}}.welcome__container[data-v-95819edf]{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);background-image:radial-gradient(circle at center,var(--bg-secondary) 0%,var(--bg-primary) 100%)}.welcome__content[data-v-95819edf]{text-align:center;max-width:400px;padding:40px}.welcome-brand[data-v-95819edf]{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px}.logo-text[data-v-95819edf]{font-size:32px;font-weight:700;color:var(--text-primary);letter-spacing:-1px}.welcome__text[data-v-95819edf]{color:var(--text-secondary);font-size:16px;margin-bottom:24px}.highlight[data-v-95819edf]{color:var(--text-primary);font-weight:600}.sub-text[data-v-95819edf]{color:var(--text-tertiary);font-size:14px}.modal-overlay[data-v-f9ae44fb]{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn-f9ae44fb .2s ease}.modal-content[data-v-f9ae44fb]{width:100%;max-width:400px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:16px;overflow:hidden;animation:slideUp-f9ae44fb .3s cubic-bezier(.16,1,.3,1)}.modal-header[data-v-f9ae44fb]{padding:16px 20px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-f9ae44fb]{font-size:16px;font-weight:600;color:var(--text-primary)}.close-btn[data-v-f9ae44fb]{background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:18px;padding:4px;border-radius:4px}.close-btn[data-v-f9ae44fb]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body[data-v-f9ae44fb]{padding:20px;display:flex;flex-direction:column;gap:16px}.form-group[data-v-f9ae44fb]{display:flex;flex-direction:column;gap:8px}.label-text[data-v-f9ae44fb]{font-size:13px;font-weight:500;color:var(--text-secondary)}select[data-v-f9ae44fb],input[data-v-f9ae44fb]{width:100%;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);padding:10px;border-radius:var(--radius-md);outline:none;font-size:14px;appearance:none}select[data-v-f9ae44fb]:focus,input[data-v-f9ae44fb]:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-dim)}.modal-footer[data-v-f9ae44fb]{padding:16px 20px;background:var(--bg-primary);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:12px}@keyframes fadeIn-f9ae44fb{0%{opacity:0}to{opacity:1}}@keyframes slideUp-f9ae44fb{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.login-screen[data-v-86b6b672]{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.login-card[data-v-86b6b672]{width:min(360px,calc(100vw - 48px));padding:32px;display:flex;flex-direction:column;align-items:center;gap:12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.login-logo[data-v-86b6b672]{display:flex;align-items:center;justify-content:center;width:72px;height:72px}h1[data-v-86b6b672]{font-size:22px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.login-hint[data-v-86b6b672]{margin:-4px 0 8px;font-size:13px;color:var(--text-secondary)}input[data-v-86b6b672]{width:100%;padding:10px 12px;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);outline:none}input[data-v-86b6b672]:focus{border-color:var(--accent-primary, #3b82f6)}.login-error[data-v-86b6b672]{width:100%;margin:0;font-size:13px;color:var(--danger)}.login-btn[data-v-86b6b672]{width:100%;margin-top:4px;padding:10px 12px;font-size:14px;font-weight:500;color:#fff;background:var(--accent-primary, #3b82f6);border:none;border-radius:var(--radius-md);cursor:pointer}.login-btn[data-v-86b6b672]:disabled{opacity:.5;cursor:default}.login-btn[data-v-86b6b672]:not(:disabled):hover{filter:brightness(1.1)}.toast-container[data-v-6bea03ca]{position:fixed;top:60px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 80px);overflow:auto}.toast[data-v-6bea03ca]{padding:10px 16px;border-radius:8px;font-size:13px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);min-width:200px;background:var(--bg-secondary);display:flex;align-items:flex-start;gap:12px}.toast-message[data-v-6bea03ca]{white-space:pre-wrap;overflow-wrap:anywhere;max-height:35vh;overflow:auto;flex:1}.toast-actions[data-v-6bea03ca]{display:flex;gap:8px;flex-shrink:0}.toast-actions button[data-v-6bea03ca]{border:none;background:transparent;color:inherit;cursor:pointer;font:inherit}.toast.info[data-v-6bea03ca]{background:var(--bg-secondary);color:var(--text-primary)}.toast.error[data-v-6bea03ca]{background:var(--bg-secondary);color:var(--danger)}.toast.success[data-v-6bea03ca]{background:#4ade8026;color:#4ade80}.toast-enter-active[data-v-6bea03ca]{animation:slideIn-6bea03ca .3s ease}.toast-leave-active[data-v-6bea03ca]{animation:slideOut-6bea03ca .3s ease}@keyframes slideIn-6bea03ca{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut-6bea03ca{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.app-layout[data-v-1baffbd3]{height:100vh;display:flex;flex-direction:column}.toolbar[data-v-1baffbd3]{height:var(--toolbar-height);display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--border-color);flex-shrink:0;z-index:30;background:var(--bg-primary)}.toolbar-left[data-v-1baffbd3]{display:flex;align-items:center;gap:12px}.toggle-btn[data-v-1baffbd3]{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.toggle-btn[data-v-1baffbd3]:hover{color:var(--text-primary);background:var(--bg-tertiary)}.logo-wrapper[data-v-1baffbd3]{display:flex;align-items:center;justify-content:center;flex-shrink:0}.toolbar-title[data-v-1baffbd3]{font-size:16px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.main-area[data-v-1baffbd3]{flex:1;display:flex;overflow:hidden;position:relative}.sidebar-overlay[data-v-1baffbd3]{display:none;position:absolute;inset:0;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:15;opacity:0;transition:opacity .3s ease;pointer-events:none}@media(max-width:768px){.sidebar-overlay[data-v-1baffbd3]{display:block}.sidebar-overlay.show[data-v-1baffbd3]{opacity:1;pointer-events:auto}}
@@ -0,0 +1,17 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/papaparse.min-DBcLlWLv.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/PreviewDialog-BkLLhap2.js","assets/PreviewDialog-Du15-2g0.css"])))=>i.map(i=>d[i]);
2
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();function Us(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},qt=[],lt=()=>{},lr=()=>!1,Yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ks=e=>e.startsWith("onUpdate:"),Ce=Object.assign,Vs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Oi=Object.prototype.hasOwnProperty,ue=(e,t)=>Oi.call(e,t),z=Array.isArray,Gt=e=>wn(e)==="[object Map]",Jn=e=>wn(e)==="[object Set]",fo=e=>wn(e)==="[object Date]",ee=e=>typeof e=="function",we=e=>typeof e=="string",at=e=>typeof e=="symbol",pe=e=>e!==null&&typeof e=="object",ar=e=>(pe(e)||ee(e))&&ee(e.then)&&ee(e.catch),cr=Object.prototype.toString,wn=e=>cr.call(e),Ii=e=>wn(e).slice(8,-1),ur=e=>wn(e)==="[object Object]",Xn=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,rn=Us(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Ri=/-\w/g,qe=Zn(e=>e.replace(Ri,t=>t.slice(1).toUpperCase())),Li=/\B([A-Z])/g,kt=Zn(e=>e.replace(Li,"-$1").toLowerCase()),Qn=Zn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fs=Zn(e=>e?`on${Qn(e)}`:""),Tt=(e,t)=>!Object.is(e,t),In=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},fr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},es=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Di=e=>{const t=we(e)?Number(e):NaN;return isNaN(t)?e:t};let po;const ts=()=>po||(po=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function _n(e){if(z(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=we(s)?Hi(s):_n(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(we(e)||pe(e))return e}const Fi=/;(?![^(]*\))/g,Ni=/:([^]+)/,ji=/\/\*[^]*?\*\//g;function Hi(e){const t={};return e.replace(ji,"").split(Fi).forEach(n=>{if(n){const s=n.split(Ni);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function We(e){let t="";if(we(e))t=e;else if(z(e))for(let n=0;n<e.length;n++){const s=We(e[n]);s&&(t+=s+" ")}else if(pe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Ui="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Ki=Us(Ui);function dr(e){return!!e||e===""}function Vi(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=ns(e[s],t[s]);return n}function ns(e,t){if(e===t)return!0;let n=fo(e),s=fo(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=at(e),s=at(t),n||s)return e===t;if(n=z(e),s=z(t),n||s)return n&&s?Vi(e,t):!1;if(n=pe(e),s=pe(t),n||s){if(!n||!s)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const i in e){const l=e.hasOwnProperty(i),a=t.hasOwnProperty(i);if(l&&!a||!l&&a||!ns(e[i],t[i]))return!1}}return String(e)===String(t)}function Bi(e,t){return e.findIndex(n=>ns(n,t))}const pr=e=>!!(e&&e.__v_isRef===!0),se=e=>we(e)?e:e==null?"":z(e)||pe(e)&&(e.toString===cr||!ee(e.toString))?pr(e)?se(e.value):JSON.stringify(e,hr,2):String(e),hr=(e,t)=>pr(t)?hr(e,t.value):Gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[ds(s,r)+" =>"]=o,n),{})}:Jn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ds(n))}:at(t)?ds(t):pe(t)&&!z(t)&&!ur(t)?String(t):t,ds=(e,t="")=>{var n;return at(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class gr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Ee,!t&&Ee&&(this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){++this._on===1&&(this.prevScope=Ee,Ee=this)}off(){this._on>0&&--this._on===0&&(Ee=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function mr(e){return new gr(e)}function vr(){return Ee}function Wi(e,t=!1){Ee&&Ee.cleanups.push(e)}let ge;const ps=new WeakSet;class yr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Ee&&Ee.active&&Ee.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ps.has(this)&&(ps.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||wr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ho(this),_r(this);const t=ge,n=Ye;ge=this,Ye=!0;try{return this.fn()}finally{xr(this),ge=t,Ye=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)qs(t);this.deps=this.depsTail=void 0,ho(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ps.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Es(this)&&this.run()}get dirty(){return Es(this)}}let br=0,ln,an;function wr(e,t=!1){if(e.flags|=8,t){e.next=an,an=e;return}e.next=ln,ln=e}function Bs(){br++}function Ws(){if(--br>0)return;if(an){let t=an;for(an=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;ln;){let t=ln;for(ln=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function _r(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function xr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),qs(s),qi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function Es(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Cr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Cr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gn)||(e.globalVersion=gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Es(e))))return;e.flags|=2;const t=e.dep,n=ge,s=Ye;ge=e,Ye=!0;try{_r(e);const o=e.fn(e._value);(t.version===0||Tt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{ge=n,Ye=s,xr(e),e.flags&=-3}}function qs(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)qs(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function qi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ye=!0;const Sr=[];function gt(){Sr.push(Ye),Ye=!1}function mt(){const e=Sr.pop();Ye=e===void 0?!0:e}function ho(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ge;ge=void 0;try{t()}finally{ge=n}}}let gn=0;class Gi{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Gs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ge||!Ye||ge===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ge)n=this.activeLink=new Gi(ge,this),ge.deps?(n.prevDep=ge.depsTail,ge.depsTail.nextDep=n,ge.depsTail=n):ge.deps=ge.depsTail=n,Er(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ge.depsTail,n.nextDep=void 0,ge.depsTail.nextDep=n,ge.depsTail=n,ge.deps===n&&(ge.deps=s)}return n}trigger(t){this.version++,gn++,this.notify(t)}notify(t){Bs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ws()}}}function Er(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Er(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Fn=new WeakMap,Ft=Symbol(""),Ts=Symbol(""),mn=Symbol("");function Te(e,t,n){if(Ye&&ge){let s=Fn.get(e);s||Fn.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new Gs),o.map=s,o.key=n),o.track()}}function dt(e,t,n,s,o,r){const i=Fn.get(e);if(!i){gn++;return}const l=a=>{a&&a.trigger()};if(Bs(),t==="clear")i.forEach(l);else{const a=z(e),u=a&&Xn(n);if(a&&n==="length"){const c=Number(s);i.forEach((f,g)=>{(g==="length"||g===mn||!at(g)&&g>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(mn)),t){case"add":a?u&&l(i.get("length")):(l(i.get(Ft)),Gt(e)&&l(i.get(Ts)));break;case"delete":a||(l(i.get(Ft)),Gt(e)&&l(i.get(Ts)));break;case"set":Gt(e)&&l(i.get(Ft));break}}Ws()}function zi(e,t){const n=Fn.get(e);return n&&n.get(t)}function Kt(e){const t=ae(e);return t===e?t:(Te(t,"iterate",mn),je(e)?t:t.map(Xe))}function ss(e){return Te(e=ae(e),"iterate",mn),e}function Ct(e,t){return vt(e)?Jt(ht(e)?Xe(t):t):Xe(t)}const Yi={__proto__:null,[Symbol.iterator](){return hs(this,Symbol.iterator,e=>Ct(this,e))},concat(...e){return Kt(this).concat(...e.map(t=>z(t)?Kt(t):t))},entries(){return hs(this,"entries",e=>(e[1]=Ct(this,e[1]),e))},every(e,t){return ut(this,"every",e,t,void 0,arguments)},filter(e,t){return ut(this,"filter",e,t,n=>n.map(s=>Ct(this,s)),arguments)},find(e,t){return ut(this,"find",e,t,n=>Ct(this,n),arguments)},findIndex(e,t){return ut(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ut(this,"findLast",e,t,n=>Ct(this,n),arguments)},findLastIndex(e,t){return ut(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ut(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return Kt(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return ut(this,"map",e,t,void 0,arguments)},pop(){return en(this,"pop")},push(...e){return en(this,"push",e)},reduce(e,...t){return go(this,"reduce",e,t)},reduceRight(e,...t){return go(this,"reduceRight",e,t)},shift(){return en(this,"shift")},some(e,t){return ut(this,"some",e,t,void 0,arguments)},splice(...e){return en(this,"splice",e)},toReversed(){return Kt(this).toReversed()},toSorted(e){return Kt(this).toSorted(e)},toSpliced(...e){return Kt(this).toSpliced(...e)},unshift(...e){return en(this,"unshift",e)},values(){return hs(this,"values",e=>Ct(this,e))}};function hs(e,t,n){const s=ss(e),o=s[t]();return s!==e&&!je(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const Ji=Array.prototype;function ut(e,t,n,s,o,r){const i=ss(e),l=i!==e&&!je(e),a=i[t];if(a!==Ji[t]){const f=a.apply(e,r);return l?Xe(f):f}let u=n;i!==e&&(l?u=function(f,g){return n.call(this,Ct(e,f),g,e)}:n.length>2&&(u=function(f,g){return n.call(this,f,g,e)}));const c=a.call(i,u,s);return l&&o?o(c):c}function go(e,t,n,s){const o=ss(e);let r=n;return o!==e&&(je(e)?n.length>3&&(r=function(i,l,a){return n.call(this,i,l,a,e)}):r=function(i,l,a){return n.call(this,i,Ct(e,l),a,e)}),o[t](r,...s)}function gs(e,t,n){const s=ae(e);Te(s,"iterate",mn);const o=s[t](...n);return(o===-1||o===!1)&&rs(n[0])?(n[0]=ae(n[0]),s[t](...n)):o}function en(e,t,n=[]){gt(),Bs();const s=ae(e)[t].apply(e,n);return Ws(),mt(),s}const Xi=Us("__proto__,__v_isRef,__isVue"),Tr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(at));function Zi(e){at(e)||(e=String(e));const t=ae(this);return Te(t,"has",e),t.hasOwnProperty(e)}class $r{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?al:Mr:r?Pr:Ar).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=z(t);if(!o){let a;if(i&&(a=Yi[n]))return a;if(n==="hasOwnProperty")return Zi}const l=Reflect.get(t,n,be(t)?t:s);if((at(n)?Tr.has(n):Xi(n))||(o||Te(t,"get",n),r))return l;if(be(l)){const a=i&&Xn(n)?l:l.value;return o&&pe(a)?ks(a):a}return pe(l)?o?ks(l):os(l):l}}class kr extends $r{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const i=z(t)&&Xn(n);if(!this._isShallow){const u=vt(r);if(!je(s)&&!vt(s)&&(r=ae(r),s=ae(s)),!i&&be(r)&&!be(s))return u||(r.value=s),!0}const l=i?Number(n)<t.length:ue(t,n),a=Reflect.set(t,n,s,be(t)?t:o);return t===ae(o)&&(l?Tt(s,r)&&dt(t,"set",n,s):dt(t,"add",n,s)),a}deleteProperty(t,n){const s=ue(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&&dt(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!at(n)||!Tr.has(n))&&Te(t,"has",n),s}ownKeys(t){return Te(t,"iterate",z(t)?"length":Ft),Reflect.ownKeys(t)}}class Qi extends $r{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const el=new kr,tl=new Qi,nl=new kr(!0);const $s=e=>e,$n=e=>Reflect.getPrototypeOf(e);function sl(e,t,n){return function(...s){const o=this.__v_raw,r=ae(o),i=Gt(r),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...s),c=n?$s:t?Jt:Xe;return!t&&Te(r,"iterate",a?Ts:Ft),Ce(Object.create(u),{next(){const{value:f,done:g}=u.next();return g?{value:f,done:g}:{value:l?[c(f[0]),c(f[1])]:c(f),done:g}}})}}function kn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ol(e,t){const n={get(o){const r=this.__v_raw,i=ae(r),l=ae(o);e||(Tt(o,l)&&Te(i,"get",o),Te(i,"get",l));const{has:a}=$n(i),u=t?$s:e?Jt:Xe;if(a.call(i,o))return u(r.get(o));if(a.call(i,l))return u(r.get(l));r!==i&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Te(ae(o),"iterate",Ft),o.size},has(o){const r=this.__v_raw,i=ae(r),l=ae(o);return e||(Tt(o,l)&&Te(i,"has",o),Te(i,"has",l)),o===l?r.has(o):r.has(o)||r.has(l)},forEach(o,r){const i=this,l=i.__v_raw,a=ae(l),u=t?$s:e?Jt:Xe;return!e&&Te(a,"iterate",Ft),l.forEach((c,f)=>o.call(r,u(c),u(f),i))}};return Ce(n,e?{add:kn("add"),set:kn("set"),delete:kn("delete"),clear:kn("clear")}:{add(o){!t&&!je(o)&&!vt(o)&&(o=ae(o));const r=ae(this);return $n(r).has.call(r,o)||(r.add(o),dt(r,"add",o,o)),this},set(o,r){!t&&!je(r)&&!vt(r)&&(r=ae(r));const i=ae(this),{has:l,get:a}=$n(i);let u=l.call(i,o);u||(o=ae(o),u=l.call(i,o));const c=a.call(i,o);return i.set(o,r),u?Tt(r,c)&&dt(i,"set",o,r):dt(i,"add",o,r),this},delete(o){const r=ae(this),{has:i,get:l}=$n(r);let a=i.call(r,o);a||(o=ae(o),a=i.call(r,o)),l&&l.call(r,o);const u=r.delete(o);return a&&dt(r,"delete",o,void 0),u},clear(){const o=ae(this),r=o.size!==0,i=o.clear();return r&&dt(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=sl(o,e,t)}),n}function zs(e,t){const n=ol(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ue(n,o)&&o in s?n:s,o,r)}const rl={get:zs(!1,!1)},il={get:zs(!1,!0)},ll={get:zs(!0,!1)};const Ar=new WeakMap,Pr=new WeakMap,Mr=new WeakMap,al=new WeakMap;function cl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ul(e){return e.__v_skip||!Object.isExtensible(e)?0:cl(Ii(e))}function os(e){return vt(e)?e:Ys(e,!1,el,rl,Ar)}function fl(e){return Ys(e,!1,nl,il,Pr)}function ks(e){return Ys(e,!0,tl,ll,Mr)}function Ys(e,t,n,s,o){if(!pe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=ul(e);if(r===0)return e;const i=o.get(e);if(i)return i;const l=new Proxy(e,r===2?s:n);return o.set(e,l),l}function ht(e){return vt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function je(e){return!!(e&&e.__v_isShallow)}function rs(e){return e?!!e.__v_raw:!1}function ae(e){const t=e&&e.__v_raw;return t?ae(t):e}function Js(e){return!ue(e,"__v_skip")&&Object.isExtensible(e)&&fr(e,"__v_skip",!0),e}const Xe=e=>pe(e)?os(e):e,Jt=e=>pe(e)?ks(e):e;function be(e){return e?e.__v_isRef===!0:!1}function B(e){return Or(e,!1)}function dl(e){return Or(e,!0)}function Or(e,t){return be(e)?e:new pl(e,t)}class pl{constructor(t,n){this.dep=new Gs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ae(t),this._value=n?t:Xe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||je(t)||vt(t);t=s?t:ae(t),Tt(t,n)&&(this._rawValue=t,this._value=s?t:Xe(t),this.dep.trigger())}}function ve(e){return be(e)?e.value:e}const hl={get:(e,t,n)=>t==="__v_raw"?e:ve(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return be(o)&&!be(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Ir(e){return ht(e)?e:new Proxy(e,hl)}function gl(e){const t=z(e)?new Array(e.length):{};for(const n in e)t[n]=vl(e,n);return t}class ml{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=ae(t);let o=!0,r=t;if(!z(t)||!Xn(String(n)))do o=!rs(r)||je(r);while(o&&(r=r.__v_raw));this._shallow=o}get value(){let t=this._object[this._key];return this._shallow&&(t=ve(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&be(this._raw[this._key])){const n=this._object[this._key];if(be(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return zi(this._raw,this._key)}}function vl(e,t,n){return new ml(e,t,n)}class yl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Gs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ge!==this)return wr(this,!0),!0}get value(){const t=this.dep.track();return Cr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function bl(e,t,n=!1){let s,o;return ee(e)?s=e:(s=e.get,o=e.set),new yl(s,o,n)}const An={},Nn=new WeakMap;let Rt;function wl(e,t=!1,n=Rt){if(n){let s=Nn.get(n);s||Nn.set(n,s=[]),s.push(e)}}function _l(e,t,n=de){const{immediate:s,deep:o,once:r,scheduler:i,augmentJob:l,call:a}=n,u=A=>o?A:je(A)||o===!1||o===0?pt(A,1):pt(A);let c,f,g,m,b=!1,_=!1;if(be(e)?(f=()=>e.value,b=je(e)):ht(e)?(f=()=>u(e),b=!0):z(e)?(_=!0,b=e.some(A=>ht(A)||je(A)),f=()=>e.map(A=>{if(be(A))return A.value;if(ht(A))return u(A);if(ee(A))return a?a(A,2):A()})):ee(e)?t?f=a?()=>a(e,2):e:f=()=>{if(g){gt();try{g()}finally{mt()}}const A=Rt;Rt=c;try{return a?a(e,3,[m]):e(m)}finally{Rt=A}}:f=lt,t&&o){const A=f,H=o===!0?1/0:o;f=()=>pt(A(),H)}const k=vr(),h=()=>{c.stop(),k&&k.active&&Vs(k.effects,c)};if(r&&t){const A=t;t=(...H)=>{A(...H),h()}}let y=_?new Array(e.length).fill(An):An;const $=A=>{if(!(!(c.flags&1)||!c.dirty&&!A))if(t){const H=c.run();if(o||b||(_?H.some((te,re)=>Tt(te,y[re])):Tt(H,y))){g&&g();const te=Rt;Rt=c;try{const re=[H,y===An?void 0:_&&y[0]===An?[]:y,m];y=H,a?a(t,3,re):t(...re)}finally{Rt=te}}}else c.run()};return l&&l($),c=new yr(f),c.scheduler=i?()=>i($,!1):$,m=A=>wl(A,!1,c),g=c.onStop=()=>{const A=Nn.get(c);if(A){if(a)a(A,4);else for(const H of A)H();Nn.delete(c)}},t?s?$(!0):y=c.run():i?i($.bind(null,!0),!0):c.run(),h.pause=c.pause.bind(c),h.resume=c.resume.bind(c),h.stop=h,h}function pt(e,t=1/0,n){if(t<=0||!pe(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,be(e))pt(e.value,t,n);else if(z(e))for(let s=0;s<e.length;s++)pt(e[s],t,n);else if(Jn(e)||Gt(e))e.forEach(s=>{pt(s,t,n)});else if(ur(e)){for(const s in e)pt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&pt(e[s],t,n)}return e}function xn(e,t,n,s){try{return s?e(...s):e()}catch(o){Cn(o,t,n)}}function Ze(e,t,n,s){if(ee(e)){const o=xn(e,t,n,s);return o&&ar(o)&&o.catch(r=>{Cn(r,t,n)}),o}if(z(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Ze(e[r],t,n,s));return o}}function Cn(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||de;if(t){let l=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const c=l.ec;if(c){for(let f=0;f<c.length;f++)if(c[f](e,a,u)===!1)return}l=l.parent}if(r){gt(),xn(r,null,10,[e,a,u]),mt();return}}xl(e,n,o,s,i)}function xl(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const Pe=[];let rt=-1;const zt=[];let St=null,Bt=0;const Rr=Promise.resolve();let jn=null;function Ht(e){const t=jn||Rr;return e?t.then(this?e.bind(this):e):t}function Cl(e){let t=rt+1,n=Pe.length;for(;t<n;){const s=t+n>>>1,o=Pe[s],r=vn(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function Xs(e){if(!(e.flags&1)){const t=vn(e),n=Pe[Pe.length-1];!n||!(e.flags&2)&&t>=vn(n)?Pe.push(e):Pe.splice(Cl(t),0,e),e.flags|=1,Lr()}}function Lr(){jn||(jn=Rr.then(Fr))}function Sl(e){z(e)?zt.push(...e):St&&e.id===-1?St.splice(Bt+1,0,e):e.flags&1||(zt.push(e),e.flags|=1),Lr()}function mo(e,t,n=rt+1){for(;n<Pe.length;n++){const s=Pe[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Pe.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Dr(e){if(zt.length){const t=[...new Set(zt)].sort((n,s)=>vn(n)-vn(s));if(zt.length=0,St){St.push(...t);return}for(St=t,Bt=0;Bt<St.length;Bt++){const n=St[Bt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}St=null,Bt=0}}const vn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Fr(e){try{for(rt=0;rt<Pe.length;rt++){const t=Pe[rt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),xn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;rt<Pe.length;rt++){const t=Pe[rt];t&&(t.flags&=-2)}rt=-1,Pe.length=0,Dr(),jn=null,(Pe.length||zt.length)&&Fr()}}let Fe=null,Nr=null;function Hn(e){const t=Fe;return Fe=e,Nr=e&&e.type.__scopeId||null,t}function jr(e,t=Fe,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Mo(-1);const r=Hn(t);let i;try{i=e(...o)}finally{Hn(r),s._d&&Mo(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function ze(e,t){if(Fe===null)return e;const n=cs(Fe),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,i,l,a=de]=t[o];r&&(ee(r)&&(r={mounted:r,updated:r}),r.deep&&pt(i),s.push({dir:r,instance:n,value:i,oldValue:void 0,arg:l,modifiers:a}))}return e}function Mt(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let i=0;i<o.length;i++){const l=o[i];r&&(l.oldValue=r[i].value);let a=l.dir[s];a&&(gt(),Ze(a,n,8,[e.el,l,e,t]),mt())}}function Hr(e,t){if(Se){let n=Se.provides;const s=Se.parent&&Se.parent.provides;s===n&&(n=Se.provides=Object.create(s)),n[e]=t}}function $t(e,t,n=!1){const s=oo();if(s||Nt){let o=Nt?Nt._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&ee(t)?t.call(s&&s.proxy):t}}function El(){return!!(oo()||Nt)}const Tl=Symbol.for("v-scx"),$l=()=>$t(Tl);function Je(e,t,n){return Ur(e,t,n)}function Ur(e,t,n=de){const{immediate:s,deep:o,flush:r,once:i}=n,l=Ce({},n),a=t&&s||!t&&r!=="post";let u;if(Xt){if(r==="sync"){const m=$l();u=m.__watcherHandles||(m.__watcherHandles=[])}else if(!a){const m=()=>{};return m.stop=lt,m.resume=lt,m.pause=lt,m}}const c=Se;l.call=(m,b,_)=>Ze(m,c,b,_);let f=!1;r==="post"?l.scheduler=m=>{Ae(m,c&&c.suspense)}:r!=="sync"&&(f=!0,l.scheduler=(m,b)=>{b?m():Xs(m)}),l.augmentJob=m=>{t&&(m.flags|=4),f&&(m.flags|=2,c&&(m.id=c.uid,m.i=c))};const g=_l(e,t,l);return Xt&&(u?u.push(g):a&&g()),g}function kl(e,t,n){const s=this.proxy,o=we(e)?e.includes(".")?Kr(s,e):()=>s[e]:e.bind(s,s);let r;ee(t)?r=t:(r=t.handler,n=t);const i=En(this),l=Ur(o,r.bind(s),n);return i(),l}function Kr(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o<n.length&&s;o++)s=s[n[o]];return s}}const Vr=Symbol("_vte"),Al=e=>e.__isTeleport,cn=e=>e&&(e.disabled||e.disabled===""),vo=e=>e&&(e.defer||e.defer===""),yo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,bo=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,As=(e,t)=>{const n=e&&e.to;return we(n)?t?t(n):null:n},Br={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,i,l,a,u){const{mc:c,pc:f,pbc:g,o:{insert:m,querySelector:b,createText:_,createComment:k}}=u,h=cn(t.props);let{shapeFlag:y,children:$,dynamicChildren:A}=t;if(e==null){const H=t.el=_(""),te=t.anchor=_("");m(H,n,s),m(te,n,s);const re=(P,W)=>{y&16&&c($,P,W,o,r,i,l,a)},V=()=>{const P=t.target=As(t.props,b),W=qr(P,t,_,m);P&&(i!=="svg"&&yo(P)?i="svg":i!=="mathml"&&bo(P)&&(i="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(P),h||(re(P,W),Rn(t,!1)))};h&&(re(n,te),Rn(t,!0)),vo(t.props)?(t.el.__isMounted=!1,Ae(()=>{V(),delete t.el.__isMounted},r)):V()}else{if(vo(t.props)&&e.el.__isMounted===!1){Ae(()=>{Br.process(e,t,n,s,o,r,i,l,a,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const H=t.anchor=e.anchor,te=t.target=e.target,re=t.targetAnchor=e.targetAnchor,V=cn(e.props),P=V?n:te,W=V?H:re;if(i==="svg"||yo(te)?i="svg":(i==="mathml"||bo(te))&&(i="mathml"),A?(g(e.dynamicChildren,A,P,o,r,i,l),no(e,t,!0)):a||f(e,t,P,W,o,r,i,l,!1),h)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Pn(t,n,H,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ne=t.target=As(t.props,b);ne&&Pn(t,ne,null,u,0)}else V&&Pn(t,te,re,u,1);Rn(t,h)}},remove(e,t,n,{um:s,o:{remove:o}},r){const{shapeFlag:i,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:g}=e;if(f&&(o(u),o(c)),r&&o(a),i&16){const m=r||!cn(g);for(let b=0;b<l.length;b++){const _=l[b];s(_,t,n,m,!!_.dynamicChildren)}}},move:Pn,hydrate:Pl};function Pn(e,t,n,{o:{insert:s},m:o},r=2){r===0&&s(e.targetAnchor,t,n);const{el:i,anchor:l,shapeFlag:a,children:u,props:c}=e,f=r===2;if(f&&s(i,t,n),(!f||cn(c))&&a&16)for(let g=0;g<u.length;g++)o(u[g],t,n,2);f&&s(l,t,n)}function Pl(e,t,n,s,o,r,{o:{nextSibling:i,parentNode:l,querySelector:a,insert:u,createText:c}},f){function g(_,k,h,y){k.anchor=f(i(_),k,l(_),n,s,o,r),k.targetStart=h,k.targetAnchor=y}const m=t.target=As(t.props,a),b=cn(t.props);if(m){const _=m._lpa||m.firstChild;if(t.shapeFlag&16)if(b)g(e,t,_,_&&i(_));else{t.anchor=i(e);let k=_;for(;k;){if(k&&k.nodeType===8){if(k.data==="teleport start anchor")t.targetStart=k;else if(k.data==="teleport anchor"){t.targetAnchor=k,m._lpa=t.targetAnchor&&i(t.targetAnchor);break}}k=i(k)}t.targetAnchor||qr(m,t,c,u),f(_&&i(_),t,m,n,s,o,r)}Rn(t,b)}else b&&t.shapeFlag&16&&g(e,t,e,i(e));return t.anchor&&i(t.anchor)}const Wr=Br;function Rn(e,t){const n=e.ctx;if(n&&n.ut){let s,o;for(t?(s=e.el,o=e.anchor):(s=e.targetStart,o=e.targetAnchor);s&&s!==o;)s.nodeType===1&&s.setAttribute("data-v-owner",n.uid),s=s.nextSibling;n.ut()}}function qr(e,t,n,s){const o=t.targetStart=n(""),r=t.targetAnchor=n("");return o[Vr]=r,e&&(s(o,e),s(r,e)),r}const Lt=Symbol("_leaveCb"),Mn=Symbol("_enterCb");function Ml(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return At(()=>{e.isMounted=!0}),Ut(()=>{e.isUnmounting=!0}),e}const Ke=[Function,Array],Ol={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ke,onEnter:Ke,onAfterEnter:Ke,onEnterCancelled:Ke,onBeforeLeave:Ke,onLeave:Ke,onAfterLeave:Ke,onLeaveCancelled:Ke,onBeforeAppear:Ke,onAppear:Ke,onAfterAppear:Ke,onAppearCancelled:Ke};function Il(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Ps(e,t,n,s,o){const{appear:r,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:g,onLeave:m,onAfterLeave:b,onLeaveCancelled:_,onBeforeAppear:k,onAppear:h,onAfterAppear:y,onAppearCancelled:$}=t,A=String(e.key),H=Il(n,e),te=(P,W)=>{P&&Ze(P,s,9,W)},re=(P,W)=>{const ne=W[1];te(P,W),z(P)?P.every(x=>x.length<=1)&&ne():P.length<=1&&ne()},V={mode:i,persisted:l,beforeEnter(P){let W=a;if(!n.isMounted)if(r)W=k||a;else return;P[Lt]&&P[Lt](!0);const ne=H[A];ne&&Wt(e,ne)&&ne.el[Lt]&&ne.el[Lt](),te(W,[P])},enter(P){let W=u,ne=c,x=f;if(!n.isMounted)if(r)W=h||u,ne=y||c,x=$||f;else return;let D=!1;const U=P[Mn]=Z=>{D||(D=!0,Z?te(x,[P]):te(ne,[P]),V.delayedLeave&&V.delayedLeave(),P[Mn]=void 0)};W?re(W,[P,U]):U()},leave(P,W){const ne=String(e.key);if(P[Mn]&&P[Mn](!0),n.isUnmounting)return W();te(g,[P]);let x=!1;const D=P[Lt]=U=>{x||(x=!0,W(),U?te(_,[P]):te(b,[P]),P[Lt]=void 0,H[ne]===e&&delete H[ne])};H[ne]=e,m?re(m,[P,D]):D()},clone(P){return Ps(P,t,n,s)}};return V}function yn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,yn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Gr(e,t=!1,n){let s=[],o=0;for(let r=0;r<e.length;r++){let i=e[r];const l=n==null?i.key:String(n)+String(i.key!=null?i.key:r);i.type===ye?(i.patchFlag&128&&o++,s=s.concat(Gr(i.children,t,l))):(t||i.type!==yt)&&s.push(l!=null?jt(i,{key:l}):i)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function Rl(e,t){return ee(e)?Ce({name:e.name},t,{setup:e}):e}function Zs(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Un=new WeakMap;function un(e,t,n,s,o=!1){if(z(e)){e.forEach((b,_)=>un(b,t&&(z(t)?t[_]:t),n,s,o));return}if(fn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&un(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?cs(s.component):s.el,i=o?null:r,{i:l,r:a}=e,u=t&&t.r,c=l.refs===de?l.refs={}:l.refs,f=l.setupState,g=ae(f),m=f===de?lr:b=>ue(g,b);if(u!=null&&u!==a){if(wo(t),we(u))c[u]=null,m(u)&&(f[u]=null);else if(be(u)){u.value=null;const b=t;b.k&&(c[b.k]=null)}}if(ee(a))xn(a,l,12,[i,c]);else{const b=we(a),_=be(a);if(b||_){const k=()=>{if(e.f){const h=b?m(a)?f[a]:c[a]:a.value;if(o)z(h)&&Vs(h,r);else if(z(h))h.includes(r)||h.push(r);else if(b)c[a]=[r],m(a)&&(f[a]=c[a]);else{const y=[r];a.value=y,e.k&&(c[e.k]=y)}}else b?(c[a]=i,m(a)&&(f[a]=i)):_&&(a.value=i,e.k&&(c[e.k]=i))};if(i){const h=()=>{k(),Un.delete(e)};h.id=-1,Un.set(e,h),Ae(h,n)}else wo(e),k()}}}function wo(e){const t=Un.get(e);t&&(t.flags|=8,Un.delete(e))}const _o=e=>e.nodeType===8;ts().requestIdleCallback;ts().cancelIdleCallback;function Ll(e,t){if(_o(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(_o(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const fn=e=>!!e.type.__asyncLoader;function Dl(e){ee(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,hydrate:r,timeout:i,suspensible:l=!0,onError:a}=e;let u=null,c,f=0;const g=()=>(f++,u=null,m()),m=()=>{let b;return u||(b=u=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),a)return new Promise((k,h)=>{a(_,()=>k(g()),()=>h(_),f+1)});throw _}).then(_=>b!==u&&u?u:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),c=_,_)))};return Rl({name:"AsyncComponentWrapper",__asyncLoader:m,__asyncHydrate(b,_,k){let h=!1;(_.bu||(_.bu=[])).push(()=>h=!0);const y=()=>{h||k()},$=r?()=>{const A=r(y,H=>Ll(b,H));A&&(_.bum||(_.bum=[])).push(A)}:y;c?$():m().then(()=>!_.isUnmounted&&$())},get __asyncResolved(){return c},setup(){const b=Se;if(Zs(b),c)return()=>On(c,b);const _=$=>{u=null,Cn($,b,13,!s)};if(l&&b.suspense||Xt)return m().then($=>()=>On($,b)).catch($=>(_($),()=>s?_e(s,{error:$}):null));const k=B(!1),h=B(),y=B(!!o);return o&&setTimeout(()=>{y.value=!1},o),i!=null&&setTimeout(()=>{if(!k.value&&!h.value){const $=new Error(`Async component timed out after ${i}ms.`);_($),h.value=$}},i),m().then(()=>{k.value=!0,b.parent&&Qs(b.parent.vnode)&&b.parent.update()}).catch($=>{_($),h.value=$}),()=>{if(k.value&&c)return On(c,b);if(h.value&&s)return _e(s,{error:h.value});if(n&&!y.value)return On(n,b)}}})}function On(e,t){const{ref:n,props:s,children:o,ce:r}=t.vnode,i=_e(e,s,o);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const Qs=e=>e.type.__isKeepAlive;function Fl(e,t){zr(e,"a",t)}function Nl(e,t){zr(e,"da",t)}function zr(e,t,n=Se){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(is(t,s,n),n){let o=n.parent;for(;o&&o.parent;)Qs(o.parent.vnode)&&jl(s,t,n,o),o=o.parent}}function jl(e,t,n,s){const o=is(t,e,s,!0);Jr(()=>{Vs(s[t],o)},n)}function is(e,t,n=Se,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{gt();const l=En(n),a=Ze(t,n,e,i);return l(),mt(),a});return s?o.unshift(r):o.push(r),r}}const bt=e=>(t,n=Se)=>{(!Xt||e==="sp")&&is(e,(...s)=>t(...s),n)},Hl=bt("bm"),At=bt("m"),Ul=bt("bu"),Yr=bt("u"),Ut=bt("bum"),Jr=bt("um"),Kl=bt("sp"),Vl=bt("rtg"),Bl=bt("rtc");function Wl(e,t=Se){is("ec",e,t)}const ql="components";function Gl(e,t){return Yl(ql,e,!0,t)||e}const zl=Symbol.for("v-ndc");function Yl(e,t,n=!0,s=!1){const o=Fe||Se;if(o){const r=o.type;{const l=Ia(r,!1);if(l&&(l===t||l===qe(t)||l===Qn(qe(t))))return r}const i=xo(o[e]||r[e],t)||xo(o.appContext[e],t);return!i&&s?r:i}}function xo(e,t){return e&&(e[t]||e[qe(t)]||e[Qn(qe(t))])}function Sn(e,t,n,s){let o;const r=n,i=z(e);if(i||we(e)){const l=i&&ht(e);let a=!1,u=!1;l&&(a=!je(e),u=vt(e),e=ss(e)),o=new Array(e.length);for(let c=0,f=e.length;c<f;c++)o[c]=t(a?u?Jt(Xe(e[c])):Xe(e[c]):e[c],c,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let l=0;l<e;l++)o[l]=t(l+1,l,void 0,r)}else if(pe(e))if(e[Symbol.iterator])o=Array.from(e,(l,a)=>t(l,a,void 0,r));else{const l=Object.keys(e);o=new Array(l.length);for(let a=0,u=l.length;a<u;a++){const c=l[a];o[a]=t(e[c],c,a,r)}}else o=[];return o}const Ms=e=>e?gi(e)?cs(e):Ms(e.parent):null,dn=Ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ms(e.parent),$root:e=>Ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zr(e),$forceUpdate:e=>e.f||(e.f=()=>{Xs(e.update)}),$nextTick:e=>e.n||(e.n=Ht.bind(e.proxy)),$watch:e=>kl.bind(e)}),ms=(e,t)=>e!==de&&!e.__isScriptSetup&&ue(e,t),Jl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(ms(s,t))return i[t]=1,s[t];if(o!==de&&ue(o,t))return i[t]=2,o[t];if(ue(r,t))return i[t]=3,r[t];if(n!==de&&ue(n,t))return i[t]=4,n[t];Os&&(i[t]=0)}}const u=dn[t];let c,f;if(u)return t==="$attrs"&&Te(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==de&&ue(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,ue(f,t))return f[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return ms(o,t)?(o[t]=n,!0):s!==de&&ue(s,t)?(s[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:i}},l){let a;return!!(n[l]||e!==de&&l[0]!=="$"&&ue(e,l)||ms(t,l)||ue(r,l)||ue(s,l)||ue(dn,l)||ue(o.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Co(e){return z(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Os=!0;function Xl(e){const t=Zr(e),n=e.proxy,s=e.ctx;Os=!1,t.beforeCreate&&So(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:g,beforeUpdate:m,updated:b,activated:_,deactivated:k,beforeDestroy:h,beforeUnmount:y,destroyed:$,unmounted:A,render:H,renderTracked:te,renderTriggered:re,errorCaptured:V,serverPrefetch:P,expose:W,inheritAttrs:ne,components:x,directives:D,filters:U}=t;if(u&&Zl(u,s,null),i)for(const J in i){const ce=i[J];ee(ce)&&(s[J]=ce.bind(n))}if(o){const J=o.call(n,n);pe(J)&&(e.data=os(J))}if(Os=!0,r)for(const J in r){const ce=r[J],He=ee(ce)?ce.bind(n,n):ee(ce.get)?ce.get.bind(n,n):lt,ct=!ee(ce)&&ee(ce.set)?ce.set.bind(n):lt,Ue=Re({get:He,set:ct});Object.defineProperty(s,J,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:R=>Ue.value=R})}if(l)for(const J in l)Xr(l[J],s,n,J);if(a){const J=ee(a)?a.call(n):a;Reflect.ownKeys(J).forEach(ce=>{Hr(ce,J[ce])})}c&&So(c,e,"c");function X(J,ce){z(ce)?ce.forEach(He=>J(He.bind(n))):ce&&J(ce.bind(n))}if(X(Hl,f),X(At,g),X(Ul,m),X(Yr,b),X(Fl,_),X(Nl,k),X(Wl,V),X(Bl,te),X(Vl,re),X(Ut,y),X(Jr,A),X(Kl,P),z(W))if(W.length){const J=e.exposed||(e.exposed={});W.forEach(ce=>{Object.defineProperty(J,ce,{get:()=>n[ce],set:He=>n[ce]=He,enumerable:!0})})}else e.exposed||(e.exposed={});H&&e.render===lt&&(e.render=H),ne!=null&&(e.inheritAttrs=ne),x&&(e.components=x),D&&(e.directives=D),P&&Zs(e)}function Zl(e,t,n=lt){z(e)&&(e=Is(e));for(const s in e){const o=e[s];let r;pe(o)?"default"in o?r=$t(o.from||s,o.default,!0):r=$t(o.from||s):r=$t(o),be(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function So(e,t,n){Ze(z(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Xr(e,t,n,s){let o=s.includes(".")?Kr(n,s):()=>n[s];if(we(e)){const r=t[e];ee(r)&&Je(o,r)}else if(ee(e))Je(o,e.bind(n));else if(pe(e))if(z(e))e.forEach(r=>Xr(r,t,n,s));else{const r=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(r)&&Je(o,r,e)}}function Zr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let a;return l?a=l:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(u=>Kn(a,u,i,!0)),Kn(a,t,i)),pe(t)&&r.set(t,a),a}function Kn(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Kn(e,r,n,!0),o&&o.forEach(i=>Kn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Ql[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Ql={data:Eo,props:To,emits:To,methods:sn,computed:sn,beforeCreate:ke,created:ke,beforeMount:ke,mounted:ke,beforeUpdate:ke,updated:ke,beforeDestroy:ke,beforeUnmount:ke,destroyed:ke,unmounted:ke,activated:ke,deactivated:ke,errorCaptured:ke,serverPrefetch:ke,components:sn,directives:sn,watch:ta,provide:Eo,inject:ea};function Eo(e,t){return t?e?function(){return Ce(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function ea(e,t){return sn(Is(e),Is(t))}function Is(e){if(z(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function ke(e,t){return e?[...new Set([].concat(e,t))]:t}function sn(e,t){return e?Ce(Object.create(null),e,t):t}function To(e,t){return e?z(e)&&z(t)?[...new Set([...e,...t])]:Ce(Object.create(null),Co(e),Co(t??{})):t}function ta(e,t){if(!e)return t;if(!t)return e;const n=Ce(Object.create(null),e);for(const s in t)n[s]=ke(e[s],t[s]);return n}function Qr(){return{app:null,config:{isNativeTag:lr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let na=0;function sa(e,t){return function(s,o=null){ee(s)||(s=Ce({},s)),o!=null&&!pe(o)&&(o=null);const r=Qr(),i=new WeakSet,l=[];let a=!1;const u=r.app={_uid:na++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:La,get config(){return r.config},set config(c){},use(c,...f){return i.has(c)||(c&&ee(c.install)?(i.add(c),c.install(u,...f)):ee(c)&&(i.add(c),c(u,...f))),u},mixin(c){return r.mixins.includes(c)||r.mixins.push(c),u},component(c,f){return f?(r.components[c]=f,u):r.components[c]},directive(c,f){return f?(r.directives[c]=f,u):r.directives[c]},mount(c,f,g){if(!a){const m=u._ceVNode||_e(s,o);return m.appContext=r,g===!0?g="svg":g===!1&&(g=void 0),e(m,c,g),a=!0,u._container=c,c.__vue_app__=u,cs(m.component)}},onUnmount(c){l.push(c)},unmount(){a&&(Ze(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(c,f){return r.provides[c]=f,u},runWithContext(c){const f=Nt;Nt=u;try{return c()}finally{Nt=f}}};return u}}let Nt=null;const oa=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${qe(t)}Modifiers`]||e[`${kt(t)}Modifiers`];function ra(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||de;let o=n;const r=t.startsWith("update:"),i=r&&oa(s,t.slice(7));i&&(i.trim&&(o=n.map(c=>we(c)?c.trim():c)),i.number&&(o=n.map(es)));let l,a=s[l=fs(t)]||s[l=fs(qe(t))];!a&&r&&(a=s[l=fs(kt(t))]),a&&Ze(a,e,6,o);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ze(u,e,6,o)}}const ia=new WeakMap;function ei(e,t,n=!1){const s=n?ia:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!ee(e)){const a=u=>{const c=ei(u,t,!0);c&&(l=!0,Ce(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(pe(e)&&s.set(e,null),null):(z(r)?r.forEach(a=>i[a]=null):Ce(i,r),pe(e)&&s.set(e,i),i)}function ls(e,t){return!e||!Yn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,kt(t))||ue(e,t))}function $o(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:f,data:g,setupState:m,ctx:b,inheritAttrs:_}=e,k=Hn(e);let h,y;try{if(n.shapeFlag&4){const A=o||s,H=A;h=it(u.call(H,A,c,f,m,g,b)),y=l}else{const A=t;h=it(A.length>1?A(f,{attrs:l,slots:i,emit:a}):A(f,null)),y=t.props?l:la(l)}}catch(A){pn.length=0,Cn(A,e,1),h=_e(yt)}let $=h;if(y&&_!==!1){const A=Object.keys(y),{shapeFlag:H}=$;A.length&&H&7&&(r&&A.some(Ks)&&(y=aa(y,r)),$=jt($,y,!1,!0))}return n.dirs&&($=jt($,null,!1,!0),$.dirs=$.dirs?$.dirs.concat(n.dirs):n.dirs),n.transition&&yn($,n.transition),h=$,Hn(k),h}const la=e=>{let t;for(const n in e)(n==="class"||n==="style"||Yn(n))&&((t||(t={}))[n]=e[n]);return t},aa=(e,t)=>{const n={};for(const s in e)(!Ks(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ca(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:a}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?ko(s,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const g=c[f];if(i[g]!==s[g]&&!ls(u,g))return!0}}}else return(o||l)&&(!l||!l.$stable)?!0:s===i?!1:s?i?ko(s,i,u):!0:!!i;return!1}function ko(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;o<s.length;o++){const r=s[o];if(t[r]!==e[r]&&!ls(n,r))return!0}return!1}function ua({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const ti={},ni=()=>Object.create(ti),si=e=>Object.getPrototypeOf(e)===ti;function fa(e,t,n,s=!1){const o={},r=ni();e.propsDefaults=Object.create(null),oi(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:fl(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function da(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=ae(o),[a]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f<c.length;f++){let g=c[f];if(ls(e.emitsOptions,g))continue;const m=t[g];if(a)if(ue(r,g))m!==r[g]&&(r[g]=m,u=!0);else{const b=qe(g);o[b]=Rs(a,l,b,m,e,!1)}else m!==r[g]&&(r[g]=m,u=!0)}}}else{oi(e,t,o,r)&&(u=!0);let c;for(const f in l)(!t||!ue(t,f)&&((c=kt(f))===f||!ue(t,c)))&&(a?n&&(n[f]!==void 0||n[c]!==void 0)&&(o[f]=Rs(a,l,f,void 0,e,!0)):delete o[f]);if(r!==l)for(const f in r)(!t||!ue(t,f))&&(delete r[f],u=!0)}u&&dt(e.attrs,"set","")}function oi(e,t,n,s){const[o,r]=e.propsOptions;let i=!1,l;if(t)for(let a in t){if(rn(a))continue;const u=t[a];let c;o&&ue(o,c=qe(a))?!r||!r.includes(c)?n[c]=u:(l||(l={}))[c]=u:ls(e.emitsOptions,a)||(!(a in s)||u!==s[a])&&(s[a]=u,i=!0)}if(r){const a=ae(n),u=l||de;for(let c=0;c<r.length;c++){const f=r[c];n[f]=Rs(o,a,f,u[f],e,!ue(u,f))}}return i}function Rs(e,t,n,s,o,r){const i=e[n];if(i!=null){const l=ue(i,"default");if(l&&s===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&ee(a)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const c=En(o);s=u[n]=a.call(null,t),c()}}else s=a;o.ce&&o.ce._setProp(n,s)}i[0]&&(r&&!l?s=!1:i[1]&&(s===""||s===kt(n))&&(s=!0))}return s}const pa=new WeakMap;function ri(e,t,n=!1){const s=n?pa:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,i={},l=[];let a=!1;if(!ee(e)){const c=f=>{a=!0;const[g,m]=ri(f,t,!0);Ce(i,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!r&&!a)return pe(e)&&s.set(e,qt),qt;if(z(r))for(let c=0;c<r.length;c++){const f=qe(r[c]);Ao(f)&&(i[f]=de)}else if(r)for(const c in r){const f=qe(c);if(Ao(f)){const g=r[c],m=i[f]=z(g)||ee(g)?{type:g}:Ce({},g),b=m.type;let _=!1,k=!0;if(z(b))for(let h=0;h<b.length;++h){const y=b[h],$=ee(y)&&y.name;if($==="Boolean"){_=!0;break}else $==="String"&&(k=!1)}else _=ee(b)&&b.name==="Boolean";m[0]=_,m[1]=k,(_||ue(m,"default"))&&l.push(f)}}const u=[i,l];return pe(e)&&s.set(e,u),u}function Ao(e){return e[0]!=="$"&&!rn(e)}const eo=e=>e==="_"||e==="_ctx"||e==="$stable",to=e=>z(e)?e.map(it):[it(e)],ha=(e,t,n)=>{if(t._n)return t;const s=jr((...o)=>to(t(...o)),n);return s._c=!1,s},ii=(e,t,n)=>{const s=e._ctx;for(const o in e){if(eo(o))continue;const r=e[o];if(ee(r))t[o]=ha(o,r,s);else if(r!=null){const i=to(r);t[o]=()=>i}}},li=(e,t)=>{const n=to(t);e.slots.default=()=>n},ai=(e,t,n)=>{for(const s in t)(n||!eo(s))&&(e[s]=t[s])},ga=(e,t,n)=>{const s=e.slots=ni();if(e.vnode.shapeFlag&32){const o=t._;o?(ai(s,t,n),n&&fr(s,"_",o,!0)):ii(t,s)}else t&&li(e,t)},ma=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=de;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:ai(o,t,n):(r=!t.$stable,ii(t,o)),i=t}else t&&(li(e,t),i={default:1});if(r)for(const l in o)!eo(l)&&i[l]==null&&delete o[l]},Ae=_a;function va(e){return ya(e)}function ya(e,t){const n=ts();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:g,setScopeId:m=lt,insertStaticContent:b}=e,_=(d,p,v,E=null,C=null,S=null,L=void 0,O=null,M=!!p.dynamicChildren)=>{if(d===p)return;d&&!Wt(d,p)&&(E=G(d),R(d,C,S,!0),d=null),p.patchFlag===-2&&(M=!1,p.dynamicChildren=null);const{type:T,ref:Y,shapeFlag:F}=p;switch(T){case as:k(d,p,v,E);break;case yt:h(d,p,v,E);break;case ys:d==null&&y(p,v,E,L);break;case ye:x(d,p,v,E,C,S,L,O,M);break;default:F&1?H(d,p,v,E,C,S,L,O,M):F&6?D(d,p,v,E,C,S,L,O,M):(F&64||F&128)&&T.process(d,p,v,E,C,S,L,O,M,Le)}Y!=null&&C?un(Y,d&&d.ref,S,p||d,!p):Y==null&&d&&d.ref!=null&&un(d.ref,null,S,d,!0)},k=(d,p,v,E)=>{if(d==null)s(p.el=l(p.children),v,E);else{const C=p.el=d.el;p.children!==d.children&&u(C,p.children)}},h=(d,p,v,E)=>{d==null?s(p.el=a(p.children||""),v,E):p.el=d.el},y=(d,p,v,E)=>{[d.el,d.anchor]=b(d.children,p,v,E,d.el,d.anchor)},$=({el:d,anchor:p},v,E)=>{let C;for(;d&&d!==p;)C=g(d),s(d,v,E),d=C;s(p,v,E)},A=({el:d,anchor:p})=>{let v;for(;d&&d!==p;)v=g(d),o(d),d=v;o(p)},H=(d,p,v,E,C,S,L,O,M)=>{if(p.type==="svg"?L="svg":p.type==="math"&&(L="mathml"),d==null)te(p,v,E,C,S,L,O,M);else{const T=d.el&&d.el._isVueCE?d.el:null;try{T&&T._beginPatch(),P(d,p,C,S,L,O,M)}finally{T&&T._endPatch()}}},te=(d,p,v,E,C,S,L,O)=>{let M,T;const{props:Y,shapeFlag:F,transition:q,dirs:Q}=d;if(M=d.el=i(d.type,S,Y&&Y.is,Y),F&8?c(M,d.children):F&16&&V(d.children,M,null,E,C,vs(d,S),L,O),Q&&Mt(d,null,E,"created"),re(M,d,d.scopeId,L,E),Y){for(const he in Y)he!=="value"&&!rn(he)&&r(M,he,null,Y[he],S,E);"value"in Y&&r(M,"value",null,Y.value,S),(T=Y.onVnodeBeforeMount)&&st(T,E,d)}Q&&Mt(d,null,E,"beforeMount");const ie=ba(C,q);ie&&q.beforeEnter(M),s(M,p,v),((T=Y&&Y.onVnodeMounted)||ie||Q)&&Ae(()=>{T&&st(T,E,d),ie&&q.enter(M),Q&&Mt(d,null,E,"mounted")},C)},re=(d,p,v,E,C)=>{if(v&&m(d,v),E)for(let S=0;S<E.length;S++)m(d,E[S]);if(C){let S=C.subTree;if(p===S||fi(S.type)&&(S.ssContent===p||S.ssFallback===p)){const L=C.vnode;re(d,L,L.scopeId,L.slotScopeIds,C.parent)}}},V=(d,p,v,E,C,S,L,O,M=0)=>{for(let T=M;T<d.length;T++){const Y=d[T]=O?Et(d[T]):it(d[T]);_(null,Y,p,v,E,C,S,L,O)}},P=(d,p,v,E,C,S,L)=>{const O=p.el=d.el;let{patchFlag:M,dynamicChildren:T,dirs:Y}=p;M|=d.patchFlag&16;const F=d.props||de,q=p.props||de;let Q;if(v&&Ot(v,!1),(Q=q.onVnodeBeforeUpdate)&&st(Q,v,p,d),Y&&Mt(p,d,v,"beforeUpdate"),v&&Ot(v,!0),(F.innerHTML&&q.innerHTML==null||F.textContent&&q.textContent==null)&&c(O,""),T?W(d.dynamicChildren,T,O,v,E,vs(p,C),S):L||ce(d,p,O,null,v,E,vs(p,C),S,!1),M>0){if(M&16)ne(O,F,q,v,C);else if(M&2&&F.class!==q.class&&r(O,"class",null,q.class,C),M&4&&r(O,"style",F.style,q.style,C),M&8){const ie=p.dynamicProps;for(let he=0;he<ie.length;he++){const fe=ie[he],Oe=F[fe],Ie=q[fe];(Ie!==Oe||fe==="value")&&r(O,fe,Oe,Ie,C,v)}}M&1&&d.children!==p.children&&c(O,p.children)}else!L&&T==null&&ne(O,F,q,v,C);((Q=q.onVnodeUpdated)||Y)&&Ae(()=>{Q&&st(Q,v,p,d),Y&&Mt(p,d,v,"updated")},E)},W=(d,p,v,E,C,S,L)=>{for(let O=0;O<p.length;O++){const M=d[O],T=p[O],Y=M.el&&(M.type===ye||!Wt(M,T)||M.shapeFlag&198)?f(M.el):v;_(M,T,Y,null,E,C,S,L,!0)}},ne=(d,p,v,E,C)=>{if(p!==v){if(p!==de)for(const S in p)!rn(S)&&!(S in v)&&r(d,S,p[S],null,C,E);for(const S in v){if(rn(S))continue;const L=v[S],O=p[S];L!==O&&S!=="value"&&r(d,S,O,L,C,E)}"value"in v&&r(d,"value",p.value,v.value,C)}},x=(d,p,v,E,C,S,L,O,M)=>{const T=p.el=d?d.el:l(""),Y=p.anchor=d?d.anchor:l("");let{patchFlag:F,dynamicChildren:q,slotScopeIds:Q}=p;Q&&(O=O?O.concat(Q):Q),d==null?(s(T,v,E),s(Y,v,E),V(p.children||[],v,Y,C,S,L,O,M)):F>0&&F&64&&q&&d.dynamicChildren&&d.dynamicChildren.length===q.length?(W(d.dynamicChildren,q,v,C,S,L,O),(p.key!=null||C&&p===C.subTree)&&no(d,p,!0)):ce(d,p,v,Y,C,S,L,O,M)},D=(d,p,v,E,C,S,L,O,M)=>{p.slotScopeIds=O,d==null?p.shapeFlag&512?C.ctx.activate(p,v,E,L,M):U(p,v,E,C,S,L,M):Z(d,p,M)},U=(d,p,v,E,C,S,L)=>{const O=d.component=ka(d,E,C);if(Qs(d)&&(O.ctx.renderer=Le),Aa(O,!1,L),O.asyncDep){if(C&&C.registerDep(O,X,L),!d.el){const M=O.subTree=_e(yt);h(null,M,p,v),d.placeholder=M.el}}else X(O,d,p,v,C,S,L)},Z=(d,p,v)=>{const E=p.component=d.component;if(ca(d,p,v))if(E.asyncDep&&!E.asyncResolved){J(E,p,v);return}else E.next=p,E.update();else p.el=d.el,E.vnode=p},X=(d,p,v,E,C,S,L)=>{const O=()=>{if(d.isMounted){let{next:F,bu:q,u:Q,parent:ie,vnode:he}=d;{const tt=ci(d);if(tt){F&&(F.el=he.el,J(d,F,L)),tt.asyncDep.then(()=>{d.isUnmounted||O()});return}}let fe=F,Oe;Ot(d,!1),F?(F.el=he.el,J(d,F,L)):F=he,q&&In(q),(Oe=F.props&&F.props.onVnodeBeforeUpdate)&&st(Oe,ie,F,he),Ot(d,!0);const Ie=$o(d),et=d.subTree;d.subTree=Ie,_(et,Ie,f(et.el),G(et),d,C,S),F.el=Ie.el,fe===null&&ua(d,Ie.el),Q&&Ae(Q,C),(Oe=F.props&&F.props.onVnodeUpdated)&&Ae(()=>st(Oe,ie,F,he),C)}else{let F;const{el:q,props:Q}=p,{bm:ie,m:he,parent:fe,root:Oe,type:Ie}=d,et=fn(p);Ot(d,!1),ie&&In(ie),!et&&(F=Q&&Q.onVnodeBeforeMount)&&st(F,fe,p),Ot(d,!0);{Oe.ce&&Oe.ce._def.shadowRoot!==!1&&Oe.ce._injectChildStyle(Ie);const tt=d.subTree=$o(d);_(null,tt,v,E,d,C,S),p.el=tt.el}if(he&&Ae(he,C),!et&&(F=Q&&Q.onVnodeMounted)){const tt=p;Ae(()=>st(F,fe,tt),C)}(p.shapeFlag&256||fe&&fn(fe.vnode)&&fe.vnode.shapeFlag&256)&&d.a&&Ae(d.a,C),d.isMounted=!0,p=v=E=null}};d.scope.on();const M=d.effect=new yr(O);d.scope.off();const T=d.update=M.run.bind(M),Y=d.job=M.runIfDirty.bind(M);Y.i=d,Y.id=d.uid,M.scheduler=()=>Xs(Y),Ot(d,!0),T()},J=(d,p,v)=>{p.component=d;const E=d.vnode.props;d.vnode=p,d.next=null,da(d,p.props,E,v),ma(d,p.children,v),gt(),mo(d),mt()},ce=(d,p,v,E,C,S,L,O,M=!1)=>{const T=d&&d.children,Y=d?d.shapeFlag:0,F=p.children,{patchFlag:q,shapeFlag:Q}=p;if(q>0){if(q&128){ct(T,F,v,E,C,S,L,O,M);return}else if(q&256){He(T,F,v,E,C,S,L,O,M);return}}Q&8?(Y&16&&Me(T,C,S),F!==T&&c(v,F)):Y&16?Q&16?ct(T,F,v,E,C,S,L,O,M):Me(T,C,S,!0):(Y&8&&c(v,""),Q&16&&V(F,v,E,C,S,L,O,M))},He=(d,p,v,E,C,S,L,O,M)=>{d=d||qt,p=p||qt;const T=d.length,Y=p.length,F=Math.min(T,Y);let q;for(q=0;q<F;q++){const Q=p[q]=M?Et(p[q]):it(p[q]);_(d[q],Q,v,null,C,S,L,O,M)}T>Y?Me(d,C,S,!0,!1,F):V(p,v,E,C,S,L,O,M,F)},ct=(d,p,v,E,C,S,L,O,M)=>{let T=0;const Y=p.length;let F=d.length-1,q=Y-1;for(;T<=F&&T<=q;){const Q=d[T],ie=p[T]=M?Et(p[T]):it(p[T]);if(Wt(Q,ie))_(Q,ie,v,null,C,S,L,O,M);else break;T++}for(;T<=F&&T<=q;){const Q=d[F],ie=p[q]=M?Et(p[q]):it(p[q]);if(Wt(Q,ie))_(Q,ie,v,null,C,S,L,O,M);else break;F--,q--}if(T>F){if(T<=q){const Q=q+1,ie=Q<Y?p[Q].el:E;for(;T<=q;)_(null,p[T]=M?Et(p[T]):it(p[T]),v,ie,C,S,L,O,M),T++}}else if(T>q)for(;T<=F;)R(d[T],C,S,!0),T++;else{const Q=T,ie=T,he=new Map;for(T=ie;T<=q;T++){const De=p[T]=M?Et(p[T]):it(p[T]);De.key!=null&&he.set(De.key,T)}let fe,Oe=0;const Ie=q-ie+1;let et=!1,tt=0;const Qt=new Array(Ie);for(T=0;T<Ie;T++)Qt[T]=0;for(T=Q;T<=F;T++){const De=d[T];if(Oe>=Ie){R(De,C,S,!0);continue}let nt;if(De.key!=null)nt=he.get(De.key);else for(fe=ie;fe<=q;fe++)if(Qt[fe-ie]===0&&Wt(De,p[fe])){nt=fe;break}nt===void 0?R(De,C,S,!0):(Qt[nt-ie]=T+1,nt>=tt?tt=nt:et=!0,_(De,p[nt],v,null,C,S,L,O,M),Oe++)}const ao=et?wa(Qt):qt;for(fe=ao.length-1,T=Ie-1;T>=0;T--){const De=ie+T,nt=p[De],co=p[De+1],uo=De+1<Y?co.el||ui(co):E;Qt[T]===0?_(null,nt,v,uo,C,S,L,O,M):et&&(fe<0||T!==ao[fe]?Ue(nt,v,uo,2):fe--)}}},Ue=(d,p,v,E,C=null)=>{const{el:S,type:L,transition:O,children:M,shapeFlag:T}=d;if(T&6){Ue(d.component.subTree,p,v,E);return}if(T&128){d.suspense.move(p,v,E);return}if(T&64){L.move(d,p,v,Le);return}if(L===ye){s(S,p,v);for(let F=0;F<M.length;F++)Ue(M[F],p,v,E);s(d.anchor,p,v);return}if(L===ys){$(d,p,v);return}if(E!==2&&T&1&&O)if(E===0)O.beforeEnter(S),s(S,p,v),Ae(()=>O.enter(S),C);else{const{leave:F,delayLeave:q,afterLeave:Q}=O,ie=()=>{d.ctx.isUnmounted?o(S):s(S,p,v)},he=()=>{S._isLeaving&&S[Lt](!0),F(S,()=>{ie(),Q&&Q()})};q?q(S,ie,he):he()}else s(S,p,v)},R=(d,p,v,E=!1,C=!1)=>{const{type:S,props:L,ref:O,children:M,dynamicChildren:T,shapeFlag:Y,patchFlag:F,dirs:q,cacheIndex:Q}=d;if(F===-2&&(C=!1),O!=null&&(gt(),un(O,null,v,d,!0),mt()),Q!=null&&(p.renderCache[Q]=void 0),Y&256){p.ctx.deactivate(d);return}const ie=Y&1&&q,he=!fn(d);let fe;if(he&&(fe=L&&L.onVnodeBeforeUnmount)&&st(fe,p,d),Y&6)me(d.component,v,E);else{if(Y&128){d.suspense.unmount(v,E);return}ie&&Mt(d,null,p,"beforeUnmount"),Y&64?d.type.remove(d,p,v,Le,E):T&&!T.hasOnce&&(S!==ye||F>0&&F&64)?Me(T,p,v,!1,!0):(S===ye&&F&384||!C&&Y&16)&&Me(M,p,v),E&&N(d)}(he&&(fe=L&&L.onVnodeUnmounted)||ie)&&Ae(()=>{fe&&st(fe,p,d),ie&&Mt(d,null,p,"unmounted")},v)},N=d=>{const{type:p,el:v,anchor:E,transition:C}=d;if(p===ye){oe(v,E);return}if(p===ys){A(d);return}const S=()=>{o(v),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(d.shapeFlag&1&&C&&!C.persisted){const{leave:L,delayLeave:O}=C,M=()=>L(v,S);O?O(d.el,S,M):M()}else S()},oe=(d,p)=>{let v;for(;d!==p;)v=g(d),o(d),d=v;o(p)},me=(d,p,v)=>{const{bum:E,scope:C,job:S,subTree:L,um:O,m:M,a:T}=d;Po(M),Po(T),E&&In(E),C.stop(),S&&(S.flags|=8,R(L,d,p,v)),O&&Ae(O,p),Ae(()=>{d.isUnmounted=!0},p)},Me=(d,p,v,E=!1,C=!1,S=0)=>{for(let L=S;L<d.length;L++)R(d[L],p,v,E,C)},G=d=>{if(d.shapeFlag&6)return G(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=g(d.anchor||d.el),v=p&&p[Vr];return v?g(v):p};let j=!1;const xe=(d,p,v)=>{let E;d==null?p._vnode&&(R(p._vnode,null,null,!0),E=p._vnode.component):_(p._vnode||null,d,p,null,null,null,v),p._vnode=d,j||(j=!0,mo(E),Dr(),j=!1)},Le={p:_,um:R,m:Ue,r:N,mt:U,mc:V,pc:ce,pbc:W,n:G,o:e};return{render:xe,hydrate:void 0,createApp:sa(xe)}}function vs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ot({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ba(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function no(e,t,n=!1){const s=e.children,o=t.children;if(z(s)&&z(o))for(let r=0;r<s.length;r++){const i=s[r];let l=o[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=o[r]=Et(o[r]),l.el=i.el),!n&&l.patchFlag!==-2&&no(i,l)),l.type===as&&(l.patchFlag!==-1?l.el=i.el:l.__elIndex=r+(e.type===ye?1:0)),l.type===yt&&!l.el&&(l.el=i.el)}}function wa(e){const t=e.slice(),n=[0];let s,o,r,i,l;const a=e.length;for(s=0;s<a;s++){const u=e[s];if(u!==0){if(o=n[n.length-1],e[o]<u){t[s]=o,n.push(s);continue}for(r=0,i=n.length-1;r<i;)l=r+i>>1,e[n[l]]<u?r=l+1:i=l;u<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}function ci(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ci(t)}function Po(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function ui(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?ui(t.subTree):null}const fi=e=>e.__isSuspense;function _a(e,t){t&&t.pendingBranch?z(e)?t.effects.push(...e):t.effects.push(e):Sl(e)}const ye=Symbol.for("v-fgt"),as=Symbol.for("v-txt"),yt=Symbol.for("v-cmt"),ys=Symbol.for("v-stc"),pn=[];let Ne=null;function I(e=!1){pn.push(Ne=e?null:[])}function xa(){pn.pop(),Ne=pn[pn.length-1]||null}let bn=1;function Mo(e,t=!1){bn+=e,e<0&&Ne&&t&&(Ne.hasOnce=!0)}function di(e){return e.dynamicChildren=bn>0?Ne||qt:null,xa(),bn>0&&Ne&&Ne.push(e),e}function K(e,t,n,s,o,r){return di(w(e,t,n,s,o,r,!0))}function Ve(e,t,n,s,o){return di(_e(e,t,n,s,o,!0))}function pi(e){return e?e.__v_isVNode===!0:!1}function Wt(e,t){return e.type===t.type&&e.key===t.key}const hi=({key:e})=>e??null,Ln=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?we(e)||be(e)||ee(e)?{i:Fe,r:e,k:t,f:!!n}:e:null);function w(e,t=null,n=null,s=0,o=null,r=e===ye?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hi(t),ref:t&&Ln(t),scopeId:Nr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Fe};return l?(so(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=we(n)?8:16),bn>0&&!i&&Ne&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&Ne.push(a),a}const _e=Ca;function Ca(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===zl)&&(e=yt),pi(e)){const l=jt(e,t,!0);return n&&so(l,n),bn>0&&!r&&Ne&&(l.shapeFlag&6?Ne[Ne.indexOf(e)]=l:Ne.push(l)),l.patchFlag=-2,l}if(Ra(e)&&(e=e.__vccOpts),t){t=Sa(t);let{class:l,style:a}=t;l&&!we(l)&&(t.class=We(l)),pe(a)&&(rs(a)&&!z(a)&&(a=Ce({},a)),t.style=_n(a))}const i=we(e)?1:fi(e)?128:Al(e)?64:pe(e)?4:ee(e)?2:0;return w(e,t,n,s,o,i,r,!0)}function Sa(e){return e?rs(e)||si(e)?Ce({},e):e:null}function jt(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:i,children:l,transition:a}=e,u=t?Ea(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&hi(u),ref:t&&t.ref?n&&r?z(r)?r.concat(Ln(t)):[r,Ln(t)]:Ln(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&jt(e.ssContent),ssFallback:e.ssFallback&&jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&yn(c,a.clone(c)),c}function Be(e=" ",t=0){return _e(as,null,e,t)}function le(e="",t=!1){return t?(I(),Ve(yt,null,e)):_e(yt,null,e)}function it(e){return e==null||typeof e=="boolean"?_e(yt):z(e)?_e(ye,null,e.slice()):pi(e)?Et(e):_e(as,null,String(e))}function Et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:jt(e)}function so(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(z(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),so(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!si(t)?t._ctx=Fe:o===3&&Fe&&(Fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ee(t)?(t={default:t,_ctx:Fe},n=32):(t=String(t),s&64?(n=16,t=[Be(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ea(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const o in s)if(o==="class")t.class!==s.class&&(t.class=We([t.class,s.class]));else if(o==="style")t.style=_n([t.style,s.style]);else if(Yn(o)){const r=t[o],i=s[o];i&&r!==i&&!(z(r)&&r.includes(i))&&(t[o]=r?[].concat(r,i):i)}else o!==""&&(t[o]=s[o])}return t}function st(e,t,n,s=null){Ze(e,t,7,[n,s])}const Ta=Qr();let $a=0;function ka(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||Ta,r={uid:$a++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new gr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:ri(s,o),emitsOptions:ei(s,o),emit:null,emitted:null,propsDefaults:de,inheritAttrs:s.inheritAttrs,ctx:de,data:de,props:de,attrs:de,slots:de,refs:de,setupState:de,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=ra.bind(null,r),e.ce&&e.ce(r),r}let Se=null;const oo=()=>Se||Fe;let Vn,Ls;{const e=ts(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(i=>i(r)):o[0](r)}};Vn=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),Ls=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const En=e=>{const t=Se;return Vn(e),e.scope.on(),()=>{e.scope.off(),Vn(t)}},Oo=()=>{Se&&Se.scope.off(),Vn(null)};function gi(e){return e.vnode.shapeFlag&4}let Xt=!1;function Aa(e,t=!1,n=!1){t&&Ls(t);const{props:s,children:o}=e.vnode,r=gi(e);fa(e,s,r,t),ga(e,o,n||t);const i=r?Pa(e,t):void 0;return t&&Ls(!1),i}function Pa(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Jl);const{setup:s}=n;if(s){gt();const o=e.setupContext=s.length>1?Oa(e):null,r=En(e),i=xn(s,e,0,[e.props,o]),l=ar(i);if(mt(),r(),(l||e.sp)&&!fn(e)&&Zs(e),l){if(i.then(Oo,Oo),t)return i.then(a=>{Io(e,a)}).catch(a=>{Cn(a,e,0)});e.asyncDep=i}else Io(e,i)}else mi(e)}function Io(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:pe(t)&&(e.setupState=Ir(t)),mi(e)}function mi(e,t,n){const s=e.type;e.render||(e.render=s.render||lt);{const o=En(e);gt();try{Xl(e)}finally{mt(),o()}}}const Ma={get(e,t){return Te(e,"get",""),e[t]}};function Oa(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ma),slots:e.slots,emit:e.emit,expose:t}}function cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ir(Js(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in dn)return dn[n](e)},has(t,n){return n in t||n in dn}})):e.proxy}function Ia(e,t=!0){return ee(e)?e.displayName||e.name:e.name||t&&e.__name}function Ra(e){return ee(e)&&"__vccOpts"in e}const Re=(e,t)=>bl(e,t,Xt),La="3.5.27";let Ds;const Ro=typeof window<"u"&&window.trustedTypes;if(Ro)try{Ds=Ro.createPolicy("vue",{createHTML:e=>e})}catch{}const vi=Ds?e=>Ds.createHTML(e):e=>e,Da="http://www.w3.org/2000/svg",Fa="http://www.w3.org/1998/Math/MathML",ft=typeof document<"u"?document:null,Lo=ft&&ft.createElement("template"),Na={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?ft.createElementNS(Da,e):t==="mathml"?ft.createElementNS(Fa,e):n?ft.createElement(e,{is:n}):ft.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>ft.createTextNode(e),createComment:e=>ft.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ft.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{Lo.innerHTML=vi(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=Lo.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},wt="transition",tn="animation",Zt=Symbol("_vtc"),yi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ja=Ce({},Ol,yi),It=(e,t=[])=>{z(e)?e.forEach(n=>n(...t)):e&&e(...t)},Do=e=>e?z(e)?e.some(t=>t.length>1):e.length>1:!1;function Ha(e){const t={};for(const x in e)x in yi||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=r,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,b=Ua(o),_=b&&b[0],k=b&&b[1],{onBeforeEnter:h,onEnter:y,onEnterCancelled:$,onLeave:A,onLeaveCancelled:H,onBeforeAppear:te=h,onAppear:re=y,onAppearCancelled:V=$}=t,P=(x,D,U,Z)=>{x._enterCancelled=Z,_t(x,D?c:l),_t(x,D?u:i),U&&U()},W=(x,D)=>{x._isLeaving=!1,_t(x,f),_t(x,m),_t(x,g),D&&D()},ne=x=>(D,U)=>{const Z=x?re:y,X=()=>P(D,x,U);It(Z,[D,X]),Fo(()=>{_t(D,x?a:r),ot(D,x?c:l),Do(Z)||No(D,s,_,X)})};return Ce(t,{onBeforeEnter(x){It(h,[x]),ot(x,r),ot(x,i)},onBeforeAppear(x){It(te,[x]),ot(x,a),ot(x,u)},onEnter:ne(!1),onAppear:ne(!0),onLeave(x,D){x._isLeaving=!0;const U=()=>W(x,D);ot(x,f),x._enterCancelled?(ot(x,g),Fs(x)):(Fs(x),ot(x,g)),Fo(()=>{x._isLeaving&&(_t(x,f),ot(x,m),Do(A)||No(x,s,k,U))}),It(A,[x,U])},onEnterCancelled(x){P(x,!1,void 0,!0),It($,[x])},onAppearCancelled(x){P(x,!0,void 0,!0),It(V,[x])},onLeaveCancelled(x){W(x),It(H,[x])}})}function Ua(e){if(e==null)return null;if(pe(e))return[bs(e.enter),bs(e.leave)];{const t=bs(e);return[t,t]}}function bs(e){return Di(e)}function ot(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Zt]||(e[Zt]=new Set)).add(t)}function _t(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Zt];n&&(n.delete(t),n.size||(e[Zt]=void 0))}function Fo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ka=0;function No(e,t,n,s){const o=e._endId=++Ka,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:i,timeout:l,propCount:a}=bi(e,t);if(!i)return s();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,g),r()},g=m=>{m.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},l+1),e.addEventListener(u,g)}function bi(e,t){const n=window.getComputedStyle(e),s=b=>(n[b]||"").split(", "),o=s(`${wt}Delay`),r=s(`${wt}Duration`),i=jo(o,r),l=s(`${tn}Delay`),a=s(`${tn}Duration`),u=jo(l,a);let c=null,f=0,g=0;t===wt?i>0&&(c=wt,f=i,g=r.length):t===tn?u>0&&(c=tn,f=u,g=a.length):(f=Math.max(i,u),c=f>0?i>u?wt:tn:null,g=c?c===wt?r.length:a.length:0);const m=c===wt&&/\b(?:transform|all)(?:,|$)/.test(s(`${wt}Property`).toString());return{type:c,timeout:f,propCount:g,hasTransform:m}}function jo(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>Ho(n)+Ho(e[s])))}function Ho(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Fs(e){return(e?e.ownerDocument:document).body.offsetHeight}function Va(e,t,n){const s=e[Zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Bn=Symbol("_vod"),wi=Symbol("_vsh"),on={name:"show",beforeMount(e,{value:t},{transition:n}){e[Bn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):nn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),nn(e,!0),s.enter(e)):s.leave(e,()=>{nn(e,!1)}):nn(e,t))},beforeUnmount(e,{value:t}){nn(e,t)}};function nn(e,t){e.style.display=t?e[Bn]:"none",e[wi]=!t}const Ba=Symbol(""),Wa=/(?:^|;)\s*display\s*:/;function qa(e,t,n){const s=e.style,o=we(n);let r=!1;if(n&&!o){if(t)if(we(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Dn(s,l,"")}else for(const i in t)n[i]==null&&Dn(s,i,"");for(const i in n)i==="display"&&(r=!0),Dn(s,i,n[i])}else if(o){if(t!==n){const i=s[Ba];i&&(n+=";"+i),s.cssText=n,r=Wa.test(n)}}else t&&e.removeAttribute("style");Bn in e&&(e[Bn]=r?s.display:"",e[wi]&&(s.display="none"))}const Uo=/\s*!important$/;function Dn(e,t,n){if(z(n))n.forEach(s=>Dn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ga(e,t);Uo.test(n)?e.setProperty(kt(s),n.replace(Uo,""),"important"):e[s]=n}}const Ko=["Webkit","Moz","ms"],ws={};function Ga(e,t){const n=ws[t];if(n)return n;let s=qe(t);if(s!=="filter"&&s in e)return ws[t]=s;s=Qn(s);for(let o=0;o<Ko.length;o++){const r=Ko[o]+s;if(r in e)return ws[t]=r}return t}const Vo="http://www.w3.org/1999/xlink";function Bo(e,t,n,s,o,r=Ki(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Vo,t.slice(6,t.length)):e.setAttributeNS(Vo,t,n):n==null||r&&!dr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":at(n)?String(n):n)}function Wo(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?vi(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const l=r==="OPTION"?e.getAttribute("value")||"":e.value,a=n==null?e.type==="checkbox"?"on":"":String(n);(l!==a||!("_value"in e))&&(e.value=a),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=dr(n):n==null&&l==="string"?(n="",i=!0):l==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(o||t)}function Dt(e,t,n,s){e.addEventListener(t,n,s)}function za(e,t,n,s){e.removeEventListener(t,n,s)}const qo=Symbol("_vei");function Ya(e,t,n,s,o=null){const r=e[qo]||(e[qo]={}),i=r[t];if(s&&i)i.value=s;else{const[l,a]=Ja(t);if(s){const u=r[t]=Qa(s,o);Dt(e,l,u,a)}else i&&(za(e,l,i,a),r[t]=void 0)}}const Go=/(?:Once|Passive|Capture)$/;function Ja(e){let t;if(Go.test(e)){t={};let s;for(;s=e.match(Go);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):kt(e.slice(2)),t]}let _s=0;const Xa=Promise.resolve(),Za=()=>_s||(Xa.then(()=>_s=0),_s=Date.now());function Qa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(ec(s,n.value),t,5,[s])};return n.value=e,n.attached=Za(),n}function ec(e,t){if(z(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const zo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,tc=(e,t,n,s,o,r)=>{const i=o==="svg";t==="class"?Va(e,s,i):t==="style"?qa(e,n,s):Yn(t)?Ks(t)||Ya(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):nc(e,t,s,i))?(Wo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Bo(e,t,s,i,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!we(s))?Wo(e,qe(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Bo(e,t,s,i))};function nc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&zo(t)&&ee(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return zo(t)&&we(n)?!1:t in e}const _i=new WeakMap,xi=new WeakMap,Wn=Symbol("_moveCb"),Yo=Symbol("_enterCb"),sc=e=>(delete e.props.mode,e),oc=sc({name:"TransitionGroup",props:Ce({},ja,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=oo(),s=Ml();let o,r;return Yr(()=>{if(!o.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!cc(o[0].el,n.vnode.el,i)){o=[];return}o.forEach(ic),o.forEach(lc);const l=o.filter(ac);Fs(n.vnode.el),l.forEach(a=>{const u=a.el,c=u.style;ot(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[Wn]=g=>{g&&g.target!==u||(!g||g.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",f),u[Wn]=null,_t(u,i))};u.addEventListener("transitionend",f)}),o=[]}),()=>{const i=ae(e),l=Ha(i);let a=i.tag||ye;if(o=[],r)for(let u=0;u<r.length;u++){const c=r[u];c.el&&c.el instanceof Element&&(o.push(c),yn(c,Ps(c,l,s,n)),_i.set(c,{left:c.el.offsetLeft,top:c.el.offsetTop}))}r=t.default?Gr(t.default()):[];for(let u=0;u<r.length;u++){const c=r[u];c.key!=null&&yn(c,Ps(c,l,s,n))}return _e(a,null,r)}}}),rc=oc;function ic(e){const t=e.el;t[Wn]&&t[Wn](),t[Yo]&&t[Yo]()}function lc(e){xi.set(e,{left:e.el.offsetLeft,top:e.el.offsetTop})}function ac(e){const t=_i.get(e),n=xi.get(e),s=t.left-n.left,o=t.top-n.top;if(s||o){const r=e.el.style;return r.transform=r.webkitTransform=`translate(${s}px,${o}px)`,r.transitionDuration="0s",e}}function cc(e,t,n){const s=e.cloneNode(),o=e[Zt];o&&o.forEach(l=>{l.split(/\s+/).forEach(a=>a&&s.classList.remove(a))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:i}=bi(s);return r.removeChild(s),i}const qn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return z(t)?n=>In(t,n):t};function uc(e){e.target.composing=!0}function Jo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Yt=Symbol("_assign");function Xo(e,t,n){return t&&(e=e.trim()),n&&(e=es(e)),e}const Tn={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[Yt]=qn(o);const r=s||o.props&&o.props.type==="number";Dt(e,t?"change":"input",i=>{i.target.composing||e[Yt](Xo(e.value,n,r))}),(n||r)&&Dt(e,"change",()=>{e.value=Xo(e.value,n,r)}),t||(Dt(e,"compositionstart",uc),Dt(e,"compositionend",Jo),Dt(e,"change",Jo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},i){if(e[Yt]=qn(i),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?es(e.value):e.value,a=t??"";l!==a&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a))}},fc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=Jn(t);Dt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?es(Gn(i)):Gn(i));e[Yt](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,Ht(()=>{e._assigning=!1})}),e[Yt]=qn(s)},mounted(e,{value:t}){Zo(e,t)},beforeUpdate(e,t,n){e[Yt]=qn(n)},updated(e,{value:t}){e._assigning||Zo(e,t)}};function Zo(e,t){const n=e.multiple,s=z(t);if(!(n&&!s&&!Jn(t))){for(let o=0,r=e.options.length;o<r;o++){const i=e.options[o],l=Gn(i);if(n)if(s){const a=typeof l;a==="string"||a==="number"?i.selected=t.some(u=>String(u)===String(l)):i.selected=Bi(t,l)>-1}else i.selected=t.has(l);else if(ns(Gn(i),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Gn(e){return"_value"in e?e._value:e.value}const dc=["ctrl","shift","alt","meta"],pc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>dc.some(n=>e[`${n}Key`]&&!t.includes(n))},$e=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...r)=>{for(let i=0;i<t.length;i++){const l=pc[t[i]];if(l&&l(o,t))return}return e(o,...r)}))},hc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},zn=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const r=kt(o.key);if(t.some(i=>i===r||hc[i]===r))return e(o)}))},gc=Ce({patchProp:tc},Na);let Qo;function mc(){return Qo||(Qo=va(gc))}const vc=((...e)=>{const t=mc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=bc(s);if(!o)return;const r=t._component;!ee(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,yc(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t});function yc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function bc(e){return we(e)?document.querySelector(e):e}let Ci;const us=e=>Ci=e,Si=Symbol();function Ns(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var hn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(hn||(hn={}));function wc(){const e=mr(!0),t=e.run(()=>B({}));let n=[],s=[];const o=Js({install(r){us(o),o._a=r,r.provide(Si,o),r.config.globalProperties.$pinia=o,s.forEach(i=>n.push(i)),s=[]},use(r){return this._a?n.push(r):s.push(r),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return o}const Ei=()=>{};function er(e,t,n,s=Ei){e.add(t);const o=()=>{e.delete(t)&&s()};return!n&&vr()&&Wi(o),o}function Vt(e,...t){e.forEach(n=>{n(...t)})}const _c=e=>e(),tr=Symbol(),xs=Symbol();function js(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],o=e[n];Ns(o)&&Ns(s)&&e.hasOwnProperty(n)&&!be(s)&&!ht(s)?e[n]=js(o,s):e[n]=s}return e}const xc=Symbol();function Cc(e){return!Ns(e)||!Object.prototype.hasOwnProperty.call(e,xc)}const{assign:xt}=Object;function Sc(e){return!!(be(e)&&e.effect)}function Ec(e,t,n,s){const{state:o,actions:r,getters:i}=t,l=n.state.value[e];let a;function u(){l||(n.state.value[e]=o?o():{});const c=gl(n.state.value[e]);return xt(c,r,Object.keys(i||{}).reduce((f,g)=>(f[g]=Js(Re(()=>{us(n);const m=n._s.get(e);return i[g].call(m,m)})),f),{}))}return a=Ti(e,u,t,n,s,!0),a}function Ti(e,t,n={},s,o,r){let i;const l=xt({actions:{}},n),a={deep:!0};let u,c,f=new Set,g=new Set,m;const b=s.state.value[e];!r&&!b&&(s.state.value[e]={});let _;function k(V){let P;u=c=!1,typeof V=="function"?(V(s.state.value[e]),P={type:hn.patchFunction,storeId:e,events:m}):(js(s.state.value[e],V),P={type:hn.patchObject,payload:V,storeId:e,events:m});const W=_=Symbol();Ht().then(()=>{_===W&&(u=!0)}),c=!0,Vt(f,P,s.state.value[e])}const h=r?function(){const{state:P}=n,W=P?P():{};this.$patch(ne=>{xt(ne,W)})}:Ei;function y(){i.stop(),f.clear(),g.clear(),s._s.delete(e)}const $=(V,P="")=>{if(tr in V)return V[xs]=P,V;const W=function(){us(s);const ne=Array.from(arguments),x=new Set,D=new Set;function U(J){x.add(J)}function Z(J){D.add(J)}Vt(g,{args:ne,name:W[xs],store:H,after:U,onError:Z});let X;try{X=V.apply(this&&this.$id===e?this:H,ne)}catch(J){throw Vt(D,J),J}return X instanceof Promise?X.then(J=>(Vt(x,J),J)).catch(J=>(Vt(D,J),Promise.reject(J))):(Vt(x,X),X)};return W[tr]=!0,W[xs]=P,W},A={_p:s,$id:e,$onAction:er.bind(null,g),$patch:k,$reset:h,$subscribe(V,P={}){const W=er(f,V,P.detached,()=>ne()),ne=i.run(()=>Je(()=>s.state.value[e],x=>{(P.flush==="sync"?c:u)&&V({storeId:e,type:hn.direct,events:m},x)},xt({},a,P)));return W},$dispose:y},H=os(A);s._s.set(e,H);const re=(s._a&&s._a.runWithContext||_c)(()=>s._e.run(()=>(i=mr()).run(()=>t({action:$}))));for(const V in re){const P=re[V];if(be(P)&&!Sc(P)||ht(P))r||(b&&Cc(P)&&(be(P)?P.value=b[V]:js(P,b[V])),s.state.value[e][V]=P);else if(typeof P=="function"){const W=$(P,V);re[V]=W,l.actions[V]=P}}return xt(H,re),xt(ae(H),re),Object.defineProperty(H,"$state",{get:()=>s.state.value[e],set:V=>{k(P=>{xt(P,V)})}}),s._p.forEach(V=>{xt(H,i.run(()=>V({store:H,app:s._a,pinia:s,options:l})))}),b&&r&&n.hydrate&&n.hydrate(H.$state,b),u=!0,c=!0,H}function Tc(e,t,n){let s;const o=typeof t=="function";s=o?n:t;function r(i,l){const a=El();return i=i||(a?$t(Si,null):null),i&&us(i),i=Ci,i._s.has(e)||(o?Ti(e,t,s,i):Ec(e,s,i)),i._s.get(e)}return r.$id=e,r}const Pt=Tc("sessions",()=>{const e=B([]),t=Re(()=>[...e.value].sort((x,D)=>{if(!x.alias)return D.alias?1:0;if(!D.alias)return-1;const U=x.alias.toLowerCase(),Z=D.alias.toLowerCase();return U<Z?-1:U>Z?1:0})),n=B([]),s=B(null),o=B(!1),r=B(!1),i=B(0);let l=null,a=null,u=1e3;async function c(x,D={}){const U=await fetch(x,D);if(U.status===401&&(r.value=!1),!U.ok){const Z=await U.json().catch(()=>({}));throw Object.assign(new Error(Z.error||`Request failed (${U.status})`),{status:U.status})}return U}async function f(x,D=!1){const Z=await(await c(`/api/sessions/${encodeURIComponent(x)}/root`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repin:D})})).json(),X=e.value.find(J=>J.name===x);return X&&(X.root=Z.root),Z.root}function g(){i.value++}async function m(){try{const D=await(await fetch("/api/auth/status")).json();o.value=!!D.authRequired,r.value=!!D.authenticated}catch{r.value=!1}return r.value}async function b(x){const D=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:x})});if(!D.ok){const U=await D.json().catch(()=>({}));throw new Error(U.error||"Login failed")}r.value=!0}async function _(){try{await fetch("/api/auth/logout",{method:"POST"})}catch{}r.value=!1,e.value=[],s.value=null,l&&(l.onclose=null,l.close(),l=null)}async function k(){const x=await fetch("/api/sessions");if(x.status===401){r.value=!1;return}const D=await x.json();e.value=D.sessions}async function h(){const D=await(await fetch("/api/sessions/shells")).json();n.value=D.shells}async function y(x,D){const U=await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:x,shell:D})});if(!U.ok){const X=await U.json();throw new Error(X.error)}const Z=await U.json();s.value=Z.name,await k()}async function $(x){const D=await fetch(`/api/sessions/${x}/stop`,{method:"POST"});if(!D.ok){const U=await D.json();throw new Error(U.error)}await k()}async function A(x){const D=await fetch(`/api/sessions/${x}/restart`,{method:"POST"});if(!D.ok){const U=await D.json();throw new Error(U.error)}await k()}async function H(x,D){const U=await fetch(`/api/sessions/${x}/alias`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:D})});if(!U.ok){const Z=await U.json();throw new Error(Z.error)}await k()}async function te(x){const D=await fetch(`/api/sessions/${x}`,{method:"DELETE"});if(!D.ok){const U=await D.json();throw new Error(U.error)}s.value===x&&(s.value=null),await k()}function re(x){s.value=x}function V(){l&&(l.onclose=null,l.close());const x=location.protocol==="https:"?"wss":"ws";l=new WebSocket(`${x}://${location.host}/ws`),l.onmessage=D=>{let U=null,Z=null;try{({event:U,data:Z}=JSON.parse(D.data))}catch{}if(U==="session:title"&&Z&&Z.name){const X=e.value.find(J=>J.name===Z.name);if(X){X.title=Z.title,X.command=Z.command,X.outputActive=!!Z.outputActive;return}}if(U==="session:root"&&Z?.name){const X=e.value.find(J=>J.name===Z.name);X&&(X.root=Z.root);return}k()},l.onopen=()=>{u=1e3,k()},l.onclose=()=>{P()}}function P(){a||(a=setTimeout(()=>{a=null,V(),u=Math.min(u*2,3e4)},u))}function W(){k(),h(),V()}async function ne({command:x,name:D}){return y(D||null,x||null)}return{sessions:e,sortedSessions:t,shells:n,current:s,authRequired:o,authenticated:r,fileRevision:i,apiRequest:c,pinRoot:f,refreshFiles:g,init:W,checkAuth:m,login:b,logout:_,fetchSessions:k,createSession:y,create:ne,stopSession:$,restartSession:A,setAlias:H,removeSession:te,select:re}}),Ge=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},$c=["title"],kc={class:"card-content"},Ac={class:"card-top"},Pc=["onKeydown"],Mc={class:"session-name"},Oc={key:0,class:"alias-text"},Ic={key:1,class:"real-name"},Rc={key:2},Lc={key:0,class:"confirm-bar"},Dc={key:1,class:"session-info"},Fc=["title"],Nc={class:"status-text"},jc={__name:"SessionCard",props:{session:Object,active:Boolean,collapsed:Boolean},setup(e){const t=e,n=Pt(),s=$t("toast"),o=B(!1),r=B(!1),i=B(""),l=B(null),a=Re(()=>{const h=t.session.alias?`${t.session.alias} (${t.session.name})`:t.session.name;return t.session.pid?`${h} · PID ${t.session.pid}`:h}),u=Re(()=>t.session.title||t.session.command||"");function c(h,y="info"){s?.value?.show(h,y)}function f(h,y){h.stopPropagation(),o.value=!0}async function g(h,y){h.stopPropagation();try{await n.removeSession(y)}catch($){console.error($)}o.value=!1}function m(h){h.stopPropagation(),o.value=!1}function b(h){h.stopPropagation(),i.value=t.session.alias||"",r.value=!0,Ht(()=>l.value?.focus())}async function _(h){if(h&&h.stopPropagation(),!!r.value){r.value=!1;try{await n.setAlias(t.session.name,i.value.trim())}catch(y){c(y.message||"Failed to set alias","error")}}}function k(h){h.stopPropagation(),r.value=!1}return(h,y)=>(I(),K("div",{class:We(["session-card",{active:e.active,collapsed:e.collapsed}]),title:a.value},[w("div",{class:We(["status-indicator",[e.session.status,{"output-active":e.session.status==="running"&&e.session.outputActive}]])},null,2),ze(w("div",kc,[w("div",Ac,[r.value?ze((I(),K("input",{key:0,ref_key:"aliasInput",ref:l,"onUpdate:modelValue":y[0]||(y[0]=$=>i.value=$),class:"alias-input",type:"text",maxlength:"100",placeholder:"Alias (Enter to save, Esc to cancel)",onClick:y[1]||(y[1]=$e(()=>{},["stop"])),onKeydown:[y[2]||(y[2]=$e(()=>{},["stop"])),y[3]||(y[3]=zn($e($=>_($),["prevent"]),["enter"])),zn($e(k,["prevent"]),["esc"])],onBlur:_},null,40,Pc)),[[Tn,i.value]]):(I(),K(ye,{key:1},[w("div",Mc,[e.session.alias?(I(),K("span",Oc,se(e.session.alias),1)):le("",!0),e.session.alias?(I(),K("span",Ic,se(e.session.name),1)):(I(),K("span",Rc,se(e.session.name),1))]),o.value?le("",!0):(I(),K("button",{key:0,class:"close-btn",title:"Set alias",onClick:y[4]||(y[4]=$=>b($))},[...y[8]||(y[8]=[w("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[w("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})],-1)])])),o.value?le("",!0):(I(),K("button",{key:1,class:"close-btn",title:"Delete session",onClick:y[5]||(y[5]=$=>f($,e.session.name))},[...y[9]||(y[9]=[w("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[w("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),w("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]))],64))]),o.value?(I(),K("div",Lc,[y[10]||(y[10]=w("span",{class:"confirm-text"},"Delete?",-1)),w("button",{class:"confirm-yes",onClick:y[6]||(y[6]=$=>g($,e.session.name))},"Yes"),w("button",{class:"confirm-no",onClick:y[7]||(y[7]=$=>m($))},"No")])):(I(),K("div",Dc,[w("span",{class:"pane-title",title:u.value},se(u.value),9,Fc),w("span",Nc,se(e.session.status),1)]))],512),[[on,!e.collapsed]])],10,$c))}},Hc=Ge(jc,[["__scopeId","data-v-0e38e5ff"]]),Uc="modulepreload",Kc=function(e){return"/"+e},nr={},ro=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){let a=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=i?.nonce||i?.getAttribute("nonce");o=a(n.map(u=>{if(u=Kc(u),u in nr)return;nr[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const g=document.createElement("link");if(g.rel=c?"stylesheet":Uc,c||(g.as="script"),g.crossOrigin="",g.href=u,l&&g.setAttribute("nonce",l),document.head.appendChild(g),c)return new Promise((m,b)=>{g.addEventListener("load",m),g.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${u}`)))})}))}function r(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return o.then(i=>{for(const l of i||[])l.status==="rejected"&&r(l.reason);return t().catch(r)})},Cs="https://acli-preview.invalid",sr=e=>e.split("/").map(encodeURIComponent).join("/");function or(e){const t=[];for(const n of e.split("/"))!n||n==="."||(n===".."?t.pop():t.push(n));return`/${t.join("/")}`}function rr(e,t,n){if(typeof e!="string"||e.length>8192||/[\u0000-\u001f\u007f\\]/.test(e))throw new Error("不支持的链接地址");if(e=e.trim(),/^(?:https?:)?\/\//i.test(e)){const u=new URL(e,Cs);if(!["http:","https:"].includes(u.protocol))throw new Error("不支持的链接协议");return{kind:"external",url:u.href}}if(/^[a-z][a-z\d+.-]*:/i.test(e))throw new Error("只支持项目内文件和 HTTP/HTTPS 链接");if(!t?.startsWith("/")||!n?.startsWith("/"))throw new Error("当前文档没有有效的项目目录");const s=or(n),o=`${Cs}${sr(t)}`,r=e.startsWith("/")?`${sr(s).replace(/\/$/,"")}${e}`:e;let i,l,a;try{i=new URL(r,o),l=or(decodeURIComponent(i.pathname)),a=decodeURIComponent(i.hash.slice(1))}catch{throw new Error("链接包含无效的路径编码")}if(i.origin!==Cs||/[\u0000-\u001f\u007f\\]/.test(l))throw new Error("不支持的链接地址");if(s!=="/"&&l!==s&&!l.startsWith(`${s}/`))throw new Error("链接超出了当前项目目录");return{kind:"file",path:l,hash:a}}function Vc(e){return e.normalize("NFC").trim().toLowerCase().replace(/[^\p{L}\p{N}\p{M}_\s-]/gu,"").replace(/\s/g,"-")||"section"}function Bc(e){return`<script>(()=>{
3
+ const token=${JSON.stringify(e).replace(/</g,"\\u003c")};
4
+ const position=()=>({left:window.scrollX,top:window.scrollY});
5
+ const scroll=hash=>{const target=document.getElementById(hash)||Array.from(document.getElementsByName(hash))[0];if(target)target.scrollIntoView({behavior:'instant'});else if(!hash)window.scrollTo({left:0,top:0,behavior:'instant'})};
6
+ document.addEventListener('click',event=>{const link=event.target instanceof Element?event.target.closest('a[href]'):null;if(!event.isTrusted||!link)return;event.preventDefault();event.stopImmediatePropagation();const href=link.getAttribute('href');if(href.startsWith('#')){try{scroll(decodeURIComponent(href.slice(1)))}catch{};return}parent.postMessage({type:'acli-preview-link',token,href,scroll:position()},'*')},true);
7
+ window.addEventListener('message',event=>{const data=event.data;if(event.source!==parent||data?.type!=='acli-preview-scroll'||data.token!==token)return;if(Number.isFinite(data.left)&&Number.isFinite(data.top))window.scrollTo({left:data.left,top:data.top,behavior:'instant'});else if(typeof data.hash==='string'&&data.hash.length<=8192)scroll(data.hash)});
8
+ })()<\/script>`}function io(e,t){return`${e.replace(/\/$/,"")}/${t}`}function $i(e,t=!1,n=null){return`/api/files/content?${new URLSearchParams({path:e,...t?{download:"1"}:{},...n?{root:n}:{}})}`}function ki(e){return e.includes(".")?e.split(".").pop().toLowerCase():""}function od(e){const t=ki(e);return["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif","heic","heif"].includes(t)?"image":["mp3","wav","ogg","m4a","aac","flac","opus"].includes(t)?"audio":["mp4","webm","mov","m4v","ogv"].includes(t)?"video":t==="pdf"?"pdf":["md","markdown"].includes(t)?"markdown":["html","htm","xhtml"].includes(t)?"html":t==="docx"?"docx":["csv","tsv"].includes(t)?"table":["zip","gz","bz2","xz","7z","rar","tar","woff","woff2","ttf","exe","dll","so","dylib","db","sqlite","sqlite3","doc","xls","xlsx","ppt","pptx","wasm","bin"].includes(t)?"unsupported":"text"}function Wc(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KiB`:`${(e/(1024*1024)).toFixed(1)} MiB`}async function rd(e,t){const{default:n}=await ro(async()=>{const{default:o}=await import("./papaparse.min-DBcLlWLv.js").then(r=>r.p);return{default:o}},__vite__mapDeps([0,1])),s=n.parse(e,{delimiter:ki(t)==="tsv"?" ":",",skipEmptyLines:"greedy"});return s.errors.length?null:s.data}async function id(e,t=null){const{default:n}=await ro(async()=>{const{default:i}=await import("./markdown-it-CnX5h4q1.js");return{default:i}},[]),s=new n({html:!1,linkify:!0}),o=new Set;s.renderer.rules.heading_open=(i,l,a,u,c)=>{const f=i[l+1],g=f.children?.filter(k=>["text","code_inline","emoji"].includes(k.type)).map(k=>k.content).join("")||f.content,m=Vc(g);let b=m,_=0;for(;o.has(b);)b=`${m}-${++_}`;return o.add(b),i[l].attrSet("id",b),c.renderToken(i,l,a)},s.renderer.rules.link_open=(i,l,a,u,c)=>{const f=i[l],g=f.attrGet("href")||"";if(t){f.attrSet("data-preview-href",g);try{const m=rr(g,t.path,t.root);f.attrSet("href",m.kind==="external"?m.url:"#")}catch{f.attrSet("href","#")}}return/^https?:\/\//i.test(f.attrGet("href"))&&(f.attrSet("target","_blank"),f.attrSet("rel","noopener noreferrer")),c.renderToken(i,l,a)};const r=s.renderer.rules.image;return s.renderer.rules.image=(i,l,a,u,c)=>{const f=i[l];if(t)try{const g=rr(f.attrGet("src")||"",t.path,t.root);f.attrSet("src",g.kind==="external"?g.url:$i(g.path,!1,t.root))}catch{f.attrSet("src",""),f.attrSet("title","图片路径无效或超出当前项目目录")}return f.attrSet("referrerpolicy","no-referrer"),r(i,l,a,u,c)},s.render(e)}function ld(e,{linkToken:t}={}){return`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data: blob:; font-src data:; media-src data: blob:; base-uri 'none'; form-action 'none'"><meta name="referrer" content="no-referrer">${t?Bc(t):""}<style>body{font:15px/1.6 system-ui,sans-serif;padding:20px;overflow-wrap:anywhere}img{max-width:100%}table{border-collapse:collapse}td,th{border:1px solid #ccc;padding:6px}</style></head><body>${e}</body></html>`}const Ss=Object.freeze({M:"已修改",A:"已新增(已暂存)",U:"未跟踪的新文件",D:"已删除",R:"已重命名",C:"存在合并冲突"});function Ai(e,t,n=[]){const s=`${t.replace(/\/$/,"")}/`,o=new Map(e.map(i=>[i.path,{...i}])),r=new Map(n.map(i=>[i.path,i]));for(const i of n){if(!i.deleted||!i.path.startsWith(s))continue;const l=i.path.slice(s.length).split("/"),a=`${s}${l[0]}`;o.has(a)||o.set(a,{name:l[0],path:a,type:l.length>1?"directory":"file",size:0,mtime:null,virtual:!0,deleted:!0})}return[...o.values()].map(i=>{const l=r.get(i.path);return{...i,...l?.deleted?{virtual:!0,deleted:!0}:{},gitChange:l,gitStatus:l?.status,hasGitChanges:i.type==="directory"&&n.some(a=>a.path.startsWith(`${i.path}/`))}}).sort((i,l)=>(l.type==="directory")-(i.type==="directory")||i.name.localeCompare(l.name,void 0,{numeric:!0}))}function ad(e){let t=0,n=0,s=!1;const o=e.split(`
9
+ `);return o.at(-1)===""&&o.pop(),o.map(r=>{const i=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(r);return i?(t=Number(i[1]),n=Number(i[2]),s=!0,{type:"hunk",text:r}):((r.startsWith("diff --git ")||r.startsWith("diff --no-index "))&&(s=!1),s&&r.startsWith("+")?{type:"add",sign:"+",text:r.slice(1),newLine:n++}:s&&r.startsWith("-")?{type:"delete",sign:"−",text:r.slice(1),oldLine:t++}:s&&r.startsWith(" ")?{type:"context",sign:" ",text:r.slice(1),oldLine:t++,newLine:n++}:{type:"meta",text:r})})}const qc={role:"none"},Gc=["aria-expanded","aria-label","title"],zc={class:"chevron","aria-hidden":"true"},Yc={class:"file-icon","aria-hidden":"true"},Jc=["title"],Xc={key:1,class:"git-dot",title:"包含 Git 改动","aria-hidden":"true"},Zc=["aria-label"],Qc={key:0,role:"group",class:"tree-children"},eu={key:0,role:"none",class:"tree-status"},tu={key:1,role:"none",class:"tree-status error"},nu={key:2,role:"none",class:"tree-status"},su={__name:"FileTreeItem",props:{entry:{type:Object,required:!0},changes:{type:Array,default:()=>[]}},emits:["preview","menu","operation"],setup(e,{emit:t}){const n=e,s=t,o=Pt(),r=B(!1),i=B([]),l=B(!1),a=B(""),u=B(null),c=Re(()=>Ai(i.value,n.entry.path,n.changes)),f=Re(()=>{const h=n.entry;return h.virtual?`${h.path}
10
+ 已从工作区删除,可查看 Git Diff`:`${h.path}
11
+ ${Wc(h.size)} · ${new Date(h.mtime).toLocaleString()}${h.type==="symlink"?`
12
+ Symbolic link — target is not followed`:""}${h.gitStatus?`
13
+ Git:${Ss[h.gitStatus]}`:""}${h.gitChange?.originalPath?`
14
+ 原路径:${h.gitChange.originalPath}`:""}`});let g=null;async function m(){if(g?.abort(),n.entry.virtual){i.value=[],l.value=!1,a.value="";return}const h=new AbortController;g=h,l.value=!0,a.value="";try{const $=await(await o.apiRequest(`/api/files?${new URLSearchParams({path:n.entry.path})}`,{signal:h.signal})).json();h.signal.aborted||(i.value=$.entries)}catch(y){h.signal.aborted||(a.value=y.message)}finally{h.signal.aborted||(l.value=!1)}}async function b(){n.entry.type==="directory"?(r.value=!r.value,r.value&&await m()):n.entry.type==="file"&&s("preview",n.entry)}function _(h){if(h.preventDefault(),n.entry.virtual)return;const y=u.value.getBoundingClientRect();s("menu",{entry:n.entry,x:h.clientX||y.left,y:h.clientY||y.bottom,trigger:u.value})}async function k(h){if(h.target!==u.value)return;const y=[...u.value.closest('[role="tree"]').querySelectorAll("[data-tree-row]")],$=y.indexOf(u.value);["ArrowDown","ArrowUp","Home","End"].includes(h.key)?(h.preventDefault(),y[h.key==="Home"?0:h.key==="End"?y.length-1:Math.max(0,Math.min(y.length-1,$+(h.key==="ArrowDown"?1:-1)))]?.focus()):h.key==="ArrowRight"&&n.entry.type==="directory"?(h.preventDefault(),r.value?(await Ht(),u.value.parentElement.querySelector('[role="group"] [data-tree-row]')?.focus()):await b()):h.key==="ArrowLeft"?(h.preventDefault(),r.value?r.value=!1:u.value.parentElement.parentElement.closest("li")?.querySelector("[data-tree-row]")?.focus()):h.key==="Enter"||h.key===" "?(h.preventDefault(),b()):h.key==="ContextMenu"||h.shiftKey&&h.key==="F10"?_(h):!n.entry.virtual&&(h.key==="F2"||h.key==="Delete")&&(h.preventDefault(),s("operation",{kind:h.key==="F2"?"rename":"delete",entry:n.entry}))}return Je(()=>o.fileRevision,()=>{r.value&&m()}),Je(()=>n.entry.virtual,()=>{r.value&&m()}),Ut(()=>g?.abort()),(h,y)=>{const $=Gl("FileTreeItem",!0);return I(),K("li",qc,[w("div",{ref_key:"row",ref:u,class:"tree-row",role:"treeitem","data-tree-row":"",tabindex:"0","aria-expanded":e.entry.type==="directory"?r.value:void 0,"aria-label":`${e.entry.name}${e.entry.gitStatus?`,${ve(Ss)[e.entry.gitStatus]}`:e.entry.hasGitChanges?",包含 Git 改动":""}`,title:f.value,onClick:b,onContextmenu:_,onKeydown:k},[w("span",zc,se(e.entry.type==="directory"?r.value?"⌄":"›":""),1),w("span",Yc,se(e.entry.type==="directory"?"▱":e.entry.type==="symlink"?"↗":"≡"),1),w("span",{class:We(["filename",{dotfile:e.entry.name.startsWith("."),deleted:e.entry.virtual}])},se(e.entry.name),3),w("span",{class:We(["row-end",{"has-menu":!e.entry.virtual,"has-status":e.entry.gitStatus||e.entry.hasGitChanges}])},[e.entry.type!=="directory"&&e.entry.gitStatus?(I(),K("span",{key:0,class:We(["git-badge",`git-${e.entry.gitStatus}`]),title:ve(Ss)[e.entry.gitStatus],"aria-hidden":"true"},se(e.entry.gitStatus),11,Jc)):e.entry.hasGitChanges?(I(),K("span",Xc,"●")):le("",!0),e.entry.virtual?le("",!0):(I(),K("button",{key:2,class:"more","aria-label":`${e.entry.name} 文件操作`,title:"文件操作",onClick:$e(_,["stop"]),onKeydown:y[0]||(y[0]=$e(()=>{},["stop"]))},"⋯",40,Zc))],2)],40,Gc),r.value?(I(),K("ul",Qc,[l.value?(I(),K("li",eu,"加载中…")):a.value?(I(),K("li",tu,[Be(se(a.value)+" ",1),w("button",{onClick:m},"重试")])):c.value.length?le("",!0):(I(),K("li",nu,"空文件夹")),(I(!0),K(ye,null,Sn(c.value,A=>(I(),Ve($,{key:A.path,entry:A,changes:e.changes,onPreview:y[1]||(y[1]=H=>s("preview",H)),onMenu:y[2]||(y[2]=H=>s("menu",H)),onOperation:y[3]||(y[3]=H=>s("operation",H))},null,8,["entry","changes"]))),128))])):le("",!0)])}}},ou=Ge(su,[["__scopeId","data-v-5c068d88"]]),ru={id:"operation-title"},iu={class:"operation-path"},lu={key:0},au={key:1},cu=["disabled"],uu={key:2,class:"error",role:"alert"},fu={class:"dialog-actions"},du=["disabled"],pu=["disabled"],hu={__name:"FileOperationDialog",props:{operation:{type:Object,required:!0},trash:String,busy:Boolean,error:String},emits:["close","submit"],setup(e,{emit:t}){const n=e,s=t,o=B(null),r=B(null),i=B(n.operation.kind==="rename"?n.operation.entry.name:n.operation.entry.path),l=Re(()=>({rename:"重命名",move:"移动文件",delete:n.trash==="mv-trash"?"移到废纸篓?":"永久删除?"})[n.operation.kind]);let a;return At(()=>{a=document.activeElement,o.value.showModal(),r.value?.select()}),Ut(()=>a?.focus()),(u,c)=>(I(),Ve(Wr,{to:"body"},[w("dialog",{ref_key:"dialog",ref:o,class:"file-dialog","aria-labelledby":"operation-title",onCancel:c[3]||(c[3]=$e(f=>!e.busy&&s("close"),["prevent"])),onClick:c[4]||(c[4]=f=>{f.target===o.value&&!e.busy&&s("close")})},[w("form",{onSubmit:c[2]||(c[2]=$e(f=>s("submit",i.value),["prevent"]))},[w("h3",ru,se(l.value),1),w("p",iu,se(e.operation.entry.path),1),e.operation.kind==="delete"?(I(),K("p",lu,se(e.trash==="mv-trash"?"文件将移到 ~/.Trash/,可从废纸篓找回。":"文件将永久删除,此操作无法撤销。"),1)):(I(),K("label",au,[Be(se(e.operation.kind==="rename"?"新名称":"目标完整路径(含文件名)")+" ",1),ze(w("input",{ref_key:"input",ref:r,"onUpdate:modelValue":c[0]||(c[0]=f=>i.value=f),required:"",disabled:e.busy,autocomplete:"off"},null,8,cu),[[Tn,i.value]])])),e.error?(I(),K("p",uu,se(e.error),1)):le("",!0),w("div",fu,[w("button",{type:"button",class:"btn",disabled:e.busy,onClick:c[1]||(c[1]=f=>s("close"))},"取消",8,du),w("button",{class:We(["btn",e.operation.kind==="delete"?"delete-btn":"btn-primary"]),disabled:e.busy||!i.value.trim()},se(e.busy?"处理中…":l.value),11,pu)])],32)],544)]))}},gu=Ge(hu,[["__scopeId","data-v-5ceee09a"]]),mu={id:"clipboard-title"},vu={id:"clipboard-help"},yu=["readonly","aria-label"],bu={class:"clipboard-actions"},wu=["disabled"],_u={__name:"ClipboardDialog",props:{mode:{type:String,required:!0},text:{type:String,default:""},shortcut:{type:String,required:!0}},emits:["close","paste"],setup(e,{emit:t}){const n=e,s=t,o=B(null),r=B(null),i=B(n.text);At(()=>{o.value.focus(),n.mode==="copy"&&o.value.select()});function l(a){if(a.key==="Escape")a.preventDefault(),s("close");else if(a.key==="Tab"){const u=[...r.value.querySelectorAll("textarea, button:not(:disabled)")],c=u[0],f=u[u.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),f.focus()):!a.shiftKey&&document.activeElement===f&&(a.preventDefault(),c.focus())}}return(a,u)=>(I(),K("div",{class:"clipboard-overlay",onClick:u[3]||(u[3]=$e(c=>s("close"),["self"])),onKeydown:l},[w("form",{ref_key:"dialog",ref:r,class:"clipboard-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"clipboard-title","aria-describedby":"clipboard-help",onSubmit:u[2]||(u[2]=$e(c=>s("paste",i.value),["prevent"]))},[w("h3",mu,se(e.mode==="copy"?"Copy text":"Paste text"),1),w("p",vu,[u[4]||(u[4]=Be(" Clipboard access is unavailable. ",-1)),e.mode==="copy"?(I(),K(ye,{key:0},[Be("Copy the selected text with "+se(e.shortcut)+".",1)],64)):(I(),K(ye,{key:1},[Be("Paste here with "+se(e.shortcut)+", then click Paste into terminal.",1)],64))]),ze(w("textarea",{ref_key:"textarea",ref:o,"onUpdate:modelValue":u[0]||(u[0]=c=>i.value=c),readonly:e.mode==="copy","aria-label":e.mode==="copy"?"Text to copy":"Text to paste",spellcheck:"false"},null,8,yu),[[Tn,i.value]]),w("div",bu,[w("button",{type:"button",class:"btn",onClick:u[1]||(u[1]=c=>s("close"))},se(e.mode==="copy"?"Done":"Cancel"),1),e.mode==="paste"?(I(),K("button",{key:0,class:"btn btn-primary",disabled:!i.value.length}," Paste into terminal ",8,wu)):le("",!0)])],544)],32))}},Pi=Ge(_u,[["__scopeId","data-v-317cb3e2"]]);async function Hs(e,t=document,n=navigator){try{if(n.clipboard?.writeText)return await n.clipboard.writeText(e),!0}catch{}if(!t.execCommand)return!1;const s=t.activeElement,o=t.createElement("textarea");o.value=e,o.readOnly=!0,o.style.cssText="position:fixed;left:-9999px;top:0;",t.body.appendChild(o);try{return o.focus({preventScroll:!0}),o.select(),t.execCommand("copy")}catch{return!1}finally{o.remove(),s?.focus({preventScroll:!0})}}const xu=10,Cu=.85,ir=.05,Su=20;function Eu(e,t){return Math.abs(t)>=xu&&Math.abs(t)>Math.abs(e)}function Tu({getRowHeight:e,emitWheel:t,requestFrame:n=s=>setTimeout(()=>s(performance.now()),16)}){let s=null,o=!1,r=0;function i(){const a=e();return a>0?a:Su}function l(a){if(Number.isFinite(a)&&(r+=a/i(),Math.abs(r)>=1)){const u=Math.trunc(r);r-=u,t(-u*i(),s?.lastX??0,s?.lastY??0)}}return{touchStart(a){if(o=!1,!a.touches||a.touches.length!==1){s=null;return}const u=a.touches[0];s={id:u.identifier,startX:u.clientX,startY:u.clientY,lastX:u.clientX,lastY:u.clientY,lastTime:a.timeStamp??Date.now(),velocity:0,active:!1}},touchMove(a){if(!s)return;const u=[...a.touches].find(m=>m.identifier===s.id);if(!u)return;const c=a.timeStamp??Date.now();if(!s.active){if(!Eu(u.clientX-s.startX,u.clientY-s.startY))return;s.active=!0,s.lastX=u.clientX,s.lastY=u.clientY,s.lastTime=c}a.preventDefault();const f=u.clientY-s.lastY,g=Math.max(c-s.lastTime,1);s.velocity=.8*s.velocity+.2*(f/g),s.lastX=u.clientX,s.lastY=u.clientY,s.lastTime=c,l(f)},touchEnd(a){if(!(!s||![...a.changedTouches].some(c=>c.identifier===s.id))){if(s.active&&Math.abs(s.velocity)>ir){o=!0;let c=s.velocity,f=s.lastTime;const g=m=>{if(!o)return;const b=Math.max((m??Date.now())-f,1);if(!Number.isFinite(b)){o=!1;return}if(f=m??Date.now(),c*=Math.pow(Cu,b/16),Math.abs(c)<ir){o=!1;return}l(c*b),n(g)};n(g)}s=null}},cancel(){o=!1,s=null,r=0}}}function $u({doc:e,terminal:t,isMac:n,getCopyText:s,onCopy:o,onContextMenu:r,onDismiss:i,onInput:l,onSelection:a,onTmuxCopy:u}){const c=[];function f(h,y,$={capture:!0}){e.addEventListener(h,y,$),c.push(()=>e.removeEventListener(h,y,$))}function g(h){h.preventDefault(),h.stopImmediatePropagation()}for(const h of["pointerdown","pointerup","mousedown","mouseup","auxclick"])f(h,y=>{y.button===2||n&&y.button===0&&y.ctrlKey?(y.stopImmediatePropagation(),y.shiftKey||y.preventDefault()):h==="mousedown"&&(i(),y.button===0&&l())});f("contextmenu",h=>{if(h.shiftKey){i();return}g(h),r(h)});const m=Tu({getRowHeight:()=>t.element?t.element.getBoundingClientRect().height/(t.rows||1):0,emitWheel:(h,y,$)=>{const A=t.element?.querySelector(".xterm-screen")||t.element;!A||!e.defaultView||A.dispatchEvent(new e.defaultView.WheelEvent("wheel",{deltaY:h,deltaMode:0,clientX:y,clientY:$,bubbles:!0,cancelable:!0}))}}),b={capture:!0,passive:!1};f("touchstart",h=>m.touchStart(h),b),f("touchmove",h=>m.touchMove(h),b),f("touchend",h=>m.touchEnd(h),b),f("touchcancel",()=>m.cancel(),b),f("copy",h=>{const y=s();!y||!h.clipboardData||(h.clipboardData.setData("text/plain",y),g(h))}),f("paste",h=>{if(!h.clipboardData)return;const y=h.clipboardData.getData("text/plain");g(h),i(),l(),t.paste(y)}),f("keydown",h=>{const y=h.key.toLowerCase(),$=!h.altKey&&(n&&h.metaKey&&!h.ctrlKey&&y==="c"||h.ctrlKey&&h.shiftKey&&!h.metaKey&&y==="c"),A=!h.altKey&&(n&&h.metaKey&&y==="v"||h.ctrlKey&&y==="v");$?(g(h),o()):A?h.stopImmediatePropagation():(i(),["Shift","Control","Alt","Meta"].includes(h.key)||l())});const _=t.onSelectionChange(()=>a(t.getSelection()));c.push(()=>_.dispose());const k=t.parser.registerOscHandler(52,h=>{const y=h.indexOf(";");if(y<0)return!1;const $=h.slice(y+1);if($==="?")return!1;try{const A=Uint8Array.from(atob($),H=>H.charCodeAt(0));u(new TextDecoder().decode(A))}catch{}return!0});return c.push(()=>k.dispose()),()=>c.forEach(h=>h())}const ku={class:"file-panel","aria-label":"文件管理器"},Au={class:"file-toolbar"},Pu=["title"],Mu=["disabled"],Ou=["disabled"],Iu=["title"],Ru={key:1,class:"panel-hint",role:"status"},Lu={key:2,class:"panel-hint"},Du={key:3,class:"panel-hint"},Fu={key:4,class:"panel-hint error",role:"alert"},Nu={key:5,class:"panel-hint git-warning",role:"status"},ju={key:6,class:"panel-hint",role:"status"},Hu=["aria-label","aria-busy"],Uu={key:0,role:"none",class:"panel-hint"},Ku=["disabled"],Vu=["disabled"],Bu={__name:"FilePanel",setup(e){const t=Dl(()=>ro(()=>import("./PreviewDialog-BkLLhap2.js"),__vite__mapDeps([2,3]))),n=Pt(),s=$t("toast"),o=Re(()=>n.sessions.find(R=>R.name===n.current)),r=B([]),i=B({available:!1,changes:[]}),l=B(""),a=Re(()=>Ai(r.value,o.value?.root||"/",i.value.changes)),u=B(null),c=B(!1),f=B(!1),g=B(""),m=B(null),b=B(null),_=B(null),k=B(null),h=B(""),y=B(!1),$=B(!1),A=B(null);let H=null,te=0;const re=/Mac|iPhone|iPad/.test(navigator.platform)?"⌘C":"Ctrl+C";function V(R,N="info",oe){s?.value?.show(R,N,oe)}async function P(){const R=o.value,N=++te;if(!R||R.root||R.status!=="running"){f.value=!1;return}f.value=!0,g.value="";try{await n.pinRoot(R.name)}catch(oe){N===te&&o.value?.name===R.name&&(g.value=oe.message)}finally{N===te&&(f.value=!1)}}async function W(){H?.abort();const R=new AbortController;H=R;const N=o.value?.root;if(!N){r.value=[],u.value=null,c.value=!1;return}c.value=!0,g.value="";const oe=(async()=>{try{const Me=await(await n.apiRequest(`/api/git/status?${new URLSearchParams({root:N})}`,{signal:R.signal})).json();R.signal.aborted||(i.value=Me,l.value=Me.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":"")}catch(me){R.signal.aborted||(l.value=`Git 状态更新失败,已有标记可能已过时:${me.message}`)}})();try{const Me=await(await n.apiRequest(`/api/files?${new URLSearchParams({path:N})}`,{signal:R.signal})).json();R.signal.aborted||(r.value=Me.entries,u.value=Me.trash)}catch(me){R.signal.aborted||(g.value=me.message)}finally{await oe,R.signal.aborted||(c.value=!1)}}function ne(R){i.value=R,l.value=R.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":""}async function x(){const R=o.value;if(!(!R||R.status!=="running"))try{await n.pinRoot(R.name,!0),n.refreshFiles(),V("已将文件根目录固定到 shell 当前目录。","success")}catch(N){V(N.message,"error")}}async function D(R){b.value=R,await Ht(),!(!b.value||!_.value)&&(b.value.x=Math.max(8,Math.min(R.x,window.innerWidth-_.value.offsetWidth-8)),b.value.y=Math.max(8,Math.min(R.y,window.innerHeight-_.value.offsetHeight-8)),_.value.querySelector("button:not(:disabled)")?.focus())}function U(R=!1){R&&b.value?.trigger?.focus(),b.value=null}function Z(R){if(["Escape","Tab"].includes(R.key))R.key==="Escape"&&R.preventDefault(),U(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(R.key)){R.preventDefault();const N=[..._.value.querySelectorAll("button:not(:disabled)")],oe=N.indexOf(document.activeElement),me=R.key==="Home"?0:R.key==="End"?N.length-1:(oe+(R.key==="ArrowDown"?1:-1)+N.length)%N.length;N[me]?.focus()}}function X(R,N=b.value?.entry){U(!0),!(!N||N.virtual||y.value||R==="delete"&&!u.value)&&(h.value="",k.value={kind:R,entry:N})}async function J(R){if(y.value)return;const{kind:N,entry:oe}=k.value;y.value=!0,h.value="";try{if(N==="delete")await n.apiRequest(`/api/files?${new URLSearchParams({path:oe.path})}`,{method:"DELETE"});else{if(N==="rename"&&(!R||R==="."||R===".."||R.includes("/")||R.includes("\0")))throw new Error("请输入不含 / 的有效文件名");const me=N==="rename"?io(oe.path.slice(0,oe.path.lastIndexOf("/"))||"/",R):R;await n.apiRequest("/api/files",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:oe.path,to:me})})}k.value=null,n.refreshFiles(),V(N==="delete"?u.value==="mv-trash"?"已移到废纸篓。":"已永久删除。":"文件已更新。","success")}catch(me){h.value=me.message}finally{y.value=!1}}function ce(R=b.value?.entry){if(U(!0),!R)return;const N=document.createElement("a");N.href=$i(R.path,!0),N.download=R.name,document.body.append(N),N.click(),N.remove()}async function He(R=b.value?.entry){U(!0),await Hs(R.path)?V("路径已复制。","success"):A.value=R.path}async function ct(R=b.value?.entry){const N=o.value?.root;if(U(!0),!(!R||!N||$.value)){$.value=!0;try{const me=await(await n.apiRequest("/api/files/archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:R.path,root:N})})).json();n.refreshFiles(),V(`已生成:${me.path}`,"success",{action:{label:"下载",onClick:()=>ce({path:me.path,name:me.path.split("/").pop()})}})}catch(oe){V(oe.message,"error")}finally{$.value=!1}}}function Ue(R){_.value?.contains(R.target)||U()}return Je(()=>[o.value?.name,o.value?.status],()=>{g.value="",P()},{immediate:!0}),Je(()=>[o.value?.name,o.value?.root],()=>{r.value=[],m.value=null,U(),i.value={available:!1,changes:[]},l.value="",y.value||(k.value=null),W()},{immediate:!0}),Je(()=>n.fileRevision,W),At(()=>{document.addEventListener("pointerdown",Ue),window.addEventListener("resize",U)}),Ut(()=>{te++,H?.abort(),document.removeEventListener("pointerdown",Ue),window.removeEventListener("resize",U)}),(R,N)=>(I(),K("section",ku,[w("div",Au,[w("span",{class:"project-name",title:o.value?.root||""},se(o.value?.alias||o.value?.name||"文件"),9,Pu),w("button",{disabled:!o.value?.root||c.value,title:"刷新目录和 Git 标记","aria-label":"刷新目录和 Git 标记",onClick:N[0]||(N[0]=oe=>ve(n).refreshFiles())},"↻",8,Mu),w("button",{disabled:o.value?.status!=="running",title:"重新固定到 shell 当前目录","aria-label":"重新固定到 shell 当前目录",onClick:x},"📍",8,Ou)]),o.value?.root?(I(),K("div",{key:0,class:"root-path",title:o.value.root},se(o.value.root),9,Iu)):le("",!0),$.value?(I(),K("div",Ru,"正在生成 ZIP…")):le("",!0),o.value?!o.value.root&&!c.value&&!f.value&&!g.value?(I(),K("div",Du,"启动 session 后自动确定根目录")):le("",!0):(I(),K("div",Lu,"选择一个会话以浏览文件。")),g.value?(I(),K("div",Fu,[Be(se(g.value)+" ",1),w("button",{onClick:N[1]||(N[1]=oe=>o.value?.root?W():P())},"重试")])):le("",!0),l.value?(I(),K("div",Nu,se(l.value),1)):le("",!0),c.value||f.value?(I(),K("div",ju,"加载中…")):le("",!0),o.value?.root?(I(),K("ul",{key:`${o.value.name}:${o.value.root}`,class:"file-tree",role:"tree","aria-label":o.value.root,"aria-busy":c.value},[(I(!0),K(ye,null,Sn(a.value,oe=>(I(),Ve(ou,{key:oe.path,entry:oe,changes:i.value.changes,onPreview:N[2]||(N[2]=me=>m.value=me),onMenu:D,onOperation:me=>X(me.kind,me.entry)},null,8,["entry","changes","onOperation"]))),128)),!a.value.length&&!c.value&&!g.value?(I(),K("li",Uu,"空文件夹")):le("",!0)],8,Hu)):le("",!0),(I(),Ve(Wr,{to:"body"},[b.value?(I(),K("div",{key:0,ref_key:"menuElement",ref:_,class:"file-menu",style:_n({left:`${b.value.x}px`,top:`${b.value.y}px`}),role:"menu","aria-label":"文件操作",onKeydown:Z},[b.value.entry.type==="file"?(I(),K("button",{key:0,role:"menuitem",onClick:N[3]||(N[3]=oe=>{m.value=b.value.entry,U(!0)})},"预览")):le("",!0),w("button",{role:"menuitem",onClick:N[4]||(N[4]=oe=>X("rename"))},[...N[13]||(N[13]=[Be("重命名 ",-1),w("span",null,"F2",-1)])]),w("button",{role:"menuitem",onClick:N[5]||(N[5]=oe=>X("move"))},"移动…"),b.value.entry.type==="file"?(I(),K("button",{key:1,role:"menuitem",onClick:N[6]||(N[6]=oe=>ce())},"下载")):le("",!0),b.value.entry.type==="directory"?(I(),K("button",{key:2,role:"menuitem",disabled:$.value,onClick:N[7]||(N[7]=oe=>ct())},"压缩为 ZIP",8,Ku)):le("",!0),w("button",{role:"menuitem",onClick:N[8]||(N[8]=oe=>He())},"复制路径"),w("button",{class:"danger",role:"menuitem",disabled:!u.value,onClick:N[9]||(N[9]=oe=>X("delete"))},se(u.value==="mv-trash"?"移到废纸篓…":"永久删除…"),9,Vu)],36)):le("",!0)])),m.value?(I(),Ve(ve(t),{key:8,entry:m.value,root:o.value.root,changes:i.value.changes,onGitStatus:ne,onClose:N[10]||(N[10]=oe=>m.value=null)},null,8,["entry","root","changes"])):le("",!0),k.value?(I(),Ve(gu,{key:k.value.entry.path+k.value.kind,operation:k.value,trash:u.value,busy:y.value,error:h.value,onClose:N[11]||(N[11]=oe=>k.value=null),onSubmit:J},null,8,["operation","trash","busy","error"])):le("",!0),A.value!==null?(I(),Ve(Pi,{key:10,mode:"copy",text:A.value,shortcut:ve(re),onClose:N[12]||(N[12]=oe=>A.value=null)},null,8,["text","shortcut"])):le("",!0)]))}},Wu=Ge(Bu,[["__scopeId","data-v-771bf310"]]),qu={class:"sidebar-tabs",role:"tablist","aria-label":"侧栏"},Gu=["aria-selected"],zu=["aria-selected"],Yu={class:"sessions-panel",id:"sessions-panel",role:"tabpanel","aria-labelledby":"sessions-tab"},Ju={class:"sidebar-header"},Xu={class:"sidebar-title"},Zu={class:"session-list"},Qu={key:0,class:"empty-hint"},ef={key:0,id:"files-panel",class:"files-panel",role:"tabpanel","aria-labelledby":"files-tab"},tf={__name:"Sidebar",props:{collapsed:Boolean,mobile:Boolean},emits:["create","expand"],setup(e,{emit:t}){const n=t,s=Pt(),o=B("sessions");function r(i){o.value=i,n("expand")}return(i,l)=>(I(),K("aside",{class:We(["sidebar",{collapsed:e.collapsed}])},[w("div",qu,[w("button",{id:"sessions-tab",role:"tab","aria-selected":o.value==="sessions","aria-controls":"sessions-panel",onClick:l[0]||(l[0]=a=>r("sessions"))},"会话",8,Gu),w("button",{id:"files-tab",role:"tab","aria-selected":o.value==="files","aria-controls":"files-panel",onClick:l[1]||(l[1]=a=>r("files"))},"文件",8,zu)]),ze(w("div",Yu,[w("div",Ju,[ze(w("h2",Xu,"Sessions",512),[[on,!e.collapsed]]),w("button",{class:"icon-btn new-session-btn",onClick:l[2]||(l[2]=a=>n("create")),title:"New Session"},[l[3]||(l[3]=w("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[w("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),w("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),ze(w("span",null,"New Session",512),[[on,!e.collapsed]])])]),w("div",Zu,[(I(!0),K(ye,null,Sn(ve(s).sortedSessions,a=>(I(),Ve(Hc,{key:a.name,session:a,active:ve(s).current===a.name,collapsed:e.collapsed,onClick:u=>ve(s).select(a.name)},null,8,["session","active","collapsed","onClick"]))),128)),ve(s).sessions.length?le("",!0):ze((I(),K("div",Qu,[...l[4]||(l[4]=[w("p",null,"No active sessions",-1),w("p",{class:"sub-hint"},"Create one to get started",-1)])],512)),[[on,!e.collapsed]])])],512),[[on,o.value==="sessions"]]),o.value==="files"&&!e.collapsed?(I(),K("div",ef,[_e(Wu)])):le("",!0)],2))}},nf=Ge(tf,[["__scopeId","data-v-b8faf56e"]]),sf="/logo.svg",of=["width","height"],rf={__name:"BrandMark",props:{size:{type:Number,default:32}},setup(e){return(t,n)=>(I(),K("img",{class:"brand-mark",src:sf,width:e.size,height:e.size,alt:"","aria-hidden":"true",draggable:"false"},null,8,of))}},lo=Ge(rf,[["__scopeId","data-v-f54af403"]]);async function lf({files:e,directory:t,signal:n,onProgress:s=()=>{},onUnauthorized:o=()=>{},createXHR:r=()=>new XMLHttpRequest}){const i={completed:[],cancelled:[],failed:[]};for(let l=0;l<e.length;l++){const a=e[l],u=io(t,a.name);if(n.aborted){i.cancelled.push(u);continue}s({index:l+1,total:e.length,percent:0,filename:a.name});try{const c=await new Promise((f,g)=>{const m=r(),b=()=>m.abort(),_=(k,h)=>{n.removeEventListener("abort",b),k(h)};m.open("POST",`/api/files/upload?${new URLSearchParams({dir:t,filename:a.name})}`),m.setRequestHeader("Content-Type","application/octet-stream"),m.upload.onprogress=k=>{k.lengthComputable&&s({index:l+1,total:e.length,percent:Math.round(k.loaded/k.total*100),filename:a.name})},m.onload=()=>{let k={};try{k=JSON.parse(m.responseText)}catch{}m.status===401&&o(),m.status>=200&&m.status<300&&k.path?_(f,k):_(g,new Error(k.error||`Upload failed (${m.status})`))},m.onerror=()=>_(g,new Error("Network error while uploading")),m.onabort=()=>_(g,new DOMException("Upload cancelled","AbortError")),n.addEventListener("abort",b,{once:!0}),n.aborted?_(g,new DOMException("Upload cancelled","AbortError")):m.send(a)});i.completed.push(c.path)}catch(c){n.aborted||c.name==="AbortError"?i.cancelled.push(u):i.failed.push({path:u,error:c.message})}}return i}const af={class:"terminal-area"},cf={key:0,class:"terminal-tools","aria-label":"Terminal tools"},uf=["disabled","title"],ff=["disabled","title"],df=["disabled"],pf=["title"],hf=["value"],gf={key:1,class:"selection-hint"},mf=["src"],vf={key:2,class:"welcome__container"},yf={class:"welcome__content"},bf={class:"welcome-brand"},wf={class:"welcome__text"},_f={class:"highlight"},xf=["disabled"],Cf=["disabled"],Sf={__name:"TerminalView",emits:["create"],setup(e,{emit:t}){const n=Pt(),s=t,o=$t("toast"),r=B(null),i=dl(null),l=B(""),a=B(""),u=B(null),c=B(null),f=B(null),g=/Mac|iPhone|iPad/.test(navigator.platform),m=g?"⌘C":"Ctrl+Shift+C",b=g?"⌘V":"Ctrl+Shift+V",_=g?"Option":"Shift",k=Re(()=>!!(l.value||a.value));let h=null,y=null;const $=B(null),A=B(null),H=B(!1);let te=null,re=null,V=!1;function P(){Z();const G=x.value;!G||G.status!=="running"||H.value||(re={name:G.name,root:(G.root?Promise.resolve(G.root):n.pinRoot(G.name)).then(j=>({root:j}),j=>({error:j}))},$.value.click())}async function W(G){const j=G.join(`
15
+ `);await Hs(j)?U("路径已复制。","success"):f.value={mode:"copy",text:j}}async function ne(G){const j=Array.from(G.target.files||[]);G.target.value="";const xe=re;if(re=null,!j.length||!xe||H.value)return;H.value=!0,te=new AbortController;const Le=te.signal;try{const{root:Qe,error:d}=await xe.root;if(d)throw d;if(Le.aborted)return;const p=io(Qe,"temp");V||(U("上传目录为项目下的 temp/,可在项目 .gitignore 中加入 temp/。"),V=!0);const v=await lf({files:j,directory:p,signal:Le,onProgress:C=>{A.value={...C,session:xe.name}},onUnauthorized:()=>{n.authenticated=!1,te?.abort()}});n.refreshFiles();const E=[`${xe.name}:已完成 ${v.completed.length} 个、取消 ${v.cancelled.length} 个、失败 ${v.failed.length} 个`,...v.completed.map(C=>`已完成:${C}`),...v.cancelled.map(C=>`已取消:${C}`),...v.failed.map(C=>`失败:${C.path}
16
+ ${C.error}`)].join(`
17
+ `);o?.value?.show(E,v.failed.length?"error":v.cancelled.length?"info":"success",{duration:0,action:v.completed.length?{label:"复制路径",onClick:()=>W(v.completed)}:void 0})}catch(Qe){U(Qe.message,"error")}finally{H.value=!1,A.value=null,te=null}}const x=Re(()=>n.sessions.find(G=>G.name===n.current)),D=Re(()=>!x.value||x.value.status!=="running"?null:`/terminal/${x.value.name}`);function U(G,j="info"){o?.value?.show(G,j)}function Z(G=!1){u.value=null,G&&i.value?.focus()}function X(){return i.value?.getSelection()||a.value}async function J(){Z();const G=i.value,j=X();if(!G||!j){U(`Select text first (${_} + drag).`);return}const xe=await Hs(j);i.value===G&&(xe?(U("Copied to clipboard.","success"),G.focus()):f.value={mode:"copy",text:j})}function ce(G,j=i.value){!j||j!==i.value||(a.value="",j.paste(G),j.focus())}async function He(){Z();const G=i.value;if(G)try{if(!navigator.clipboard?.readText)throw new Error("Clipboard unavailable");const j=await navigator.clipboard.readText();ce(j,G)}catch{i.value===G&&(f.value={mode:"paste",text:""})}}function ct(){f.value=null,i.value?.focus()}function Ue(G){ce(G),ct()}async function R(G){const j=r.value.getBoundingClientRect();u.value={x:j.left+G.clientX,y:j.top+G.clientY},await Ht();const xe=c.value;!xe||!u.value||(u.value.x=Math.max(8,Math.min(u.value.x,window.innerWidth-xe.offsetWidth-8)),u.value.y=Math.max(8,Math.min(u.value.y,window.innerHeight-xe.offsetHeight-8)),xe.querySelector("button:not(:disabled)")?.focus())}function N(G){if(G.key==="Escape"||G.key==="Tab")G.key==="Escape"&&G.preventDefault(),Z(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(G.key)){G.preventDefault();const j=[...c.value.querySelectorAll("button:not(:disabled)")],xe=j.indexOf(document.activeElement),Le=G.key==="Home"?0:G.key==="End"?j.length-1:(xe+(G.key==="ArrowDown"?1:-1)+j.length)%j.length;j[Le]?.focus()}}function oe(){clearTimeout(y),y=null,h?.(),h=null,i.value=null,l.value="",a.value="",u.value=null,f.value=null}function me(G){oe();const j=G.target,xe=Date.now()+1e4;function Le(){if(r.value!==j)return;const Qe=j.contentWindow?.term;if(!Qe){Date.now()<xe?y=setTimeout(Le,50):U("Terminal clipboard controls could not load. Please reload the page.","error");return}i.value=Qe,Qe.options.macOptionClickForcesSelection=!0,l.value=Qe.getSelection(),h=$u({doc:j.contentDocument,terminal:Qe,isMac:g,getCopyText:X,onCopy:J,onContextMenu:R,onDismiss:()=>Z(),onInput:()=>{a.value=""},onSelection:d=>{l.value=d,d&&(a.value="")},onTmuxCopy:d=>{a.value=d}})}Le()}function Me(G){c.value?.contains(G.target)||Z()}return Je(D,oe),At(()=>{document.addEventListener("pointerdown",Me),window.addEventListener("resize",Z)}),Ut(()=>{te?.abort(),oe(),document.removeEventListener("pointerdown",Me),window.removeEventListener("resize",Z)}),(G,j)=>(I(),K("div",af,[w("input",{ref_key:"fileInput",ref:$,type:"file",multiple:"",hidden:"",onChange:ne},null,544),x.value||H.value?(I(),K("div",cf,[w("button",{class:"clipboard-btn",disabled:!i.value||!k.value,title:`Copy selected text (${ve(m)})`,onMousedown:j[0]||(j[0]=$e(()=>{},["prevent"])),onClick:J},"Copy",40,uf),w("button",{class:"clipboard-btn",disabled:!i.value,title:`Paste from your computer (${ve(b)})`,onMousedown:j[1]||(j[1]=$e(()=>{},["prevent"])),onClick:He},"Paste",40,ff),w("button",{class:"clipboard-btn",disabled:x.value?.status!=="running"||H.value,onClick:P},"Upload",8,df),H.value?(I(),K("div",{key:0,class:"upload-progress","aria-live":"polite",title:A.value?`${A.value.session}: ${A.value.filename}`:"准备上传"},[w("span",null,se(A.value?`${A.value.index}/${A.value.total} · ${A.value.percent}%`:"准备上传…"),1),w("progress",{value:A.value?.percent||0,max:"100","aria-label":"上传进度"},null,8,hf),w("button",{class:"clipboard-btn",onClick:j[2]||(j[2]=xe=>ve(te)?.abort())},"取消")],8,pf)):(I(),K("span",gf,se(ve(_))+" + drag to select · "+se(ve(m))+" / "+se(ve(b)),1))])):le("",!0),D.value?(I(),K("iframe",{ref_key:"iframe",ref:r,key:D.value,src:D.value,class:"terminal-frame",title:"Terminal",allow:"clipboard-read; clipboard-write",onLoad:me},null,40,mf)):(I(),K("div",vf,[w("div",yf,[w("div",bf,[_e(lo,{size:104}),j[6]||(j[6]=w("div",{class:"logo-text"},"ACLI Hub",-1))]),x.value?(I(),K(ye,{key:1},[w("p",wf,[j[8]||(j[8]=Be(" Session ",-1)),w("span",_f,se(x.value.name),1),j[9]||(j[9]=Be(" is currently stopped. ",-1))]),j[10]||(j[10]=w("p",{class:"sub-text"},"Restart the session to continue.",-1))],64)):(I(),K(ye,{key:0},[j[7]||(j[7]=w("p",{class:"welcome__text"},"No active session selected.",-1)),w("button",{class:"btn btn-primary",onClick:j[3]||(j[3]=xe=>s("create"))}," Create First Session ")],64))])])),u.value?(I(),K("div",{key:3,ref_key:"menuElement",ref:c,class:"clipboard-menu",style:_n({left:`${u.value.x}px`,top:`${u.value.y}px`}),role:"menu","aria-label":"Terminal clipboard",onKeydown:N},[w("button",{role:"menuitem",disabled:!k.value,onMousedown:j[4]||(j[4]=$e(()=>{},["prevent"])),onClick:J},[j[11]||(j[11]=Be(" Copy ",-1)),w("span",null,se(ve(m)),1)],40,xf),w("button",{role:"menuitem",onMousedown:j[5]||(j[5]=$e(()=>{},["prevent"])),onClick:He},[j[12]||(j[12]=Be(" Paste ",-1)),w("span",null,se(ve(b)),1)],32),w("button",{role:"menuitem",disabled:x.value?.status!=="running"||H.value,onClick:P},"Upload files…",8,Cf),j[13]||(j[13]=w("p",null,"Shift + right-click for browser menu",-1))],36)):le("",!0),f.value?(I(),Ve(Pi,{key:4,mode:f.value.mode,text:f.value.text,shortcut:f.value.mode==="copy"?ve(g)?"⌘C":"Ctrl+C":ve(g)?"⌘V":"Ctrl+V",onClose:ct,onPaste:Ue},null,8,["mode","text","shortcut"])):le("",!0)]))}},Ef=Ge(Sf,[["__scopeId","data-v-95819edf"]]),Tf={class:"modal-content glass"},$f={class:"modal-header"},kf={class:"modal-body"},Af={class:"form-group"},Pf=["placeholder"],Mf={class:"form-group"},Of=["value"],If={class:"modal-footer"},Rf=["disabled"],Lf={__name:"CreateDialog",emits:["close"],setup(e,{emit:t}){const n=t,s=Pt(),o=B({name:"",command:s.shells.length?s.shells[0].id:"bash"}),r=B(!1),i=Re(()=>o.value.name?o.value.name:`${o.value.command}-auto`);async function l(){if(!r.value){r.value=!0;try{await s.create(o.value),n("close")}catch(a){console.error(a)}finally{r.value=!1}}}return(a,u)=>(I(),K("div",{class:"modal-overlay",onClick:u[4]||(u[4]=$e(c=>n("close"),["self"]))},[w("div",Tf,[w("div",$f,[u[5]||(u[5]=w("h3",null,"Create New Session",-1)),w("button",{class:"close-btn",onClick:u[0]||(u[0]=c=>n("close"))},"✕")]),w("div",kf,[w("label",Af,[u[6]||(u[6]=w("span",{class:"label-text"},"Session Name (Optional)",-1)),ze(w("input",{"onUpdate:modelValue":u[1]||(u[1]=c=>o.value.name=c),type:"text",placeholder:i.value,onKeyup:zn(l,["enter"])},null,40,Pf),[[Tn,o.value.name]])]),w("label",Mf,[u[7]||(u[7]=w("span",{class:"label-text"},"Shell",-1)),ze(w("select",{"onUpdate:modelValue":u[2]||(u[2]=c=>o.value.command=c)},[(I(!0),K(ye,null,Sn(ve(s).shells,c=>(I(),K("option",{key:c.id,value:c.id},se(c.name),9,Of))),128))],512),[[fc,o.value.command]])])]),w("div",If,[w("button",{class:"btn",onClick:u[3]||(u[3]=c=>n("close"))},"Cancel"),w("button",{class:"btn btn-primary",onClick:l,disabled:r.value},se(r.value?"Creating...":"Create Session"),9,Rf)])])]))}},Df=Ge(Lf,[["__scopeId","data-v-f9ae44fb"]]),Ff={class:"login-screen"},Nf={class:"login-logo"},jf={key:0,class:"login-error",role:"alert"},Hf=["disabled"],Uf={__name:"LoginView",emits:["success"],setup(e,{emit:t}){const n=t,s=Pt(),o=B(""),r=B(""),i=B(!1),l=B(null);At(()=>{l.value?.focus()});async function a(){if(!(!o.value||i.value)){i.value=!0,r.value="";try{await s.login(o.value),o.value="",n("success")}catch(u){r.value=u.message||"Login failed"}finally{i.value=!1}}}return(u,c)=>(I(),K("div",Ff,[w("form",{class:"login-card",onSubmit:$e(a,["prevent"])},[w("div",Nf,[_e(lo,{size:72})]),c[2]||(c[2]=w("h1",null,"ACLI Hub",-1)),c[3]||(c[3]=w("p",{class:"login-hint"},"Enter the session password to continue",-1)),ze(w("input",{ref_key:"passwordInput",ref:l,"onUpdate:modelValue":c[0]||(c[0]=f=>o.value=f),type:"password",autocomplete:"current-password",placeholder:"Password","aria-label":"Password",onKeydown:c[1]||(c[1]=zn(f=>{o.value="",r.value=""},["esc"]))},null,544),[[Tn,o.value]]),r.value?(I(),K("p",jf,se(r.value),1)):le("",!0),w("button",{type:"submit",class:"login-btn",disabled:!o.value||i.value},se(i.value?"Signing in…":"Sign in"),9,Hf)],32)]))}},Kf=Ge(Uf,[["__scopeId","data-v-86b6b672"]]),Vf={class:"toast-container","aria-live":"polite"},Bf={class:"toast-message"},Wf={class:"toast-actions"},qf=["onClick"],Gf=["onClick"],zf={__name:"Toast",setup(e,{expose:t}){const n=B([]);let s=0;const o=new Map;function r(l){clearTimeout(o.get(l)),o.delete(l),n.value=n.value.filter(a=>a.id!==l)}function i(l,a="info",{action:u,duration:c=u?0:4e3}={}){const f=++s;n.value.push({id:f,message:l,type:a,action:u}),c&&o.set(f,setTimeout(()=>r(f),c))}return Ut(()=>{for(const l of o.values())clearTimeout(l)}),t({show:i}),(l,a)=>(I(),K("div",Vf,[_e(rc,{name:"toast"},{default:jr(()=>[(I(!0),K(ye,null,Sn(n.value,u=>(I(),K("div",{key:u.id,class:We(["toast",u.type])},[w("div",Bf,se(u.message),1),w("div",Wf,[u.action?(I(),K("button",{key:0,onClick:u.action.onClick},se(u.action.label),9,qf)):le("",!0),w("button",{"aria-label":"Dismiss notification",onClick:c=>r(u.id)},"×",8,Gf)])],2))),128))]),_:1})]))}},Yf=Ge(zf,[["__scopeId","data-v-6bea03ca"]]),Jf={key:1,class:"app-layout"},Xf={class:"toolbar glass"},Zf={class:"toolbar-left"},Qf={class:"logo-wrapper"},ed={class:"toolbar-right"},td={class:"main-area"},nd={__name:"App",setup(e){const t=Pt(),n=B(!1),s=B(!1),o=B(null),r=B(!1);window.innerWidth<768&&(n.value=!0),Hr("toast",o),Je(()=>t.authenticated,c=>{c&&t.init()}),At(async()=>{await t.checkAuth(),r.value=!0});async function l(){await t.logout()}function a(){n.value=!n.value}function u(){n.value=!0}return(c,f)=>r.value&&!ve(t).authenticated?(I(),Ve(Kf,{key:0})):r.value?(I(),K("div",Jf,[w("header",Xf,[w("div",Zf,[w("button",{class:"icon-btn toggle-btn",onClick:a,"aria-label":"Toggle Sidebar"},[...f[4]||(f[4]=[w("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[w("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),w("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),w("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]),w("div",Qf,[_e(lo,{size:28})]),f[5]||(f[5]=w("h1",{class:"toolbar-title"},"ACLI Hub",-1))]),w("div",ed,[ve(t).authRequired?(I(),K("button",{key:0,class:"icon-btn toggle-btn","aria-label":"Log out",title:"Log out",onClick:l},[...f[6]||(f[6]=[w("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[w("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),w("polyline",{points:"16 17 21 12 16 7"}),w("line",{x1:"21",y1:"12",x2:"9",y2:"12"})],-1)])])):le("",!0)])]),w("div",td,[w("div",{class:We(["sidebar-overlay",{show:!n.value}]),onClick:u},null,2),_e(nf,{collapsed:n.value,onCreate:f[0]||(f[0]=g=>s.value=!0),onExpand:f[1]||(f[1]=g=>n.value=!1)},null,8,["collapsed"]),_e(Ef,{onCreate:f[2]||(f[2]=g=>s.value=!0)})]),s.value?(I(),Ve(Df,{key:0,onClose:f[3]||(f[3]=g=>s.value=!1)})):le("",!0),_e(Yf,{ref_key:"toastRef",ref:o},null,512)])):le("",!0)}},sd=Ge(nd,[["__scopeId","data-v-1baffbd3"]]),Mi=vc(sd);Mi.use(wc());Mi.mount("#app");export{ld as A,id as B,rd as C,ye as F,Ss as G,Wr as T,ro as _,Ge as a,Ut as b,I as c,Ve as d,ki as e,w as f,K as g,le as h,ve as i,Wc as j,$i as k,Sn as l,Be as m,We as n,At as o,od as p,$e as q,B as r,Ht as s,se as t,Pt as u,dl as v,Je as w,Re as x,ad as y,rr as z};
@@ -10,8 +10,8 @@
10
10
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
11
11
  <link rel="manifest" href="/site.webmanifest" />
12
12
  <title>ACLI Hub</title>
13
- <script type="module" crossorigin src="/assets/index-DhBFQikm.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-C_n2nSEM.css">
13
+ <script type="module" crossorigin src="/assets/index-CGMIO8Dh.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-B-BHzxof.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
@@ -10,6 +10,7 @@ const archiver = require('archiver');
10
10
  const { execFile } = require('child_process');
11
11
  const { promisify } = require('util');
12
12
  const moveFile = promisify(execFile);
13
+ const { scopedPath, entryMetadata } = require('../services/file-paths');
13
14
 
14
15
  const TEXT_LIMIT = 2 * 1024 * 1024;
15
16
  const DOCX_LIMIT = 10 * 1024 * 1024;
@@ -111,8 +112,17 @@ module.exports = function filesRoute({ platform = process.platform, home = os.ho
111
112
  res.json({ path: directory, entries, trash });
112
113
  }));
113
114
 
115
+ router.get('/stat', route(async (req, res) => {
116
+ const target = await scopedPath(req.query.root, req.query.path);
117
+ const stat = await fsp.lstat(target);
118
+ if (!stat.isFile()) throw httpError(400, '链接目标不是可预览的普通文件');
119
+ res.set('Cache-Control', 'no-store');
120
+ res.json(entryMetadata(target, stat));
121
+ }));
122
+
114
123
  router.get('/content', route(async (req, res) => {
115
124
  const target = filePath(req.query.path);
125
+ if (req.query.root !== undefined) await scopedPath(req.query.root, target);
116
126
  const stat = await fsp.lstat(target);
117
127
  if (!stat.isFile()) throw httpError(400, 'Only regular files can be previewed or downloaded');
118
128
  const ext = path.extname(target).slice(1).toLowerCase();