@openloaf/openspeech-frontend 0.2.48-beta.3 → 0.2.48

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.
@@ -1,4 +1,4 @@
1
- import{r as m,R as Ah,a as w4,g as Ai,b as _e,i as te,c as Ab,k as k4,d as Ob,u as _4,e as Mb,f as S4,h as sn,B as Rb,j as La,S as VT,l as je,m as In,n as E4,o as f,X as Dn,p as uk,q as ip,s as Ib,t as jf,v as C4,w as j4,x as N4,y as P4,z as Jm,A as Ut,C as Ne,D as Db,E as Oh,F as Wv,M as T4,G as Lb,H as $b,I as Xn,J as dk,K as qT,L as KT,N as A4,W as O4,O as M4,P as R4}from"./App-fHWTgj1I.js";var GT=e=>{throw TypeError(e)},YT=(e,t,n)=>t.has(e)||GT("Cannot "+n),ei=(e,t,n)=>(YT(e,t,"read from private field"),n?n.call(e):t.get(e)),Lc=(e,t,n)=>t.has(e)?GT("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Li=(e,t,n,r)=>(YT(e,t,"write to private field"),t.set(e,n),n),fk="popstate";function pk(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function I4(e={}){function t(r,i){let a=i.state?.masked,{pathname:o,search:s,hash:l}=a||r.location;return pu("",{pathname:o,search:s,hash:l},i.state&&i.state.usr||null,i.state&&i.state.key||"default",a?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function n(r,i){return typeof i=="string"?i:sa(i)}return L4(t,n,null,e)}function ot(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function wn(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function D4(){return Math.random().toString(36).substring(2,10)}function hk(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function pu(e,t,n=null,r,i){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?ga(t):t,state:n,key:t&&t.key||r||D4(),mask:i}}function sa({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function ga(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function L4(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s="POP",l=null,c=u();c==null&&(c=0,o.replaceState({...o.state,idx:c},""));function u(){return(o.state||{idx:null}).idx}function d(){s="POP";let x=u(),v=x==null?null:x-c;c=x,l&&l({action:s,location:y.location,delta:v})}function p(x,v){s="PUSH";let k=pk(x)?x:pu(y.location,x,v);c=u()+1;let b=hk(k,c),_=y.createHref(k.mask||k);try{o.pushState(b,"",_)}catch(S){if(S instanceof DOMException&&S.name==="DataCloneError")throw S;i.location.assign(_)}a&&l&&l({action:s,location:y.location,delta:1})}function h(x,v){s="REPLACE";let k=pk(x)?x:pu(y.location,x,v);c=u();let b=hk(k,c),_=y.createHref(k.mask||k);o.replaceState(b,"",_),a&&l&&l({action:s,location:y.location,delta:0})}function g(x){return XT(x)}let y={get action(){return s},get location(){return e(i,o)},listen(x){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(fk,d),l=x,()=>{i.removeEventListener(fk,d),l=null}},createHref(x){return t(i,x)},createURL:g,encodeLocation(x){let v=g(x);return{pathname:v.pathname,search:v.search,hash:v.hash}},push:p,replace:h,go(x){return o.go(x)}};return y}function XT(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),ot(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:sa(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}var $c,mk=class{constructor(e){if(Lc(this,$c,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(ei(this,$c).has(e))return ei(this,$c).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw new Error("No value found for context")}set(e,t){ei(this,$c).set(e,t)}};$c=new WeakMap;var $4=new Set(["lazy","caseSensitive","path","id","index","children"]);function z4(e){return $4.has(e)}var F4=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function B4(e){return F4.has(e)}function H4(e){return e.index===!0}function hu(e,t,n=[],r={},i=!1){return e.map((a,o)=>{let s=[...n,String(o)],l=typeof a.id=="string"?a.id:s.join("-");if(ot(a.index!==!0||!a.children,"Cannot specify children on an index route"),ot(i||!r[l],`Found a route id collision on id "${l}". Route id's must be globally unique within Data Router usages`),H4(a)){let c={...a,id:l};return r[l]=gk(c,t(c)),c}else{let c={...a,id:l,children:void 0};return r[l]=gk(c,t(c)),a.children&&(c.children=hu(a.children,t,s,r,i)),c}})}function gk(e,t){return Object.assign(e,{...t,...typeof t.lazy=="object"&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function ZT(e,t,n="/"){return xi(e,t,n,!1)}function xi(e,t,n,r,i){let a=typeof t=="string"?ga(t):t,o=di(a.pathname||"/",n);if(o==null)return null;let s=i??Nf(e),l=null,c=t3(o);for(let u=0;l==null&&u<s.length;++u)l=J4(s[u],c,r);return l}function W4(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function Nf(e){let t=QT(e);return U4(t),t}function QT(e,t=[],n=[],r="",i=!1){let a=(o,s,l=i,c)=>{let u={relativePath:c===void 0?o.path||"":c,caseSensitive:o.caseSensitive===!0,childrenIndex:s,route:o};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(r)&&l)return;ot(u.relativePath.startsWith(r),`Absolute route path "${u.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(r.length)}let d=ui([r,u.relativePath]),p=n.concat(u);o.children&&o.children.length>0&&(ot(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${d}".`),QT(o.children,t,p,d,l)),!(o.path==null&&!o.index)&&t.push({path:d,score:Z4(d,o.index),routesMeta:p})};return e.forEach((o,s)=>{if(o.path===""||!o.path?.includes("?"))a(o,s);else for(let l of JT(o.path))a(o,s,!0,l)}),t}function JT(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),a=n.replace(/\?$/,"");if(r.length===0)return i?[a,""]:[a];let o=JT(r.join("/")),s=[];return s.push(...o.map(l=>l===""?a:[a,l].join("/"))),i&&s.push(...o),s.map(l=>e.startsWith("/")&&l===""?"/":l)}function U4(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:Q4(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var V4=/^:[\w-]+$/,q4=3,K4=2,G4=1,Y4=10,X4=-2,yk=e=>e==="*";function Z4(e,t){let n=e.split("/"),r=n.length;return n.some(yk)&&(r+=X4),t&&(r+=K4),n.filter(i=>!yk(i)).reduce((i,a)=>i+(V4.test(a)?q4:a===""?G4:Y4),r)}function Q4(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function J4(e,t,n=!1){let{routesMeta:r}=e,i={},a="/",o=[];for(let s=0;s<r.length;++s){let l=r[s],c=s===r.length-1,u=a==="/"?t:t.slice(a.length)||"/",d=ap({path:l.relativePath,caseSensitive:l.caseSensitive,end:c},u),p=l.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=ap({path:l.relativePath,caseSensitive:l.caseSensitive,end:!1},u)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:ui([a,d.pathname]),pathnameBase:i3(ui([a,d.pathnameBase])),route:p}),d.pathnameBase!=="/"&&(a=ui([a,d.pathnameBase]))}return o}function ap(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=e3(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,"$1"),s=i.slice(1);return{params:r.reduce((c,{paramName:u,isOptional:d},p)=>{if(u==="*"){let g=s[p]||"";o=a.slice(0,a.length-g.length).replace(/(.)\/+$/,"$1")}const h=s[p];return d&&!h?c[u]=void 0:c[u]=(h||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:o,pattern:e}}function e3(e,t=!1,n=!0){wn(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,s,l,c,u)=>{if(r.push({paramName:s,isOptional:l!=null}),l){let d=u.charAt(c+o.length);return d&&d!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function t3(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return wn(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function di(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function n3({basename:e,pathname:t}){return t==="/"?e:ui([e,t])}var e2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,zb=e=>e2.test(e);function r3(e,t="/"){let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?ga(e):e,a;return n?(n=Bb(n),n.startsWith("/")?a=vk(n.substring(1),"/"):a=vk(n,t)):a=t,{pathname:a,search:a3(r),hash:o3(i)}}function vk(e,t){let n=op(t).split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function eg(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function t2(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Fb(e){let t=t2(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function Mh(e,t,n,r=!1){let i;typeof e=="string"?i=ga(e):(i={...e},ot(!i.pathname||!i.pathname.includes("?"),eg("?","pathname","search",i)),ot(!i.pathname||!i.pathname.includes("#"),eg("#","pathname","hash",i)),ot(!i.search||!i.search.includes("#"),eg("#","search","hash",i)));let a=e===""||i.pathname==="",o=a?"/":i.pathname,s;if(o==null)s=n;else{let d=t.length-1;if(!r&&o.startsWith("..")){let p=o.split("/");for(;p[0]==="..";)p.shift(),d-=1;i.pathname=p.join("/")}s=d>=0?t[d]:"/"}let l=r3(i,s),c=o&&o!=="/"&&o.endsWith("/"),u=(a||o===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var Bb=e=>e.replace(/\/\/+/g,"/"),ui=e=>Bb(e.join("/")),op=e=>e.replace(/\/+$/,""),i3=e=>op(e).replace(/^\/*/,"/"),a3=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,o3=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Vu=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function mu(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function qu(e){let t=e.map(n=>n.route.path).filter(Boolean);return ui(t)||"/"}var n2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function r2(e,t){let n=e;if(typeof n!="string"||!e2.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(n2)try{let a=new URL(window.location.href),o=n.startsWith("//")?new URL(a.protocol+n):new URL(n),s=di(o.pathname,t);o.origin===a.origin&&s!=null?n=s+o.search+o.hash:i=!0}catch{wn(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}var yo=Symbol("Uninstrumented");function s3(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(i=>i({id:t.id,index:t.index,path:t.path,instrument(a){let o=Object.keys(n);for(let s of o)a[s]&&n[s].push(a[s])}}));let r={};if(typeof t.lazy=="function"&&n.lazy.length>0){let i=ul(n.lazy,t.lazy,()=>{});i&&(r.lazy=i)}if(typeof t.lazy=="object"){let i=t.lazy;["middleware","loader","action"].forEach(a=>{let o=i[a],s=n[`lazy.${a}`];if(typeof o=="function"&&s.length>0){let l=ul(s,o,()=>{});l&&(r.lazy=Object.assign(r.lazy||{},{[a]:l}))}})}return["loader","action"].forEach(i=>{let a=t[i];if(typeof a=="function"&&n[i].length>0){let o=a[yo]??a,s=ul(n[i],o,(...l)=>xk(l[0]));s&&(i==="loader"&&o.hydrate===!0&&(s.hydrate=!0),s[yo]=o,r[i]=s)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(i=>{let a=i[yo]??i,o=ul(n.middleware,a,(...s)=>xk(s[0]));return o?(o[yo]=a,o):i})),r}function l3(e,t){let n={navigate:[],fetch:[]};if(t.forEach(r=>r({instrument(i){let a=Object.keys(i);for(let o of a)i[o]&&n[o].push(i[o])}})),n.navigate.length>0){let r=e.navigate[yo]??e.navigate,i=ul(n.navigate,r,(...a)=>{let[o,s]=a;return{to:typeof o=="number"||typeof o=="string"?o:o?sa(o):".",...bk(e,s??{})}});i&&(i[yo]=r,e.navigate=i)}if(n.fetch.length>0){let r=e.fetch[yo]??e.fetch,i=ul(n.fetch,r,(...a)=>{let[o,,s,l]=a;return{href:s??".",fetcherKey:o,...bk(e,l??{})}});i&&(i[yo]=r,e.fetch=i)}return e}function ul(e,t,n){return e.length===0?null:async(...r)=>{let i=await i2(e,n(...r),()=>t(...r),e.length-1);if(i.type==="error")throw i.value;return i.value}}async function i2(e,t,n,r){let i=e[r],a;if(i){let o,s=async()=>(o?console.error("You cannot call instrumented handlers more than once"):o=i2(e,t,n,r-1),a=await o,ot(a,"Expected a result"),a.type==="error"&&a.value instanceof Error?{status:"error",error:a.value}:{status:"success",error:void 0});try{await i(s,t)}catch(l){console.error("An instrumentation function threw an error:",l)}o||await s(),await o}else try{a={type:"success",value:await n()}}catch(o){a={type:"error",value:o}}return a||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function xk(e){let{request:t,context:n,params:r,pattern:i}=e;return{request:c3(t),params:{...r},pattern:i,context:u3(n)}}function bk(e,t){return{currentUrl:sa(e.state.location),..."formMethod"in t?{formMethod:t.formMethod}:{},..."formEncType"in t?{formEncType:t.formEncType}:{},..."formData"in t?{formData:t.formData}:{},..."body"in t?{body:t.body}:{}}}function c3(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function u3(e){if(f3(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var d3=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function f3(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join("\0")===d3}var a2=["POST","PUT","PATCH","DELETE"],p3=new Set(a2),h3=["GET",...a2],m3=new Set(h3),o2=new Set([301,302,303,307,308]),g3=new Set([307,308]),tg={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},y3={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},hc={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},v3=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),s2="remix-router-transitions",l2=Symbol("ResetLoaderData"),Qo,al,ao,ol,x3=class{constructor(e){Lc(this,Qo),Lc(this,al),Lc(this,ao),Lc(this,ol),Li(this,Qo,e),Li(this,al,Nf(e))}get stableRoutes(){return ei(this,Qo)}get activeRoutes(){return ei(this,ao)??ei(this,Qo)}get branches(){return ei(this,ol)??ei(this,al)}get hasHMRRoutes(){return ei(this,ao)!=null}setRoutes(e){Li(this,Qo,e),Li(this,al,Nf(e))}setHmrRoutes(e){Li(this,ao,e),Li(this,ol,Nf(e))}commitHmrRoutes(){ei(this,ao)&&(Li(this,Qo,ei(this,ao)),Li(this,al,ei(this,ol)),Li(this,ao,void 0),Li(this,ol,void 0))}};Qo=new WeakMap;al=new WeakMap;ao=new WeakMap;ol=new WeakMap;function b3(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u";ot(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||v3,a=i;if(e.instrumentations){let U=e.instrumentations;a=K=>({...i(K),...s3(U.map(re=>re.route).filter(Boolean),K)})}let o={},s=new x3(hu(e.routes,a,void 0,o)),l=e.basename||"/";l.startsWith("/")||(l=`/${l}`);let c=e.dataStrategy||E3,u={...e.future},d=null,p=new Set,h=null,g=null,y=null,x=e.hydrationData!=null,v=xi(s.activeRoutes,e.history.location,l,!1,s.branches),k=!1,b=null,_,S;if(v==null&&!e.patchRoutesOnNavigation){let U=ti(404,{pathname:e.history.location.pathname}),{matches:K,route:re}=Td(s.activeRoutes);_=!0,S=!_,v=K,b={[re.id]:U}}else if(v&&!e.hydrationData&&Zt(v,s.activeRoutes,e.history.location.pathname).active&&(v=null),v)if(v.some(U=>U.route.lazy))_=!1,S=!_;else if(!v.some(U=>Hb(U.route)))_=!0,S=!_;else{let U=e.hydrationData?e.hydrationData.loaderData:null,K=e.hydrationData?e.hydrationData.errors:null,re=v;if(K){let fe=v.findIndex(be=>K[be.route.id]!==void 0);re=re.slice(0,fe+1)}S=!1,_=!0,re.forEach(fe=>{let be=c2(fe.route,U,K);S=S||be.renderFallback,_=_&&!be.shouldLoad})}else{_=!1,S=!_,v=[];let U=Zt(null,s.activeRoutes,e.history.location.pathname);U.active&&U.matches&&(k=!0,v=U.matches)}let w,E={historyAction:e.history.action,location:e.history.location,matches:v,initialized:_,renderFallback:S,navigation:tg,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||b,fetchers:new Map,blockers:new Map},C="POP",j=null,T=!1,R,A=!1,D=new Map,M=null,O=!1,I=!1,$=new Set,V=new Map,z=0,P=-1,G=new Map,Q=new Set,N=new Map,F=new Map,L=new Set,H=new Map,ne,J=null;function Y(){if(d=e.history.listen(({action:U,location:K,delta:re})=>{if(ne){ne(),ne=void 0;return}wn(H.size===0||re!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let fe=En({currentLocation:E.location,nextLocation:K,historyAction:U});if(fe&&re!=null){let be=new Promise(We=>{ne=We});e.history.go(re*-1),Sn(fe,{state:"blocked",location:K,proceed(){Sn(fe,{state:"proceeding",proceed:void 0,reset:void 0,location:K}),be.then(()=>e.history.go(re))},reset(){let We=new Map(E.blockers);We.set(fe,hc),q({blockers:We})}}),j?.resolve(),j=null;return}return ye(U,K)}),n){W3(t,D);let U=()=>U3(t,D);t.addEventListener("pagehide",U),M=()=>t.removeEventListener("pagehide",U)}return E.initialized||ye("POP",E.location,{initialHydration:!0}),w}function ie(){d&&d(),M&&M(),p.clear(),R&&R.abort(),E.fetchers.forEach((U,K)=>Me(K)),E.blockers.forEach((U,K)=>_t(K))}function he(U){return p.add(U),()=>p.delete(U)}function q(U,K={}){U.matches&&(U.matches=U.matches.map(be=>{let We=o[be.route.id],He=be.route;return He.element!==We.element||He.errorElement!==We.errorElement||He.hydrateFallbackElement!==We.hydrateFallbackElement?{...be,route:We}:be})),E={...E,...U};let re=[],fe=[];E.fetchers.forEach((be,We)=>{be.state==="idle"&&(L.has(We)?re.push(We):fe.push(We))}),L.forEach(be=>{!E.fetchers.has(be)&&!V.has(be)&&re.push(be)}),[...p].forEach(be=>be(E,{deletedFetchers:re,newErrors:U.errors??null,viewTransitionOpts:K.viewTransitionOpts,flushSync:K.flushSync===!0})),re.forEach(be=>Me(be)),fe.forEach(be=>E.fetchers.delete(be))}function oe(U,K,{flushSync:re}={}){let fe=E.actionData!=null&&E.navigation.formMethod!=null&&rr(E.navigation.formMethod)&&E.navigation.state==="loading"&&U.state?._isRedirect!==!0,be;K.actionData?Object.keys(K.actionData).length>0?be=K.actionData:be=null:fe?be=E.actionData:be=null;let We=K.loaderData?Ak(E.loaderData,K.loaderData,K.matches||[],K.errors):E.loaderData,He=E.blockers;He.size>0&&(He=new Map(He),He.forEach((Ze,Ve)=>He.set(Ve,hc)));let ze=O?!1:Bt(U,K.matches||E.matches),Fe=T===!0||E.navigation.formMethod!=null&&rr(E.navigation.formMethod)&&U.state?._isRedirect!==!0;s.commitHmrRoutes(),O||C==="POP"||(C==="PUSH"?e.history.push(U,U.state):C==="REPLACE"&&e.history.replace(U,U.state));let Be;if(C==="POP"){let Ze=D.get(E.location.pathname);Ze&&Ze.has(U.pathname)?Be={currentLocation:E.location,nextLocation:U}:D.has(U.pathname)&&(Be={currentLocation:U,nextLocation:E.location})}else if(A){let Ze=D.get(E.location.pathname);Ze?Ze.add(U.pathname):(Ze=new Set([U.pathname]),D.set(E.location.pathname,Ze)),Be={currentLocation:E.location,nextLocation:U}}q({...K,actionData:be,loaderData:We,historyAction:C,location:U,initialized:!0,renderFallback:!1,navigation:tg,revalidation:"idle",restoreScrollPosition:ze,preventScrollReset:Fe,blockers:He},{viewTransitionOpts:Be,flushSync:re===!0}),C="POP",T=!1,A=!1,O=!1,I=!1,j?.resolve(),j=null,J?.resolve(),J=null}async function de(U,K){if(j?.resolve(),j=null,typeof U=="number"){j||(j=Ik());let Gt=j.promise;return e.history.go(U),Gt}let re=Uv(E.location,E.matches,l,U,K?.fromRouteId,K?.relative),{path:fe,submission:be,error:We}=wk(!1,re,K),He;K?.mask&&(He={pathname:"",search:"",hash:"",...typeof K.mask=="string"?ga(K.mask):{...E.location.mask,...K.mask}});let ze=E.location,Fe=pu(ze,fe,K&&K.state,void 0,He);Fe={...Fe,...e.history.encodeLocation(Fe)};let Be=K&&K.replace!=null?K.replace:void 0,Ze="PUSH";Be===!0?Ze="REPLACE":Be===!1||be!=null&&rr(be.formMethod)&&be.formAction===E.location.pathname+E.location.search&&(Ze="REPLACE");let Ve=K&&"preventScrollReset"in K?K.preventScrollReset===!0:void 0,St=(K&&K.flushSync)===!0,gt=En({currentLocation:ze,nextLocation:Fe,historyAction:Ze});if(gt){Sn(gt,{state:"blocked",location:Fe,proceed(){Sn(gt,{state:"proceeding",proceed:void 0,reset:void 0,location:Fe}),de(U,K)},reset(){let Gt=new Map(E.blockers);Gt.set(gt,hc),q({blockers:Gt})}});return}await ye(Ze,Fe,{submission:be,pendingError:We,preventScrollReset:Ve,replace:K&&K.replace,enableViewTransition:K&&K.viewTransition,flushSync:St,callSiteDefaultShouldRevalidate:K&&K.defaultShouldRevalidate})}function Ae(){J||(J=Ik()),ce(),q({revalidation:"loading"});let U=J.promise;return E.navigation.state==="submitting"?U:E.navigation.state==="idle"?(ye(E.historyAction,E.location,{startUninterruptedRevalidation:!0}),U):(ye(C||E.historyAction,E.navigation.location,{overrideNavigation:E.navigation,enableViewTransition:A===!0}),U)}async function ye(U,K,re){R&&R.abort(),R=null,C=U,O=(re&&re.startUninterruptedRevalidation)===!0,Tt(E.location,E.matches),T=(re&&re.preventScrollReset)===!0,A=(re&&re.enableViewTransition)===!0;let fe=s.activeRoutes,be=re&&re.overrideNavigation,We=re?.initialHydration&&E.matches&&E.matches.length>0&&!k?E.matches:xi(fe,K,l,!1,s.branches),He=(re&&re.flushSync)===!0;if(We&&E.initialized&&!I&&M3(E.location,K)&&!(re&&re.submission&&rr(re.submission.formMethod))){oe(K,{matches:We},{flushSync:He});return}let ze=Zt(We,fe,K.pathname);if(ze.active&&ze.matches&&(We=ze.matches),!We){let{error:pn,notFoundMatches:Bn,route:xt}=Qn(K.pathname);oe(K,{matches:Bn,loaderData:{},errors:{[xt.id]:pn}},{flushSync:He});return}R=new AbortController;let Fe=sl(e.history,K,R.signal,re&&re.submission),Be=e.getContext?await e.getContext():new mk,Ze;if(re&&re.pendingError)Ze=[uo(We).route.id,{type:"error",error:re.pendingError}];else if(re&&re.submission&&rr(re.submission.formMethod)){let pn=await we(Fe,K,re.submission,We,Be,ze.active,re&&re.initialHydration===!0,{replace:re.replace,flushSync:He});if(pn.shortCircuited)return;if(pn.pendingActionResult){let[Bn,xt]=pn.pendingActionResult;if(Lr(xt)&&mu(xt.error)&&xt.error.status===404){R=null,oe(K,{matches:pn.matches,loaderData:{},errors:{[Bn]:xt.error}});return}}We=pn.matches||We,Ze=pn.pendingActionResult,be=ng(K,re.submission),He=!1,ze.active=!1,Fe=sl(e.history,Fe.url,Fe.signal)}let{shortCircuited:Ve,matches:St,loaderData:gt,errors:Gt}=await Pe(Fe,K,We,Be,ze.active,be,re&&re.submission,re&&re.fetcherSubmission,re&&re.replace,re&&re.initialHydration===!0,He,Ze,re&&re.callSiteDefaultShouldRevalidate);Ve||(R=null,oe(K,{matches:St||We,...Ok(Ze),loaderData:gt,errors:Gt}))}async function we(U,K,re,fe,be,We,He,ze={}){ce();let Fe=B3(K,re);if(q({navigation:Fe},{flushSync:ze.flushSync===!0}),We){let Ve=await Rr(fe,K.pathname,U.signal);if(Ve.type==="aborted")return{shortCircuited:!0};if(Ve.type==="error"){if(Ve.partialMatches.length===0){let{matches:gt,route:Gt}=Td(s.activeRoutes);return{matches:gt,pendingActionResult:[Gt.id,{type:"error",error:Ve.error}]}}let St=uo(Ve.partialMatches).route.id;return{matches:Ve.partialMatches,pendingActionResult:[St,{type:"error",error:Ve.error}]}}else if(Ve.matches)fe=Ve.matches;else{let{notFoundMatches:St,error:gt,route:Gt}=Qn(K.pathname);return{matches:St,pendingActionResult:[Gt.id,{type:"error",error:gt}]}}}let Be,Ze=Pf(fe,K);if(!Ze.route.action&&!Ze.route.lazy)Be={type:"error",error:ti(405,{method:U.method,pathname:K.pathname,routeId:Ze.route.id})};else{let Ve=xl(a,o,U,K,fe,Ze,He?[]:r,be),St=await Ce(U,K,Ve,be,null);if(Be=St[Ze.route.id],!Be){for(let gt of fe)if(St[gt.route.id]){Be=St[gt.route.id];break}}if(U.signal.aborted)return{shortCircuited:!0}}if(is(Be)){let Ve;return ze&&ze.replace!=null?Ve=ze.replace:Ve=Nk(Be.response.headers.get("Location"),new URL(U.url),l,e.history)===E.location.pathname+E.location.search,await le(U,Be,!0,{submission:re,replace:Ve}),{shortCircuited:!0}}if(Lr(Be)){let Ve=uo(fe,Ze.route.id);return(ze&&ze.replace)!==!0&&(C="PUSH"),{matches:fe,pendingActionResult:[Ve.route.id,Be,Ze.route.id]}}return{matches:fe,pendingActionResult:[Ze.route.id,Be]}}async function Pe(U,K,re,fe,be,We,He,ze,Fe,Be,Ze,Ve,St){let gt=We||ng(K,He),Gt=He||ze||Rk(gt),pn=!O&&!Be;if(be){if(pn){let tr=ve(Ve);q({navigation:gt,...tr!==void 0?{actionData:tr}:{}},{flushSync:Ze})}let ht=await Rr(re,K.pathname,U.signal);if(ht.type==="aborted")return{shortCircuited:!0};if(ht.type==="error"){if(ht.partialMatches.length===0){let{matches:Bs,route:Uo}=Td(s.activeRoutes);return{matches:Bs,loaderData:{},errors:{[Uo.id]:ht.error}}}let tr=uo(ht.partialMatches).route.id;return{matches:ht.partialMatches,loaderData:{},errors:{[tr]:ht.error}}}else if(ht.matches)re=ht.matches;else{let{error:tr,notFoundMatches:Bs,route:Uo}=Qn(K.pathname);return{matches:Bs,loaderData:{},errors:{[Uo.id]:tr}}}}let Bn=s.activeRoutes,{dsMatches:xt,revalidatingFetchers:Ir}=kk(U,fe,a,o,e.history,E,re,Gt,K,Be?[]:r,Be===!0,I,$,L,N,Q,Bn,l,e.patchRoutesOnNavigation!=null,s.branches,Ve,St);if(P=++z,!e.dataStrategy&&!xt.some(ht=>ht.shouldLoad)&&!xt.some(ht=>ht.route.middleware&&ht.route.middleware.length>0)&&Ir.length===0){let ht=Ot();return oe(K,{matches:re,loaderData:{},errors:Ve&&Lr(Ve[1])?{[Ve[0]]:Ve[1].error}:null,...Ok(Ve),...ht?{fetchers:new Map(E.fetchers)}:{}},{flushSync:Ze}),{shortCircuited:!0}}if(pn){let ht={};if(!be){ht.navigation=gt;let tr=ve(Ve);tr!==void 0&&(ht.actionData=tr)}Ir.length>0&&(ht.fetchers=De(Ir)),q(ht,{flushSync:Ze})}Ir.forEach(ht=>{wt(ht.key),ht.controller&&V.set(ht.key,ht.controller)});let Ho=()=>Ir.forEach(ht=>wt(ht.key));R&&R.signal.addEventListener("abort",Ho);let{loaderResults:fc,fetcherResults:eo}=await X(xt,Ir,U,K,fe);if(U.signal.aborted)return{shortCircuited:!0};R&&R.signal.removeEventListener("abort",Ho),Ir.forEach(ht=>V.delete(ht.key));let Di=Ad(fc);if(Di)return await le(U,Di.result,!0,{replace:Fe}),{shortCircuited:!0};if(Di=Ad(eo),Di)return Q.add(Di.key),await le(U,Di.result,!0,{replace:Fe}),{shortCircuited:!0};let{loaderData:Qm,errors:pc}=Tk(E,re,fc,Ve,Ir,eo);Be&&E.errors&&(pc={...E.errors,...pc});let Wo=Ot(),jd=vn(P),Nd=Wo||jd||Ir.length>0;return{matches:re,loaderData:Qm,errors:pc,...Nd?{fetchers:new Map(E.fetchers)}:{}}}function ve(U){if(U&&!Lr(U[1]))return{[U[0]]:U[1].data};if(E.actionData)return Object.keys(E.actionData).length===0?null:E.actionData}function De(U){return U.forEach(K=>{let re=E.fetchers.get(K.key),fe=mc(void 0,re?re.data:void 0);E.fetchers.set(K.key,fe)}),new Map(E.fetchers)}async function ue(U,K,re,fe){wt(U);let be=(fe&&fe.flushSync)===!0,We=s.activeRoutes,He=Uv(E.location,E.matches,l,re,K,fe?.relative),ze=xi(We,He,l,!1,s.branches),Fe=Zt(ze,We,He);if(Fe.active&&Fe.matches&&(ze=Fe.matches),!ze){Se(U,K,ti(404,{pathname:He}),{flushSync:be});return}let{path:Be,submission:Ze,error:Ve}=wk(!0,He,fe);if(Ve){Se(U,K,Ve,{flushSync:be});return}let St=e.getContext?await e.getContext():new mk,gt=(fe&&fe.preventScrollReset)===!0;if(Ze&&rr(Ze.formMethod)){await ge(U,K,Be,ze,St,Fe.active,be,gt,Ze,fe&&fe.defaultShouldRevalidate);return}N.set(U,{routeId:K,path:Be}),await B(U,K,Be,ze,St,Fe.active,be,gt,Ze)}async function ge(U,K,re,fe,be,We,He,ze,Fe,Be){ce(),N.delete(U);let Ze=E.fetchers.get(U);Ee(U,H3(Fe,Ze),{flushSync:He});let Ve=new AbortController,St=sl(e.history,re,Ve.signal,Fe);if(We){let Qt=await Rr(fe,new URL(St.url).pathname,St.signal,U);if(Qt.type==="aborted")return;if(Qt.type==="error"){Se(U,K,Qt.error,{flushSync:He});return}else if(Qt.matches)fe=Qt.matches;else{Se(U,K,ti(404,{pathname:re}),{flushSync:He});return}}let gt=Pf(fe,re);if(!gt.route.action&&!gt.route.lazy){let Qt=ti(405,{method:Fe.formMethod,pathname:re,routeId:K});Se(U,K,Qt,{flushSync:He});return}V.set(U,Ve);let Gt=z,pn=xl(a,o,St,re,fe,gt,r,be),Bn=await Ce(St,re,pn,be,U),xt=Bn[gt.route.id];if(!xt){for(let Qt of pn)if(Bn[Qt.route.id]){xt=Bn[Qt.route.id];break}}if(St.signal.aborted){V.get(U)===Ve&&V.delete(U);return}if(L.has(U)){if(is(xt)||Lr(xt)){Ee(U,wa(void 0));return}}else{if(is(xt))if(V.delete(U),P>Gt){Ee(U,wa(void 0));return}else return Q.add(U),Ee(U,mc(Fe)),le(St,xt,!1,{fetcherSubmission:Fe,preventScrollReset:ze});if(Lr(xt)){Se(U,K,xt.error);return}}let Ir=E.navigation.location||E.location,Ho=sl(e.history,Ir,Ve.signal),fc=s.activeRoutes,eo=E.navigation.state!=="idle"?xi(fc,E.navigation.location,l,!1,s.branches):E.matches;ot(eo,"Didn't find any matches after fetcher action");let Di=++z;G.set(U,Di);let Qm=mc(Fe,xt.data);E.fetchers.set(U,Qm);let{dsMatches:pc,revalidatingFetchers:Wo}=kk(Ho,be,a,o,e.history,E,eo,Fe,Ir,r,!1,I,$,L,N,Q,fc,l,e.patchRoutesOnNavigation!=null,s.branches,[gt.route.id,xt],Be);Wo.filter(Qt=>Qt.key!==U).forEach(Qt=>{let Pd=Qt.key,ck=E.fetchers.get(Pd),b4=mc(void 0,ck?ck.data:void 0);E.fetchers.set(Pd,b4),wt(Pd),Qt.controller&&V.set(Pd,Qt.controller)}),q({fetchers:new Map(E.fetchers)});let jd=()=>Wo.forEach(Qt=>wt(Qt.key));Ve.signal.addEventListener("abort",jd);let{loaderResults:Nd,fetcherResults:ht}=await X(pc,Wo,Ho,Ir,be);if(Ve.signal.aborted)return;if(Ve.signal.removeEventListener("abort",jd),G.delete(U),V.delete(U),Wo.forEach(Qt=>V.delete(Qt.key)),E.fetchers.has(U)){let Qt=wa(xt.data);E.fetchers.set(U,Qt)}let tr=Ad(Nd);if(tr)return le(Ho,tr.result,!1,{preventScrollReset:ze});if(tr=Ad(ht),tr)return Q.add(tr.key),le(Ho,tr.result,!1,{preventScrollReset:ze});let{loaderData:Bs,errors:Uo}=Tk(E,eo,Nd,void 0,Wo,ht);vn(Di),E.navigation.state==="loading"&&Di>P?(ot(C,"Expected pending action"),R&&R.abort(),oe(E.navigation.location,{matches:eo,loaderData:Bs,errors:Uo,fetchers:new Map(E.fetchers)})):(q({errors:Uo,loaderData:Ak(E.loaderData,Bs,eo,Uo),fetchers:new Map(E.fetchers)}),I=!1)}async function B(U,K,re,fe,be,We,He,ze,Fe){let Be=E.fetchers.get(U);Ee(U,mc(Fe,Be?Be.data:void 0),{flushSync:He});let Ze=new AbortController,Ve=sl(e.history,re,Ze.signal);if(We){let xt=await Rr(fe,new URL(Ve.url).pathname,Ve.signal,U);if(xt.type==="aborted")return;if(xt.type==="error"){Se(U,K,xt.error,{flushSync:He});return}else if(xt.matches)fe=xt.matches;else{Se(U,K,ti(404,{pathname:re}),{flushSync:He});return}}let St=Pf(fe,re);V.set(U,Ze);let gt=z,Gt=xl(a,o,Ve,re,fe,St,r,be),pn=await Ce(Ve,re,Gt,be,U),Bn=pn[St.route.id];if(!Bn){for(let xt of fe)if(pn[xt.route.id]){Bn=pn[xt.route.id];break}}if(V.get(U)===Ze&&V.delete(U),!Ve.signal.aborted){if(L.has(U)){Ee(U,wa(void 0));return}if(is(Bn))if(P>gt){Ee(U,wa(void 0));return}else{Q.add(U),await le(Ve,Bn,!1,{preventScrollReset:ze});return}if(Lr(Bn)){Se(U,K,Bn.error);return}Ee(U,wa(Bn.data))}}async function le(U,K,re,{submission:fe,fetcherSubmission:be,preventScrollReset:We,replace:He}={}){re||(j?.resolve(),j=null),K.response.headers.has("X-Remix-Revalidate")&&(I=!0);let ze=K.response.headers.get("Location");ot(ze,"Expected a Location header on the redirect Response"),ze=Nk(ze,new URL(U.url),l,e.history);let Fe=pu(E.location,ze,{_isRedirect:!0});if(n){let Gt=!1;if(K.response.headers.has("X-Remix-Reload-Document"))Gt=!0;else if(zb(ze)){const pn=XT(ze,!0);Gt=pn.origin!==t.location.origin||di(pn.pathname,l)==null}if(Gt){He?t.location.replace(ze):t.location.assign(ze);return}}R=null;let Be=He===!0||K.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:Ze,formAction:Ve,formEncType:St}=E.navigation;!fe&&!be&&Ze&&Ve&&St&&(fe=Rk(E.navigation));let gt=fe||be;if(g3.has(K.response.status)&&gt&&rr(gt.formMethod))await ye(Be,Fe,{submission:{...gt,formAction:ze},preventScrollReset:We||T,enableViewTransition:re?A:void 0});else{let Gt=ng(Fe,fe);await ye(Be,Fe,{overrideNavigation:Gt,fetcherSubmission:be,preventScrollReset:We||T,enableViewTransition:re?A:void 0})}}async function Ce(U,K,re,fe,be){let We,He={};try{We=await j3(c,U,K,re,be,fe,!1)}catch(ze){return re.filter(Fe=>Fe.shouldLoad).forEach(Fe=>{He[Fe.route.id]={type:"error",error:ze}}),He}if(U.signal.aborted)return He;if(!rr(U.method))for(let ze of re){if(We[ze.route.id]?.type==="error")break;!We.hasOwnProperty(ze.route.id)&&!E.loaderData.hasOwnProperty(ze.route.id)&&(!E.errors||!E.errors.hasOwnProperty(ze.route.id))&&ze.shouldCallHandler()&&(We[ze.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${ze.route.id}`)})}for(let[ze,Fe]of Object.entries(We))if(L3(Fe)){let Be=Fe.result;He[ze]={type:"redirect",response:A3(Be,U,ze,re,l)}}else He[ze]=await T3(Fe);return He}async function X(U,K,re,fe,be){let We=Ce(re,fe,U,be,null),He=Promise.all(K.map(async Be=>{if(Be.matches&&Be.match&&Be.request&&Be.controller){let Ve=(await Ce(Be.request,Be.path,Be.matches,be,Be.key))[Be.match.route.id];return{[Be.key]:Ve}}else return Promise.resolve({[Be.key]:{type:"error",error:ti(404,{pathname:Be.path})}})})),ze=await We,Fe=(await He).reduce((Be,Ze)=>Object.assign(Be,Ze),{});return{loaderResults:ze,fetcherResults:Fe}}function ce(){I=!0,N.forEach((U,K)=>{V.has(K)&&$.add(K),wt(K)})}function Ee(U,K,re={}){E.fetchers.set(U,K),q({fetchers:new Map(E.fetchers)},{flushSync:(re&&re.flushSync)===!0})}function Se(U,K,re,fe={}){let be=uo(E.matches,K);Me(U),q({errors:{[be.route.id]:re},fetchers:new Map(E.fetchers)},{flushSync:(fe&&fe.flushSync)===!0})}function ae(U){return F.set(U,(F.get(U)||0)+1),L.has(U)&&L.delete(U),E.fetchers.get(U)||y3}function ke(U,K){wt(U,K?.reason),Ee(U,wa(null))}function Me(U){let K=E.fetchers.get(U);V.has(U)&&!(K&&K.state==="loading"&&G.has(U))&&wt(U),N.delete(U),G.delete(U),Q.delete(U),L.delete(U),$.delete(U),E.fetchers.delete(U)}function nt(U){let K=(F.get(U)||0)-1;K<=0?(F.delete(U),L.add(U)):F.set(U,K),q({fetchers:new Map(E.fetchers)})}function wt(U,K){let re=V.get(U);re&&(re.abort(K),V.delete(U))}function _n(U){for(let K of U){let re=ae(K),fe=wa(re.data);E.fetchers.set(K,fe)}}function Ot(){let U=[],K=!1;for(let re of Q){let fe=E.fetchers.get(re);ot(fe,`Expected fetcher: ${re}`),fe.state==="loading"&&(Q.delete(re),U.push(re),K=!0)}return _n(U),K}function vn(U){let K=[];for(let[re,fe]of G)if(fe<U){let be=E.fetchers.get(re);ot(be,`Expected fetcher: ${re}`),be.state==="loading"&&(wt(re),G.delete(re),K.push(re))}return _n(K),K.length>0}function tt(U,K){let re=E.blockers.get(U)||hc;return H.get(U)!==K&&H.set(U,K),re}function _t(U){E.blockers.delete(U),H.delete(U)}function Sn(U,K){let re=E.blockers.get(U)||hc;ot(re.state==="unblocked"&&K.state==="blocked"||re.state==="blocked"&&K.state==="blocked"||re.state==="blocked"&&K.state==="proceeding"||re.state==="blocked"&&K.state==="unblocked"||re.state==="proceeding"&&K.state==="unblocked",`Invalid blocker state transition: ${re.state} -> ${K.state}`);let fe=new Map(E.blockers);fe.set(U,K),q({blockers:fe})}function En({currentLocation:U,nextLocation:K,historyAction:re}){if(H.size===0)return;H.size>1&&wn(!1,"A router only supports one blocker at a time");let fe=Array.from(H.entries()),[be,We]=fe[fe.length-1],He=E.blockers.get(be);if(!(He&&He.state==="proceeding")&&We({currentLocation:U,nextLocation:K,historyAction:re}))return be}function Qn(U){let K=ti(404,{pathname:U}),re=s.activeRoutes,{matches:fe,route:be}=Td(re);return{notFoundMatches:fe,route:be,error:K}}function Jn(U,K,re){if(h=U,y=K,g=re||null,!x&&E.navigation===tg){x=!0;let fe=Bt(E.location,E.matches);fe!=null&&q({restoreScrollPosition:fe})}return()=>{h=null,y=null,g=null}}function Ke(U,K){return g&&g(U,K.map(fe=>W4(fe,E.loaderData)))||U.key}function Tt(U,K){if(h&&y){let re=Ke(U,K);h[re]=y()}}function Bt(U,K){if(h){let re=Ke(U,K),fe=h[re];if(typeof fe=="number")return fe}return null}function Zt(U,K,re){if(e.patchRoutesOnNavigation){let fe=s.branches;if(U){if(Object.keys(U[0].params).length>0)return{active:!0,matches:xi(K,re,l,!0,fe)}}else return{active:!0,matches:xi(K,re,l,!0,fe)||[]}}return{active:!1,matches:null}}async function Rr(U,K,re,fe){if(!e.patchRoutesOnNavigation)return{type:"success",matches:U};let be=U;for(;;){let We=o;try{await e.patchRoutesOnNavigation({signal:re,path:K,matches:be,fetcherKey:fe,patch:(Be,Ze)=>{re.aborted||_k(Be,Ze,s,We,a,!1)}})}catch(Be){return{type:"error",error:Be,partialMatches:be}}if(re.aborted)return{type:"aborted"};let He=s.branches,ze=xi(s.activeRoutes,K,l,!1,He),Fe=null;if(ze){if(Object.keys(ze[0].params).length===0)return{type:"success",matches:ze};if(Fe=xi(s.activeRoutes,K,l,!0,He),!(Fe&&be.length<Fe.length&&Ht(be,Fe.slice(0,be.length))))return{type:"success",matches:ze}}if(Fe||(Fe=xi(s.activeRoutes,K,l,!0,He)),!Fe||Ht(be,Fe))return{type:"success",matches:null};be=Fe}}function Ht(U,K){return U.length===K.length&&U.every((re,fe)=>re.route.id===K[fe].route.id)}function er(U){o={},s.setHmrRoutes(hu(U,a,void 0,o))}function Ii(U,K,re=!1){_k(U,K,s,o,a,re),s.hasHMRRoutes||q({})}return w={get basename(){return l},get future(){return u},get state(){return E},get routes(){return s.stableRoutes},get branches(){return s.branches},get manifest(){return o},get window(){return t},initialize:Y,subscribe:he,enableScrollRestoration:Jn,navigate:de,fetch:ue,revalidate:Ae,createHref:U=>e.history.createHref(U),encodeLocation:U=>e.history.encodeLocation(U),getFetcher:ae,resetFetcher:ke,deleteFetcher:nt,dispose:ie,getBlocker:tt,deleteBlocker:_t,patchRoutes:Ii,_internalFetchControllers:V,_internalSetRoutes:er,_internalSetStateDoNotUseOrYouWillBreakYourApp(U){q(U)}},e.instrumentations&&(w=l3(w,e.instrumentations.map(U=>U.router).filter(Boolean))),w}function w3(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function Uv(e,t,n,r,i,a){let o,s;if(i){o=[];for(let c of t)if(o.push(c),c.route.id===i){s=c;break}}else o=t,s=t[t.length-1];let l=Mh(r||".",Fb(o),di(e.pathname,n)||e.pathname,a==="path");if(r==null&&(l.search=e.search,l.hash=e.hash),(r==null||r===""||r===".")&&s){let c=Ub(l.search);if(s.route.index&&!c)l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index";else if(!s.route.index&&c){let u=new URLSearchParams(l.search),d=u.getAll("index");u.delete("index"),d.filter(h=>h).forEach(h=>u.append("index",h));let p=u.toString();l.search=p?`?${p}`:""}}return n!=="/"&&(l.pathname=n3({basename:n,pathname:l.pathname})),sa(l)}function wk(e,t,n){if(!n||!w3(n))return{path:t};if(n.formMethod&&!F3(n.formMethod))return{path:t,error:ti(405,{method:n.formMethod})};let r=()=>({path:t,error:ti(400,{type:"invalid-body"})}),a=(n.formMethod||"get").toUpperCase(),o=g2(t);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!rr(a))return r();let d=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((p,[h,g])=>`${p}${h}=${g}
1
+ import{r as m,R as Ah,a as w4,g as Ai,b as _e,i as te,c as Ab,k as k4,d as Ob,u as _4,e as Mb,f as S4,h as sn,B as Rb,j as La,S as VT,l as je,m as In,n as E4,o as f,X as Dn,p as uk,q as ip,s as Ib,t as jf,v as C4,w as j4,x as N4,y as P4,z as Jm,A as Ut,C as Ne,D as Db,E as Oh,F as Wv,M as T4,G as Lb,H as $b,I as Xn,J as dk,K as qT,L as KT,N as A4,W as O4,O as M4,P as R4}from"./App-B-jgCE4s.js";var GT=e=>{throw TypeError(e)},YT=(e,t,n)=>t.has(e)||GT("Cannot "+n),ei=(e,t,n)=>(YT(e,t,"read from private field"),n?n.call(e):t.get(e)),Lc=(e,t,n)=>t.has(e)?GT("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Li=(e,t,n,r)=>(YT(e,t,"write to private field"),t.set(e,n),n),fk="popstate";function pk(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function I4(e={}){function t(r,i){let a=i.state?.masked,{pathname:o,search:s,hash:l}=a||r.location;return pu("",{pathname:o,search:s,hash:l},i.state&&i.state.usr||null,i.state&&i.state.key||"default",a?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function n(r,i){return typeof i=="string"?i:sa(i)}return L4(t,n,null,e)}function ot(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function wn(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function D4(){return Math.random().toString(36).substring(2,10)}function hk(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function pu(e,t,n=null,r,i){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?ga(t):t,state:n,key:t&&t.key||r||D4(),mask:i}}function sa({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function ga(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function L4(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s="POP",l=null,c=u();c==null&&(c=0,o.replaceState({...o.state,idx:c},""));function u(){return(o.state||{idx:null}).idx}function d(){s="POP";let x=u(),v=x==null?null:x-c;c=x,l&&l({action:s,location:y.location,delta:v})}function p(x,v){s="PUSH";let k=pk(x)?x:pu(y.location,x,v);c=u()+1;let b=hk(k,c),_=y.createHref(k.mask||k);try{o.pushState(b,"",_)}catch(S){if(S instanceof DOMException&&S.name==="DataCloneError")throw S;i.location.assign(_)}a&&l&&l({action:s,location:y.location,delta:1})}function h(x,v){s="REPLACE";let k=pk(x)?x:pu(y.location,x,v);c=u();let b=hk(k,c),_=y.createHref(k.mask||k);o.replaceState(b,"",_),a&&l&&l({action:s,location:y.location,delta:0})}function g(x){return XT(x)}let y={get action(){return s},get location(){return e(i,o)},listen(x){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(fk,d),l=x,()=>{i.removeEventListener(fk,d),l=null}},createHref(x){return t(i,x)},createURL:g,encodeLocation(x){let v=g(x);return{pathname:v.pathname,search:v.search,hash:v.hash}},push:p,replace:h,go(x){return o.go(x)}};return y}function XT(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),ot(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:sa(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}var $c,mk=class{constructor(e){if(Lc(this,$c,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(ei(this,$c).has(e))return ei(this,$c).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw new Error("No value found for context")}set(e,t){ei(this,$c).set(e,t)}};$c=new WeakMap;var $4=new Set(["lazy","caseSensitive","path","id","index","children"]);function z4(e){return $4.has(e)}var F4=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function B4(e){return F4.has(e)}function H4(e){return e.index===!0}function hu(e,t,n=[],r={},i=!1){return e.map((a,o)=>{let s=[...n,String(o)],l=typeof a.id=="string"?a.id:s.join("-");if(ot(a.index!==!0||!a.children,"Cannot specify children on an index route"),ot(i||!r[l],`Found a route id collision on id "${l}". Route id's must be globally unique within Data Router usages`),H4(a)){let c={...a,id:l};return r[l]=gk(c,t(c)),c}else{let c={...a,id:l,children:void 0};return r[l]=gk(c,t(c)),a.children&&(c.children=hu(a.children,t,s,r,i)),c}})}function gk(e,t){return Object.assign(e,{...t,...typeof t.lazy=="object"&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function ZT(e,t,n="/"){return xi(e,t,n,!1)}function xi(e,t,n,r,i){let a=typeof t=="string"?ga(t):t,o=di(a.pathname||"/",n);if(o==null)return null;let s=i??Nf(e),l=null,c=t3(o);for(let u=0;l==null&&u<s.length;++u)l=J4(s[u],c,r);return l}function W4(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function Nf(e){let t=QT(e);return U4(t),t}function QT(e,t=[],n=[],r="",i=!1){let a=(o,s,l=i,c)=>{let u={relativePath:c===void 0?o.path||"":c,caseSensitive:o.caseSensitive===!0,childrenIndex:s,route:o};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(r)&&l)return;ot(u.relativePath.startsWith(r),`Absolute route path "${u.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(r.length)}let d=ui([r,u.relativePath]),p=n.concat(u);o.children&&o.children.length>0&&(ot(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${d}".`),QT(o.children,t,p,d,l)),!(o.path==null&&!o.index)&&t.push({path:d,score:Z4(d,o.index),routesMeta:p})};return e.forEach((o,s)=>{if(o.path===""||!o.path?.includes("?"))a(o,s);else for(let l of JT(o.path))a(o,s,!0,l)}),t}function JT(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),a=n.replace(/\?$/,"");if(r.length===0)return i?[a,""]:[a];let o=JT(r.join("/")),s=[];return s.push(...o.map(l=>l===""?a:[a,l].join("/"))),i&&s.push(...o),s.map(l=>e.startsWith("/")&&l===""?"/":l)}function U4(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:Q4(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var V4=/^:[\w-]+$/,q4=3,K4=2,G4=1,Y4=10,X4=-2,yk=e=>e==="*";function Z4(e,t){let n=e.split("/"),r=n.length;return n.some(yk)&&(r+=X4),t&&(r+=K4),n.filter(i=>!yk(i)).reduce((i,a)=>i+(V4.test(a)?q4:a===""?G4:Y4),r)}function Q4(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function J4(e,t,n=!1){let{routesMeta:r}=e,i={},a="/",o=[];for(let s=0;s<r.length;++s){let l=r[s],c=s===r.length-1,u=a==="/"?t:t.slice(a.length)||"/",d=ap({path:l.relativePath,caseSensitive:l.caseSensitive,end:c},u),p=l.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=ap({path:l.relativePath,caseSensitive:l.caseSensitive,end:!1},u)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:ui([a,d.pathname]),pathnameBase:i3(ui([a,d.pathnameBase])),route:p}),d.pathnameBase!=="/"&&(a=ui([a,d.pathnameBase]))}return o}function ap(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=e3(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,"$1"),s=i.slice(1);return{params:r.reduce((c,{paramName:u,isOptional:d},p)=>{if(u==="*"){let g=s[p]||"";o=a.slice(0,a.length-g.length).replace(/(.)\/+$/,"$1")}const h=s[p];return d&&!h?c[u]=void 0:c[u]=(h||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:o,pattern:e}}function e3(e,t=!1,n=!0){wn(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,s,l,c,u)=>{if(r.push({paramName:s,isOptional:l!=null}),l){let d=u.charAt(c+o.length);return d&&d!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function t3(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return wn(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function di(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function n3({basename:e,pathname:t}){return t==="/"?e:ui([e,t])}var e2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,zb=e=>e2.test(e);function r3(e,t="/"){let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?ga(e):e,a;return n?(n=Bb(n),n.startsWith("/")?a=vk(n.substring(1),"/"):a=vk(n,t)):a=t,{pathname:a,search:a3(r),hash:o3(i)}}function vk(e,t){let n=op(t).split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function eg(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function t2(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Fb(e){let t=t2(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function Mh(e,t,n,r=!1){let i;typeof e=="string"?i=ga(e):(i={...e},ot(!i.pathname||!i.pathname.includes("?"),eg("?","pathname","search",i)),ot(!i.pathname||!i.pathname.includes("#"),eg("#","pathname","hash",i)),ot(!i.search||!i.search.includes("#"),eg("#","search","hash",i)));let a=e===""||i.pathname==="",o=a?"/":i.pathname,s;if(o==null)s=n;else{let d=t.length-1;if(!r&&o.startsWith("..")){let p=o.split("/");for(;p[0]==="..";)p.shift(),d-=1;i.pathname=p.join("/")}s=d>=0?t[d]:"/"}let l=r3(i,s),c=o&&o!=="/"&&o.endsWith("/"),u=(a||o===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var Bb=e=>e.replace(/\/\/+/g,"/"),ui=e=>Bb(e.join("/")),op=e=>e.replace(/\/+$/,""),i3=e=>op(e).replace(/^\/*/,"/"),a3=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,o3=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Vu=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function mu(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function qu(e){let t=e.map(n=>n.route.path).filter(Boolean);return ui(t)||"/"}var n2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function r2(e,t){let n=e;if(typeof n!="string"||!e2.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(n2)try{let a=new URL(window.location.href),o=n.startsWith("//")?new URL(a.protocol+n):new URL(n),s=di(o.pathname,t);o.origin===a.origin&&s!=null?n=s+o.search+o.hash:i=!0}catch{wn(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}var yo=Symbol("Uninstrumented");function s3(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(i=>i({id:t.id,index:t.index,path:t.path,instrument(a){let o=Object.keys(n);for(let s of o)a[s]&&n[s].push(a[s])}}));let r={};if(typeof t.lazy=="function"&&n.lazy.length>0){let i=ul(n.lazy,t.lazy,()=>{});i&&(r.lazy=i)}if(typeof t.lazy=="object"){let i=t.lazy;["middleware","loader","action"].forEach(a=>{let o=i[a],s=n[`lazy.${a}`];if(typeof o=="function"&&s.length>0){let l=ul(s,o,()=>{});l&&(r.lazy=Object.assign(r.lazy||{},{[a]:l}))}})}return["loader","action"].forEach(i=>{let a=t[i];if(typeof a=="function"&&n[i].length>0){let o=a[yo]??a,s=ul(n[i],o,(...l)=>xk(l[0]));s&&(i==="loader"&&o.hydrate===!0&&(s.hydrate=!0),s[yo]=o,r[i]=s)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(i=>{let a=i[yo]??i,o=ul(n.middleware,a,(...s)=>xk(s[0]));return o?(o[yo]=a,o):i})),r}function l3(e,t){let n={navigate:[],fetch:[]};if(t.forEach(r=>r({instrument(i){let a=Object.keys(i);for(let o of a)i[o]&&n[o].push(i[o])}})),n.navigate.length>0){let r=e.navigate[yo]??e.navigate,i=ul(n.navigate,r,(...a)=>{let[o,s]=a;return{to:typeof o=="number"||typeof o=="string"?o:o?sa(o):".",...bk(e,s??{})}});i&&(i[yo]=r,e.navigate=i)}if(n.fetch.length>0){let r=e.fetch[yo]??e.fetch,i=ul(n.fetch,r,(...a)=>{let[o,,s,l]=a;return{href:s??".",fetcherKey:o,...bk(e,l??{})}});i&&(i[yo]=r,e.fetch=i)}return e}function ul(e,t,n){return e.length===0?null:async(...r)=>{let i=await i2(e,n(...r),()=>t(...r),e.length-1);if(i.type==="error")throw i.value;return i.value}}async function i2(e,t,n,r){let i=e[r],a;if(i){let o,s=async()=>(o?console.error("You cannot call instrumented handlers more than once"):o=i2(e,t,n,r-1),a=await o,ot(a,"Expected a result"),a.type==="error"&&a.value instanceof Error?{status:"error",error:a.value}:{status:"success",error:void 0});try{await i(s,t)}catch(l){console.error("An instrumentation function threw an error:",l)}o||await s(),await o}else try{a={type:"success",value:await n()}}catch(o){a={type:"error",value:o}}return a||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function xk(e){let{request:t,context:n,params:r,pattern:i}=e;return{request:c3(t),params:{...r},pattern:i,context:u3(n)}}function bk(e,t){return{currentUrl:sa(e.state.location),..."formMethod"in t?{formMethod:t.formMethod}:{},..."formEncType"in t?{formEncType:t.formEncType}:{},..."formData"in t?{formData:t.formData}:{},..."body"in t?{body:t.body}:{}}}function c3(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function u3(e){if(f3(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var d3=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function f3(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join("\0")===d3}var a2=["POST","PUT","PATCH","DELETE"],p3=new Set(a2),h3=["GET",...a2],m3=new Set(h3),o2=new Set([301,302,303,307,308]),g3=new Set([307,308]),tg={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},y3={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},hc={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},v3=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),s2="remix-router-transitions",l2=Symbol("ResetLoaderData"),Qo,al,ao,ol,x3=class{constructor(e){Lc(this,Qo),Lc(this,al),Lc(this,ao),Lc(this,ol),Li(this,Qo,e),Li(this,al,Nf(e))}get stableRoutes(){return ei(this,Qo)}get activeRoutes(){return ei(this,ao)??ei(this,Qo)}get branches(){return ei(this,ol)??ei(this,al)}get hasHMRRoutes(){return ei(this,ao)!=null}setRoutes(e){Li(this,Qo,e),Li(this,al,Nf(e))}setHmrRoutes(e){Li(this,ao,e),Li(this,ol,Nf(e))}commitHmrRoutes(){ei(this,ao)&&(Li(this,Qo,ei(this,ao)),Li(this,al,ei(this,ol)),Li(this,ao,void 0),Li(this,ol,void 0))}};Qo=new WeakMap;al=new WeakMap;ao=new WeakMap;ol=new WeakMap;function b3(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u";ot(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||v3,a=i;if(e.instrumentations){let U=e.instrumentations;a=K=>({...i(K),...s3(U.map(re=>re.route).filter(Boolean),K)})}let o={},s=new x3(hu(e.routes,a,void 0,o)),l=e.basename||"/";l.startsWith("/")||(l=`/${l}`);let c=e.dataStrategy||E3,u={...e.future},d=null,p=new Set,h=null,g=null,y=null,x=e.hydrationData!=null,v=xi(s.activeRoutes,e.history.location,l,!1,s.branches),k=!1,b=null,_,S;if(v==null&&!e.patchRoutesOnNavigation){let U=ti(404,{pathname:e.history.location.pathname}),{matches:K,route:re}=Td(s.activeRoutes);_=!0,S=!_,v=K,b={[re.id]:U}}else if(v&&!e.hydrationData&&Zt(v,s.activeRoutes,e.history.location.pathname).active&&(v=null),v)if(v.some(U=>U.route.lazy))_=!1,S=!_;else if(!v.some(U=>Hb(U.route)))_=!0,S=!_;else{let U=e.hydrationData?e.hydrationData.loaderData:null,K=e.hydrationData?e.hydrationData.errors:null,re=v;if(K){let fe=v.findIndex(be=>K[be.route.id]!==void 0);re=re.slice(0,fe+1)}S=!1,_=!0,re.forEach(fe=>{let be=c2(fe.route,U,K);S=S||be.renderFallback,_=_&&!be.shouldLoad})}else{_=!1,S=!_,v=[];let U=Zt(null,s.activeRoutes,e.history.location.pathname);U.active&&U.matches&&(k=!0,v=U.matches)}let w,E={historyAction:e.history.action,location:e.history.location,matches:v,initialized:_,renderFallback:S,navigation:tg,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||b,fetchers:new Map,blockers:new Map},C="POP",j=null,T=!1,R,A=!1,D=new Map,M=null,O=!1,I=!1,$=new Set,V=new Map,z=0,P=-1,G=new Map,Q=new Set,N=new Map,F=new Map,L=new Set,H=new Map,ne,J=null;function Y(){if(d=e.history.listen(({action:U,location:K,delta:re})=>{if(ne){ne(),ne=void 0;return}wn(H.size===0||re!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let fe=En({currentLocation:E.location,nextLocation:K,historyAction:U});if(fe&&re!=null){let be=new Promise(We=>{ne=We});e.history.go(re*-1),Sn(fe,{state:"blocked",location:K,proceed(){Sn(fe,{state:"proceeding",proceed:void 0,reset:void 0,location:K}),be.then(()=>e.history.go(re))},reset(){let We=new Map(E.blockers);We.set(fe,hc),q({blockers:We})}}),j?.resolve(),j=null;return}return ye(U,K)}),n){W3(t,D);let U=()=>U3(t,D);t.addEventListener("pagehide",U),M=()=>t.removeEventListener("pagehide",U)}return E.initialized||ye("POP",E.location,{initialHydration:!0}),w}function ie(){d&&d(),M&&M(),p.clear(),R&&R.abort(),E.fetchers.forEach((U,K)=>Me(K)),E.blockers.forEach((U,K)=>_t(K))}function he(U){return p.add(U),()=>p.delete(U)}function q(U,K={}){U.matches&&(U.matches=U.matches.map(be=>{let We=o[be.route.id],He=be.route;return He.element!==We.element||He.errorElement!==We.errorElement||He.hydrateFallbackElement!==We.hydrateFallbackElement?{...be,route:We}:be})),E={...E,...U};let re=[],fe=[];E.fetchers.forEach((be,We)=>{be.state==="idle"&&(L.has(We)?re.push(We):fe.push(We))}),L.forEach(be=>{!E.fetchers.has(be)&&!V.has(be)&&re.push(be)}),[...p].forEach(be=>be(E,{deletedFetchers:re,newErrors:U.errors??null,viewTransitionOpts:K.viewTransitionOpts,flushSync:K.flushSync===!0})),re.forEach(be=>Me(be)),fe.forEach(be=>E.fetchers.delete(be))}function oe(U,K,{flushSync:re}={}){let fe=E.actionData!=null&&E.navigation.formMethod!=null&&rr(E.navigation.formMethod)&&E.navigation.state==="loading"&&U.state?._isRedirect!==!0,be;K.actionData?Object.keys(K.actionData).length>0?be=K.actionData:be=null:fe?be=E.actionData:be=null;let We=K.loaderData?Ak(E.loaderData,K.loaderData,K.matches||[],K.errors):E.loaderData,He=E.blockers;He.size>0&&(He=new Map(He),He.forEach((Ze,Ve)=>He.set(Ve,hc)));let ze=O?!1:Bt(U,K.matches||E.matches),Fe=T===!0||E.navigation.formMethod!=null&&rr(E.navigation.formMethod)&&U.state?._isRedirect!==!0;s.commitHmrRoutes(),O||C==="POP"||(C==="PUSH"?e.history.push(U,U.state):C==="REPLACE"&&e.history.replace(U,U.state));let Be;if(C==="POP"){let Ze=D.get(E.location.pathname);Ze&&Ze.has(U.pathname)?Be={currentLocation:E.location,nextLocation:U}:D.has(U.pathname)&&(Be={currentLocation:U,nextLocation:E.location})}else if(A){let Ze=D.get(E.location.pathname);Ze?Ze.add(U.pathname):(Ze=new Set([U.pathname]),D.set(E.location.pathname,Ze)),Be={currentLocation:E.location,nextLocation:U}}q({...K,actionData:be,loaderData:We,historyAction:C,location:U,initialized:!0,renderFallback:!1,navigation:tg,revalidation:"idle",restoreScrollPosition:ze,preventScrollReset:Fe,blockers:He},{viewTransitionOpts:Be,flushSync:re===!0}),C="POP",T=!1,A=!1,O=!1,I=!1,j?.resolve(),j=null,J?.resolve(),J=null}async function de(U,K){if(j?.resolve(),j=null,typeof U=="number"){j||(j=Ik());let Gt=j.promise;return e.history.go(U),Gt}let re=Uv(E.location,E.matches,l,U,K?.fromRouteId,K?.relative),{path:fe,submission:be,error:We}=wk(!1,re,K),He;K?.mask&&(He={pathname:"",search:"",hash:"",...typeof K.mask=="string"?ga(K.mask):{...E.location.mask,...K.mask}});let ze=E.location,Fe=pu(ze,fe,K&&K.state,void 0,He);Fe={...Fe,...e.history.encodeLocation(Fe)};let Be=K&&K.replace!=null?K.replace:void 0,Ze="PUSH";Be===!0?Ze="REPLACE":Be===!1||be!=null&&rr(be.formMethod)&&be.formAction===E.location.pathname+E.location.search&&(Ze="REPLACE");let Ve=K&&"preventScrollReset"in K?K.preventScrollReset===!0:void 0,St=(K&&K.flushSync)===!0,gt=En({currentLocation:ze,nextLocation:Fe,historyAction:Ze});if(gt){Sn(gt,{state:"blocked",location:Fe,proceed(){Sn(gt,{state:"proceeding",proceed:void 0,reset:void 0,location:Fe}),de(U,K)},reset(){let Gt=new Map(E.blockers);Gt.set(gt,hc),q({blockers:Gt})}});return}await ye(Ze,Fe,{submission:be,pendingError:We,preventScrollReset:Ve,replace:K&&K.replace,enableViewTransition:K&&K.viewTransition,flushSync:St,callSiteDefaultShouldRevalidate:K&&K.defaultShouldRevalidate})}function Ae(){J||(J=Ik()),ce(),q({revalidation:"loading"});let U=J.promise;return E.navigation.state==="submitting"?U:E.navigation.state==="idle"?(ye(E.historyAction,E.location,{startUninterruptedRevalidation:!0}),U):(ye(C||E.historyAction,E.navigation.location,{overrideNavigation:E.navigation,enableViewTransition:A===!0}),U)}async function ye(U,K,re){R&&R.abort(),R=null,C=U,O=(re&&re.startUninterruptedRevalidation)===!0,Tt(E.location,E.matches),T=(re&&re.preventScrollReset)===!0,A=(re&&re.enableViewTransition)===!0;let fe=s.activeRoutes,be=re&&re.overrideNavigation,We=re?.initialHydration&&E.matches&&E.matches.length>0&&!k?E.matches:xi(fe,K,l,!1,s.branches),He=(re&&re.flushSync)===!0;if(We&&E.initialized&&!I&&M3(E.location,K)&&!(re&&re.submission&&rr(re.submission.formMethod))){oe(K,{matches:We},{flushSync:He});return}let ze=Zt(We,fe,K.pathname);if(ze.active&&ze.matches&&(We=ze.matches),!We){let{error:pn,notFoundMatches:Bn,route:xt}=Qn(K.pathname);oe(K,{matches:Bn,loaderData:{},errors:{[xt.id]:pn}},{flushSync:He});return}R=new AbortController;let Fe=sl(e.history,K,R.signal,re&&re.submission),Be=e.getContext?await e.getContext():new mk,Ze;if(re&&re.pendingError)Ze=[uo(We).route.id,{type:"error",error:re.pendingError}];else if(re&&re.submission&&rr(re.submission.formMethod)){let pn=await we(Fe,K,re.submission,We,Be,ze.active,re&&re.initialHydration===!0,{replace:re.replace,flushSync:He});if(pn.shortCircuited)return;if(pn.pendingActionResult){let[Bn,xt]=pn.pendingActionResult;if(Lr(xt)&&mu(xt.error)&&xt.error.status===404){R=null,oe(K,{matches:pn.matches,loaderData:{},errors:{[Bn]:xt.error}});return}}We=pn.matches||We,Ze=pn.pendingActionResult,be=ng(K,re.submission),He=!1,ze.active=!1,Fe=sl(e.history,Fe.url,Fe.signal)}let{shortCircuited:Ve,matches:St,loaderData:gt,errors:Gt}=await Pe(Fe,K,We,Be,ze.active,be,re&&re.submission,re&&re.fetcherSubmission,re&&re.replace,re&&re.initialHydration===!0,He,Ze,re&&re.callSiteDefaultShouldRevalidate);Ve||(R=null,oe(K,{matches:St||We,...Ok(Ze),loaderData:gt,errors:Gt}))}async function we(U,K,re,fe,be,We,He,ze={}){ce();let Fe=B3(K,re);if(q({navigation:Fe},{flushSync:ze.flushSync===!0}),We){let Ve=await Rr(fe,K.pathname,U.signal);if(Ve.type==="aborted")return{shortCircuited:!0};if(Ve.type==="error"){if(Ve.partialMatches.length===0){let{matches:gt,route:Gt}=Td(s.activeRoutes);return{matches:gt,pendingActionResult:[Gt.id,{type:"error",error:Ve.error}]}}let St=uo(Ve.partialMatches).route.id;return{matches:Ve.partialMatches,pendingActionResult:[St,{type:"error",error:Ve.error}]}}else if(Ve.matches)fe=Ve.matches;else{let{notFoundMatches:St,error:gt,route:Gt}=Qn(K.pathname);return{matches:St,pendingActionResult:[Gt.id,{type:"error",error:gt}]}}}let Be,Ze=Pf(fe,K);if(!Ze.route.action&&!Ze.route.lazy)Be={type:"error",error:ti(405,{method:U.method,pathname:K.pathname,routeId:Ze.route.id})};else{let Ve=xl(a,o,U,K,fe,Ze,He?[]:r,be),St=await Ce(U,K,Ve,be,null);if(Be=St[Ze.route.id],!Be){for(let gt of fe)if(St[gt.route.id]){Be=St[gt.route.id];break}}if(U.signal.aborted)return{shortCircuited:!0}}if(is(Be)){let Ve;return ze&&ze.replace!=null?Ve=ze.replace:Ve=Nk(Be.response.headers.get("Location"),new URL(U.url),l,e.history)===E.location.pathname+E.location.search,await le(U,Be,!0,{submission:re,replace:Ve}),{shortCircuited:!0}}if(Lr(Be)){let Ve=uo(fe,Ze.route.id);return(ze&&ze.replace)!==!0&&(C="PUSH"),{matches:fe,pendingActionResult:[Ve.route.id,Be,Ze.route.id]}}return{matches:fe,pendingActionResult:[Ze.route.id,Be]}}async function Pe(U,K,re,fe,be,We,He,ze,Fe,Be,Ze,Ve,St){let gt=We||ng(K,He),Gt=He||ze||Rk(gt),pn=!O&&!Be;if(be){if(pn){let tr=ve(Ve);q({navigation:gt,...tr!==void 0?{actionData:tr}:{}},{flushSync:Ze})}let ht=await Rr(re,K.pathname,U.signal);if(ht.type==="aborted")return{shortCircuited:!0};if(ht.type==="error"){if(ht.partialMatches.length===0){let{matches:Bs,route:Uo}=Td(s.activeRoutes);return{matches:Bs,loaderData:{},errors:{[Uo.id]:ht.error}}}let tr=uo(ht.partialMatches).route.id;return{matches:ht.partialMatches,loaderData:{},errors:{[tr]:ht.error}}}else if(ht.matches)re=ht.matches;else{let{error:tr,notFoundMatches:Bs,route:Uo}=Qn(K.pathname);return{matches:Bs,loaderData:{},errors:{[Uo.id]:tr}}}}let Bn=s.activeRoutes,{dsMatches:xt,revalidatingFetchers:Ir}=kk(U,fe,a,o,e.history,E,re,Gt,K,Be?[]:r,Be===!0,I,$,L,N,Q,Bn,l,e.patchRoutesOnNavigation!=null,s.branches,Ve,St);if(P=++z,!e.dataStrategy&&!xt.some(ht=>ht.shouldLoad)&&!xt.some(ht=>ht.route.middleware&&ht.route.middleware.length>0)&&Ir.length===0){let ht=Ot();return oe(K,{matches:re,loaderData:{},errors:Ve&&Lr(Ve[1])?{[Ve[0]]:Ve[1].error}:null,...Ok(Ve),...ht?{fetchers:new Map(E.fetchers)}:{}},{flushSync:Ze}),{shortCircuited:!0}}if(pn){let ht={};if(!be){ht.navigation=gt;let tr=ve(Ve);tr!==void 0&&(ht.actionData=tr)}Ir.length>0&&(ht.fetchers=De(Ir)),q(ht,{flushSync:Ze})}Ir.forEach(ht=>{wt(ht.key),ht.controller&&V.set(ht.key,ht.controller)});let Ho=()=>Ir.forEach(ht=>wt(ht.key));R&&R.signal.addEventListener("abort",Ho);let{loaderResults:fc,fetcherResults:eo}=await X(xt,Ir,U,K,fe);if(U.signal.aborted)return{shortCircuited:!0};R&&R.signal.removeEventListener("abort",Ho),Ir.forEach(ht=>V.delete(ht.key));let Di=Ad(fc);if(Di)return await le(U,Di.result,!0,{replace:Fe}),{shortCircuited:!0};if(Di=Ad(eo),Di)return Q.add(Di.key),await le(U,Di.result,!0,{replace:Fe}),{shortCircuited:!0};let{loaderData:Qm,errors:pc}=Tk(E,re,fc,Ve,Ir,eo);Be&&E.errors&&(pc={...E.errors,...pc});let Wo=Ot(),jd=vn(P),Nd=Wo||jd||Ir.length>0;return{matches:re,loaderData:Qm,errors:pc,...Nd?{fetchers:new Map(E.fetchers)}:{}}}function ve(U){if(U&&!Lr(U[1]))return{[U[0]]:U[1].data};if(E.actionData)return Object.keys(E.actionData).length===0?null:E.actionData}function De(U){return U.forEach(K=>{let re=E.fetchers.get(K.key),fe=mc(void 0,re?re.data:void 0);E.fetchers.set(K.key,fe)}),new Map(E.fetchers)}async function ue(U,K,re,fe){wt(U);let be=(fe&&fe.flushSync)===!0,We=s.activeRoutes,He=Uv(E.location,E.matches,l,re,K,fe?.relative),ze=xi(We,He,l,!1,s.branches),Fe=Zt(ze,We,He);if(Fe.active&&Fe.matches&&(ze=Fe.matches),!ze){Se(U,K,ti(404,{pathname:He}),{flushSync:be});return}let{path:Be,submission:Ze,error:Ve}=wk(!0,He,fe);if(Ve){Se(U,K,Ve,{flushSync:be});return}let St=e.getContext?await e.getContext():new mk,gt=(fe&&fe.preventScrollReset)===!0;if(Ze&&rr(Ze.formMethod)){await ge(U,K,Be,ze,St,Fe.active,be,gt,Ze,fe&&fe.defaultShouldRevalidate);return}N.set(U,{routeId:K,path:Be}),await B(U,K,Be,ze,St,Fe.active,be,gt,Ze)}async function ge(U,K,re,fe,be,We,He,ze,Fe,Be){ce(),N.delete(U);let Ze=E.fetchers.get(U);Ee(U,H3(Fe,Ze),{flushSync:He});let Ve=new AbortController,St=sl(e.history,re,Ve.signal,Fe);if(We){let Qt=await Rr(fe,new URL(St.url).pathname,St.signal,U);if(Qt.type==="aborted")return;if(Qt.type==="error"){Se(U,K,Qt.error,{flushSync:He});return}else if(Qt.matches)fe=Qt.matches;else{Se(U,K,ti(404,{pathname:re}),{flushSync:He});return}}let gt=Pf(fe,re);if(!gt.route.action&&!gt.route.lazy){let Qt=ti(405,{method:Fe.formMethod,pathname:re,routeId:K});Se(U,K,Qt,{flushSync:He});return}V.set(U,Ve);let Gt=z,pn=xl(a,o,St,re,fe,gt,r,be),Bn=await Ce(St,re,pn,be,U),xt=Bn[gt.route.id];if(!xt){for(let Qt of pn)if(Bn[Qt.route.id]){xt=Bn[Qt.route.id];break}}if(St.signal.aborted){V.get(U)===Ve&&V.delete(U);return}if(L.has(U)){if(is(xt)||Lr(xt)){Ee(U,wa(void 0));return}}else{if(is(xt))if(V.delete(U),P>Gt){Ee(U,wa(void 0));return}else return Q.add(U),Ee(U,mc(Fe)),le(St,xt,!1,{fetcherSubmission:Fe,preventScrollReset:ze});if(Lr(xt)){Se(U,K,xt.error);return}}let Ir=E.navigation.location||E.location,Ho=sl(e.history,Ir,Ve.signal),fc=s.activeRoutes,eo=E.navigation.state!=="idle"?xi(fc,E.navigation.location,l,!1,s.branches):E.matches;ot(eo,"Didn't find any matches after fetcher action");let Di=++z;G.set(U,Di);let Qm=mc(Fe,xt.data);E.fetchers.set(U,Qm);let{dsMatches:pc,revalidatingFetchers:Wo}=kk(Ho,be,a,o,e.history,E,eo,Fe,Ir,r,!1,I,$,L,N,Q,fc,l,e.patchRoutesOnNavigation!=null,s.branches,[gt.route.id,xt],Be);Wo.filter(Qt=>Qt.key!==U).forEach(Qt=>{let Pd=Qt.key,ck=E.fetchers.get(Pd),b4=mc(void 0,ck?ck.data:void 0);E.fetchers.set(Pd,b4),wt(Pd),Qt.controller&&V.set(Pd,Qt.controller)}),q({fetchers:new Map(E.fetchers)});let jd=()=>Wo.forEach(Qt=>wt(Qt.key));Ve.signal.addEventListener("abort",jd);let{loaderResults:Nd,fetcherResults:ht}=await X(pc,Wo,Ho,Ir,be);if(Ve.signal.aborted)return;if(Ve.signal.removeEventListener("abort",jd),G.delete(U),V.delete(U),Wo.forEach(Qt=>V.delete(Qt.key)),E.fetchers.has(U)){let Qt=wa(xt.data);E.fetchers.set(U,Qt)}let tr=Ad(Nd);if(tr)return le(Ho,tr.result,!1,{preventScrollReset:ze});if(tr=Ad(ht),tr)return Q.add(tr.key),le(Ho,tr.result,!1,{preventScrollReset:ze});let{loaderData:Bs,errors:Uo}=Tk(E,eo,Nd,void 0,Wo,ht);vn(Di),E.navigation.state==="loading"&&Di>P?(ot(C,"Expected pending action"),R&&R.abort(),oe(E.navigation.location,{matches:eo,loaderData:Bs,errors:Uo,fetchers:new Map(E.fetchers)})):(q({errors:Uo,loaderData:Ak(E.loaderData,Bs,eo,Uo),fetchers:new Map(E.fetchers)}),I=!1)}async function B(U,K,re,fe,be,We,He,ze,Fe){let Be=E.fetchers.get(U);Ee(U,mc(Fe,Be?Be.data:void 0),{flushSync:He});let Ze=new AbortController,Ve=sl(e.history,re,Ze.signal);if(We){let xt=await Rr(fe,new URL(Ve.url).pathname,Ve.signal,U);if(xt.type==="aborted")return;if(xt.type==="error"){Se(U,K,xt.error,{flushSync:He});return}else if(xt.matches)fe=xt.matches;else{Se(U,K,ti(404,{pathname:re}),{flushSync:He});return}}let St=Pf(fe,re);V.set(U,Ze);let gt=z,Gt=xl(a,o,Ve,re,fe,St,r,be),pn=await Ce(Ve,re,Gt,be,U),Bn=pn[St.route.id];if(!Bn){for(let xt of fe)if(pn[xt.route.id]){Bn=pn[xt.route.id];break}}if(V.get(U)===Ze&&V.delete(U),!Ve.signal.aborted){if(L.has(U)){Ee(U,wa(void 0));return}if(is(Bn))if(P>gt){Ee(U,wa(void 0));return}else{Q.add(U),await le(Ve,Bn,!1,{preventScrollReset:ze});return}if(Lr(Bn)){Se(U,K,Bn.error);return}Ee(U,wa(Bn.data))}}async function le(U,K,re,{submission:fe,fetcherSubmission:be,preventScrollReset:We,replace:He}={}){re||(j?.resolve(),j=null),K.response.headers.has("X-Remix-Revalidate")&&(I=!0);let ze=K.response.headers.get("Location");ot(ze,"Expected a Location header on the redirect Response"),ze=Nk(ze,new URL(U.url),l,e.history);let Fe=pu(E.location,ze,{_isRedirect:!0});if(n){let Gt=!1;if(K.response.headers.has("X-Remix-Reload-Document"))Gt=!0;else if(zb(ze)){const pn=XT(ze,!0);Gt=pn.origin!==t.location.origin||di(pn.pathname,l)==null}if(Gt){He?t.location.replace(ze):t.location.assign(ze);return}}R=null;let Be=He===!0||K.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:Ze,formAction:Ve,formEncType:St}=E.navigation;!fe&&!be&&Ze&&Ve&&St&&(fe=Rk(E.navigation));let gt=fe||be;if(g3.has(K.response.status)&&gt&&rr(gt.formMethod))await ye(Be,Fe,{submission:{...gt,formAction:ze},preventScrollReset:We||T,enableViewTransition:re?A:void 0});else{let Gt=ng(Fe,fe);await ye(Be,Fe,{overrideNavigation:Gt,fetcherSubmission:be,preventScrollReset:We||T,enableViewTransition:re?A:void 0})}}async function Ce(U,K,re,fe,be){let We,He={};try{We=await j3(c,U,K,re,be,fe,!1)}catch(ze){return re.filter(Fe=>Fe.shouldLoad).forEach(Fe=>{He[Fe.route.id]={type:"error",error:ze}}),He}if(U.signal.aborted)return He;if(!rr(U.method))for(let ze of re){if(We[ze.route.id]?.type==="error")break;!We.hasOwnProperty(ze.route.id)&&!E.loaderData.hasOwnProperty(ze.route.id)&&(!E.errors||!E.errors.hasOwnProperty(ze.route.id))&&ze.shouldCallHandler()&&(We[ze.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${ze.route.id}`)})}for(let[ze,Fe]of Object.entries(We))if(L3(Fe)){let Be=Fe.result;He[ze]={type:"redirect",response:A3(Be,U,ze,re,l)}}else He[ze]=await T3(Fe);return He}async function X(U,K,re,fe,be){let We=Ce(re,fe,U,be,null),He=Promise.all(K.map(async Be=>{if(Be.matches&&Be.match&&Be.request&&Be.controller){let Ve=(await Ce(Be.request,Be.path,Be.matches,be,Be.key))[Be.match.route.id];return{[Be.key]:Ve}}else return Promise.resolve({[Be.key]:{type:"error",error:ti(404,{pathname:Be.path})}})})),ze=await We,Fe=(await He).reduce((Be,Ze)=>Object.assign(Be,Ze),{});return{loaderResults:ze,fetcherResults:Fe}}function ce(){I=!0,N.forEach((U,K)=>{V.has(K)&&$.add(K),wt(K)})}function Ee(U,K,re={}){E.fetchers.set(U,K),q({fetchers:new Map(E.fetchers)},{flushSync:(re&&re.flushSync)===!0})}function Se(U,K,re,fe={}){let be=uo(E.matches,K);Me(U),q({errors:{[be.route.id]:re},fetchers:new Map(E.fetchers)},{flushSync:(fe&&fe.flushSync)===!0})}function ae(U){return F.set(U,(F.get(U)||0)+1),L.has(U)&&L.delete(U),E.fetchers.get(U)||y3}function ke(U,K){wt(U,K?.reason),Ee(U,wa(null))}function Me(U){let K=E.fetchers.get(U);V.has(U)&&!(K&&K.state==="loading"&&G.has(U))&&wt(U),N.delete(U),G.delete(U),Q.delete(U),L.delete(U),$.delete(U),E.fetchers.delete(U)}function nt(U){let K=(F.get(U)||0)-1;K<=0?(F.delete(U),L.add(U)):F.set(U,K),q({fetchers:new Map(E.fetchers)})}function wt(U,K){let re=V.get(U);re&&(re.abort(K),V.delete(U))}function _n(U){for(let K of U){let re=ae(K),fe=wa(re.data);E.fetchers.set(K,fe)}}function Ot(){let U=[],K=!1;for(let re of Q){let fe=E.fetchers.get(re);ot(fe,`Expected fetcher: ${re}`),fe.state==="loading"&&(Q.delete(re),U.push(re),K=!0)}return _n(U),K}function vn(U){let K=[];for(let[re,fe]of G)if(fe<U){let be=E.fetchers.get(re);ot(be,`Expected fetcher: ${re}`),be.state==="loading"&&(wt(re),G.delete(re),K.push(re))}return _n(K),K.length>0}function tt(U,K){let re=E.blockers.get(U)||hc;return H.get(U)!==K&&H.set(U,K),re}function _t(U){E.blockers.delete(U),H.delete(U)}function Sn(U,K){let re=E.blockers.get(U)||hc;ot(re.state==="unblocked"&&K.state==="blocked"||re.state==="blocked"&&K.state==="blocked"||re.state==="blocked"&&K.state==="proceeding"||re.state==="blocked"&&K.state==="unblocked"||re.state==="proceeding"&&K.state==="unblocked",`Invalid blocker state transition: ${re.state} -> ${K.state}`);let fe=new Map(E.blockers);fe.set(U,K),q({blockers:fe})}function En({currentLocation:U,nextLocation:K,historyAction:re}){if(H.size===0)return;H.size>1&&wn(!1,"A router only supports one blocker at a time");let fe=Array.from(H.entries()),[be,We]=fe[fe.length-1],He=E.blockers.get(be);if(!(He&&He.state==="proceeding")&&We({currentLocation:U,nextLocation:K,historyAction:re}))return be}function Qn(U){let K=ti(404,{pathname:U}),re=s.activeRoutes,{matches:fe,route:be}=Td(re);return{notFoundMatches:fe,route:be,error:K}}function Jn(U,K,re){if(h=U,y=K,g=re||null,!x&&E.navigation===tg){x=!0;let fe=Bt(E.location,E.matches);fe!=null&&q({restoreScrollPosition:fe})}return()=>{h=null,y=null,g=null}}function Ke(U,K){return g&&g(U,K.map(fe=>W4(fe,E.loaderData)))||U.key}function Tt(U,K){if(h&&y){let re=Ke(U,K);h[re]=y()}}function Bt(U,K){if(h){let re=Ke(U,K),fe=h[re];if(typeof fe=="number")return fe}return null}function Zt(U,K,re){if(e.patchRoutesOnNavigation){let fe=s.branches;if(U){if(Object.keys(U[0].params).length>0)return{active:!0,matches:xi(K,re,l,!0,fe)}}else return{active:!0,matches:xi(K,re,l,!0,fe)||[]}}return{active:!1,matches:null}}async function Rr(U,K,re,fe){if(!e.patchRoutesOnNavigation)return{type:"success",matches:U};let be=U;for(;;){let We=o;try{await e.patchRoutesOnNavigation({signal:re,path:K,matches:be,fetcherKey:fe,patch:(Be,Ze)=>{re.aborted||_k(Be,Ze,s,We,a,!1)}})}catch(Be){return{type:"error",error:Be,partialMatches:be}}if(re.aborted)return{type:"aborted"};let He=s.branches,ze=xi(s.activeRoutes,K,l,!1,He),Fe=null;if(ze){if(Object.keys(ze[0].params).length===0)return{type:"success",matches:ze};if(Fe=xi(s.activeRoutes,K,l,!0,He),!(Fe&&be.length<Fe.length&&Ht(be,Fe.slice(0,be.length))))return{type:"success",matches:ze}}if(Fe||(Fe=xi(s.activeRoutes,K,l,!0,He)),!Fe||Ht(be,Fe))return{type:"success",matches:null};be=Fe}}function Ht(U,K){return U.length===K.length&&U.every((re,fe)=>re.route.id===K[fe].route.id)}function er(U){o={},s.setHmrRoutes(hu(U,a,void 0,o))}function Ii(U,K,re=!1){_k(U,K,s,o,a,re),s.hasHMRRoutes||q({})}return w={get basename(){return l},get future(){return u},get state(){return E},get routes(){return s.stableRoutes},get branches(){return s.branches},get manifest(){return o},get window(){return t},initialize:Y,subscribe:he,enableScrollRestoration:Jn,navigate:de,fetch:ue,revalidate:Ae,createHref:U=>e.history.createHref(U),encodeLocation:U=>e.history.encodeLocation(U),getFetcher:ae,resetFetcher:ke,deleteFetcher:nt,dispose:ie,getBlocker:tt,deleteBlocker:_t,patchRoutes:Ii,_internalFetchControllers:V,_internalSetRoutes:er,_internalSetStateDoNotUseOrYouWillBreakYourApp(U){q(U)}},e.instrumentations&&(w=l3(w,e.instrumentations.map(U=>U.router).filter(Boolean))),w}function w3(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function Uv(e,t,n,r,i,a){let o,s;if(i){o=[];for(let c of t)if(o.push(c),c.route.id===i){s=c;break}}else o=t,s=t[t.length-1];let l=Mh(r||".",Fb(o),di(e.pathname,n)||e.pathname,a==="path");if(r==null&&(l.search=e.search,l.hash=e.hash),(r==null||r===""||r===".")&&s){let c=Ub(l.search);if(s.route.index&&!c)l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index";else if(!s.route.index&&c){let u=new URLSearchParams(l.search),d=u.getAll("index");u.delete("index"),d.filter(h=>h).forEach(h=>u.append("index",h));let p=u.toString();l.search=p?`?${p}`:""}}return n!=="/"&&(l.pathname=n3({basename:n,pathname:l.pathname})),sa(l)}function wk(e,t,n){if(!n||!w3(n))return{path:t};if(n.formMethod&&!F3(n.formMethod))return{path:t,error:ti(405,{method:n.formMethod})};let r=()=>({path:t,error:ti(400,{type:"invalid-body"})}),a=(n.formMethod||"get").toUpperCase(),o=g2(t);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!rr(a))return r();let d=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((p,[h,g])=>`${p}${h}=${g}
2
2
  `,""):String(n.body);return{path:t,submission:{formMethod:a,formAction:o,formEncType:n.formEncType,formData:void 0,json:void 0,text:d}}}else if(n.formEncType==="application/json"){if(!rr(a))return r();try{let d=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:a,formAction:o,formEncType:n.formEncType,formData:void 0,json:d,text:void 0}}}catch{return r()}}}ot(typeof FormData=="function","FormData is not available in this environment");let s,l;if(n.formData)s=qv(n.formData),l=n.formData;else if(n.body instanceof FormData)s=qv(n.body),l=n.body;else if(n.body instanceof URLSearchParams)s=n.body,l=Pk(s);else if(n.body==null)s=new URLSearchParams,l=new FormData;else try{s=new URLSearchParams(n.body),l=Pk(s)}catch{return r()}let c={formMethod:a,formAction:o,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:l,json:void 0,text:void 0};if(rr(c.formMethod))return{path:t,submission:c};let u=ga(t);return e&&u.search&&Ub(u.search)&&s.append("index",""),u.search=`?${s}`,{path:sa(u),submission:c}}function kk(e,t,n,r,i,a,o,s,l,c,u,d,p,h,g,y,x,v,k,b,_,S){let w=_?Lr(_[1])?_[1].error:_[1].data:void 0,E=i.createURL(a.location),C=i.createURL(l),j;if(u&&a.errors){let I=Object.keys(a.errors)[0];j=o.findIndex($=>$.route.id===I)}else if(_&&Lr(_[1])){let I=_[0];j=o.findIndex($=>$.route.id===I)-1}let T=_?_[1].statusCode:void 0,R=T&&T>=400,A={currentUrl:E,currentParams:a.matches[0]?.params||{},nextUrl:C,nextParams:o[0].params,...s,actionResult:w,actionStatus:T},D=qu(o),M=o.map((I,$)=>{let{route:V}=I,z=null;if(j!=null&&$>j)z=!1;else if(V.lazy)z=!0;else if(!Hb(V))z=!1;else if(u){let{shouldLoad:N}=c2(V,a.loaderData,a.errors);z=N}else k3(a.loaderData,a.matches[$],I)&&(z=!0);if(z!==null)return Vv(n,r,e,l,D,I,c,t,z);let P=!1;typeof S=="boolean"?P=S:R?P=!1:(d||E.pathname+E.search===C.pathname+C.search||E.search!==C.search||_3(a.matches[$],I))&&(P=!0);let G={...A,defaultShouldRevalidate:P},Q=Kc(I,G);return Vv(n,r,e,l,D,I,c,t,Q,G,S)}),O=[];return g.forEach((I,$)=>{if(u||!o.some(L=>L.route.id===I.routeId)||h.has($))return;let V=a.fetchers.get($),z=V&&V.state!=="idle"&&V.data===void 0,P=xi(x,I.path,v??"/",!1,b);if(!P){if(k&&z)return;O.push({key:$,routeId:I.routeId,path:I.path,matches:null,match:null,request:null,controller:null});return}if(y.has($))return;let G=Pf(P,I.path),Q=new AbortController,N=sl(i,I.path,Q.signal),F=null;if(p.has($))p.delete($),F=xl(n,r,N,I.path,P,G,c,t);else if(z)d&&(F=xl(n,r,N,I.path,P,G,c,t));else{let L;typeof S=="boolean"?L=S:R?L=!1:L=d;let H={...A,defaultShouldRevalidate:L};Kc(G,H)&&(F=xl(n,r,N,I.path,P,G,c,t,H))}F&&O.push({key:$,routeId:I.routeId,path:I.path,matches:F,match:G,request:N,controller:Q})}),{dsMatches:M,revalidatingFetchers:O}}function Hb(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function c2(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!Hb(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;if(!r&&i)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader=="function"&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let a=!r&&!i;return{shouldLoad:a,renderFallback:a}}function k3(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function _3(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Kc(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}function _k(e,t,n,r,i,a){let o;if(e){let c=r[e];ot(c,`No route found to patch children into: routeId = ${e}`),c.children||(c.children=[]),o=c.children}else o=n.activeRoutes;let s=[],l=[];if(t.forEach(c=>{let u=o.find(d=>u2(c,d));u?l.push({existingRoute:u,newRoute:c}):s.push(c)}),s.length>0){let c=hu(s,i,[e||"_","patch",String(o?.length||"0")],r);o.push(...c)}if(a&&l.length>0)for(let c=0;c<l.length;c++){let{existingRoute:u,newRoute:d}=l[c],p=u,[h]=hu([d],i,[],{},!0);Object.assign(p,{element:h.element?h.element:p.element,errorElement:h.errorElement?h.errorElement:p.errorElement,hydrateFallbackElement:h.hydrateFallbackElement?h.hydrateFallbackElement:p.hydrateFallbackElement})}n.hasHMRRoutes||n.setRoutes([...n.activeRoutes])}function u2(e,t){return"id"in e&&"id"in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children?.every((n,r)=>t.children?.some(i=>u2(n,i)))??!1:!1}var Sk=new WeakMap,d2=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if(ot(i,"No route found in manifest"),!i.lazy||typeof i.lazy!="object")return;let a=i.lazy[e];if(!a)return;let o=Sk.get(i);o||(o={},Sk.set(i,o));let s=o[e];if(s)return s;let l=(async()=>{let c=z4(e),d=i[e]!==void 0&&e!=="hasErrorBoundary";if(c)wn(!c,"Route property "+e+" is not a supported lazy route property. This property will be ignored."),o[e]=Promise.resolve();else if(d)wn(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let p=await a();p!=null&&(Object.assign(i,{[e]:p}),Object.assign(i,r(i)))}typeof i.lazy=="object"&&(i.lazy[e]=void 0,Object.values(i.lazy).every(p=>p===void 0)&&(i.lazy=void 0))})();return o[e]=l,l},Ek=new WeakMap;function S3(e,t,n,r,i){let a=n[e.id];if(ot(a,"No route found in manifest"),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy=="function"){let u=Ek.get(a);if(u)return{lazyRoutePromise:u,lazyHandlerPromise:u};let d=(async()=>{ot(typeof e.lazy=="function","No lazy route function found");let p=await e.lazy(),h={};for(let g in p){let y=p[g];if(y===void 0)continue;let x=B4(g),k=a[g]!==void 0&&g!=="hasErrorBoundary";x?wn(!x,"Route property "+g+" is not a supported property to be returned from a lazy route function. This property will be ignored."):k?wn(!k,`Route "${a.id}" has a static property "${g}" defined but its lazy function is also returning a value for this property. The lazy route property "${g}" will be ignored.`):h[g]=y}Object.assign(a,h),Object.assign(a,{...r(a),lazy:void 0})})();return Ek.set(a,d),d.catch(()=>{}),{lazyRoutePromise:d,lazyHandlerPromise:d}}let o=Object.keys(e.lazy),s=[],l;for(let u of o){if(i&&i.includes(u))continue;let d=d2({key:u,route:e,manifest:n,mapRouteProperties:r});d&&(s.push(d),u===t&&(l=d))}let c=s.length>0?Promise.all(s).then(()=>{}):void 0;return c?.catch(()=>{}),l?.catch(()=>{}),{lazyRoutePromise:c,lazyHandlerPromise:l}}async function Ck(e){let t=e.matches.filter(i=>i.shouldLoad),n={};return(await Promise.all(t.map(i=>i.resolve()))).forEach((i,a)=>{n[t[a].route.id]=i}),n}async function E3(e){return e.matches.some(t=>t.route.middleware)?f2(e,()=>Ck(e)):Ck(e)}function f2(e,t){return C3(e,t,r=>{if(z3(r))throw r;return r},I3,n);function n(r,i,a){if(a)return Promise.resolve(Object.assign(a.value,{[i]:{type:"error",result:r}}));{let{matches:o}=e,s=Math.min(Math.max(o.findIndex(c=>c.route.id===i),0),Math.max(o.findIndex(c=>c.shouldCallHandler()),0)),l=uo(o,o[s].route.id).route.id;return Promise.resolve({[l]:{type:"error",result:r}})}}}async function C3(e,t,n,r,i){let{matches:a,...o}=e,s=a.flatMap(c=>c.route.middleware?c.route.middleware.map(u=>[c.route.id,u]):[]);return await p2(o,s,t,n,r,i)}async function p2(e,t,n,r,i,a,o=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??new Error(`Request aborted: ${s.method} ${s.url}`);let l=t[o];if(!l)return await n();let[c,u]=l,d,p=async()=>{if(d)throw new Error("You may only call `next()` once per middleware");try{return d={value:await p2(e,t,n,r,i,a,o+1)},d.value}catch(h){return d={value:await a(h,c,d)},d.value}};try{let h=await u(e,p),g=h!=null?r(h):void 0;return i(g)?g:d?g??d.value:(d={value:await p()},d.value)}catch(h){return await a(h,c,d)}}function h2(e,t,n,r,i){let a=d2({key:"middleware",route:r.route,manifest:t,mapRouteProperties:e}),o=S3(r.route,rr(n.method)?"action":"loader",t,e,i);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function Vv(e,t,n,r,i,a,o,s,l,c=null,u){let d=!1,p=h2(e,t,n,a,o);return{...a,_lazyPromises:p,shouldLoad:l,shouldRevalidateArgs:c,shouldCallHandler(h){return d=!0,c?typeof u=="boolean"?Kc(a,{...c,defaultShouldRevalidate:u}):typeof h=="boolean"?Kc(a,{...c,defaultShouldRevalidate:h}):Kc(a,c):l},resolve(h){let{lazy:g,loader:y,middleware:x}=a.route,v=d||l||h&&!rr(n.method)&&(g||y),k=x&&x.length>0&&!y&&!g;return v&&(rr(n.method)||!k)?N3({request:n,path:r,pattern:i,match:a,lazyHandlerPromise:p?.handler,lazyRoutePromise:p?.route,handlerOverride:h,scopedContext:s}):Promise.resolve({type:"data",result:void 0})}}}function xl(e,t,n,r,i,a,o,s,l=null){return i.map(c=>c.route.id!==a.route.id?{...c,shouldLoad:!1,shouldRevalidateArgs:l,shouldCallHandler:()=>!1,_lazyPromises:h2(e,t,n,c,o),resolve:()=>Promise.resolve({type:"data",result:void 0})}:Vv(e,t,n,r,qu(i),c,o,s,!0,l))}async function j3(e,t,n,r,i,a,o){r.some(u=>u._lazyPromises?.middleware)&&await Promise.all(r.map(u=>u._lazyPromises?.middleware));let s={request:t,url:m2(t,n),pattern:qu(r),params:r[0].params,context:a,matches:r},c=await e({...s,fetcherKey:i,runClientMiddleware:u=>{let d=s;return f2(d,()=>u({...d,fetcherKey:i,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(r.flatMap(u=>[u._lazyPromises?.handler,u._lazyPromises?.route]))}catch{}return c}async function N3({request:e,path:t,pattern:n,match:r,lazyHandlerPromise:i,lazyRoutePromise:a,handlerOverride:o,scopedContext:s}){let l,c,u=rr(e.method),d=u?"action":"loader",p=h=>{let g,y=new Promise((k,b)=>g=b);c=()=>g(),e.signal.addEventListener("abort",c);let x=k=>typeof h!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${d}" [routeId: ${r.route.id}]`)):h({request:e,url:m2(e,t),pattern:n,params:r.params,context:s},...k!==void 0?[k]:[]),v=(async()=>{try{return{type:"data",result:await(o?o(b=>x(b)):x())}}catch(k){return{type:"error",result:k}}})();return Promise.race([v,y])};try{let h=u?r.route.action:r.route.loader;if(i||a)if(h){let g,[y]=await Promise.all([p(h).catch(x=>{g=x}),i,a]);if(g!==void 0)throw g;l=y}else{await i;let g=u?r.route.action:r.route.loader;if(g)[l]=await Promise.all([p(g),a]);else if(d==="action"){let y=new URL(e.url),x=y.pathname+y.search;throw ti(405,{method:e.method,pathname:x,routeId:r.route.id})}else return{type:"data",result:void 0}}else if(h)l=await p(h);else{let g=new URL(e.url),y=g.pathname+g.search;throw ti(404,{pathname:y})}}catch(h){return{type:"error",result:h}}finally{c&&e.signal.removeEventListener("abort",c)}return l}async function P3(e){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function T3(e){let{result:t,type:n}=e;if(Wb(t)){let r;try{r=await P3(t)}catch(i){return{type:"error",error:i}}return n==="error"?{type:"error",error:new Vu(t.status,t.statusText,r),statusCode:t.status,headers:t.headers}:{type:"data",data:r,statusCode:t.status,headers:t.headers}}return n==="error"?Mk(t)?t.data instanceof Error?{type:"error",error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:R3(t),statusCode:mu(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:t,statusCode:mu(t)?t.status:void 0}:Mk(t)?{type:"data",data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"data",data:t}}function A3(e,t,n,r,i){let a=e.headers.get("Location");if(ot(a,"Redirects returned/thrown from loaders/actions must have a Location header"),!zb(a)){let o=r.slice(0,r.findIndex(s=>s.route.id===n)+1);a=Uv(new URL(t.url),o,i,a),e.headers.set("Location",a)}return e}var jk=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function Nk(e,t,n,r){if(zb(e)){let i=e,a=i.startsWith("//")?new URL(t.protocol+i):new URL(i);if(jk.includes(a.protocol))throw new Error("Invalid redirect location");let o=di(a.pathname,n)!=null;if(a.origin===t.origin&&o)return Bb(a.pathname)+a.search+a.hash}try{let i=r.createURL(e);if(jk.includes(i.protocol))throw new Error("Invalid redirect location")}catch{}return e}function sl(e,t,n,r){let i=e.createURL(g2(t)).toString(),a={signal:n};if(r&&rr(r.formMethod)){let{formMethod:o,formEncType:s}=r;a.method=o.toUpperCase(),s==="application/json"?(a.headers=new Headers({"Content-Type":s}),a.body=JSON.stringify(r.json)):s==="text/plain"?a.body=r.text:s==="application/x-www-form-urlencoded"&&r.formData?a.body=qv(r.formData):a.body=r.formData}return new Request(i,a)}function m2(e,t){let n=new URL(e.url),r=typeof t=="string"?ga(t):t;if(n.pathname=r.pathname||"/",r.search){let i=new URLSearchParams(r.search),a=i.getAll("index");i.delete("index");for(let o of a.filter(Boolean))i.append("index",o);n.search=i.size?`?${i.toString()}`:""}else n.search="";return n.hash=r.hash||"",n}function qv(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function Pk(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function O3(e,t,n,r=!1,i=!1){let a={},o=null,s,l=!1,c={},u=n&&Lr(n[1])?n[1].error:void 0;return e.forEach(d=>{if(!(d.route.id in t))return;let p=d.route.id,h=t[p];if(ot(!is(h),"Cannot handle redirect results in processLoaderData"),Lr(h)){let g=h.error;if(u!==void 0&&(g=u,u=void 0),o=o||{},i)o[p]=g;else{let y=uo(e,p);o[y.route.id]==null&&(o[y.route.id]=g)}r||(a[p]=l2),l||(l=!0,s=mu(h.error)?h.error.status:500),h.headers&&(c[p]=h.headers)}else a[p]=h.data,h.statusCode&&h.statusCode!==200&&!l&&(s=h.statusCode),h.headers&&(c[p]=h.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:s||200,loaderHeaders:c}}function Tk(e,t,n,r,i,a){let{loaderData:o,errors:s}=O3(t,n,r);return i.filter(l=>!l.matches||l.matches.some(c=>c.shouldLoad)).forEach(l=>{let{key:c,match:u,controller:d}=l;if(d&&d.signal.aborted)return;let p=a[c];if(ot(p,"Did not find corresponding fetcher result"),Lr(p)){let h=uo(e.matches,u?.route.id);s&&s[h.route.id]||(s={...s,[h.route.id]:p.error}),e.fetchers.delete(c)}else if(is(p))ot(!1,"Unhandled fetcher revalidation redirect");else{let h=wa(p.data);e.fetchers.set(c,h)}}),{loaderData:o,errors:s}}function Ak(e,t,n,r){let i=Object.entries(t).filter(([,a])=>a!==l2).reduce((a,[o,s])=>(a[o]=s,a),{});for(let a of n){let o=a.route.id;if(!t.hasOwnProperty(o)&&e.hasOwnProperty(o)&&a.route.loader&&(i[o]=e[o]),r&&r.hasOwnProperty(o))break}return i}function Ok(e){return e?Lr(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function uo(e,t){return(t?e.slice(0,e.findIndex(r=>r.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function Td(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function ti(e,{pathname:t,routeId:n,method:r,type:i,message:a}={}){let o="Unknown Server Error",s="Unknown @remix-run/router error";return e===400?(o="Bad Request",r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i==="invalid-body"&&(s="Unable to encode submission body")):e===403?(o="Forbidden",s=`Route "${n}" does not match URL "${t}"`):e===404?(o="Not Found",s=`No route matches URL "${t}"`):e===405&&(o="Method Not Allowed",r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new Vu(e||500,o,new Error(s),!0)}function Ad(e){let t=Object.entries(e);for(let n=t.length-1;n>=0;n--){let[r,i]=t[n];if(is(i))return{key:r,result:i}}}function g2(e){let t=typeof e=="string"?ga(e):e;return sa({...t,hash:""})}function M3(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function R3(e){return new Vu(e.init?.status??500,e.init?.statusText??"Internal Server Error",e.data)}function I3(e){return e!=null&&typeof e=="object"&&Object.entries(e).every(([t,n])=>typeof t=="string"&&D3(n))}function D3(e){return e!=null&&typeof e=="object"&&"type"in e&&"result"in e&&(e.type==="data"||e.type==="error")}function L3(e){return Wb(e.result)&&o2.has(e.result.status)}function Lr(e){return e.type==="error"}function is(e){return(e&&e.type)==="redirect"}function Mk(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function Wb(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function $3(e){return o2.has(e)}function z3(e){return Wb(e)&&$3(e.status)&&e.headers.has("Location")}function F3(e){return m3.has(e.toUpperCase())}function rr(e){return p3.has(e.toUpperCase())}function Ub(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Pf(e,t){let n=typeof t=="string"?ga(t).search:t.search;if(e[e.length-1].route.index&&Ub(n||""))return e[e.length-1];let r=t2(e);return r[r.length-1]}function Rk(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:a,json:o}=e;if(!(!t||!n||!r)){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function ng(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function B3(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function mc(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function H3(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function wa(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function W3(e,t){try{let n=e.sessionStorage.getItem(s2);if(n){let r=JSON.parse(n);for(let[i,a]of Object.entries(r||{}))a&&Array.isArray(a)&&t.set(i,new Set(a||[]))}}catch{}}function U3(e,t){if(t.size>0){let n={};for(let[r,i]of t)n[r]=[...i];try{e.sessionStorage.setItem(s2,JSON.stringify(n))}catch(r){wn(!1,`Failed to save applied view transitions in sessionStorage (${r}).`)}}}function Ik(){let e,t,n=new Promise((r,i)=>{e=async a=>{r(a);try{await n}catch{}},t=async a=>{i(a);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var Ps=m.createContext(null);Ps.displayName="DataRouter";var Ku=m.createContext(null);Ku.displayName="DataRouterState";var y2=m.createContext(!1);function v2(){return m.useContext(y2)}var Vb=m.createContext({isTransitioning:!1});Vb.displayName="ViewTransition";var x2=m.createContext(new Map);x2.displayName="Fetchers";var V3=m.createContext(null);V3.displayName="Await";var hi=m.createContext(null);hi.displayName="Navigation";var Rh=m.createContext(null);Rh.displayName="Location";var ya=m.createContext({outlet:null,matches:[],isDataRoute:!1});ya.displayName="Route";var qb=m.createContext(null);qb.displayName="RouteError";var b2="REACT_ROUTER_ERROR",q3="REDIRECT",K3="ROUTE_ERROR_RESPONSE";function G3(e){if(e.startsWith(`${b2}:${q3}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function Y3(e){if(e.startsWith(`${b2}:${K3}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new Vu(t.status,t.statusText,t.data)}catch{}}function X3(e,{relative:t}={}){ot(Gu(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=m.useContext(hi),{hash:i,pathname:a,search:o}=Xu(e,{relative:t}),s=a;return n!=="/"&&(s=a==="/"?n:ui([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Gu(){return m.useContext(Rh)!=null}function Oi(){return ot(Gu(),"useLocation() may be used only in the context of a <Router> component."),m.useContext(Rh).location}var w2="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function k2(e){m.useContext(hi).static||m.useLayoutEffect(e)}function Yu(){let{isDataRoute:e}=m.useContext(ya);return e?dz():Z3()}function Z3(){ot(Gu(),"useNavigate() may be used only in the context of a <Router> component.");let e=m.useContext(Ps),{basename:t,navigator:n}=m.useContext(hi),{matches:r}=m.useContext(ya),{pathname:i}=Oi(),a=JSON.stringify(Fb(r)),o=m.useRef(!1);return k2(()=>{o.current=!0}),m.useCallback((l,c={})=>{if(wn(o.current,w2),!o.current)return;if(typeof l=="number"){n.go(l);return}let u=Mh(l,JSON.parse(a),i,c.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:ui([t,u.pathname])),(c.replace?n.replace:n.push)(u,c.state,c)},[t,n,a,i,e])}var Q3=m.createContext(null);function J3(e){let t=m.useContext(ya).outlet;return m.useMemo(()=>t&&m.createElement(Q3.Provider,{value:e},t),[t,e])}function Xu(e,{relative:t}={}){let{matches:n}=m.useContext(ya),{pathname:r}=Oi(),i=JSON.stringify(Fb(n));return m.useMemo(()=>Mh(e,JSON.parse(i),r,t==="path"),[e,i,r,t])}function ez(e,t,n){ot(Gu(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=m.useContext(hi),{matches:i}=m.useContext(ya),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:"/",l=a?a.pathnameBase:"/",c=a&&a.route;{let x=c&&c.path||"";S2(s,!c||x.endsWith("*")||x.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${x}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
3
3
 
4
4
  Please change the parent <Route path="${x}"> to <Route path="${x==="/"?"*":`${x}/*`}">.`)}let u=Oi(),d;d=u;let p=d.pathname||"/",h=p;if(l!=="/"){let x=l.replace(/^\//,"").split("/");h="/"+p.replace(/^\//,"").split("/").slice(x.length).join("/")}let g=n&&n.state.matches.length?n.state.matches.map(x=>Object.assign(x,{route:n.manifest[x.route.id]||x.route})):ZT(e,{pathname:h});return wn(c||g!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),wn(g==null||g[g.length-1].route.element!==void 0||g[g.length-1].route.Component!==void 0||g[g.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),az(g&&g.map(x=>Object.assign({},x,{params:Object.assign({},o,x.params),pathname:ui([l,r.encodeLocation?r.encodeLocation(x.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:x.pathname]),pathnameBase:x.pathnameBase==="/"?l:ui([l,r.encodeLocation?r.encodeLocation(x.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:x.pathnameBase])})),i,n)}function tz(){let e=uz(),t=mu(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},a={padding:"2px 4px",backgroundColor:r},o=null;return console.error("Error handled by React Router default ErrorBoundary:",e),o=m.createElement(m.Fragment,null,m.createElement("p",null,"💿 Hey developer 👋"),m.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",m.createElement("code",{style:a},"ErrorBoundary")," or"," ",m.createElement("code",{style:a},"errorElement")," prop on your route.")),m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},t),n?m.createElement("pre",{style:i},n):null,o)}var nz=m.createElement(tz,null),_2=class extends m.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=Y3(e.digest);n&&(e=n)}let t=e!==void 0?m.createElement(ya.Provider,{value:this.props.routeContext},m.createElement(qb.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?m.createElement(rz,{error:e},t):t}};_2.contextType=y2;var rg=new WeakMap;function rz({children:e,error:t}){let{basename:n}=m.useContext(hi);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let r=G3(t.digest);if(r){let i=rg.get(t);if(i)throw i;let a=r2(r.location,n);if(n2&&!rg.get(t))if(a.isExternal||r.reloadDocument)window.location.href=a.absoluteURL||a.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:r.replace}));throw rg.set(t,o),o}return m.createElement("meta",{httpEquiv:"refresh",content:`0;url=${a.absoluteURL||a.to}`})}}return e}function iz({routeContext:e,match:t,children:n}){let r=m.useContext(Ps);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),m.createElement(ya.Provider,{value:e},n)}function az(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let u=i.findIndex(d=>d.route.id&&a?.[d.route.id]!==void 0);ot(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(",")}`),i=i.slice(0,Math.min(i.length,u+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let u=0;u<i.length;u++){let d=i[u];if((d.route.HydrateFallback||d.route.hydrateFallbackElement)&&(s=u),d.route.id){let{loaderData:p,errors:h}=r,g=d.route.loader&&!p.hasOwnProperty(d.route.id)&&(!h||h[d.route.id]===void 0);if(d.route.lazy||g){n.isStatic&&(o=!0),s>=0?i=i.slice(0,s+1):i=[i[0]];break}}}}let l=n?.onError,c=r&&l?(u,d)=>{l(u,{location:r.location,params:r.matches?.[0]?.params??{},pattern:qu(r.matches),errorInfo:d})}:void 0;return i.reduceRight((u,d,p)=>{let h,g=!1,y=null,x=null;r&&(h=a&&d.route.id?a[d.route.id]:void 0,y=d.route.errorElement||nz,o&&(s<0&&p===0?(S2("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),g=!0,x=null):s===p&&(g=!0,x=d.route.hydrateFallbackElement||null)));let v=t.concat(i.slice(0,p+1)),k=()=>{let b;return h?b=y:g?b=x:d.route.Component?b=m.createElement(d.route.Component,null):d.route.element?b=d.route.element:b=u,m.createElement(iz,{match:d,routeContext:{outlet:u,matches:v,isDataRoute:r!=null},children:b})};return r&&(d.route.ErrorBoundary||d.route.errorElement||p===0)?m.createElement(_2,{location:r.location,revalidation:r.revalidation,component:y,error:h,children:k(),routeContext:{outlet:null,matches:v,isDataRoute:!0},onError:c}):k()},null)}function Kb(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function oz(e){let t=m.useContext(Ps);return ot(t,Kb(e)),t}function sz(e){let t=m.useContext(Ku);return ot(t,Kb(e)),t}function lz(e){let t=m.useContext(ya);return ot(t,Kb(e)),t}function Gb(e){let t=lz(e),n=t.matches[t.matches.length-1];return ot(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function cz(){return Gb("useRouteId")}function uz(){let e=m.useContext(qb),t=sz("useRouteError"),n=Gb("useRouteError");return e!==void 0?e:t.errors?.[n]}function dz(){let{router:e}=oz("useNavigate"),t=Gb("useNavigate"),n=m.useRef(!1);return k2(()=>{n.current=!0}),m.useCallback(async(i,a={})=>{wn(n.current,w2),n.current&&(typeof i=="number"?await e.navigate(i):await e.navigate(i,{fromRouteId:t,...a}))},[e,t])}var Dk={};function S2(e,t,n){!t&&!Dk[e]&&(Dk[e]=!0,wn(!1,n))}var Lk={};function $k(e,t){!e&&!Lk[t]&&(Lk[t]=!0,console.warn(t))}var fz="useOptimistic",zk=Ah[fz],pz=()=>{};function hz(e){return zk?zk(e):[e,pz]}function mz(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&wn(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:m.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&wn(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:m.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&wn(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:m.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var gz=["HydrateFallback","hydrateFallbackElement"],yz=class{constructor(){this.status="pending",this.promise=new Promise((e,t)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",e(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",t(n))}})}};function vz({router:e,flushSync:t,onError:n,useTransitions:r}){r=v2()||r;let[a,o]=m.useState(e.state),[s,l]=hz(a),[c,u]=m.useState(),[d,p]=m.useState({isTransitioning:!1}),[h,g]=m.useState(),[y,x]=m.useState(),[v,k]=m.useState(),b=m.useRef(new Map),_=m.useCallback((j,{deletedFetchers:T,newErrors:R,flushSync:A,viewTransitionOpts:D})=>{R&&n&&Object.values(R).forEach(O=>n(O,{location:j.location,params:j.matches[0]?.params??{},pattern:qu(j.matches)})),j.fetchers.forEach((O,I)=>{O.data!==void 0&&b.current.set(I,O.data)}),T.forEach(O=>b.current.delete(O)),$k(A===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let M=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition=="function";if($k(D==null||M,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!D||!M){t&&A?t(()=>o(j)):r===!1?o(j):m.startTransition(()=>{r===!0&&l(O=>Fk(O,j)),o(j)});return}if(t&&A){t(()=>{y&&(h?.resolve(),y.skipTransition()),p({isTransitioning:!0,flushSync:!0,currentLocation:D.currentLocation,nextLocation:D.nextLocation})});let O=e.window.document.startViewTransition(()=>{t(()=>o(j))});O.finished.finally(()=>{t(()=>{g(void 0),x(void 0),u(void 0),p({isTransitioning:!1})})}),t(()=>x(O));return}y?(h?.resolve(),y.skipTransition(),k({state:j,currentLocation:D.currentLocation,nextLocation:D.nextLocation})):(u(j),p({isTransitioning:!0,flushSync:!1,currentLocation:D.currentLocation,nextLocation:D.nextLocation}))},[e.window,t,y,h,r,l,n]);m.useLayoutEffect(()=>e.subscribe(_),[e,_]);let S=s.initialized;m.useLayoutEffect(()=>{!S&&e.state.initialized&&_(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[S,_,e.state]),m.useEffect(()=>{d.isTransitioning&&!d.flushSync&&g(new yz)},[d]),m.useEffect(()=>{if(h&&c&&e.window){let j=c,T=h.promise,R=e.window.document.startViewTransition(async()=>{r===!1?o(j):m.startTransition(()=>{r===!0&&l(A=>Fk(A,j)),o(j)}),await T});R.finished.finally(()=>{g(void 0),x(void 0),u(void 0),p({isTransitioning:!1})}),x(R)}},[c,h,e.window,r,l]),m.useEffect(()=>{h&&c&&s.location.key===c.location.key&&h.resolve()},[h,y,s.location,c]),m.useEffect(()=>{!d.isTransitioning&&v&&(u(v.state),p({isTransitioning:!0,flushSync:!1,currentLocation:v.currentLocation,nextLocation:v.nextLocation}),k(void 0))},[d.isTransitioning,v]);let w=m.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:j=>e.navigate(j),push:(j,T,R)=>e.navigate(j,{state:T,preventScrollReset:R?.preventScrollReset}),replace:(j,T,R)=>e.navigate(j,{replace:!0,state:T,preventScrollReset:R?.preventScrollReset})}),[e]),E=e.basename||"/",C=m.useMemo(()=>({router:e,navigator:w,static:!1,basename:E,onError:n}),[e,w,E,n]);return m.createElement(m.Fragment,null,m.createElement(Ps.Provider,{value:C},m.createElement(Ku.Provider,{value:s},m.createElement(x2.Provider,{value:b.current},m.createElement(Vb.Provider,{value:d},m.createElement(kz,{basename:E,location:s.location,navigationType:s.historyAction,navigator:w,useTransitions:r},m.createElement(xz,{routes:e.routes,manifest:e.manifest,future:e.future,state:s,isStatic:!1,onError:n})))))),null)}function Fk(e,t){return{...e,navigation:t.navigation.state!=="idle"?t.navigation:e.navigation,revalidation:t.revalidation!=="idle"?t.revalidation:e.revalidation,actionData:t.navigation.state!=="submitting"?t.actionData:e.actionData,fetchers:t.fetchers}}var xz=m.memo(bz);function bz({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return ez(e,void 0,{manifest:t,state:r,isStatic:i,onError:a})}function wz(e){return J3(e.context)}function kz({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:i,static:a=!1,useTransitions:o}){ot(!Gu(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let s=e.replace(/^\/*/,"/"),l=m.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n=="string"&&(n=ga(n));let{pathname:c="/",search:u="",hash:d="",state:p=null,key:h="default",mask:g}=n,y=m.useMemo(()=>{let x=di(c,s);return x==null?null:{location:{pathname:x,search:u,hash:d,state:p,key:h,mask:g},navigationType:r}},[s,c,u,d,p,h,r,g]);return wn(y!=null,`<Router basename="${s}"> is not able to match the URL "${c}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),y==null?null:m.createElement(hi.Provider,{value:l},m.createElement(Rh.Provider,{children:t,value:y}))}var Tf="get",Af="application/x-www-form-urlencoded";function Ih(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function _z(e){return Ih(e)&&e.tagName.toLowerCase()==="button"}function Sz(e){return Ih(e)&&e.tagName.toLowerCase()==="form"}function Ez(e){return Ih(e)&&e.tagName.toLowerCase()==="input"}function Cz(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function jz(e,t){return e.button===0&&(!t||t==="_self")&&!Cz(e)}var Od=null;function Nz(){if(Od===null)try{new FormData(document.createElement("form"),0),Od=!1}catch{Od=!0}return Od}var Pz=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function ig(e){return e!=null&&!Pz.has(e)?(wn(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Af}"`),null):e}function Tz(e,t){let n,r,i,a,o;if(Sz(e)){let s=e.getAttribute("action");r=s?di(s,t):null,n=e.getAttribute("method")||Tf,i=ig(e.getAttribute("enctype"))||Af,a=new FormData(e)}else if(_z(e)||Ez(e)&&(e.type==="submit"||e.type==="image")){let s=e.form;if(s==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let l=e.getAttribute("formaction")||s.getAttribute("action");if(r=l?di(l,t):null,n=e.getAttribute("formmethod")||s.getAttribute("method")||Tf,i=ig(e.getAttribute("formenctype"))||ig(s.getAttribute("enctype"))||Af,a=new FormData(s,e),!Nz()){let{name:c,type:u,value:d}=e;if(u==="image"){let p=c?`${c}.`:"";a.append(`${p}x`,"0"),a.append(`${p}y`,"0")}else c&&a.append(c,d)}}else{if(Ih(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Tf,r=null,i=Af,o=e}return a&&i==="text/plain"&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Yb(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function E2(e,t,n,r){let i=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?i.pathname.endsWith("/")?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname==="/"?i.pathname=`_root.${r}`:t&&di(i.pathname,t)==="/"?i.pathname=`${op(t)}/_root.${r}`:i.pathname=`${op(i.pathname)}.${r}`,i}async function Az(e,t){if(e.id in t)return t[e.id];try{let n=await import(e.module);return t[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Oz(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Mz(e,t,n){let r=await Promise.all(e.map(async i=>{let a=t.routes[i.route.id];if(a){let o=await Az(a,n);return o.links?o.links():[]}return[]}));return Lz(r.flat(1).filter(Oz).filter(i=>i.rel==="stylesheet"||i.rel==="preload").map(i=>i.rel==="stylesheet"?{...i,rel:"prefetch",as:"style"}:{...i,rel:"prefetch"}))}function Bk(e,t,n,r,i,a){let o=(l,c)=>n[c]?l.route.id!==n[c].route.id:!0,s=(l,c)=>n[c].pathname!==l.pathname||n[c].route.path?.endsWith("*")&&n[c].params["*"]!==l.params["*"];return a==="assets"?t.filter((l,c)=>o(l,c)||s(l,c)):a==="data"?t.filter((l,c)=>{let u=r.routes[l.route.id];if(!u||!u.hasLoader)return!1;if(o(l,c)||s(l,c))return!0;if(l.route.shouldRevalidate){let d=l.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:l.params,defaultShouldRevalidate:!0});if(typeof d=="boolean")return d}return!0}):[]}function Rz(e,t,{includeHydrateFallback:n}={}){return Iz(e.map(r=>{let i=t.routes[r.route.id];if(!i)return[];let a=[i.module];return i.clientActionModule&&(a=a.concat(i.clientActionModule)),i.clientLoaderModule&&(a=a.concat(i.clientLoaderModule)),n&&i.hydrateFallbackModule&&(a=a.concat(i.hydrateFallbackModule)),i.imports&&(a=a.concat(i.imports)),a}).flat(1))}function Iz(e){return[...new Set(e)]}function Dz(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Lz(e,t){let n=new Set;return new Set(t),e.reduce((r,i)=>{let a=JSON.stringify(Dz(i));return n.has(a)||(n.add(a),r.push({key:a,link:i})),r},[])}function Xb(){let e=m.useContext(Ps);return Yb(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function $z(){let e=m.useContext(Ku);return Yb(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Zb=m.createContext(void 0);Zb.displayName="FrameworkContext";function Qb(){let e=m.useContext(Zb);return Yb(e,"You must render this element inside a <HydratedRouter> element"),e}function zz(e,t){let n=m.useContext(Zb),[r,i]=m.useState(!1),[a,o]=m.useState(!1),{onFocus:s,onBlur:l,onMouseEnter:c,onMouseLeave:u,onTouchStart:d}=t,p=m.useRef(null);m.useEffect(()=>{if(e==="render"&&o(!0),e==="viewport"){let y=v=>{v.forEach(k=>{o(k.isIntersecting)})},x=new IntersectionObserver(y,{threshold:.5});return p.current&&x.observe(p.current),()=>{x.disconnect()}}},[e]),m.useEffect(()=>{if(r){let y=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(y)}}},[r]);let h=()=>{i(!0)},g=()=>{i(!1),o(!1)};return n?e!=="intent"?[a,p,{}]:[a,p,{onFocus:gc(s,h),onBlur:gc(l,g),onMouseEnter:gc(c,h),onMouseLeave:gc(u,g),onTouchStart:gc(d,h)}]:[!1,p,{}]}function gc(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Fz({page:e,...t}){let n=v2(),{router:r}=Xb(),i=m.useMemo(()=>ZT(r.routes,e,r.basename),[r.routes,e,r.basename]);return i?n?m.createElement(Hz,{page:e,matches:i,...t}):m.createElement(Wz,{page:e,matches:i,...t}):null}function Bz(e){let{manifest:t,routeModules:n}=Qb(),[r,i]=m.useState([]);return m.useEffect(()=>{let a=!1;return Mz(e,t,n).then(o=>{a||i(o)}),()=>{a=!0}},[e,t,n]),r}function Hz({page:e,matches:t,...n}){let r=Oi(),{future:i}=Qb(),{basename:a}=Xb(),o=m.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let s=E2(e,a,i.unstable_trailingSlashAwareDataRequests,"rsc"),l=!1,c=[];for(let u of t)typeof u.route.shouldRevalidate=="function"?l=!0:c.push(u.route.id);return l&&c.length>0&&s.searchParams.set("_routes",c.join(",")),[s.pathname+s.search]},[a,i.unstable_trailingSlashAwareDataRequests,e,r,t]);return m.createElement(m.Fragment,null,o.map(s=>m.createElement("link",{key:s,rel:"prefetch",as:"fetch",href:s,...n})))}function Wz({page:e,matches:t,...n}){let r=Oi(),{future:i,manifest:a,routeModules:o}=Qb(),{basename:s}=Xb(),{loaderData:l,matches:c}=$z(),u=m.useMemo(()=>Bk(e,t,c,a,r,"data"),[e,t,c,a,r]),d=m.useMemo(()=>Bk(e,t,c,a,r,"assets"),[e,t,c,a,r]),p=m.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let y=new Set,x=!1;if(t.forEach(k=>{let b=a.routes[k.route.id];!b||!b.hasLoader||(!u.some(_=>_.route.id===k.route.id)&&k.route.id in l&&o[k.route.id]?.shouldRevalidate||b.hasClientLoader?x=!0:y.add(k.route.id))}),y.size===0)return[];let v=E2(e,s,i.unstable_trailingSlashAwareDataRequests,"data");return x&&y.size>0&&v.searchParams.set("_routes",t.filter(k=>y.has(k.route.id)).map(k=>k.route.id).join(",")),[v.pathname+v.search]},[s,i.unstable_trailingSlashAwareDataRequests,l,r,a,u,t,e,o]),h=m.useMemo(()=>Rz(d,a),[d,a]),g=Bz(d);return m.createElement(m.Fragment,null,p.map(y=>m.createElement("link",{key:y,rel:"prefetch",as:"fetch",href:y,...n})),h.map(y=>m.createElement("link",{key:y,rel:"modulepreload",href:y,...n})),g.map(({key:y,link:x})=>m.createElement("link",{key:y,nonce:n.nonce,...x,crossOrigin:x.crossOrigin??n.crossOrigin})))}function Uz(...e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}var Vz=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Vz&&(window.__reactRouterVersion="7.15.0")}catch{}function qz(e,t){return b3({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:I4({window:t?.window}),hydrationData:Kz(),routes:e,mapRouteProperties:mz,hydrationRouteProperties:gz,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,instrumentations:t?.instrumentations}).initialize()}function Kz(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:Gz(e.errors)}),e}function Gz(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,i]of t)if(i&&i.__type==="RouteErrorResponse")n[r]=new Vu(i.status,i.statusText,i.data,i.internal===!0);else if(i&&i.__type==="Error"){if(i.__subType){let a=window[i.__subType];if(typeof a=="function")try{let o=new a(i.message);o.stack="",n[r]=o}catch{}}if(n[r]==null){let a=new Error(i.message);a.stack="",n[r]=a}}else n[r]=i;return n}var C2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,j2=m.forwardRef(function({onClick:t,discover:n="render",prefetch:r="none",relative:i,reloadDocument:a,replace:o,mask:s,state:l,target:c,to:u,preventScrollReset:d,viewTransition:p,defaultShouldRevalidate:h,...g},y){let{basename:x,navigator:v,useTransitions:k}=m.useContext(hi),b=typeof u=="string"&&C2.test(u),_=r2(u,x);u=_.to;let S=X3(u,{relative:i}),w=Oi(),E=null;if(s){let O=Mh(s,[],w.mask?w.mask.pathname:"/",!0);x!=="/"&&(O.pathname=O.pathname==="/"?x:ui([x,O.pathname])),E=v.createHref(O)}let[C,j,T]=zz(r,g),R=Qz(u,{replace:o,mask:s,state:l,target:c,preventScrollReset:d,relative:i,viewTransition:p,defaultShouldRevalidate:h,useTransitions:k});function A(O){t&&t(O),O.defaultPrevented||R(O)}let D=!(_.isExternal||a),M=m.createElement("a",{...g,...T,href:(D?E:void 0)||_.absoluteURL||S,onClick:D?A:t,ref:Uz(y,j),target:c,"data-discover":!b&&n==="render"?"true":void 0});return C&&!b?m.createElement(m.Fragment,null,M,m.createElement(Fz,{page:S})):M});j2.displayName="Link";var Yz=m.forwardRef(function({"aria-current":t="page",caseSensitive:n=!1,className:r="",end:i=!1,style:a,to:o,viewTransition:s,children:l,...c},u){let d=Xu(o,{relative:c.relative}),p=Oi(),h=m.useContext(Ku),{navigator:g,basename:y}=m.useContext(hi),x=h!=null&&rF(d)&&s===!0,v=g.encodeLocation?g.encodeLocation(d).pathname:d.pathname,k=p.pathname,b=h&&h.navigation&&h.navigation.location?h.navigation.location.pathname:null;n||(k=k.toLowerCase(),b=b?b.toLowerCase():null,v=v.toLowerCase()),b&&y&&(b=di(b,y)||b);const _=v!=="/"&&v.endsWith("/")?v.length-1:v.length;let S=k===v||!i&&k.startsWith(v)&&k.charAt(_)==="/",w=b!=null&&(b===v||!i&&b.startsWith(v)&&b.charAt(v.length)==="/"),E={isActive:S,isPending:w,isTransitioning:x},C=S?t:void 0,j;typeof r=="function"?j=r(E):j=[r,S?"active":null,w?"pending":null,x?"transitioning":null].filter(Boolean).join(" ");let T=typeof a=="function"?a(E):a;return m.createElement(j2,{...c,"aria-current":C,className:j,ref:u,style:T,to:o,viewTransition:s},typeof l=="function"?l(E):l)});Yz.displayName="NavLink";var Xz=m.forwardRef(({discover:e="render",fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=Tf,action:s,onSubmit:l,relative:c,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:p,...h},g)=>{let{useTransitions:y}=m.useContext(hi),x=tF(),v=nF(s,{relative:c}),k=o.toLowerCase()==="get"?"get":"post",b=typeof s=="string"&&C2.test(s),_=S=>{if(l&&l(S),S.defaultPrevented)return;S.preventDefault();let w=S.nativeEvent.submitter,E=w?.getAttribute("formmethod")||o,C=()=>x(w||S.currentTarget,{fetcherKey:t,method:E,navigate:n,replace:i,state:a,relative:c,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:p});y&&n!==!1?m.startTransition(()=>C()):C()};return m.createElement("form",{ref:g,method:k,action:v,onSubmit:r?l:_,...h,"data-discover":!b&&e==="render"?"true":void 0})});Xz.displayName="Form";function Zz(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function N2(e){let t=m.useContext(Ps);return ot(t,Zz(e)),t}function Qz(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:l,useTransitions:c}={}){let u=Yu(),d=Oi(),p=Xu(e,{relative:o});return m.useCallback(h=>{if(jz(h,t)){h.preventDefault();let g=n!==void 0?n:sa(d)===sa(p),y=()=>u(e,{replace:g,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:l});c?m.startTransition(()=>y()):y()}},[d,u,p,n,r,i,t,e,a,o,s,l,c])}var Jz=0,eF=()=>`__${String(++Jz)}__`;function tF(){let{router:e}=N2("useSubmit"),{basename:t}=m.useContext(hi),n=cz(),r=e.fetch,i=e.navigate;return m.useCallback(async(a,o={})=>{let{action:s,method:l,encType:c,formData:u,body:d}=Tz(a,t);if(o.navigate===!1){let p=o.fetcherKey||eF();await r(p,n,o.action||s,{defaultShouldRevalidate:o.defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:u,body:d,formMethod:o.method||l,formEncType:o.encType||c,flushSync:o.flushSync})}else await i(o.action||s,{defaultShouldRevalidate:o.defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:u,body:d,formMethod:o.method||l,formEncType:o.encType||c,replace:o.replace,state:o.state,fromRouteId:n,flushSync:o.flushSync,viewTransition:o.viewTransition})},[r,i,t,n])}function nF(e,{relative:t}={}){let{basename:n}=m.useContext(hi),r=m.useContext(ya);ot(r,"useFormAction must be used inside a RouteContext");let[i]=r.matches.slice(-1),a={...Xu(e||".",{relative:t})},o=Oi();if(e==null){a.search=o.search;let s=new URLSearchParams(a.search),l=s.getAll("index");if(l.some(u=>u==="")){s.delete("index"),l.filter(d=>d).forEach(d=>s.append("index",d));let u=s.toString();a.search=u?`?${u}`:""}}return(!e||e===".")&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(a.pathname=a.pathname==="/"?n:ui([n,a.pathname])),sa(a)}function rF(e,{relative:t}={}){let n=m.useContext(Vb);ot(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=N2("useViewTransitionState"),i=Xu(e,{relative:t});if(!n.isTransitioning)return!1;let a=di(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=di(n.nextLocation.pathname,r)||n.nextLocation.pathname;return ap(i.pathname,o)!=null||ap(i.pathname,a)!=null}var Ur=w4();const iF=Ai(Ur);function aF(e){return m.createElement(vz,{flushSync:Ur.flushSync,...e})}function Hn(e,t,n,r){if(typeof t=="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?r:n==="a"?r.call(e):r?r.value:t.get(e)}function ll(e,t,n,r,i){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,n),n}var Vo,Xr,Hs,Md,Of;const Tr="__TAURI_TO_IPC_KEY__";function P2(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}class Hk{constructor(t){Vo.set(this,void 0),Xr.set(this,0),Hs.set(this,[]),Md.set(this,void 0),ll(this,Vo,t||(()=>{})),this.id=P2(n=>{const r=n.index;if("end"in n){r==Hn(this,Xr,"f")?this.cleanupCallback():ll(this,Md,r);return}const i=n.message;if(r==Hn(this,Xr,"f")){for(Hn(this,Vo,"f").call(this,i),ll(this,Xr,Hn(this,Xr,"f")+1);Hn(this,Xr,"f")in Hn(this,Hs,"f");){const a=Hn(this,Hs,"f")[Hn(this,Xr,"f")];Hn(this,Vo,"f").call(this,a),delete Hn(this,Hs,"f")[Hn(this,Xr,"f")],ll(this,Xr,Hn(this,Xr,"f")+1)}Hn(this,Xr,"f")===Hn(this,Md,"f")&&this.cleanupCallback()}else Hn(this,Hs,"f")[r]=i})}cleanupCallback(){window.__TAURI_INTERNALS__.unregisterCallback(this.id)}set onmessage(t){ll(this,Vo,t)}get onmessage(){return Hn(this,Vo,"f")}[(Vo=new WeakMap,Xr=new WeakMap,Hs=new WeakMap,Md=new WeakMap,Tr)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[Tr]()}}async function W(e,t={},n){return window.__TAURI_INTERNALS__.invoke(e,t,n)}class sp{get rid(){return Hn(this,Of,"f")}constructor(t){Of.set(this,void 0),ll(this,Of,t)}async close(){return W("plugin:resources|close",{rid:this.rid})}}Of=new WeakMap;var Un;(function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WINDOW_SUSPENDED="tauri://suspended",e.WINDOW_RESUMED="tauri://resumed",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"})(Un||(Un={}));async function T2(e,t){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(e,t),await W("plugin:event|unlisten",{event:e,eventId:t})}async function Le(e,t,n){var r;const i=typeof n?.target=="string"?{kind:"AnyLabel",label:n.target}:(r=n?.target)!==null&&r!==void 0?r:{kind:"Any"};return W("plugin:event|listen",{event:e,target:i,handler:P2(t)}).then(a=>async()=>T2(e,a))}async function Jb(e,t,n){return Le(e,r=>{T2(e,r.id),t(r)},n)}async function Oa(e,t){await W("plugin:event|emit",{event:e,payload:t})}async function It(e,t,n){await W("plugin:event|emit_to",{target:typeof e=="string"?{kind:"AnyLabel",label:e}:e,event:t,payload:n})}class A2{constructor(...t){this.type="Logical",t.length===1?"Logical"in t[0]?(this.width=t[0].Logical.width,this.height=t[0].Logical.height):(this.width=t[0].width,this.height=t[0].height):(this.width=t[0],this.height=t[1])}toPhysical(t){return new bl(this.width*t,this.height*t)}[Tr](){return{width:this.width,height:this.height}}toJSON(){return this[Tr]()}}class bl{constructor(...t){this.type="Physical",t.length===1?"Physical"in t[0]?(this.width=t[0].Physical.width,this.height=t[0].Physical.height):(this.width=t[0].width,this.height=t[0].height):(this.width=t[0],this.height=t[1])}toLogical(t){return new A2(this.width/t,this.height/t)}[Tr](){return{width:this.width,height:this.height}}toJSON(){return this[Tr]()}}class oo{constructor(t){this.size=t}toLogical(t){return this.size instanceof A2?this.size:this.size.toLogical(t)}toPhysical(t){return this.size instanceof bl?this.size:this.size.toPhysical(t)}[Tr](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[Tr]()}}class O2{constructor(...t){this.type="Logical",t.length===1?"Logical"in t[0]?(this.x=t[0].Logical.x,this.y=t[0].Logical.y):(this.x=t[0].x,this.y=t[0].y):(this.x=t[0],this.y=t[1])}toPhysical(t){return new ni(this.x*t,this.y*t)}[Tr](){return{x:this.x,y:this.y}}toJSON(){return this[Tr]()}}class ni{constructor(...t){this.type="Physical",t.length===1?"Physical"in t[0]?(this.x=t[0].Physical.x,this.y=t[0].Physical.y):(this.x=t[0].x,this.y=t[0].y):(this.x=t[0],this.y=t[1])}toLogical(t){return new O2(this.x/t,this.y/t)}[Tr](){return{x:this.x,y:this.y}}toJSON(){return this[Tr]()}}class dl{constructor(t){this.position=t}toLogical(t){return this.position instanceof O2?this.position:this.position.toLogical(t)}toPhysical(t){return this.position instanceof ni?this.position:this.position.toPhysical(t)}[Tr](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[Tr]()}}class Gc extends sp{constructor(t){super(t)}static async new(t,n,r){return W("plugin:image|new",{rgba:lp(t),width:n,height:r}).then(i=>new Gc(i))}static async fromBytes(t){return W("plugin:image|from_bytes",{bytes:lp(t)}).then(n=>new Gc(n))}static async fromPath(t){return W("plugin:image|from_path",{path:t}).then(n=>new Gc(n))}async rgba(){return W("plugin:image|rgba",{rid:this.rid}).then(t=>new Uint8Array(t))}async size(){return W("plugin:image|size",{rid:this.rid})}}function lp(e){return e==null?null:typeof e=="string"?e:e instanceof Gc?e.rid:e}var Kv;(function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"})(Kv||(Kv={}));class oF{constructor(t){this._preventDefault=!1,this.event=t.event,this.id=t.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}var Wk;(function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"})(Wk||(Wk={}));function e0(){return new Dh(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function ag(){return W("plugin:window|get_all_windows").then(e=>e.map(t=>new Dh(t,{skip:!0})))}const og=["tauri://created","tauri://error"];class Dh{constructor(t,n={}){var r;this.label=t,this.listeners=Object.create(null),n?.skip||W("plugin:window|create",{options:{...n,parent:typeof n.parent=="string"?n.parent:(r=n.parent)===null||r===void 0?void 0:r.label,label:t}}).then(async()=>this.emit("tauri://created")).catch(async i=>this.emit("tauri://error",i))}static async getByLabel(t){var n;return(n=(await ag()).find(r=>r.label===t))!==null&&n!==void 0?n:null}static getCurrent(){return e0()}static async getAll(){return ag()}static async getFocusedWindow(){for(const t of await ag())if(await t.isFocused())return t;return null}async listen(t,n){return this._handleTauriEvent(t,n)?()=>{const r=this.listeners[t];r.splice(r.indexOf(n),1)}:Le(t,n,{target:{kind:"Window",label:this.label}})}async once(t,n){return this._handleTauriEvent(t,n)?()=>{const r=this.listeners[t];r.splice(r.indexOf(n),1)}:Jb(t,n,{target:{kind:"Window",label:this.label}})}async emit(t,n){if(og.includes(t)){for(const r of this.listeners[t]||[])r({event:t,id:-1,payload:n});return}return Oa(t,n)}async emitTo(t,n,r){if(og.includes(n)){for(const i of this.listeners[n]||[])i({event:n,id:-1,payload:r});return}return It(t,n,r)}_handleTauriEvent(t,n){return og.includes(t)?(t in this.listeners?this.listeners[t].push(n):this.listeners[t]=[n],!0):!1}async scaleFactor(){return W("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return W("plugin:window|inner_position",{label:this.label}).then(t=>new ni(t))}async outerPosition(){return W("plugin:window|outer_position",{label:this.label}).then(t=>new ni(t))}async innerSize(){return W("plugin:window|inner_size",{label:this.label}).then(t=>new bl(t))}async outerSize(){return W("plugin:window|outer_size",{label:this.label}).then(t=>new bl(t))}async isFullscreen(){return W("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return W("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return W("plugin:window|is_maximized",{label:this.label})}async isFocused(){return W("plugin:window|is_focused",{label:this.label})}async isDecorated(){return W("plugin:window|is_decorated",{label:this.label})}async isResizable(){return W("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return W("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return W("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return W("plugin:window|is_closable",{label:this.label})}async isVisible(){return W("plugin:window|is_visible",{label:this.label})}async title(){return W("plugin:window|title",{label:this.label})}async theme(){return W("plugin:window|theme",{label:this.label})}async isAlwaysOnTop(){return W("plugin:window|is_always_on_top",{label:this.label})}async activityName(){return W("plugin:window|activity_name",{label:this.label})}async sceneIdentifier(){return W("plugin:window|scene_identifier",{label:this.label})}async center(){return W("plugin:window|center",{label:this.label})}async requestUserAttention(t){let n=null;return t&&(t===Kv.Critical?n={type:"Critical"}:n={type:"Informational"}),W("plugin:window|request_user_attention",{label:this.label,value:n})}async setResizable(t){return W("plugin:window|set_resizable",{label:this.label,value:t})}async setEnabled(t){return W("plugin:window|set_enabled",{label:this.label,value:t})}async isEnabled(){return W("plugin:window|is_enabled",{label:this.label})}async setMaximizable(t){return W("plugin:window|set_maximizable",{label:this.label,value:t})}async setMinimizable(t){return W("plugin:window|set_minimizable",{label:this.label,value:t})}async setClosable(t){return W("plugin:window|set_closable",{label:this.label,value:t})}async setTitle(t){return W("plugin:window|set_title",{label:this.label,value:t})}async maximize(){return W("plugin:window|maximize",{label:this.label})}async unmaximize(){return W("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return W("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return W("plugin:window|minimize",{label:this.label})}async unminimize(){return W("plugin:window|unminimize",{label:this.label})}async show(){return W("plugin:window|show",{label:this.label})}async hide(){return W("plugin:window|hide",{label:this.label})}async close(){return W("plugin:window|close",{label:this.label})}async destroy(){return W("plugin:window|destroy",{label:this.label})}async setDecorations(t){return W("plugin:window|set_decorations",{label:this.label,value:t})}async setShadow(t){return W("plugin:window|set_shadow",{label:this.label,value:t})}async setEffects(t){return W("plugin:window|set_effects",{label:this.label,value:t})}async clearEffects(){return W("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(t){return W("plugin:window|set_always_on_top",{label:this.label,value:t})}async setAlwaysOnBottom(t){return W("plugin:window|set_always_on_bottom",{label:this.label,value:t})}async setContentProtected(t){return W("plugin:window|set_content_protected",{label:this.label,value:t})}async setSize(t){return W("plugin:window|set_size",{label:this.label,value:t instanceof oo?t:new oo(t)})}async setMinSize(t){return W("plugin:window|set_min_size",{label:this.label,value:t instanceof oo?t:t?new oo(t):null})}async setMaxSize(t){return W("plugin:window|set_max_size",{label:this.label,value:t instanceof oo?t:t?new oo(t):null})}async setSizeConstraints(t){function n(r){return r?{Logical:r}:null}return W("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:n(t?.minWidth),minHeight:n(t?.minHeight),maxWidth:n(t?.maxWidth),maxHeight:n(t?.maxHeight)}})}async setPosition(t){return W("plugin:window|set_position",{label:this.label,value:t instanceof dl?t:new dl(t)})}async setFullscreen(t){return W("plugin:window|set_fullscreen",{label:this.label,value:t})}async setSimpleFullscreen(t){return W("plugin:window|set_simple_fullscreen",{label:this.label,value:t})}async setFocus(){return W("plugin:window|set_focus",{label:this.label})}async setFocusable(t){return W("plugin:window|set_focusable",{label:this.label,value:t})}async setIcon(t){return W("plugin:window|set_icon",{label:this.label,value:lp(t)})}async setSkipTaskbar(t){return W("plugin:window|set_skip_taskbar",{label:this.label,value:t})}async setCursorGrab(t){return W("plugin:window|set_cursor_grab",{label:this.label,value:t})}async setCursorVisible(t){return W("plugin:window|set_cursor_visible",{label:this.label,value:t})}async setCursorIcon(t){return W("plugin:window|set_cursor_icon",{label:this.label,value:t})}async setBackgroundColor(t){return W("plugin:window|set_background_color",{color:t})}async setCursorPosition(t){return W("plugin:window|set_cursor_position",{label:this.label,value:t instanceof dl?t:new dl(t)})}async setIgnoreCursorEvents(t){return W("plugin:window|set_ignore_cursor_events",{label:this.label,value:t})}async startDragging(){return W("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(t){return W("plugin:window|start_resize_dragging",{label:this.label,value:t})}async setBadgeCount(t){return W("plugin:window|set_badge_count",{label:this.label,value:t})}async setBadgeLabel(t){return W("plugin:window|set_badge_label",{label:this.label,value:t})}async setOverlayIcon(t){return W("plugin:window|set_overlay_icon",{label:this.label,value:t?lp(t):void 0})}async setProgressBar(t){return W("plugin:window|set_progress_bar",{label:this.label,value:t})}async setVisibleOnAllWorkspaces(t){return W("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:t})}async setTitleBarStyle(t){return W("plugin:window|set_title_bar_style",{label:this.label,value:t})}async setTheme(t){return W("plugin:window|set_theme",{label:this.label,value:t})}async onResized(t){return this.listen(Un.WINDOW_RESIZED,n=>{n.payload=new bl(n.payload),t(n)})}async onMoved(t){return this.listen(Un.WINDOW_MOVED,n=>{n.payload=new ni(n.payload),t(n)})}async onCloseRequested(t){return this.listen(Un.WINDOW_CLOSE_REQUESTED,async n=>{const r=new oF(n);await t(r),r.isPreventDefault()||await this.destroy()})}async onDragDropEvent(t){const n=await this.listen(Un.DRAG_ENTER,o=>{t({...o,payload:{type:"enter",paths:o.payload.paths,position:new ni(o.payload.position)}})}),r=await this.listen(Un.DRAG_OVER,o=>{t({...o,payload:{type:"over",position:new ni(o.payload.position)}})}),i=await this.listen(Un.DRAG_DROP,o=>{t({...o,payload:{type:"drop",paths:o.payload.paths,position:new ni(o.payload.position)}})}),a=await this.listen(Un.DRAG_LEAVE,o=>{t({...o,payload:{type:"leave"}})});return()=>{n(),i(),r(),a()}}async onFocusChanged(t){const n=await this.listen(Un.WINDOW_FOCUS,i=>{t({...i,payload:!0})}),r=await this.listen(Un.WINDOW_BLUR,i=>{t({...i,payload:!1})});return()=>{n(),r()}}async onScaleChanged(t){return this.listen(Un.WINDOW_SCALE_FACTOR_CHANGED,t)}async onThemeChanged(t){return this.listen(Un.WINDOW_THEME_CHANGED,t)}}var Uk;(function(e){e.Disabled="disabled",e.Throttle="throttle",e.Suspend="suspend"})(Uk||(Uk={}));var Vk;(function(e){e.Default="default",e.FluentOverlay="fluentOverlay"})(Vk||(Vk={}));var qk;(function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"})(qk||(qk={}));var Kk;(function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"})(Kk||(Kk={}));function M2(){return new t0(e0(),window.__TAURI_INTERNALS__.metadata.currentWebview.label,{skip:!0})}async function Gk(){return W("plugin:webview|get_all_webviews").then(e=>e.map(t=>new t0(new Dh(t.windowLabel,{skip:!0}),t.label,{skip:!0})))}const sg=["tauri://created","tauri://error"];class t0{constructor(t,n,r){this.window=t,this.label=n,this.listeners=Object.create(null),r?.skip||W("plugin:webview|create_webview",{windowLabel:t.label,options:{...r,label:n}}).then(async()=>this.emit("tauri://created")).catch(async i=>this.emit("tauri://error",i))}static async getByLabel(t){var n;return(n=(await Gk()).find(r=>r.label===t))!==null&&n!==void 0?n:null}static getCurrent(){return M2()}static async getAll(){return Gk()}async listen(t,n){return this._handleTauriEvent(t,n)?()=>{const r=this.listeners[t];r.splice(r.indexOf(n),1)}:Le(t,n,{target:{kind:"Webview",label:this.label}})}async once(t,n){return this._handleTauriEvent(t,n)?()=>{const r=this.listeners[t];r.splice(r.indexOf(n),1)}:Jb(t,n,{target:{kind:"Webview",label:this.label}})}async emit(t,n){if(sg.includes(t)){for(const r of this.listeners[t]||[])r({event:t,id:-1,payload:n});return}return Oa(t,n)}async emitTo(t,n,r){if(sg.includes(n)){for(const i of this.listeners[n]||[])i({event:n,id:-1,payload:r});return}return It(t,n,r)}_handleTauriEvent(t,n){return sg.includes(t)?(t in this.listeners?this.listeners[t].push(n):this.listeners[t]=[n],!0):!1}async position(){return W("plugin:webview|webview_position",{label:this.label}).then(t=>new ni(t))}async size(){return W("plugin:webview|webview_size",{label:this.label}).then(t=>new bl(t))}async close(){return W("plugin:webview|webview_close",{label:this.label})}async setSize(t){return W("plugin:webview|set_webview_size",{label:this.label,value:t instanceof oo?t:new oo(t)})}async setPosition(t){return W("plugin:webview|set_webview_position",{label:this.label,value:t instanceof dl?t:new dl(t)})}async setFocus(){return W("plugin:webview|set_webview_focus",{label:this.label})}async setAutoResize(t){return W("plugin:webview|set_webview_auto_resize",{label:this.label,value:t})}async hide(){return W("plugin:webview|webview_hide",{label:this.label})}async show(){return W("plugin:webview|webview_show",{label:this.label})}async setZoom(t){return W("plugin:webview|set_webview_zoom",{label:this.label,value:t})}async reparent(t){return W("plugin:webview|reparent",{label:this.label,window:typeof t=="string"?t:t.label})}async clearAllBrowsingData(){return W("plugin:webview|clear_all_browsing_data")}async setBackgroundColor(t){return W("plugin:webview|set_webview_background_color",{color:t})}async onDragDropEvent(t){const n=await this.listen(Un.DRAG_ENTER,o=>{t({...o,payload:{type:"enter",paths:o.payload.paths,position:new ni(o.payload.position)}})}),r=await this.listen(Un.DRAG_OVER,o=>{t({...o,payload:{type:"over",position:new ni(o.payload.position)}})}),i=await this.listen(Un.DRAG_DROP,o=>{t({...o,payload:{type:"drop",paths:o.payload.paths,position:new ni(o.payload.position)}})}),a=await this.listen(Un.DRAG_LEAVE,o=>{t({...o,payload:{type:"leave"}})});return()=>{n(),i(),r(),a()}}}function fi(){const e=M2();return new Zu(e.label,{skip:!0})}async function Yk(){return W("plugin:window|get_all_windows").then(e=>e.map(t=>new Zu(t,{skip:!0})))}class Zu{constructor(t,n={}){var r;this.label=t,this.listeners=Object.create(null),n?.skip||W("plugin:webview|create_webview_window",{options:{...n,parent:typeof n.parent=="string"?n.parent:(r=n.parent)===null||r===void 0?void 0:r.label,label:t}}).then(async()=>this.emit("tauri://created")).catch(async i=>this.emit("tauri://error",i))}static async getByLabel(t){var n;const r=(n=(await Yk()).find(i=>i.label===t))!==null&&n!==void 0?n:null;return r?new Zu(r.label,{skip:!0}):null}static getCurrent(){return fi()}static async getAll(){return Yk()}async listen(t,n){return this._handleTauriEvent(t,n)?()=>{const r=this.listeners[t];r.splice(r.indexOf(n),1)}:Le(t,n,{target:{kind:"WebviewWindow",label:this.label}})}async once(t,n){return this._handleTauriEvent(t,n)?()=>{const r=this.listeners[t];r.splice(r.indexOf(n),1)}:Jb(t,n,{target:{kind:"WebviewWindow",label:this.label}})}async setBackgroundColor(t){return W("plugin:window|set_background_color",{color:t}).then(()=>W("plugin:webview|set_webview_background_color",{color:t}))}}sF(Zu,[Dh,t0]);function sF(e,t){(Array.isArray(t)?t:[t]).forEach(n=>{Object.getOwnPropertyNames(n.prototype).forEach(r=>{var i;typeof e.prototype=="object"&&e.prototype&&r in e.prototype||Object.defineProperty(e.prototype,r,(i=Object.getOwnPropertyDescriptor(n.prototype,r))!==null&&i!==void 0?i:Object.create(null))})})}function lF(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const cF=e=>{switch(e){case"success":return fF;case"info":return hF;case"warning":return pF;case"error":return mF;default:return null}},uF=Array(12).fill(0),dF=({visible:e,className:t})=>_e.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},_e.createElement("div",{className:"sonner-spinner"},uF.map((n,r)=>_e.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),fF=_e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),pF=_e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},_e.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),hF=_e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_e.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),mF=_e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},_e.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),gF=_e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},_e.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),_e.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),yF=()=>{const[e,t]=_e.useState(document.hidden);return _e.useEffect(()=>{const n=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e};let Gv=1;class vF{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;const{message:r,...i}=t,a=typeof t?.id=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Gv++,o=this.toasts.find(l=>l.id===a),s=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(a)&&this.dismissedToasts.delete(a),o?this.toasts=this.toasts.map(l=>l.id===a?(this.publish({...l,...t,id:a,title:r}),{...l,...t,id:a,dismissible:s,title:r}):l):this.addToast({title:r,...i,dismissible:s,id:a}),a},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:t,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(r=>r({id:n.id,dismiss:!0}))}),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let r;n.loading!==void 0&&(r=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const i=Promise.resolve(t instanceof Function?t():t);let a=r!==void 0,o;const s=i.then(async c=>{if(o=["resolve",c],_e.isValidElement(c))a=!1,this.create({id:r,type:"default",message:c});else if(bF(c)&&!c.ok){a=!1;const d=typeof n.error=="function"?await n.error(`HTTP error! status: ${c.status}`):n.error,p=typeof n.description=="function"?await n.description(`HTTP error! status: ${c.status}`):n.description,g=typeof d=="object"&&!_e.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:p,...g})}else if(c instanceof Error){a=!1;const d=typeof n.error=="function"?await n.error(c):n.error,p=typeof n.description=="function"?await n.description(c):n.description,g=typeof d=="object"&&!_e.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:p,...g})}else if(n.success!==void 0){a=!1;const d=typeof n.success=="function"?await n.success(c):n.success,p=typeof n.description=="function"?await n.description(c):n.description,g=typeof d=="object"&&!_e.isValidElement(d)?d:{message:d};this.create({id:r,type:"success",description:p,...g})}}).catch(async c=>{if(o=["reject",c],n.error!==void 0){a=!1;const u=typeof n.error=="function"?await n.error(c):n.error,d=typeof n.description=="function"?await n.description(c):n.description,h=typeof u=="object"&&!_e.isValidElement(u)?u:{message:u};this.create({id:r,type:"error",description:d,...h})}}).finally(()=>{a&&(this.dismiss(r),r=void 0),n.finally==null||n.finally.call(n)}),l=()=>new Promise((c,u)=>s.then(()=>o[0]==="reject"?u(o[1]):c(o[1])).catch(u));return typeof r!="string"&&typeof r!="number"?{unwrap:l}:Object.assign(r,{unwrap:l})},this.custom=(t,n)=>{const r=n?.id||Gv++;return this.create({jsx:t(r),id:r,...n}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const br=new vF,xF=(e,t)=>{const n=t?.id||Gv++;return br.addToast({title:e,...t,id:n}),n},bF=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",wF=xF,kF=()=>br.toasts,_F=()=>br.getActiveToasts(),me=Object.assign(wF,{success:br.success,info:br.info,warning:br.warning,error:br.error,custom:br.custom,message:br.message,promise:br.promise,dismiss:br.dismiss,loading:br.loading},{getHistory:kF,getToasts:_F});lF("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Rd(e){return e.label!==void 0}const SF=3,EF="24px",CF="16px",Xk=4e3,jF=356,NF=14,PF=45,TF=200;function $i(...e){return e.filter(Boolean).join(" ")}function AF(e){const[t,n]=e.split("-"),r=[];return t&&r.push(t),n&&r.push(n),r}const OF=e=>{var t,n,r,i,a,o,s,l,c;const{invert:u,toast:d,unstyled:p,interacting:h,setHeights:g,visibleToasts:y,heights:x,index:v,toasts:k,expanded:b,removeToast:_,defaultRichColors:S,closeButton:w,style:E,cancelButtonStyle:C,actionButtonStyle:j,className:T="",descriptionClassName:R="",duration:A,position:D,gap:M,expandByDefault:O,classNames:I,icons:$,closeButtonAriaLabel:V="Close toast"}=e,[z,P]=_e.useState(null),[G,Q]=_e.useState(null),[N,F]=_e.useState(!1),[L,H]=_e.useState(!1),[ne,J]=_e.useState(!1),[Y,ie]=_e.useState(!1),[he,q]=_e.useState(!1),[oe,de]=_e.useState(0),[Ae,ye]=_e.useState(0),we=_e.useRef(d.duration||A||Xk),Pe=_e.useRef(null),ve=_e.useRef(null),De=v===0,ue=v+1<=y,ge=d.type,B=d.dismissible!==!1,le=d.className||"",Ce=d.descriptionClassName||"",X=_e.useMemo(()=>x.findIndex(Ke=>Ke.toastId===d.id)||0,[x,d.id]),ce=_e.useMemo(()=>{var Ke;return(Ke=d.closeButton)!=null?Ke:w},[d.closeButton,w]),Ee=_e.useMemo(()=>d.duration||A||Xk,[d.duration,A]),Se=_e.useRef(0),ae=_e.useRef(0),ke=_e.useRef(0),Me=_e.useRef(null),[nt,wt]=D.split("-"),_n=_e.useMemo(()=>x.reduce((Ke,Tt,Bt)=>Bt>=X?Ke:Ke+Tt.height,0),[x,X]),Ot=yF(),vn=d.invert||u,tt=ge==="loading";ae.current=_e.useMemo(()=>X*M+_n,[X,_n]),_e.useEffect(()=>{we.current=Ee},[Ee]),_e.useEffect(()=>{F(!0)},[]),_e.useEffect(()=>{const Ke=ve.current;if(Ke){const Tt=Ke.getBoundingClientRect().height;return ye(Tt),g(Bt=>[{toastId:d.id,height:Tt,position:d.position},...Bt]),()=>g(Bt=>Bt.filter(Zt=>Zt.toastId!==d.id))}},[g,d.id]),_e.useLayoutEffect(()=>{if(!N)return;const Ke=ve.current,Tt=Ke.style.height;Ke.style.height="auto";const Bt=Ke.getBoundingClientRect().height;Ke.style.height=Tt,ye(Bt),g(Zt=>Zt.find(Ht=>Ht.toastId===d.id)?Zt.map(Ht=>Ht.toastId===d.id?{...Ht,height:Bt}:Ht):[{toastId:d.id,height:Bt,position:d.position},...Zt])},[N,d.title,d.description,g,d.id,d.jsx,d.action,d.cancel]);const _t=_e.useCallback(()=>{H(!0),de(ae.current),g(Ke=>Ke.filter(Tt=>Tt.toastId!==d.id)),setTimeout(()=>{_(d)},TF)},[d,_,g,ae]);_e.useEffect(()=>{if(d.promise&&ge==="loading"||d.duration===1/0||d.type==="loading")return;let Ke;return b||h||Ot?(()=>{if(ke.current<Se.current){const Zt=new Date().getTime()-Se.current;we.current=we.current-Zt}ke.current=new Date().getTime()})():we.current!==1/0&&(Se.current=new Date().getTime(),Ke=setTimeout(()=>{d.onAutoClose==null||d.onAutoClose.call(d,d),_t()},we.current)),()=>clearTimeout(Ke)},[b,h,d,ge,Ot,_t]),_e.useEffect(()=>{d.delete&&(_t(),d.onDismiss==null||d.onDismiss.call(d,d))},[_t,d.delete]);function Sn(){var Ke;if($?.loading){var Tt;return _e.createElement("div",{className:$i(I?.loader,d==null||(Tt=d.classNames)==null?void 0:Tt.loader,"sonner-loader"),"data-visible":ge==="loading"},$.loading)}return _e.createElement(dF,{className:$i(I?.loader,d==null||(Ke=d.classNames)==null?void 0:Ke.loader),visible:ge==="loading"})}const En=d.icon||$?.[ge]||cF(ge);var Qn,Jn;return _e.createElement("li",{tabIndex:0,ref:ve,className:$i(T,le,I?.toast,d==null||(t=d.classNames)==null?void 0:t.toast,I?.default,I?.[ge],d==null||(n=d.classNames)==null?void 0:n[ge]),"data-sonner-toast":"","data-rich-colors":(Qn=d.richColors)!=null?Qn:S,"data-styled":!(d.jsx||d.unstyled||p),"data-mounted":N,"data-promise":!!d.promise,"data-swiped":he,"data-removed":L,"data-visible":ue,"data-y-position":nt,"data-x-position":wt,"data-index":v,"data-front":De,"data-swiping":ne,"data-dismissible":B,"data-type":ge,"data-invert":vn,"data-swipe-out":Y,"data-swipe-direction":G,"data-expanded":!!(b||O&&N),"data-testid":d.testId,style:{"--index":v,"--toasts-before":v,"--z-index":k.length-v,"--offset":`${L?oe:ae.current}px`,"--initial-height":O?"auto":`${Ae}px`,...E,...d.style},onDragEnd:()=>{J(!1),P(null),Me.current=null},onPointerDown:Ke=>{Ke.button!==2&&(tt||!B||(Pe.current=new Date,de(ae.current),Ke.target.setPointerCapture(Ke.pointerId),Ke.target.tagName!=="BUTTON"&&(J(!0),Me.current={x:Ke.clientX,y:Ke.clientY})))},onPointerUp:()=>{var Ke,Tt,Bt;if(Y||!B)return;Me.current=null;const Zt=Number(((Ke=ve.current)==null?void 0:Ke.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Rr=Number(((Tt=ve.current)==null?void 0:Tt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ht=new Date().getTime()-((Bt=Pe.current)==null?void 0:Bt.getTime()),er=z==="x"?Zt:Rr,Ii=Math.abs(er)/Ht;if(Math.abs(er)>=PF||Ii>.11){de(ae.current),d.onDismiss==null||d.onDismiss.call(d,d),Q(z==="x"?Zt>0?"right":"left":Rr>0?"down":"up"),_t(),ie(!0);return}else{var U,K;(U=ve.current)==null||U.style.setProperty("--swipe-amount-x","0px"),(K=ve.current)==null||K.style.setProperty("--swipe-amount-y","0px")}q(!1),J(!1),P(null)},onPointerMove:Ke=>{var Tt,Bt,Zt;if(!Me.current||!B||((Tt=window.getSelection())==null?void 0:Tt.toString().length)>0)return;const Ht=Ke.clientY-Me.current.y,er=Ke.clientX-Me.current.x;var Ii;const U=(Ii=e.swipeDirections)!=null?Ii:AF(D);!z&&(Math.abs(er)>1||Math.abs(Ht)>1)&&P(Math.abs(er)>Math.abs(Ht)?"x":"y");let K={x:0,y:0};const re=fe=>1/(1.5+Math.abs(fe)/20);if(z==="y"){if(U.includes("top")||U.includes("bottom"))if(U.includes("top")&&Ht<0||U.includes("bottom")&&Ht>0)K.y=Ht;else{const fe=Ht*re(Ht);K.y=Math.abs(fe)<Math.abs(Ht)?fe:Ht}}else if(z==="x"&&(U.includes("left")||U.includes("right")))if(U.includes("left")&&er<0||U.includes("right")&&er>0)K.x=er;else{const fe=er*re(er);K.x=Math.abs(fe)<Math.abs(er)?fe:er}(Math.abs(K.x)>0||Math.abs(K.y)>0)&&q(!0),(Bt=ve.current)==null||Bt.style.setProperty("--swipe-amount-x",`${K.x}px`),(Zt=ve.current)==null||Zt.style.setProperty("--swipe-amount-y",`${K.y}px`)}},ce&&!d.jsx&&ge!=="loading"?_e.createElement("button",{"aria-label":V,"data-disabled":tt,"data-close-button":!0,onClick:tt||!B?()=>{}:()=>{_t(),d.onDismiss==null||d.onDismiss.call(d,d)},className:$i(I?.closeButton,d==null||(r=d.classNames)==null?void 0:r.closeButton)},(Jn=$?.close)!=null?Jn:gF):null,(ge||d.icon||d.promise)&&d.icon!==null&&($?.[ge]!==null||d.icon)?_e.createElement("div",{"data-icon":"",className:$i(I?.icon,d==null||(i=d.classNames)==null?void 0:i.icon)},d.promise||d.type==="loading"&&!d.icon?d.icon||Sn():null,d.type!=="loading"?En:null):null,_e.createElement("div",{"data-content":"",className:$i(I?.content,d==null||(a=d.classNames)==null?void 0:a.content)},_e.createElement("div",{"data-title":"",className:$i(I?.title,d==null||(o=d.classNames)==null?void 0:o.title)},d.jsx?d.jsx:typeof d.title=="function"?d.title():d.title),d.description?_e.createElement("div",{"data-description":"",className:$i(R,Ce,I?.description,d==null||(s=d.classNames)==null?void 0:s.description)},typeof d.description=="function"?d.description():d.description):null),_e.isValidElement(d.cancel)?d.cancel:d.cancel&&Rd(d.cancel)?_e.createElement("button",{"data-button":!0,"data-cancel":!0,style:d.cancelButtonStyle||C,onClick:Ke=>{Rd(d.cancel)&&B&&(d.cancel.onClick==null||d.cancel.onClick.call(d.cancel,Ke),_t())},className:$i(I?.cancelButton,d==null||(l=d.classNames)==null?void 0:l.cancelButton)},d.cancel.label):null,_e.isValidElement(d.action)?d.action:d.action&&Rd(d.action)?_e.createElement("button",{"data-button":!0,"data-action":!0,style:d.actionButtonStyle||j,onClick:Ke=>{Rd(d.action)&&(d.action.onClick==null||d.action.onClick.call(d.action,Ke),!Ke.defaultPrevented&&_t())},className:$i(I?.actionButton,d==null||(c=d.classNames)==null?void 0:c.actionButton)},d.action.label):null)};function Zk(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function MF(e,t){const n={};return[e,t].forEach((r,i)=>{const a=i===1,o=a?"--mobile-offset":"--offset",s=a?CF:EF;function l(c){["top","right","bottom","left"].forEach(u=>{n[`${o}-${u}`]=typeof c=="number"?`${c}px`:c})}typeof r=="number"||typeof r=="string"?l(r):typeof r=="object"?["top","right","bottom","left"].forEach(c=>{r[c]===void 0?n[`${o}-${c}`]=s:n[`${o}-${c}`]=typeof r[c]=="number"?`${r[c]}px`:r[c]}):l(s)}),n}const RF=_e.forwardRef(function(t,n){const{id:r,invert:i,position:a="bottom-right",hotkey:o=["altKey","KeyT"],expand:s,closeButton:l,className:c,offset:u,mobileOffset:d,theme:p="light",richColors:h,duration:g,style:y,visibleToasts:x=SF,toastOptions:v,dir:k=Zk(),gap:b=NF,icons:_,containerAriaLabel:S="Notifications"}=t,[w,E]=_e.useState([]),C=_e.useMemo(()=>r?w.filter(N=>N.toasterId===r):w.filter(N=>!N.toasterId),[w,r]),j=_e.useMemo(()=>Array.from(new Set([a].concat(C.filter(N=>N.position).map(N=>N.position)))),[C,a]),[T,R]=_e.useState([]),[A,D]=_e.useState(!1),[M,O]=_e.useState(!1),[I,$]=_e.useState(p!=="system"?p:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),V=_e.useRef(null),z=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),P=_e.useRef(null),G=_e.useRef(!1),Q=_e.useCallback(N=>{E(F=>{var L;return(L=F.find(H=>H.id===N.id))!=null&&L.delete||br.dismiss(N.id),F.filter(({id:H})=>H!==N.id)})},[]);return _e.useEffect(()=>br.subscribe(N=>{if(N.dismiss){requestAnimationFrame(()=>{E(F=>F.map(L=>L.id===N.id?{...L,delete:!0}:L))});return}setTimeout(()=>{iF.flushSync(()=>{E(F=>{const L=F.findIndex(H=>H.id===N.id);return L!==-1?[...F.slice(0,L),{...F[L],...N},...F.slice(L+1)]:[N,...F]})})})}),[w]),_e.useEffect(()=>{if(p!=="system"){$(p);return}if(p==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?$("dark"):$("light")),typeof window>"u")return;const N=window.matchMedia("(prefers-color-scheme: dark)");try{N.addEventListener("change",({matches:F})=>{$(F?"dark":"light")})}catch{N.addListener(({matches:L})=>{try{$(L?"dark":"light")}catch(H){console.error(H)}})}},[p]),_e.useEffect(()=>{w.length<=1&&D(!1)},[w]),_e.useEffect(()=>{const N=F=>{var L;if(o.every(J=>F[J]||F.code===J)){var ne;D(!0),(ne=V.current)==null||ne.focus()}F.code==="Escape"&&(document.activeElement===V.current||(L=V.current)!=null&&L.contains(document.activeElement))&&D(!1)};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[o]),_e.useEffect(()=>{if(V.current)return()=>{P.current&&(P.current.focus({preventScroll:!0}),P.current=null,G.current=!1)}},[V.current]),_e.createElement("section",{ref:n,"aria-label":`${S} ${z}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},j.map((N,F)=>{var L;const[H,ne]=N.split("-");return C.length?_e.createElement("ol",{key:N,dir:k==="auto"?Zk():k,tabIndex:-1,ref:V,className:c,"data-sonner-toaster":!0,"data-sonner-theme":I,"data-y-position":H,"data-x-position":ne,style:{"--front-toast-height":`${((L=T[0])==null?void 0:L.height)||0}px`,"--width":`${jF}px`,"--gap":`${b}px`,...y,...MF(u,d)},onBlur:J=>{G.current&&!J.currentTarget.contains(J.relatedTarget)&&(G.current=!1,P.current&&(P.current.focus({preventScroll:!0}),P.current=null))},onFocus:J=>{J.target instanceof HTMLElement&&J.target.dataset.dismissible==="false"||G.current||(G.current=!0,P.current=J.relatedTarget)},onMouseEnter:()=>D(!0),onMouseMove:()=>D(!0),onMouseLeave:()=>{M||D(!1)},onDragEnd:()=>D(!1),onPointerDown:J=>{J.target instanceof HTMLElement&&J.target.dataset.dismissible==="false"||O(!0)},onPointerUp:()=>O(!1)},C.filter(J=>!J.position&&F===0||J.position===N).map((J,Y)=>{var ie,he;return _e.createElement(OF,{key:J.id,icons:_,index:Y,toast:J,defaultRichColors:h,duration:(ie=v?.duration)!=null?ie:g,className:v?.className,descriptionClassName:v?.descriptionClassName,invert:i,visibleToasts:x,closeButton:(he=v?.closeButton)!=null?he:l,interacting:M,position:N,style:v?.style,unstyled:v?.unstyled,classNames:v?.classNames,cancelButtonStyle:v?.cancelButtonStyle,actionButtonStyle:v?.actionButtonStyle,closeButtonAriaLabel:v?.closeButtonAriaLabel,removeToast:Q,toasts:C.filter(q=>q.position==J.position),heights:T.filter(q=>q.position==J.position),setHeights:R,expandByDefault:s,gap:b,expanded:A,swipeDirections:t.swipeDirections})})):null}))});var Gi;(function(e){e[e.Trace=1]="Trace",e[e.Debug=2]="Debug",e[e.Info=3]="Info",e[e.Warn=4]="Warn",e[e.Error=5]="Error"})(Gi||(Gi={}));function IF(e){if(e)if(e.startsWith("Error")){const n=e.split(`
@@ -731,7 +731,7 @@ Polish ≠ expand. The output length must be roughly comparable to the input len
731
731
  3. Did I avoid inventing anything not in the original?
732
732
  4. When the input is a request / imperative, did I polish that sentence itself rather than expand it into the content it asks for?
733
733
  5. Is the output length roughly comparable to the input, without ballooning into a long document?
734
- </self_check>`,fA={"zh-CN":nW,"zh-TW":rW,en:iW};function pA(e,t){return e??fA[t]}const as={"zh-CN":[{id:"scn_email",name:"邮件",instruction:"目标场景:商务邮件。语域偏正式、礼貌;按问候 / 正文 / 结尾分段;称谓与签收语得体;句式简洁清晰,避免口语填充词。"},{id:"scn_wechat",name:"微信",instruction:"目标场景:微信 / 即时通讯。语域偏轻松、口语化;句子短,必要时分多句发;保留必要的语气词,但去掉重复与口头禅。"}],"zh-TW":[{id:"scn_email",name:"郵件",instruction:"目標場景:商務郵件。語域偏正式、禮貌;依問候 / 正文 / 結尾分段;稱謂與簽核語得體;句式簡潔清晰,避免口語填充詞。"},{id:"scn_wechat",name:"LINE / 即時通訊",instruction:"目標場景:LINE / 即時通訊。語域偏輕鬆、口語化;句子短,必要時拆多句;保留必要的語氣詞,但去掉重複與口頭禪。"}],en:[{id:"scn_email",name:"Email",instruction:"Target scenario: business email. Tone polite and clear. Use greeting / body / sign-off paragraphs. Address and closing should be appropriate; trim filler words."},{id:"scn_chat",name:"Chat",instruction:"Target scenario: instant messaging. Tone casual and concise. Short sentences, may split into multiple messages. Keep necessary tone markers but cut repeats and fillers."}]},aW="settings.json",Ff=18,tx={interfaceLang:"system",inputDevice:"",cueSound:!0,restoreClipboard:!0,launchStartup:!1,updatePolicy:"AUTO",skippedUpdateVersion:"",closeBehavior:"ASK",onboardingCompleted:!1,asrSegmentMode:"UTTERANCE",historyRetention:"forever",translateTargetLang:"en",translateOutputMode:"bilingual"},fl={enabled:!0,mode:"saas",customProviders:[],activeCustomProviderId:null,customRules:null,customTranslationSystemPrompt:null,customPolishSystemPrompt:null,customMeetingSummaryPrompt:null,customPolishScenarios:null,lastPolishScenarioId:null,includeHistory:!0,recentHistoryCount:10,selectedDomains:[],customDomains:[],customExamples:[],appOverrides:[],stripTrailingPeriod:"auto"},d_=1,f_=50,oW=10;function hA(e){if(typeof e!="number"||!Number.isFinite(e))return oW;const t=Math.floor(e);return t<d_?d_:t>f_?f_:t}const Xc={mode:"saas",customProviders:[],activeCustomProviderId:null,lang:"auto",streamingInject:!0,clipboardCopy:!0},mA=["recordingControls","resultActions","firstResultConfirm","appFirstInject"];function Fc(){return{successCount:0,dismissed:!1}}function $l(){const e={};for(const t of mA)e[t]=Fc();return e}const up={showHints:!0,hints:$l()};function sW(e){if(!e||typeof e!="object")return{...up,hints:$l()};const t=e,n=typeof t.showHints=="boolean"?t.showHints:up.showHints,r=$l();if(t.hints&&typeof t.hints=="object")for(const i of mA){const a=t.hints[i];if(a&&typeof a=="object"){const o=a,s=Array.isArray(o.seenAppIds)?o.seenAppIds.filter(l=>typeof l=="string"):void 0;r[i]={successCount:typeof o.successCount=="number"&&o.successCount>=0?Math.floor(o.successCount):0,dismissed:o.dismissed===!0,...s?{seenAppIds:s}:{}}}}return{showHints:n,hints:r}}let gg=null;function gA(){return gg||(gg=a0.load(aW)),gg}function lW(e){const t={...e},n=t.minimizeTray===!0,r=t.closeAction;delete t.maxRec,delete t.closeAction,delete t.minimizeTray;let i="ASK";return n?i="HIDE":r==="QUIT"&&(i="QUIT"),typeof t.inputDevice=="string"&&t.inputDevice.startsWith("System Default")&&(t.inputDevice=""),{...t,closeBehavior:i}}function cW(e){return{...e,asrSegmentMode:"UTTERANCE"}}function uW(e){const t=e.interfaceLang;let n="system";return t==="简体中文"||t==="zh-CN"?n="zh-CN":t==="繁體中文"||t==="繁体中文"||t==="zh-TW"?n="zh-TW":(t==="English"||t==="en")&&(n="en"),{...e,interfaceLang:n}}function dW(e){const t=e.asrSegmentMode;let n="AI_REFINE";return t==="AUTO"||t==="REALTIME"?n="REALTIME":t==="MANUAL"||t==="UTTERANCE"?n="UTTERANCE":t==="AI_REFINE"&&(n="AI_REFINE"),{...e,asrSegmentMode:n}}function fW(e){return{...e,historyRetention:"forever"}}function pW(e){const t={...e};return delete t.injectMethod,t}function hW(e){const t={...e},n=t.autoUpdate;delete t.autoUpdate,delete t.updateCheckIntervalHours;let r="PROMPT";return n===!1&&(r="DISABLED"),{...t,updatePolicy:r}}function mW(e,t){if(!e||typeof e!="object")return{...fl,enabled:t??fl.enabled};const n=e,r=Array.isArray(n.customProviders)?n.customProviders.filter(x=>!!x&&typeof x=="object"&&typeof x.id=="string").map(x=>({...x,verified:x.verified===!0})):[],i=typeof n.activeCustomProviderId=="string"&&r.some(x=>x.id===n.activeCustomProviderId)?n.activeCustomProviderId:r[0]?.id??null,a=vA(n.customRules),o=t!==void 0?t:typeof n.enabled=="boolean"?n.enabled:fl.enabled,s=typeof n.customTranslationSystemPrompt=="string"?n.customTranslationSystemPrompt:(n.customTranslationSystemPrompt===null,null),l=typeof n.customPolishSystemPrompt=="string"?n.customPolishSystemPrompt:(n.customPolishSystemPrompt===null,null),c=typeof n.customMeetingSummaryPrompt=="string"?n.customMeetingSummaryPrompt:(n.customMeetingSummaryPrompt===null,null);let u;Array.isArray(n.customPolishScenarios)?u=n.customPolishScenarios.filter(x=>!!x&&typeof x=="object"&&typeof x.id=="string"&&typeof x.name=="string"&&typeof x.instruction=="string"):u=null;const d=n.mode==="custom"&&i&&r.some(x=>x.id===i)?"custom":"saas",p=Array.isArray(n.selectedDomains)?n.selectedDomains.filter(x=>typeof x=="string"&&x.length>0).slice(0,3):[],h=x0(n.customExamples),g=xA(n.appOverrides),y=rx(n.customDomains);return{enabled:o,mode:d,customProviders:r,activeCustomProviderId:i,customRules:a,customTranslationSystemPrompt:s,customPolishSystemPrompt:l,customMeetingSummaryPrompt:c,customPolishScenarios:u,lastPolishScenarioId:typeof n.lastPolishScenarioId=="string"&&n.lastPolishScenarioId?n.lastPolishScenarioId:null,includeHistory:typeof n.includeHistory=="boolean"?n.includeHistory:!0,recentHistoryCount:hA(n.recentHistoryCount),selectedDomains:p,customDomains:y,customExamples:h,appOverrides:g,stripTrailingPeriod:n.stripTrailingPeriod==="off"||n.stripTrailingPeriod==="always"||n.stripTrailingPeriod==="auto"?n.stripTrailingPeriod:fl.stripTrailingPeriod}}const nx=20,gW=30,yW=50;function yA(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=gW)break;if(!r||typeof r!="object")continue;const i=r;typeof i.id!="string"||i.id.length===0||typeof i.body!="string"||i.body.length===0||t.has(i.id)||(t.add(i.id),n.push({id:i.id,body:i.body,why:typeof i.why=="string"?i.why:""}))}return n}function vA(e){return e==null||!Array.isArray(e)?null:yA(e)}function x0(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=nx)break;if(!r||typeof r!="object")continue;const i=r;typeof i.id!="string"||i.id.length===0||typeof i.target!="string"||i.target.length===0||typeof i.input!="string"||typeof i.output!="string"||t.has(i.id)||(t.add(i.id),n.push({id:i.id,target:i.target,input:i.input,focus:typeof i.focus=="string"?i.focus:"",output:i.output}))}return n}function rx(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=Hh)break;if(!r||typeof r!="object")continue;const i=r;if(typeof i.id!="string"||!i.id.startsWith(h0)||t.has(i.id))continue;const a=typeof i.name=="string"?i.name.trim():"";if(!a)continue;const o=new Set,s=[];if(Array.isArray(i.keywords))for(const l of i.keywords){if(typeof l!="string")continue;const c=l.trim().slice(0,Df);if(!c)continue;const u=c.toLowerCase();if(!o.has(u)&&(o.add(u),s.push(c),s.length>=If))break}t.add(i.id),n.push({id:i.id,name:a.slice(0,g0),keywords:s})}return n}function xA(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=yW)break;if(!r||typeof r!="object")continue;const i=r;if(typeof i.appId!="string"||i.appId.length===0)continue;const a=i.appId.toLowerCase();t.has(a)||(t.add(a),n.push({appId:i.appId,appName:typeof i.appName=="string"?i.appName:i.appId,enabled:i.enabled===!0,customRules:vA(i.customRules),customExamples:x0(i.customExamples)}))}return n}function vW(e){return e.asrSegmentMode==="AI_REFINE"?{general:{...e,asrSegmentMode:"UTTERANCE"},aiRefineEnabled:!0}:{general:e,aiRefineEnabled:!1}}function xW(e,t){const n={...Xc};if(!e||typeof e!="object")return{...n,lang:t??n.lang};const r=e,i=Array.isArray(r.customProviders)?r.customProviders.filter(u=>!!u&&typeof u=="object"&&typeof u.id=="string"&&(u.vendor==="tencent"||u.vendor==="aliyun")).map(u=>({...u,verified:u.verified===!0})):[],a=typeof r.activeCustomProviderId=="string"&&i.some(u=>u.id===r.activeCustomProviderId)?r.activeCustomProviderId:i[0]?.id??null,o=t??bA(r.lang),s=r.mode==="custom"&&a&&i.some(u=>u.id===a)?"custom":"saas",l=typeof r.streamingInject=="boolean"?r.streamingInject:Xc.streamingInject,c=typeof r.clipboardCopy=="boolean"?r.clipboardCopy:Xc.clipboardCopy;return{mode:s,customProviders:i,activeCustomProviderId:a,lang:o,streamingInject:l,clipboardCopy:c}}function bA(e){if(typeof e!="string")return"auto";switch(e){case"follow_interface":return"auto";case"auto":case"zh":case"en":case"ja":case"ko":case"yue":return e;case"自动检测":return"auto";case"ZH":case"zh-CN":case"zh-TW":return"zh";case"EN":return"en";case"JA":return"ja";case"KO":return"ko";case"YUE":return"yue";default:return"auto"}}function bW(e){const t={...e},n=t.dictationLang;return delete t.dictationLang,delete t.dictationSource,delete t.endpoint,delete t.modelName,delete t.timeout,delete t.audioFormat,{general:t,dictationLang:bA(n)}}async function wW(){const t=await(await gA()).get("root"),n={schemaVersion:Ff,general:{...tx},aiRefine:{...fl},dictation:{...Xc},ui:{...up,hints:$l()}};if(!t||typeof t!="object")return{shape:n,migrated:!0};const r=t,i=(o,s,l)=>{const c={...o};return delete c.updateCheckIntervalHours,{schemaVersion:Ff,general:{...tx,...c},aiRefine:mW(r.aiRefine,s),dictation:xW(r.dictation,l),ui:sW(r.ui)}},a=(o,s)=>{let l=o;return s<=1&&(l=lW(l)),s<=2&&(l=cW(l)),s<=3&&(l=uW(l)),s<=4&&(l=dW(l)),s<=5&&(l=fW(l)),s<=6&&(l=pW(l)),s<=7&&(l=hW(l)),l};if(typeof r.schemaVersion=="number"&&r.schemaVersion>=1&&r.schemaVersion<=12){const o=r.schemaVersion,s=o<=11?a(r.general??{},o):r.general??{};let l,c=s;if(o<=11){const p=vW(s);c=p.general,l=p.aiRefineEnabled}const{general:u,dictationLang:d}=bW(c);return{shape:i(u,l,d),migrated:!0}}return r.schemaVersion===13||r.schemaVersion===14||r.schemaVersion===15||r.schemaVersion===16||r.schemaVersion===17?{shape:i(r.general??{}),migrated:!0}:r.schemaVersion!==Ff?{shape:n,migrated:!0}:{shape:i(r.general??{}),migrated:!1}}async function p_(e){const t=await gA();await t.set("root",e),await t.save()}const Z=mi((e,t)=>{const n=async(r={})=>{const i={schemaVersion:Ff,general:t().general,aiRefine:t().aiRefine,dictation:t().dictation,ui:t().ui,...r};await p_(i)};return{general:{...tx},aiRefine:{...fl},dictation:{...Xc},ui:{...up,hints:$l()},loaded:!1,init:async()=>{const{shape:r,migrated:i}=await wW();e({general:r.general,aiRefine:r.aiRefine,dictation:r.dictation,ui:r.ui,loaded:!0}),console.info(`[settings] init: providers=${r.dictation.customProviders.length} ai_providers=${r.aiRefine.customProviders.length} schemaVersion=${r.schemaVersion} migrated=${i}`),i&&await p_(r),s_(r.general.cueSound)},setGeneral:async(r,i)=>{const a={...t().general,[r]:i};e({general:a}),await n({general:a}),r==="interfaceLang"?V2(a.interfaceLang):r==="cueSound"&&s_(i)},setAiRefineMode:async r=>{const i={...t().aiRefine,mode:r};e({aiRefine:i}),await n({aiRefine:i})},setAiRefineEnabled:async r=>{const i={...t().aiRefine,enabled:r};e({aiRefine:i}),await n({aiRefine:i})},addAiProvider:async r=>{const i=t().aiRefine;if(i.customProviders.some(l=>l.id===r.id))return;const a=[...i.customProviders,{...r,verified:!1}],o=i.activeCustomProviderId??r.id,s={...i,customProviders:a,activeCustomProviderId:o};e({aiRefine:s}),await n({aiRefine:s})},updateAiProvider:async(r,i)=>{const a=t().aiRefine,o="baseUrl"in i||"model"in i,s=a.customProviders.map(c=>c.id===r?{...c,...i,...o?{verified:!1}:{}}:c),l={...a,customProviders:s};e({aiRefine:l}),await n({aiRefine:l})},removeAiProvider:async r=>{const i=t().aiRefine,a=i.customProviders.filter(l=>l.id!==r),o=i.activeCustomProviderId===r?a[0]?.id??null:i.activeCustomProviderId,s={...i,customProviders:a,activeCustomProviderId:o};e({aiRefine:s}),await n({aiRefine:s});try{await k6(r)}catch(l){console.warn("[ai-refine] deleteAiProviderKey failed:",l)}},setActiveAiProvider:async r=>{const i=t().aiRefine;if(!(r===null||i.customProviders.some(s=>s.id===r)))return;const o={...i,activeCustomProviderId:r};e({aiRefine:o}),await n({aiRefine:o})},setAiProviderVerified:async(r,i)=>{const a=t().aiRefine,o=a.customProviders.map(l=>l.id===r?{...l,verified:i}:l),s={...a,customProviders:o};e({aiRefine:s}),await n({aiRefine:s})},setCustomRules:async r=>{const a={...t().aiRefine,customRules:r===null?null:yA(r)};e({aiRefine:a}),await n({aiRefine:a})},setCustomExamples:async r=>{const a={...t().aiRefine,customExamples:x0(r)};e({aiRefine:a}),await n({aiRefine:a})},setAppOverrides:async r=>{const a={...t().aiRefine,appOverrides:xA(r)};e({aiRefine:a}),await n({aiRefine:a})},setAiTranslationSystemPrompt:async r=>{const a={...t().aiRefine,customTranslationSystemPrompt:r};e({aiRefine:a}),await n({aiRefine:a})},setAiPolishSystemPrompt:async r=>{const a={...t().aiRefine,customPolishSystemPrompt:r};e({aiRefine:a}),await n({aiRefine:a})},setAiMeetingSummaryPrompt:async r=>{const a={...t().aiRefine,customMeetingSummaryPrompt:r};e({aiRefine:a}),await n({aiRefine:a})},setPolishScenarios:async r=>{const a={...t().aiRefine,customPolishScenarios:r};e({aiRefine:a}),await n({aiRefine:a})},setLastPolishScenarioId:async r=>{const i=t().aiRefine;if(i.lastPolishScenarioId===r)return;const a={...i,lastPolishScenarioId:r};e({aiRefine:a}),await n({aiRefine:a})},setAiIncludeHistory:async r=>{const a={...t().aiRefine,includeHistory:r};e({aiRefine:a}),await n({aiRefine:a})},setAiRecentHistoryCount:async r=>{const a={...t().aiRefine,recentHistoryCount:hA(r)};e({aiRefine:a}),await n({aiRefine:a})},setAiStripTrailingPeriod:async r=>{const a={...t().aiRefine,stripTrailingPeriod:r};e({aiRefine:a}),await n({aiRefine:a})},setSelectedDomains:async r=>{const i=t().aiRefine,a=new Set,o=[];for(const l of r)if(!(typeof l!="string"||!l||a.has(l))&&(a.add(l),o.push(l),o.length>=3))break;const s={...i,selectedDomains:o};e({aiRefine:s}),await n({aiRefine:s})},addCustomDomain:async(r,i)=>{const a=t().aiRefine;if(a.customDomains.length>=Hh)return null;const o=r.trim().slice(0,g0);if(!o)return null;const l={id:`${h0}${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,name:o,keywords:i},[c]=rx([l]);if(!c)return null;const u={...a,customDomains:[...a.customDomains,c]};return e({aiRefine:u}),await n({aiRefine:u}),c},updateCustomDomain:async(r,i)=>{const a=t().aiRefine,o=a.customDomains.findIndex(p=>p.id===r);if(o<0)return;const s=a.customDomains[o],l={id:s.id,name:i.name!==void 0?i.name:s.name,keywords:i.keywords!==void 0?i.keywords:s.keywords},[c]=rx([l]);if(!c)return;const u=[...a.customDomains];u[o]=c;const d={...a,customDomains:u};e({aiRefine:d}),await n({aiRefine:d})},removeCustomDomain:async r=>{const i=t().aiRefine;if(!i.customDomains.some(l=>l.id===r))return;const a=i.customDomains.filter(l=>l.id!==r),o=i.selectedDomains.filter(l=>l!==r),s={...i,customDomains:a,selectedDomains:o};e({aiRefine:s}),await n({aiRefine:s})},setDictationMode:async r=>{const i={...t().dictation,mode:r};e({dictation:i}),await n({dictation:i})},setDictationLang:async r=>{const i={...t().dictation,lang:r};e({dictation:i}),await n({dictation:i})},addDictationProvider:async r=>{const i=t().dictation;if(i.customProviders.some(l=>l.id===r.id))return;const a=[...i.customProviders,{...r,verified:!1}],o=i.activeCustomProviderId??r.id,s={...i,customProviders:a,activeCustomProviderId:o};e({dictation:s}),await n({dictation:s})},updateDictationProvider:async(r,i)=>{const a=t().dictation,o="vendor"in i||"tencentAppId"in i||"tencentRegion"in i||"tencentCosBucket"in i,s=a.customProviders.map(c=>c.id===r?{...c,...i,...o?{verified:!1}:{}}:c),l={...a,customProviders:s};e({dictation:l}),await n({dictation:l})},removeDictationProvider:async r=>{const i=t().dictation,a=i.customProviders.filter(l=>l.id!==r),o=i.activeCustomProviderId===r?a[0]?.id??null:i.activeCustomProviderId,s={...i,customProviders:a,activeCustomProviderId:o};e({dictation:s}),await n({dictation:s});try{await E6(r)}catch(l){console.warn("[dictation] deleteDictationProviderKey failed:",l)}},setActiveDictationProvider:async r=>{const i=t().dictation;if(!(r===null||i.customProviders.some(s=>s.id===r)))return;const o={...i,activeCustomProviderId:r};e({dictation:o}),await n({dictation:o})},setDictationProviderVerified:async(r,i)=>{const a=t().dictation,o=a.customProviders.map(l=>l.id===r?{...l,verified:i}:l),s={...a,customProviders:o};e({dictation:s}),await n({dictation:s})},setDictationStreamingInject:async r=>{const i={...t().dictation,streamingInject:r};e({dictation:i}),await n({dictation:i})},setDictationClipboardCopy:async r=>{const i={...t().dictation,clipboardCopy:r};e({dictation:i}),await n({dictation:i})},setShowHints:async r=>{const i={...t().ui,showHints:r};e({ui:i}),await n({ui:i})},markHintSuccess:async r=>{const i=t().ui,a=i.hints[r]??Fc(),o={...a,successCount:a.successCount+1,dismissed:a.dismissed},s={...i,hints:{...i.hints,[r]:o}};e({ui:s}),await n({ui:s})},markHintSeenForApp:async(r,i)=>{if(!i)return;const a=t().ui,o=a.hints[r]??Fc(),s=o.seenAppIds??[];if(s.includes(i))return;const l={...o,seenAppIds:[...s,i]},c={...a,hints:{...a.hints,[r]:l}};e({ui:c}),await n({ui:c})},dismissHint:async r=>{const i=t().ui,a=i.hints[r]??Fc();if(a.dismissed)return;const o={...i,hints:{...i.hints,[r]:{...a,dismissed:!0}}};e({ui:o}),await n({ui:o})},resetHint:async r=>{const i=t().ui,a={...i,hints:{...i.hints,[r]:Fc()}};e({ui:a}),await n({ui:a})},resetAllHints:async()=>{const i={...t().ui,hints:$l()};e({ui:i}),await n({ui:i})}}});function wA(e){if(e.mode!=="custom"||!e.activeCustomProviderId)return!1;const t=e.customProviders.find(n=>n.id===e.activeCustomProviderId);return!!t&&t.verified!==!0}function kA(e){if(e.mode!=="custom"||!e.activeCustomProviderId)return!1;const t=e.customProviders.find(n=>n.id===e.activeCustomProviderId);return!!t&&t.verified!==!0}const ys={recordingControls:{id:"recordingControls",category:"action",threshold:3,autoHideMs:5e3,showDelayMs:500,i18nKeyPrefix:"recordingControls",devDescription:"录音中:松开结束 / ESC 取消"},resultActions:{id:"resultActions",category:"action",threshold:3,autoHideMs:6e3,showDelayMs:300,i18nKeyPrefix:"resultActions",devDescription:"结果态:复制 / 编辑 / 润色 / 翻译"},firstResultConfirm:{id:"firstResultConfirm",category:"confirm",threshold:1,autoHideMs:12e3,showDelayMs:0,i18nKeyPrefix:"firstResultConfirm",devDescription:"全局首次结果:✓ 已输入 · 修正"},appFirstInject:{id:"appFirstInject",category:"action",threshold:1,autoHideMs:2e3,showDelayMs:0,i18nKeyPrefix:"appFirstInject",devDescription:"每个目标 app 首次成功注入:2s 轻提示"}};function xu(e,t){if(!e||!e.showHints)return!1;const n=ys[t];if(!n)return!1;const r=e.hints[t]??{successCount:0,dismissed:!1};return!(r.dismissed||r.successCount>=n.threshold)}function kW(e,t,n){if(!e||!e.showHints||!n)return!1;const r=e.hints[t]??{dismissed:!1};return r.dismissed?!1:!(r.seenAppIds??[]).includes(n)}function _A(e,t,n={}){It("overlay","openspeech://overlay-toast",{kind:e,title:t,description:n.description,action:n.action,durationMs:n.durationMs}).catch(()=>{})}async function b0(e,t){await W("plugin:opener|open_url",{url:e,with:t})}const _W=fi().label==="main",SW=200,Ws=()=>{_W&&W("show_main_window_cmd").catch(e=>{console.warn("[ui] show_main_window_cmd failed:",e)})};let Us=null;const qe=mi((e,t)=>({loginOpen:!1,settingsOpen:!1,settingsInitialTab:"GENERAL",noInternetOpen:!1,feedbackOpen:!1,feedbackReturnToSettingsTab:null,statsOpen:!1,statsFocusMetric:"duration",pendingUpdate:null,hotkeyConflicts:[],pendingAuthRecoveryHistoryId:null,authRecoveryDialog:{open:!1,status:"pending",historyId:null},setLoginOpen:n=>e({loginOpen:n}),setSettingsOpen:n=>e({settingsOpen:n}),setNoInternetOpen:n=>e({noInternetOpen:n}),setFeedbackOpen:n=>e(r=>{if(n)return{feedbackOpen:!0};const i=r.feedbackReturnToSettingsTab;return i?{feedbackOpen:!1,feedbackReturnToSettingsTab:null,settingsOpen:!0,settingsInitialTab:i}:{feedbackOpen:!1}}),setStatsOpen:n=>e({statsOpen:n}),openStats:n=>{t().statsOpen||(Ws(),e({statsOpen:!0,statsFocusMetric:n??"duration"}))},setPendingUpdate:n=>e({pendingUpdate:n}),openLogin:()=>{t().loginOpen||(Ws(),e({loginOpen:!0}))},openSettings:(n="GENERAL")=>{t().settingsOpen||(Ws(),e({settingsOpen:!0,settingsInitialTab:n}))},openNoInternet:()=>{t().noInternetOpen||(Ws(),e({noInternetOpen:!0}))},openFeedback:n=>{t().feedbackOpen||(Ws(),n?.returnToSettingsTab?e({settingsOpen:!1,feedbackOpen:!0,feedbackReturnToSettingsTab:n.returnToSettingsTab}):e({feedbackOpen:!0,feedbackReturnToSettingsTab:null}))},pushHotkeyConflict:n=>{e(r=>({hotkeyConflicts:[...r.hotkeyConflicts.filter(a=>a.id!==n.id),n]})),Us==null&&(Us=window.setTimeout(()=>{Us=null,Ws()},SW))},clearHotkeyConflict:n=>{e(r=>({hotkeyConflicts:r.hotkeyConflicts.filter(i=>i.id!==n)}))},clearHotkeyConflicts:()=>{Us!=null&&(window.clearTimeout(Us),Us=null),e({hotkeyConflicts:[]})},setPendingAuthRecoveryHistoryId:n=>e({pendingAuthRecoveryHistoryId:n}),setAuthRecoveryDialog:n=>e({authRecoveryDialog:n}),closeAuthRecoveryDialog:()=>e({pendingAuthRecoveryHistoryId:null,authRecoveryDialog:{open:!1,status:"pending",historyId:null}})}));let h_=null,m_=null,g_=null;async function y_(){h_||(h_=await Le("openspeech://openloaf-login",e=>{const t=e.payload;lt.getState().currentLoginState===t.state&&(t.status==="success"?(lt.setState({user:t.user,isAuthenticated:!0,loginStatus:"idle",loginError:null,currentLoginState:null}),lt.getState().fetchProfile(),lt.getState().fetchRealtimeAsrPricing()):lt.setState({loginStatus:"error",loginError:t.message,currentLoginState:null}))})),m_||(m_=await Le("openspeech://openloaf-auth-lost",()=>{lt.setState({user:null,profile:null,isAuthenticated:!1}),qe.getState().openLogin()})),g_||(g_=await Le("openspeech://openloaf-restored",e=>{lt.setState({user:e.payload,isAuthenticated:!0,loaded:!0}),lt.getState().fetchProfile(),lt.getState().fetchRealtimeAsrPricing()}))}const lt=mi((e,t)=>({user:null,profile:null,realtimeAsrCreditsPerMinute:null,isAuthenticated:!1,loaded:!1,loginStatus:"idle",loginError:null,currentLoginState:null,lastProvider:null,init:async()=>{await y_();try{const[n,r]=await Promise.all([W("openloaf_current_user"),W("openloaf_is_authenticated")]);e({user:n,isAuthenticated:r,loaded:!0}),r&&(t().fetchProfile(),t().fetchRealtimeAsrPricing())}catch{e({loaded:!0})}typeof window<"u"&&window.addEventListener("online",()=>{W("openloaf_try_recover").catch(()=>{})})},startLogin:async n=>{const{loginStatus:r}=t();if(r==="opening"||r==="polling")return;await y_(),e({loginStatus:"opening",loginError:null,lastProvider:n});let i;try{i=await W("openloaf_start_login",{provider:n})}catch(a){e({loginStatus:"error",loginError:typeof a=="string"?a:String(a)});return}e({currentLoginState:i.state});try{await b0(i.loginUrl)}catch(a){await W("openloaf_cancel_login",{loginState:i.state}).catch(()=>{}),e({loginStatus:"error",loginError:typeof a=="string"?a:String(a),currentLoginState:null});return}e({loginStatus:"polling"})},retryLogin:async()=>{const{lastProvider:n}=t();n&&await t().startLogin(n)},cancelLogin:async()=>{const{currentLoginState:n}=t();n&&await W("openloaf_cancel_login",{loginState:n}).catch(()=>{}),e({loginStatus:"idle",loginError:null,currentLoginState:null})},logout:async()=>{await W("openloaf_logout"),e({user:null,profile:null,realtimeAsrCreditsPerMinute:null,isAuthenticated:!1})},fetchProfile:async()=>{if(t().isAuthenticated)try{const n=await W("openloaf_fetch_profile");e({profile:n})}catch{}},fetchRealtimeAsrPricing:async()=>{if(t().isAuthenticated)try{const n=await W("openloaf_fetch_realtime_asr_pricing"),r=n>0?n:null;console.info("[auth] realtime ASR pricing (V3 realtimeAsrLlm proxy):",n,"credits/min →",r??"ignored"),e({realtimeAsrCreditsPerMinute:r})}catch(n){console.warn("[auth] fetchRealtimeAsrPricing failed:",n)}}}));class dp{constructor(t){this.path=t}static async load(t){const n=await W("plugin:sql|load",{db:t});return new dp(n)}static get(t){return new dp(t)}async execute(t,n){const[r,i]=await W("plugin:sql|execute",{db:this.path,query:t,values:n??[]});return{lastInsertId:i,rowsAffected:r}}async select(t,n){return await W("plugin:sql|select",{db:this.path,query:t,values:n??[]})}async close(t){return await W("plugin:sql|close",{db:t})}}const EW="sqlite:openspeech.db";let yg=null;function Yt(){return yg||(yg=dp.load(EW).then(async e=>{try{await e.execute("PRAGMA foreign_keys = ON")}catch(t){console.warn("[db] enable foreign_keys failed:",t)}return e})),yg}function _o(){const e=new Date,t=(i,a=2)=>String(i).padStart(a,"0"),n=`${e.getFullYear()}${t(e.getMonth()+1)}${t(e.getDate())}${t(e.getHours())}${t(e.getMinutes())}${t(e.getSeconds())}`+t(e.getMilliseconds(),3),r=Math.floor(Math.random()*36**4).toString(36).padStart(4,"0");return`${n}-${r}`}function CW(e){let t=[];if(e.aliases)try{const n=JSON.parse(e.aliases);Array.isArray(n)&&(t=n.filter(r=>typeof r=="string"))}catch{t=[]}return{id:e.id,term:e.term,aliases:t,note:e.note??null,source:e.source,enabled:e.enabled===1,created_at:e.created_at,updated_at:e.updated_at,created_by:e.created_by}}function v_(e){if(e==null)return null;const t=e.trim();return t.length>0?t:null}const To=2e3,Vt=mi((e,t)=>({entries:[],loaded:!1,init:async()=>{t().loaded||(await t().reload(),e({loaded:!0}))},reload:async()=>{const r=await(await Yt()).select("SELECT id, term, aliases, note, source, enabled, created_at, updated_at, created_by FROM dictionary ORDER BY created_at DESC");e({entries:r.map(CW)})},add:async n=>{const r=n.term.trim().replace(/\s+/g," ");if(!r)throw new Error("term 不能为空");if(t().entries.length>=To)throw new Error(`词典已达上限 ${To} 条`);const i=await Yt(),a={id:_o(),term:r,aliases:n.aliases??[],note:v_(n.note),source:n.source??"manual",enabled:n.enabled??!0,created_at:Date.now(),updated_at:null,created_by:n.created_by??"manual"};return await i.execute("INSERT INTO dictionary (id, term, aliases, note, source, enabled, created_at, created_by) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)",[a.id,a.term,a.aliases.length?JSON.stringify(a.aliases):null,a.note,a.source,a.enabled?1:0,a.created_at,a.created_by]),e({entries:[a,...t().entries]}),a},update:async(n,r)=>{const i=t().entries.find(p=>p.id===n);if(!i)throw new Error(`dictionary entry not found: ${n}`);const a=r.term!==void 0?r.term.trim().replace(/\s+/g," "):i.term;if(!a)throw new Error("term 不能为空");const o=r.aliases!==void 0?r.aliases:i.aliases,s=r.note!==void 0?v_(r.note):i.note??null,l=r.enabled!==void 0?r.enabled:i.enabled,c=Date.now();await(await Yt()).execute("UPDATE dictionary SET term = $1, aliases = $2, note = $3, enabled = $4, updated_at = $5 WHERE id = $6",[a,o.length?JSON.stringify(o):null,s,l?1:0,c,n]);const d={...i,term:a,aliases:o,note:s,enabled:l,updated_at:c};return e({entries:t().entries.map(p=>p.id===n?d:p)}),d},remove:async n=>{await(await Yt()).execute("DELETE FROM dictionary WHERE id = $1",[n]),e({entries:t().entries.filter(i=>i.id!==n)})},removeMany:async n=>{if(n.length===0)return 0;const r=await Yt(),i=n.map((o,s)=>`$${s+1}`).join(", ");await r.execute(`DELETE FROM dictionary WHERE id IN (${i})`,n);const a=new Set(n);return e({entries:t().entries.filter(o=>!a.has(o.id))}),n.length},clearAll:async()=>{await(await Yt()).execute("DELETE FROM dictionary"),e({entries:[]})}})),jW=200,NW=30,x_=8;async function PW(e){if(e.edited===null)return;const t=e.baseline.trim(),n=e.edited.trim();if(!t||!n||t===n)return;if(!lt.getState().isAuthenticated){console.debug("[dict-agent] skip: not authenticated");return}const i=Vt.getState().entries.filter(d=>d.enabled).slice(0,jW),a=TW(e.recentHistory??[],t,n),o={baseline:t,edited:n,dictionary:i.map(d=>({id:d.id,term:d.term,aliases:d.aliases,note:d.note??null})),historyId:e.historyId,...a.length>0?{recentCorrections:a}:{}};a.length>0&&console.info("[dict-agent] recentCorrections=%o (history=%d entries)",a,(e.recentHistory??[]).length);let s;try{s=await W("analyze_dictionary_correction",{input:o})}catch(d){console.warn("[dict-agent] invoke failed:",d);return}let l;try{l=JSON.parse(s.plan)}catch(d){console.warn("[dict-agent] plan JSON parse failed:",d,s.plan);return}const c=Array.isArray(l.decisions)?l.decisions:[];if(console.info("[dict-agent] plan decisions=%o (model=%s, history=%s)",c,s.model,e.historyId),c.length===0){b_(t,n);return}let u=!1;for(const d of c)try{const p=Vt.getState().entries,h=await OW(d,p);console.info("[dict-agent] applied:",d.action,h),h&&(u=!0,SA(h))}catch(p){console.warn("[dict-agent] apply decision failed:",d,p)}!u&&c.every(d=>d.action==="noop")&&b_(t,n)}function ix(e,t){const n=e,r=t;if(!n||!r||n===r)return null;const i=n.length,a=r.length;let o=0;const s=Math.min(i,a);for(;o<s&&n[o]===r[o];)o++;let l=0;const c=Math.min(i-o,a-o);for(;l<c&&n[i-1-l]===r[a-1-l];)l++;const u=n.slice(o,i-l),d=r.slice(o,a-l);return!u||!d||u.length>x_||d.length>x_?null:{wrong:u,correct:d}}function TW(e,t,n){const r=new Map,i=o=>{const s=`${o.wrong}\0${o.correct}`,l=r.get(s);l?l.count+=1:r.set(s,{...o,count:1})};for(const o of e.slice(0,NW)){const s=(o.text_edited??"").trim();if(!s)continue;const l=(o.refined_text??o.text??"").trim();if(!l||l===s)continue;const c=ix(l,s);c&&i(c)}const a=ix(t,n);return a&&i(a),[...r.values()].filter(o=>o.count>=1).sort((o,s)=>s.count-o.count).slice(0,5)}function b_(e,t){const n=ix(e,t);if(!n)return;const{wrong:r,correct:i}=n,a=Vt.getState().entries,o=i.toLowerCase();if(a.some(c=>c.term.toLowerCase()===o))return;const s=te.t("pages:history.edit.toast.dict_noop_title",{wrong:r,correct:i,defaultValue:`AI 没把"${r}"→"${i}"识别为需要入库的纠错`}),l=te.t("pages:history.edit.toast.dict_noop_action",{defaultValue:"告诉它入库"});me(s,{duration:6e3,action:{label:l,onClick:()=>{AW(r,i)}}})}async function AW(e,t){try{if(Vt.getState().entries.length>=To){console.warn("[dict-agent] dict full, manual insert skipped");return}const r=await Vt.getState().add({term:t,aliases:[e],note:"用户手动确认入库",source:"manual",enabled:!0,created_by:"manual"});SA({kind:"added",term:r.term})}catch(n){console.warn("[dict-agent] manual insert failed:",n)}}async function OW(e,t){switch(e.action){case"noop":return null;case"add":{const n=e.term?.trim().replace(/\s+/g," ");if(!n)return null;const r=n.toLowerCase(),i=e.reason?.trim()||null,a=t.find(l=>l.term.toLowerCase()===r);if(a){const l=(e.aliases??[]).map(h=>h.trim()).filter(h=>h&&h.toLowerCase()!==r),c=w_(a.aliases,l),u=c.length!==a.aliases.length,d=!!i&&!(a.note??"").trim();if(!u&&!d)return null;const p={};return u&&(p.aliases=c),d&&(p.note=i),await Vt.getState().update(a.id,p),{kind:"updated",term:a.term}}if(t.length>=To)return console.warn("[dict-agent] dict full, skip add:",n),null;const o=(e.aliases??[]).map(l=>l.trim()).filter(l=>l&&l.toLowerCase()!==r);return{kind:"added",term:(await Vt.getState().add({term:n,aliases:o,note:i,source:"auto",enabled:!0,created_by:"agent"})).term}}case"update":{if(!e.id)return null;const n=t.find(c=>c.id===e.id);if(!n)return null;const r=(e.addAliases??[]).map(c=>c.trim()).filter(c=>c&&c.toLowerCase()!==n.term.toLowerCase()),i=e.term&&e.term.trim()&&e.term.trim()!==n.term?e.term.trim():null,a=e.reason?.trim()||null,o=a!==null&&a!==(n.note??null);if(r.length===0&&!i&&!o)return null;const s=r.length?w_(n.aliases,r):n.aliases,l={};return s.length!==n.aliases.length&&(l.aliases=s),i&&(l.term=i),o&&(l.note=a),Object.keys(l).length===0?null:(await Vt.getState().update(n.id,l),{kind:"updated",term:i??n.term})}case"delete":{if(!e.id)return null;const n=t.find(r=>r.id===e.id);return n?(await Vt.getState().remove(n.id),{kind:"removed",term:n.term}):null}default:return console.warn("[dict-agent] unknown action:",e.action),null}}function SA(e){const t=`pages:history.edit.toast.dict_${e.kind}`,n=te.t(t,{term:e.term}),r=te.t("pages:history.edit.toast.dict_hint");me(n,{description:r,duration:4e3,style:{background:"var(--te-accent)",color:"var(--te-accent-fg)",borderColor:"var(--te-accent)"},classNames:{description:"!text-current opacity-80"}}),_A("info",n,{description:r,durationMs:4e3})}function w_(e,t){const n=new Set(e.map(i=>i.toLowerCase())),r=[...e];for(const i of t){const a=i.toLowerCase();n.has(a)||(n.add(a),r.push(i))}return r}async function MW(){try{return(await W("audio_list_input_devices")??[]).map(t=>({name:t.name,isDefault:t.is_default}))}catch(e){return console.warn("[audio] list devices failed:",e),[]}}async function w0(e){try{return await W("audio_level_start",{deviceName:e}),!0}catch(t){return console.warn("[audio] start failed:",t),!1}}async function kl(){try{await W("audio_level_stop")}catch(e){console.warn("[audio] stop failed:",e)}}function k0(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}async function RW(e){await W("audio_recording_start",{id:e,date:k0()})}async function EA(){return await W("audio_recording_stop")}async function CA(){try{await W("audio_recording_cancel")}catch(e){console.warn("[audio] cancel recording failed:",e)}}async function jA(e){return await W("audio_recording_load",{audioPath:e})}async function IW(e,t){await W("audio_recording_export",{audioPath:e,destPath:t})}async function pl(e){await W("audio_recording_delete",{audioPath:e})}async function DW(e={}){await W("stt_start",{lang:e.lang,mode:e.mode,provider:e.provider})}async function LW(){return await W("stt_finalize")}async function bu(){try{await W("stt_cancel")}catch(e){console.warn("[stt] cancel failed:",e)}}const $W=15e4;async function _0(e){const t=W("transcribe_recording_file",{audioPath:e.audioPath,durationMs:e.durationMs,lang:e.lang,provider:e.provider,systemPrompt:e.systemPrompt});let n=null;const r=new Promise((i,a)=>{n=setTimeout(()=>a(new Error("transcribe_timeout")),$W)});try{return await Promise.race([t,r])}finally{n!==null&&clearTimeout(n)}}function S0(){return Vt.getState().entries.filter(e=>e.enabled).map(e=>e.term.trim()).filter(e=>e.length>0)}function zW(){return Vt.getState().entries.filter(e=>e.enabled).map(e=>{const t=e.term.trim();if(!t)return null;const n=(e.aliases??[]).map(i=>i.trim()).filter(i=>i.length>0),r=(e.note??"").trim();return{term:t,aliases:n,note:r.length>0?r:null}}).filter(e=>e!==null)}const k_=["ChatGPT","Claude Code","Anthropic","OpenAI","Gemini","Sora","Whisper","Copilot","GitHub Copilot","Cursor","Windsurf","Devin","Replit","Lovable","Bolt.new","v0","Trae","Midjourney","NotebookLM","Perplexity","Grok","xAI","DeepSeek","豆包","Kimi","通义千问","夸克","MCP","vibe coding"],FW={programming:["API","REST","GraphQL","JSON","YAML","XML","OAuth","JWT","CORS","Git","GitHub","Docker","Kubernetes","K8s","Redis","PostgreSQL","MongoDB","MySQL","React","Vue","TypeScript","JavaScript","Python","Rust","Webhook","Vite","npm","CI/CD","DevOps","Next.js"],ai_ml:["Transformer","LLM","GPT","Claude","Gemini","PyTorch","TensorFlow","Hugging Face","CUDA","GPU","TPU","RLHF","RAG","embedding","fine-tuning","tokenizer","diffusion","GAN","CNN","RNN","LSTM","BERT","MoE","LoRA","softmax","ReLU","backpropagation","gradient descent","overfitting","prompt engineering"],cybersecurity:["XSS","CSRF","SQL injection","DDoS","TLS","SSL","HTTPS","VPN","MITM","RCE","CVE","CVSS","phishing","ransomware","0-day","WAF","IDS","IPS","OWASP","MFA","2FA","AES","RSA","SHA-256","ECDSA","SOC 2","ISO 27001","GDPR","pentest","zero trust"],design:["Figma","Sketch","Photoshop","Illustrator","Procreate","wireframe","mockup","prototype","UI","UX","Material Design","Tailwind","shadcn","Framer","Webflow","Canva","InDesign","After Effects","vector","raster","RGB","CMYK","DPI","kerning","leading","tracking","auto-layout","design system","spec","Figjam"],film_production:["DaVinci Resolve","Premiere Pro","Final Cut Pro","After Effects","Avid","LUT","RAW","ProRes","H.264","H.265","HEVC","BMPCC","ARRI","RED","Sony FX","S-log","C-log","color grading","B-roll","VFX","DIT","CGI","rotoscope","keyframe","ACES","DNxHD","ProRes 422","rec.709","rec.2020","log footage"],photography:["Sony","Canon","Nikon","Fujifilm","Leica","RAW","JPEG","ISO","aperture","f-stop","shutter","EXIF","bokeh","HDR","Lightroom","Capture One","DSLR","mirrorless","OVF","EVF","M4/3","APS-C","full-frame","tilt-shift","macro","TTL","white balance","ND filter","polarizer","stop down"],marketing:["SEO","SEM","CTR","CPC","CPM","ROI","ROAS","KPI","OKR","GTM","B2B","B2C","DTC","MQL","CAC","LTV","ARR","MRR","DAU","MAU","retention","churn","funnel","GA4","UTM","A/B test","HubSpot","Mailchimp","PMF","NPS"],finance:["IPO","ETF","ROI","ROE","EBITDA","EPS","P/E","PEG","DCF","M&A","VC","PE","LBO","REIT","FX","Forex","BTC","ETH","DeFi","NFT","stablecoin","USDT","S&P 500","Nasdaq","VIX","FCF","WACC","alpha","beta","yield"],law:["NDA","MOU","LOI","IP","IPR","M&A","JV","LLC","LLP","GDPR","CCPA","HIPAA","DMCA","TOS","EULA","SLA","force majeure","due diligence","pro bono","民法典","刑法","合同法","知识产权","商标权","著作权","专利权","反垄断","尽职调查","保密协议","仲裁"],academic:["DOI","arXiv","ORCID","PubMed","Scopus","JCR","SCI","SSCI","IEEE","ACM","ACL","NeurIPS","ICML","CVPR","ICLR","Nature","Science","Cell","h-index","impact factor","abstract","citation","BibTeX","LaTeX","Overleaf","Zotero","EndNote","preprint","peer review","ethics review"],medicine:["CT","MRI","PET","ECG","EEG","ICU","ER","BMI","BP","HbA1c","LDL","HDL","eGFR","ALT","AST","TSH","PSA","HPV","HIV","PCR","DNA","RNA","mRNA","CPR","AED","ICD-10","DSM-5","COVID-19","vaccine","antibody"],tcm:["黄芪","党参","当归","茯苓","白术","白芍","川芎","桂枝","麻黄","柴胡","黄连","黄芩","大黄","甘草","人参","枸杞","阴阳","五行","气血","津液","经络","穴位","针灸","推拿","艾灸","风寒","湿热","痰饮","瘀血","望闻问切"],psychology:["PTSD","OCD","ADHD","BPD","MDD","CBT","DBT","EMDR","ACT","DSM-5","ICD-11","IQ","EQ","MBTI","Big Five","Freud","Jung","Adler","Skinner","Pavlov","Erikson","Maslow","Piaget","Rogers","Beck","Ellis","ego","id","superego","neuroplasticity"],engineering:["CAD","CAM","CNC","PLC","FEA","FEM","BOM","MOQ","ERP","MES","QC","QA","ISO 9001","GD&T","CFD","MRP","OEM","ODM","JIT","Kaizen","Six Sigma","5S","TPM","lean","Kanban","Scrum","Gantt","RFQ","RFP","DFM"],automotive:["EV","HEV","PHEV","BEV","FCEV","ICE","ABS","ESP","TCS","ADAS","L2","L3","L4","LiDAR","OTA","VIN","RPM","MPG","BMS","ECU","OBD","CAN bus","torque","horsepower","NEDC","WLTP","EPA","Tesla","BYD","regen"],maritime:["IMO","SOLAS","MARPOL","MLC","ISPS","AIS","ECDIS","GMDSS","ARPA","EPIRB","SART","DWT","GT","NT","TEU","FEU","LNG","LPG","VLCC","ULCC","FPSO","Ro-Ro","OSV","B/L","ETA","ETD","BDI","P&I","knot","starboard"]},NA={os:"",arch:"",hostname:"",deviceName:"",username:""};let ax=NA;async function BW(){try{const e=await W("get_platform_info");ax={os:e.os??"",arch:e.arch??"",hostname:e.hostname??"",deviceName:e.deviceName??"",username:e.username??""}}catch(e){console.warn("[machineInfo] load failed:",e),ax=NA}}function HW(){return ax}const E0={"zh-CN":`<role>
734
+ </self_check>`,fA={"zh-CN":nW,"zh-TW":rW,en:iW};function pA(e,t){return e??fA[t]}const as={"zh-CN":[{id:"scn_email",name:"邮件",instruction:"目标场景:商务邮件。语域偏正式、礼貌;按问候 / 正文 / 结尾分段;称谓与签收语得体;句式简洁清晰,避免口语填充词。"},{id:"scn_wechat",name:"微信",instruction:"目标场景:微信 / 即时通讯。语域偏轻松、口语化;句子短,必要时分多句发;保留必要的语气词,但去掉重复与口头禅。"}],"zh-TW":[{id:"scn_email",name:"郵件",instruction:"目標場景:商務郵件。語域偏正式、禮貌;依問候 / 正文 / 結尾分段;稱謂與簽核語得體;句式簡潔清晰,避免口語填充詞。"},{id:"scn_wechat",name:"LINE / 即時通訊",instruction:"目標場景:LINE / 即時通訊。語域偏輕鬆、口語化;句子短,必要時拆多句;保留必要的語氣詞,但去掉重複與口頭禪。"}],en:[{id:"scn_email",name:"Email",instruction:"Target scenario: business email. Tone polite and clear. Use greeting / body / sign-off paragraphs. Address and closing should be appropriate; trim filler words."},{id:"scn_chat",name:"Chat",instruction:"Target scenario: instant messaging. Tone casual and concise. Short sentences, may split into multiple messages. Keep necessary tone markers but cut repeats and fillers."}]},aW="settings.json",Ff=18,tx={interfaceLang:"system",inputDevice:"",cueSound:!0,restoreClipboard:!0,launchStartup:!0,updatePolicy:"AUTO",skippedUpdateVersion:"",closeBehavior:"ASK",onboardingCompleted:!1,asrSegmentMode:"UTTERANCE",historyRetention:"forever",translateTargetLang:"en",translateOutputMode:"bilingual"},fl={enabled:!0,mode:"saas",customProviders:[],activeCustomProviderId:null,customRules:null,customTranslationSystemPrompt:null,customPolishSystemPrompt:null,customMeetingSummaryPrompt:null,customPolishScenarios:null,lastPolishScenarioId:null,includeHistory:!0,recentHistoryCount:10,selectedDomains:[],customDomains:[],customExamples:[],appOverrides:[],stripTrailingPeriod:"auto"},d_=1,f_=50,oW=10;function hA(e){if(typeof e!="number"||!Number.isFinite(e))return oW;const t=Math.floor(e);return t<d_?d_:t>f_?f_:t}const Xc={mode:"saas",customProviders:[],activeCustomProviderId:null,lang:"auto",streamingInject:!0,clipboardCopy:!0},mA=["recordingControls","resultActions","firstResultConfirm","appFirstInject"];function Fc(){return{successCount:0,dismissed:!1}}function $l(){const e={};for(const t of mA)e[t]=Fc();return e}const up={showHints:!0,hints:$l()};function sW(e){if(!e||typeof e!="object")return{...up,hints:$l()};const t=e,n=typeof t.showHints=="boolean"?t.showHints:up.showHints,r=$l();if(t.hints&&typeof t.hints=="object")for(const i of mA){const a=t.hints[i];if(a&&typeof a=="object"){const o=a,s=Array.isArray(o.seenAppIds)?o.seenAppIds.filter(l=>typeof l=="string"):void 0;r[i]={successCount:typeof o.successCount=="number"&&o.successCount>=0?Math.floor(o.successCount):0,dismissed:o.dismissed===!0,...s?{seenAppIds:s}:{}}}}return{showHints:n,hints:r}}let gg=null;function gA(){return gg||(gg=a0.load(aW)),gg}function lW(e){const t={...e},n=t.minimizeTray===!0,r=t.closeAction;delete t.maxRec,delete t.closeAction,delete t.minimizeTray;let i="ASK";return n?i="HIDE":r==="QUIT"&&(i="QUIT"),typeof t.inputDevice=="string"&&t.inputDevice.startsWith("System Default")&&(t.inputDevice=""),{...t,closeBehavior:i}}function cW(e){return{...e,asrSegmentMode:"UTTERANCE"}}function uW(e){const t=e.interfaceLang;let n="system";return t==="简体中文"||t==="zh-CN"?n="zh-CN":t==="繁體中文"||t==="繁体中文"||t==="zh-TW"?n="zh-TW":(t==="English"||t==="en")&&(n="en"),{...e,interfaceLang:n}}function dW(e){const t=e.asrSegmentMode;let n="AI_REFINE";return t==="AUTO"||t==="REALTIME"?n="REALTIME":t==="MANUAL"||t==="UTTERANCE"?n="UTTERANCE":t==="AI_REFINE"&&(n="AI_REFINE"),{...e,asrSegmentMode:n}}function fW(e){return{...e,historyRetention:"forever"}}function pW(e){const t={...e};return delete t.injectMethod,t}function hW(e){const t={...e},n=t.autoUpdate;delete t.autoUpdate,delete t.updateCheckIntervalHours;let r="PROMPT";return n===!1&&(r="DISABLED"),{...t,updatePolicy:r}}function mW(e,t){if(!e||typeof e!="object")return{...fl,enabled:t??fl.enabled};const n=e,r=Array.isArray(n.customProviders)?n.customProviders.filter(x=>!!x&&typeof x=="object"&&typeof x.id=="string").map(x=>({...x,verified:x.verified===!0})):[],i=typeof n.activeCustomProviderId=="string"&&r.some(x=>x.id===n.activeCustomProviderId)?n.activeCustomProviderId:r[0]?.id??null,a=vA(n.customRules),o=t!==void 0?t:typeof n.enabled=="boolean"?n.enabled:fl.enabled,s=typeof n.customTranslationSystemPrompt=="string"?n.customTranslationSystemPrompt:(n.customTranslationSystemPrompt===null,null),l=typeof n.customPolishSystemPrompt=="string"?n.customPolishSystemPrompt:(n.customPolishSystemPrompt===null,null),c=typeof n.customMeetingSummaryPrompt=="string"?n.customMeetingSummaryPrompt:(n.customMeetingSummaryPrompt===null,null);let u;Array.isArray(n.customPolishScenarios)?u=n.customPolishScenarios.filter(x=>!!x&&typeof x=="object"&&typeof x.id=="string"&&typeof x.name=="string"&&typeof x.instruction=="string"):u=null;const d=n.mode==="custom"&&i&&r.some(x=>x.id===i)?"custom":"saas",p=Array.isArray(n.selectedDomains)?n.selectedDomains.filter(x=>typeof x=="string"&&x.length>0).slice(0,3):[],h=x0(n.customExamples),g=xA(n.appOverrides),y=rx(n.customDomains);return{enabled:o,mode:d,customProviders:r,activeCustomProviderId:i,customRules:a,customTranslationSystemPrompt:s,customPolishSystemPrompt:l,customMeetingSummaryPrompt:c,customPolishScenarios:u,lastPolishScenarioId:typeof n.lastPolishScenarioId=="string"&&n.lastPolishScenarioId?n.lastPolishScenarioId:null,includeHistory:typeof n.includeHistory=="boolean"?n.includeHistory:!0,recentHistoryCount:hA(n.recentHistoryCount),selectedDomains:p,customDomains:y,customExamples:h,appOverrides:g,stripTrailingPeriod:n.stripTrailingPeriod==="off"||n.stripTrailingPeriod==="always"||n.stripTrailingPeriod==="auto"?n.stripTrailingPeriod:fl.stripTrailingPeriod}}const nx=20,gW=30,yW=50;function yA(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=gW)break;if(!r||typeof r!="object")continue;const i=r;typeof i.id!="string"||i.id.length===0||typeof i.body!="string"||i.body.length===0||t.has(i.id)||(t.add(i.id),n.push({id:i.id,body:i.body,why:typeof i.why=="string"?i.why:""}))}return n}function vA(e){return e==null||!Array.isArray(e)?null:yA(e)}function x0(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=nx)break;if(!r||typeof r!="object")continue;const i=r;typeof i.id!="string"||i.id.length===0||typeof i.target!="string"||i.target.length===0||typeof i.input!="string"||typeof i.output!="string"||t.has(i.id)||(t.add(i.id),n.push({id:i.id,target:i.target,input:i.input,focus:typeof i.focus=="string"?i.focus:"",output:i.output}))}return n}function rx(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=Hh)break;if(!r||typeof r!="object")continue;const i=r;if(typeof i.id!="string"||!i.id.startsWith(h0)||t.has(i.id))continue;const a=typeof i.name=="string"?i.name.trim():"";if(!a)continue;const o=new Set,s=[];if(Array.isArray(i.keywords))for(const l of i.keywords){if(typeof l!="string")continue;const c=l.trim().slice(0,Df);if(!c)continue;const u=c.toLowerCase();if(!o.has(u)&&(o.add(u),s.push(c),s.length>=If))break}t.add(i.id),n.push({id:i.id,name:a.slice(0,g0),keywords:s})}return n}function xA(e){if(!Array.isArray(e))return[];const t=new Set,n=[];for(const r of e){if(n.length>=yW)break;if(!r||typeof r!="object")continue;const i=r;if(typeof i.appId!="string"||i.appId.length===0)continue;const a=i.appId.toLowerCase();t.has(a)||(t.add(a),n.push({appId:i.appId,appName:typeof i.appName=="string"?i.appName:i.appId,enabled:i.enabled===!0,customRules:vA(i.customRules),customExamples:x0(i.customExamples)}))}return n}function vW(e){return e.asrSegmentMode==="AI_REFINE"?{general:{...e,asrSegmentMode:"UTTERANCE"},aiRefineEnabled:!0}:{general:e,aiRefineEnabled:!1}}function xW(e,t){const n={...Xc};if(!e||typeof e!="object")return{...n,lang:t??n.lang};const r=e,i=Array.isArray(r.customProviders)?r.customProviders.filter(u=>!!u&&typeof u=="object"&&typeof u.id=="string"&&(u.vendor==="tencent"||u.vendor==="aliyun")).map(u=>({...u,verified:u.verified===!0})):[],a=typeof r.activeCustomProviderId=="string"&&i.some(u=>u.id===r.activeCustomProviderId)?r.activeCustomProviderId:i[0]?.id??null,o=t??bA(r.lang),s=r.mode==="custom"&&a&&i.some(u=>u.id===a)?"custom":"saas",l=typeof r.streamingInject=="boolean"?r.streamingInject:Xc.streamingInject,c=typeof r.clipboardCopy=="boolean"?r.clipboardCopy:Xc.clipboardCopy;return{mode:s,customProviders:i,activeCustomProviderId:a,lang:o,streamingInject:l,clipboardCopy:c}}function bA(e){if(typeof e!="string")return"auto";switch(e){case"follow_interface":return"auto";case"auto":case"zh":case"en":case"ja":case"ko":case"yue":return e;case"自动检测":return"auto";case"ZH":case"zh-CN":case"zh-TW":return"zh";case"EN":return"en";case"JA":return"ja";case"KO":return"ko";case"YUE":return"yue";default:return"auto"}}function bW(e){const t={...e},n=t.dictationLang;return delete t.dictationLang,delete t.dictationSource,delete t.endpoint,delete t.modelName,delete t.timeout,delete t.audioFormat,{general:t,dictationLang:bA(n)}}async function wW(){const t=await(await gA()).get("root"),n={schemaVersion:Ff,general:{...tx},aiRefine:{...fl},dictation:{...Xc},ui:{...up,hints:$l()}};if(!t||typeof t!="object")return{shape:n,migrated:!0};const r=t,i=(o,s,l)=>{const c={...o};return delete c.updateCheckIntervalHours,{schemaVersion:Ff,general:{...tx,...c},aiRefine:mW(r.aiRefine,s),dictation:xW(r.dictation,l),ui:sW(r.ui)}},a=(o,s)=>{let l=o;return s<=1&&(l=lW(l)),s<=2&&(l=cW(l)),s<=3&&(l=uW(l)),s<=4&&(l=dW(l)),s<=5&&(l=fW(l)),s<=6&&(l=pW(l)),s<=7&&(l=hW(l)),l};if(typeof r.schemaVersion=="number"&&r.schemaVersion>=1&&r.schemaVersion<=12){const o=r.schemaVersion,s=o<=11?a(r.general??{},o):r.general??{};let l,c=s;if(o<=11){const p=vW(s);c=p.general,l=p.aiRefineEnabled}const{general:u,dictationLang:d}=bW(c);return{shape:i(u,l,d),migrated:!0}}return r.schemaVersion===13||r.schemaVersion===14||r.schemaVersion===15||r.schemaVersion===16||r.schemaVersion===17?{shape:i(r.general??{}),migrated:!0}:r.schemaVersion!==Ff?{shape:n,migrated:!0}:{shape:i(r.general??{}),migrated:!1}}async function p_(e){const t=await gA();await t.set("root",e),await t.save()}const Z=mi((e,t)=>{const n=async(r={})=>{const i={schemaVersion:Ff,general:t().general,aiRefine:t().aiRefine,dictation:t().dictation,ui:t().ui,...r};await p_(i)};return{general:{...tx},aiRefine:{...fl},dictation:{...Xc},ui:{...up,hints:$l()},loaded:!1,init:async()=>{const{shape:r,migrated:i}=await wW();e({general:r.general,aiRefine:r.aiRefine,dictation:r.dictation,ui:r.ui,loaded:!0}),console.info(`[settings] init: providers=${r.dictation.customProviders.length} ai_providers=${r.aiRefine.customProviders.length} schemaVersion=${r.schemaVersion} migrated=${i}`),i&&await p_(r),s_(r.general.cueSound)},setGeneral:async(r,i)=>{const a={...t().general,[r]:i};e({general:a}),await n({general:a}),r==="interfaceLang"?V2(a.interfaceLang):r==="cueSound"&&s_(i)},setAiRefineMode:async r=>{const i={...t().aiRefine,mode:r};e({aiRefine:i}),await n({aiRefine:i})},setAiRefineEnabled:async r=>{const i={...t().aiRefine,enabled:r};e({aiRefine:i}),await n({aiRefine:i})},addAiProvider:async r=>{const i=t().aiRefine;if(i.customProviders.some(l=>l.id===r.id))return;const a=[...i.customProviders,{...r,verified:!1}],o=i.activeCustomProviderId??r.id,s={...i,customProviders:a,activeCustomProviderId:o};e({aiRefine:s}),await n({aiRefine:s})},updateAiProvider:async(r,i)=>{const a=t().aiRefine,o="baseUrl"in i||"model"in i,s=a.customProviders.map(c=>c.id===r?{...c,...i,...o?{verified:!1}:{}}:c),l={...a,customProviders:s};e({aiRefine:l}),await n({aiRefine:l})},removeAiProvider:async r=>{const i=t().aiRefine,a=i.customProviders.filter(l=>l.id!==r),o=i.activeCustomProviderId===r?a[0]?.id??null:i.activeCustomProviderId,s={...i,customProviders:a,activeCustomProviderId:o};e({aiRefine:s}),await n({aiRefine:s});try{await k6(r)}catch(l){console.warn("[ai-refine] deleteAiProviderKey failed:",l)}},setActiveAiProvider:async r=>{const i=t().aiRefine;if(!(r===null||i.customProviders.some(s=>s.id===r)))return;const o={...i,activeCustomProviderId:r};e({aiRefine:o}),await n({aiRefine:o})},setAiProviderVerified:async(r,i)=>{const a=t().aiRefine,o=a.customProviders.map(l=>l.id===r?{...l,verified:i}:l),s={...a,customProviders:o};e({aiRefine:s}),await n({aiRefine:s})},setCustomRules:async r=>{const a={...t().aiRefine,customRules:r===null?null:yA(r)};e({aiRefine:a}),await n({aiRefine:a})},setCustomExamples:async r=>{const a={...t().aiRefine,customExamples:x0(r)};e({aiRefine:a}),await n({aiRefine:a})},setAppOverrides:async r=>{const a={...t().aiRefine,appOverrides:xA(r)};e({aiRefine:a}),await n({aiRefine:a})},setAiTranslationSystemPrompt:async r=>{const a={...t().aiRefine,customTranslationSystemPrompt:r};e({aiRefine:a}),await n({aiRefine:a})},setAiPolishSystemPrompt:async r=>{const a={...t().aiRefine,customPolishSystemPrompt:r};e({aiRefine:a}),await n({aiRefine:a})},setAiMeetingSummaryPrompt:async r=>{const a={...t().aiRefine,customMeetingSummaryPrompt:r};e({aiRefine:a}),await n({aiRefine:a})},setPolishScenarios:async r=>{const a={...t().aiRefine,customPolishScenarios:r};e({aiRefine:a}),await n({aiRefine:a})},setLastPolishScenarioId:async r=>{const i=t().aiRefine;if(i.lastPolishScenarioId===r)return;const a={...i,lastPolishScenarioId:r};e({aiRefine:a}),await n({aiRefine:a})},setAiIncludeHistory:async r=>{const a={...t().aiRefine,includeHistory:r};e({aiRefine:a}),await n({aiRefine:a})},setAiRecentHistoryCount:async r=>{const a={...t().aiRefine,recentHistoryCount:hA(r)};e({aiRefine:a}),await n({aiRefine:a})},setAiStripTrailingPeriod:async r=>{const a={...t().aiRefine,stripTrailingPeriod:r};e({aiRefine:a}),await n({aiRefine:a})},setSelectedDomains:async r=>{const i=t().aiRefine,a=new Set,o=[];for(const l of r)if(!(typeof l!="string"||!l||a.has(l))&&(a.add(l),o.push(l),o.length>=3))break;const s={...i,selectedDomains:o};e({aiRefine:s}),await n({aiRefine:s})},addCustomDomain:async(r,i)=>{const a=t().aiRefine;if(a.customDomains.length>=Hh)return null;const o=r.trim().slice(0,g0);if(!o)return null;const l={id:`${h0}${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,name:o,keywords:i},[c]=rx([l]);if(!c)return null;const u={...a,customDomains:[...a.customDomains,c]};return e({aiRefine:u}),await n({aiRefine:u}),c},updateCustomDomain:async(r,i)=>{const a=t().aiRefine,o=a.customDomains.findIndex(p=>p.id===r);if(o<0)return;const s=a.customDomains[o],l={id:s.id,name:i.name!==void 0?i.name:s.name,keywords:i.keywords!==void 0?i.keywords:s.keywords},[c]=rx([l]);if(!c)return;const u=[...a.customDomains];u[o]=c;const d={...a,customDomains:u};e({aiRefine:d}),await n({aiRefine:d})},removeCustomDomain:async r=>{const i=t().aiRefine;if(!i.customDomains.some(l=>l.id===r))return;const a=i.customDomains.filter(l=>l.id!==r),o=i.selectedDomains.filter(l=>l!==r),s={...i,customDomains:a,selectedDomains:o};e({aiRefine:s}),await n({aiRefine:s})},setDictationMode:async r=>{const i={...t().dictation,mode:r};e({dictation:i}),await n({dictation:i})},setDictationLang:async r=>{const i={...t().dictation,lang:r};e({dictation:i}),await n({dictation:i})},addDictationProvider:async r=>{const i=t().dictation;if(i.customProviders.some(l=>l.id===r.id))return;const a=[...i.customProviders,{...r,verified:!1}],o=i.activeCustomProviderId??r.id,s={...i,customProviders:a,activeCustomProviderId:o};e({dictation:s}),await n({dictation:s})},updateDictationProvider:async(r,i)=>{const a=t().dictation,o="vendor"in i||"tencentAppId"in i||"tencentRegion"in i||"tencentCosBucket"in i,s=a.customProviders.map(c=>c.id===r?{...c,...i,...o?{verified:!1}:{}}:c),l={...a,customProviders:s};e({dictation:l}),await n({dictation:l})},removeDictationProvider:async r=>{const i=t().dictation,a=i.customProviders.filter(l=>l.id!==r),o=i.activeCustomProviderId===r?a[0]?.id??null:i.activeCustomProviderId,s={...i,customProviders:a,activeCustomProviderId:o};e({dictation:s}),await n({dictation:s});try{await E6(r)}catch(l){console.warn("[dictation] deleteDictationProviderKey failed:",l)}},setActiveDictationProvider:async r=>{const i=t().dictation;if(!(r===null||i.customProviders.some(s=>s.id===r)))return;const o={...i,activeCustomProviderId:r};e({dictation:o}),await n({dictation:o})},setDictationProviderVerified:async(r,i)=>{const a=t().dictation,o=a.customProviders.map(l=>l.id===r?{...l,verified:i}:l),s={...a,customProviders:o};e({dictation:s}),await n({dictation:s})},setDictationStreamingInject:async r=>{const i={...t().dictation,streamingInject:r};e({dictation:i}),await n({dictation:i})},setDictationClipboardCopy:async r=>{const i={...t().dictation,clipboardCopy:r};e({dictation:i}),await n({dictation:i})},setShowHints:async r=>{const i={...t().ui,showHints:r};e({ui:i}),await n({ui:i})},markHintSuccess:async r=>{const i=t().ui,a=i.hints[r]??Fc(),o={...a,successCount:a.successCount+1,dismissed:a.dismissed},s={...i,hints:{...i.hints,[r]:o}};e({ui:s}),await n({ui:s})},markHintSeenForApp:async(r,i)=>{if(!i)return;const a=t().ui,o=a.hints[r]??Fc(),s=o.seenAppIds??[];if(s.includes(i))return;const l={...o,seenAppIds:[...s,i]},c={...a,hints:{...a.hints,[r]:l}};e({ui:c}),await n({ui:c})},dismissHint:async r=>{const i=t().ui,a=i.hints[r]??Fc();if(a.dismissed)return;const o={...i,hints:{...i.hints,[r]:{...a,dismissed:!0}}};e({ui:o}),await n({ui:o})},resetHint:async r=>{const i=t().ui,a={...i,hints:{...i.hints,[r]:Fc()}};e({ui:a}),await n({ui:a})},resetAllHints:async()=>{const i={...t().ui,hints:$l()};e({ui:i}),await n({ui:i})}}});function wA(e){if(e.mode!=="custom"||!e.activeCustomProviderId)return!1;const t=e.customProviders.find(n=>n.id===e.activeCustomProviderId);return!!t&&t.verified!==!0}function kA(e){if(e.mode!=="custom"||!e.activeCustomProviderId)return!1;const t=e.customProviders.find(n=>n.id===e.activeCustomProviderId);return!!t&&t.verified!==!0}const ys={recordingControls:{id:"recordingControls",category:"action",threshold:3,autoHideMs:5e3,showDelayMs:500,i18nKeyPrefix:"recordingControls",devDescription:"录音中:松开结束 / ESC 取消"},resultActions:{id:"resultActions",category:"action",threshold:3,autoHideMs:6e3,showDelayMs:300,i18nKeyPrefix:"resultActions",devDescription:"结果态:复制 / 编辑 / 润色 / 翻译"},firstResultConfirm:{id:"firstResultConfirm",category:"confirm",threshold:1,autoHideMs:12e3,showDelayMs:0,i18nKeyPrefix:"firstResultConfirm",devDescription:"全局首次结果:✓ 已输入 · 修正"},appFirstInject:{id:"appFirstInject",category:"action",threshold:1,autoHideMs:2e3,showDelayMs:0,i18nKeyPrefix:"appFirstInject",devDescription:"每个目标 app 首次成功注入:2s 轻提示"}};function xu(e,t){if(!e||!e.showHints)return!1;const n=ys[t];if(!n)return!1;const r=e.hints[t]??{successCount:0,dismissed:!1};return!(r.dismissed||r.successCount>=n.threshold)}function kW(e,t,n){if(!e||!e.showHints||!n)return!1;const r=e.hints[t]??{dismissed:!1};return r.dismissed?!1:!(r.seenAppIds??[]).includes(n)}function _A(e,t,n={}){It("overlay","openspeech://overlay-toast",{kind:e,title:t,description:n.description,action:n.action,durationMs:n.durationMs}).catch(()=>{})}async function b0(e,t){await W("plugin:opener|open_url",{url:e,with:t})}const _W=fi().label==="main",SW=200,Ws=()=>{_W&&W("show_main_window_cmd").catch(e=>{console.warn("[ui] show_main_window_cmd failed:",e)})};let Us=null;const qe=mi((e,t)=>({loginOpen:!1,settingsOpen:!1,settingsInitialTab:"GENERAL",noInternetOpen:!1,feedbackOpen:!1,feedbackReturnToSettingsTab:null,statsOpen:!1,statsFocusMetric:"duration",pendingUpdate:null,hotkeyConflicts:[],pendingAuthRecoveryHistoryId:null,authRecoveryDialog:{open:!1,status:"pending",historyId:null},setLoginOpen:n=>e({loginOpen:n}),setSettingsOpen:n=>e({settingsOpen:n}),setNoInternetOpen:n=>e({noInternetOpen:n}),setFeedbackOpen:n=>e(r=>{if(n)return{feedbackOpen:!0};const i=r.feedbackReturnToSettingsTab;return i?{feedbackOpen:!1,feedbackReturnToSettingsTab:null,settingsOpen:!0,settingsInitialTab:i}:{feedbackOpen:!1}}),setStatsOpen:n=>e({statsOpen:n}),openStats:n=>{t().statsOpen||(Ws(),e({statsOpen:!0,statsFocusMetric:n??"duration"}))},setPendingUpdate:n=>e({pendingUpdate:n}),openLogin:()=>{t().loginOpen||(Ws(),e({loginOpen:!0}))},openSettings:(n="GENERAL")=>{t().settingsOpen||(Ws(),e({settingsOpen:!0,settingsInitialTab:n}))},openNoInternet:()=>{t().noInternetOpen||(Ws(),e({noInternetOpen:!0}))},openFeedback:n=>{t().feedbackOpen||(Ws(),n?.returnToSettingsTab?e({settingsOpen:!1,feedbackOpen:!0,feedbackReturnToSettingsTab:n.returnToSettingsTab}):e({feedbackOpen:!0,feedbackReturnToSettingsTab:null}))},pushHotkeyConflict:n=>{e(r=>({hotkeyConflicts:[...r.hotkeyConflicts.filter(a=>a.id!==n.id),n]})),Us==null&&(Us=window.setTimeout(()=>{Us=null,Ws()},SW))},clearHotkeyConflict:n=>{e(r=>({hotkeyConflicts:r.hotkeyConflicts.filter(i=>i.id!==n)}))},clearHotkeyConflicts:()=>{Us!=null&&(window.clearTimeout(Us),Us=null),e({hotkeyConflicts:[]})},setPendingAuthRecoveryHistoryId:n=>e({pendingAuthRecoveryHistoryId:n}),setAuthRecoveryDialog:n=>e({authRecoveryDialog:n}),closeAuthRecoveryDialog:()=>e({pendingAuthRecoveryHistoryId:null,authRecoveryDialog:{open:!1,status:"pending",historyId:null}})}));let h_=null,m_=null,g_=null;async function y_(){h_||(h_=await Le("openspeech://openloaf-login",e=>{const t=e.payload;lt.getState().currentLoginState===t.state&&(t.status==="success"?(lt.setState({user:t.user,isAuthenticated:!0,loginStatus:"idle",loginError:null,currentLoginState:null}),lt.getState().fetchProfile(),lt.getState().fetchRealtimeAsrPricing()):lt.setState({loginStatus:"error",loginError:t.message,currentLoginState:null}))})),m_||(m_=await Le("openspeech://openloaf-auth-lost",()=>{lt.setState({user:null,profile:null,isAuthenticated:!1}),qe.getState().openLogin()})),g_||(g_=await Le("openspeech://openloaf-restored",e=>{lt.setState({user:e.payload,isAuthenticated:!0,loaded:!0}),lt.getState().fetchProfile(),lt.getState().fetchRealtimeAsrPricing()}))}const lt=mi((e,t)=>({user:null,profile:null,realtimeAsrCreditsPerMinute:null,isAuthenticated:!1,loaded:!1,loginStatus:"idle",loginError:null,currentLoginState:null,lastProvider:null,init:async()=>{await y_();try{const[n,r]=await Promise.all([W("openloaf_current_user"),W("openloaf_is_authenticated")]);e({user:n,isAuthenticated:r,loaded:!0}),r&&(t().fetchProfile(),t().fetchRealtimeAsrPricing())}catch{e({loaded:!0})}typeof window<"u"&&window.addEventListener("online",()=>{W("openloaf_try_recover").catch(()=>{})})},startLogin:async n=>{const{loginStatus:r}=t();if(r==="opening"||r==="polling")return;await y_(),e({loginStatus:"opening",loginError:null,lastProvider:n});let i;try{i=await W("openloaf_start_login",{provider:n})}catch(a){e({loginStatus:"error",loginError:typeof a=="string"?a:String(a)});return}e({currentLoginState:i.state});try{await b0(i.loginUrl)}catch(a){await W("openloaf_cancel_login",{loginState:i.state}).catch(()=>{}),e({loginStatus:"error",loginError:typeof a=="string"?a:String(a),currentLoginState:null});return}e({loginStatus:"polling"})},retryLogin:async()=>{const{lastProvider:n}=t();n&&await t().startLogin(n)},cancelLogin:async()=>{const{currentLoginState:n}=t();n&&await W("openloaf_cancel_login",{loginState:n}).catch(()=>{}),e({loginStatus:"idle",loginError:null,currentLoginState:null})},logout:async()=>{await W("openloaf_logout"),e({user:null,profile:null,realtimeAsrCreditsPerMinute:null,isAuthenticated:!1})},fetchProfile:async()=>{if(t().isAuthenticated)try{const n=await W("openloaf_fetch_profile");e({profile:n})}catch{}},fetchRealtimeAsrPricing:async()=>{if(t().isAuthenticated)try{const n=await W("openloaf_fetch_realtime_asr_pricing"),r=n>0?n:null;console.info("[auth] realtime ASR pricing (V3 realtimeAsrLlm proxy):",n,"credits/min →",r??"ignored"),e({realtimeAsrCreditsPerMinute:r})}catch(n){console.warn("[auth] fetchRealtimeAsrPricing failed:",n)}}}));class dp{constructor(t){this.path=t}static async load(t){const n=await W("plugin:sql|load",{db:t});return new dp(n)}static get(t){return new dp(t)}async execute(t,n){const[r,i]=await W("plugin:sql|execute",{db:this.path,query:t,values:n??[]});return{lastInsertId:i,rowsAffected:r}}async select(t,n){return await W("plugin:sql|select",{db:this.path,query:t,values:n??[]})}async close(t){return await W("plugin:sql|close",{db:t})}}const EW="sqlite:openspeech.db";let yg=null;function Yt(){return yg||(yg=dp.load(EW).then(async e=>{try{await e.execute("PRAGMA foreign_keys = ON")}catch(t){console.warn("[db] enable foreign_keys failed:",t)}return e})),yg}function _o(){const e=new Date,t=(i,a=2)=>String(i).padStart(a,"0"),n=`${e.getFullYear()}${t(e.getMonth()+1)}${t(e.getDate())}${t(e.getHours())}${t(e.getMinutes())}${t(e.getSeconds())}`+t(e.getMilliseconds(),3),r=Math.floor(Math.random()*36**4).toString(36).padStart(4,"0");return`${n}-${r}`}function CW(e){let t=[];if(e.aliases)try{const n=JSON.parse(e.aliases);Array.isArray(n)&&(t=n.filter(r=>typeof r=="string"))}catch{t=[]}return{id:e.id,term:e.term,aliases:t,note:e.note??null,source:e.source,enabled:e.enabled===1,created_at:e.created_at,updated_at:e.updated_at,created_by:e.created_by}}function v_(e){if(e==null)return null;const t=e.trim();return t.length>0?t:null}const To=2e3,Vt=mi((e,t)=>({entries:[],loaded:!1,init:async()=>{t().loaded||(await t().reload(),e({loaded:!0}))},reload:async()=>{const r=await(await Yt()).select("SELECT id, term, aliases, note, source, enabled, created_at, updated_at, created_by FROM dictionary ORDER BY created_at DESC");e({entries:r.map(CW)})},add:async n=>{const r=n.term.trim().replace(/\s+/g," ");if(!r)throw new Error("term 不能为空");if(t().entries.length>=To)throw new Error(`词典已达上限 ${To} 条`);const i=await Yt(),a={id:_o(),term:r,aliases:n.aliases??[],note:v_(n.note),source:n.source??"manual",enabled:n.enabled??!0,created_at:Date.now(),updated_at:null,created_by:n.created_by??"manual"};return await i.execute("INSERT INTO dictionary (id, term, aliases, note, source, enabled, created_at, created_by) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)",[a.id,a.term,a.aliases.length?JSON.stringify(a.aliases):null,a.note,a.source,a.enabled?1:0,a.created_at,a.created_by]),e({entries:[a,...t().entries]}),a},update:async(n,r)=>{const i=t().entries.find(p=>p.id===n);if(!i)throw new Error(`dictionary entry not found: ${n}`);const a=r.term!==void 0?r.term.trim().replace(/\s+/g," "):i.term;if(!a)throw new Error("term 不能为空");const o=r.aliases!==void 0?r.aliases:i.aliases,s=r.note!==void 0?v_(r.note):i.note??null,l=r.enabled!==void 0?r.enabled:i.enabled,c=Date.now();await(await Yt()).execute("UPDATE dictionary SET term = $1, aliases = $2, note = $3, enabled = $4, updated_at = $5 WHERE id = $6",[a,o.length?JSON.stringify(o):null,s,l?1:0,c,n]);const d={...i,term:a,aliases:o,note:s,enabled:l,updated_at:c};return e({entries:t().entries.map(p=>p.id===n?d:p)}),d},remove:async n=>{await(await Yt()).execute("DELETE FROM dictionary WHERE id = $1",[n]),e({entries:t().entries.filter(i=>i.id!==n)})},removeMany:async n=>{if(n.length===0)return 0;const r=await Yt(),i=n.map((o,s)=>`$${s+1}`).join(", ");await r.execute(`DELETE FROM dictionary WHERE id IN (${i})`,n);const a=new Set(n);return e({entries:t().entries.filter(o=>!a.has(o.id))}),n.length},clearAll:async()=>{await(await Yt()).execute("DELETE FROM dictionary"),e({entries:[]})}})),jW=200,NW=30,x_=8;async function PW(e){if(e.edited===null)return;const t=e.baseline.trim(),n=e.edited.trim();if(!t||!n||t===n)return;if(!lt.getState().isAuthenticated){console.debug("[dict-agent] skip: not authenticated");return}const i=Vt.getState().entries.filter(d=>d.enabled).slice(0,jW),a=TW(e.recentHistory??[],t,n),o={baseline:t,edited:n,dictionary:i.map(d=>({id:d.id,term:d.term,aliases:d.aliases,note:d.note??null})),historyId:e.historyId,...a.length>0?{recentCorrections:a}:{}};a.length>0&&console.info("[dict-agent] recentCorrections=%o (history=%d entries)",a,(e.recentHistory??[]).length);let s;try{s=await W("analyze_dictionary_correction",{input:o})}catch(d){console.warn("[dict-agent] invoke failed:",d);return}let l;try{l=JSON.parse(s.plan)}catch(d){console.warn("[dict-agent] plan JSON parse failed:",d,s.plan);return}const c=Array.isArray(l.decisions)?l.decisions:[];if(console.info("[dict-agent] plan decisions=%o (model=%s, history=%s)",c,s.model,e.historyId),c.length===0){b_(t,n);return}let u=!1;for(const d of c)try{const p=Vt.getState().entries,h=await OW(d,p);console.info("[dict-agent] applied:",d.action,h),h&&(u=!0,SA(h))}catch(p){console.warn("[dict-agent] apply decision failed:",d,p)}!u&&c.every(d=>d.action==="noop")&&b_(t,n)}function ix(e,t){const n=e,r=t;if(!n||!r||n===r)return null;const i=n.length,a=r.length;let o=0;const s=Math.min(i,a);for(;o<s&&n[o]===r[o];)o++;let l=0;const c=Math.min(i-o,a-o);for(;l<c&&n[i-1-l]===r[a-1-l];)l++;const u=n.slice(o,i-l),d=r.slice(o,a-l);return!u||!d||u.length>x_||d.length>x_?null:{wrong:u,correct:d}}function TW(e,t,n){const r=new Map,i=o=>{const s=`${o.wrong}\0${o.correct}`,l=r.get(s);l?l.count+=1:r.set(s,{...o,count:1})};for(const o of e.slice(0,NW)){const s=(o.text_edited??"").trim();if(!s)continue;const l=(o.refined_text??o.text??"").trim();if(!l||l===s)continue;const c=ix(l,s);c&&i(c)}const a=ix(t,n);return a&&i(a),[...r.values()].filter(o=>o.count>=1).sort((o,s)=>s.count-o.count).slice(0,5)}function b_(e,t){const n=ix(e,t);if(!n)return;const{wrong:r,correct:i}=n,a=Vt.getState().entries,o=i.toLowerCase();if(a.some(c=>c.term.toLowerCase()===o))return;const s=te.t("pages:history.edit.toast.dict_noop_title",{wrong:r,correct:i,defaultValue:`AI 没把"${r}"→"${i}"识别为需要入库的纠错`}),l=te.t("pages:history.edit.toast.dict_noop_action",{defaultValue:"告诉它入库"});me(s,{duration:6e3,action:{label:l,onClick:()=>{AW(r,i)}}})}async function AW(e,t){try{if(Vt.getState().entries.length>=To){console.warn("[dict-agent] dict full, manual insert skipped");return}const r=await Vt.getState().add({term:t,aliases:[e],note:"用户手动确认入库",source:"manual",enabled:!0,created_by:"manual"});SA({kind:"added",term:r.term})}catch(n){console.warn("[dict-agent] manual insert failed:",n)}}async function OW(e,t){switch(e.action){case"noop":return null;case"add":{const n=e.term?.trim().replace(/\s+/g," ");if(!n)return null;const r=n.toLowerCase(),i=e.reason?.trim()||null,a=t.find(l=>l.term.toLowerCase()===r);if(a){const l=(e.aliases??[]).map(h=>h.trim()).filter(h=>h&&h.toLowerCase()!==r),c=w_(a.aliases,l),u=c.length!==a.aliases.length,d=!!i&&!(a.note??"").trim();if(!u&&!d)return null;const p={};return u&&(p.aliases=c),d&&(p.note=i),await Vt.getState().update(a.id,p),{kind:"updated",term:a.term}}if(t.length>=To)return console.warn("[dict-agent] dict full, skip add:",n),null;const o=(e.aliases??[]).map(l=>l.trim()).filter(l=>l&&l.toLowerCase()!==r);return{kind:"added",term:(await Vt.getState().add({term:n,aliases:o,note:i,source:"auto",enabled:!0,created_by:"agent"})).term}}case"update":{if(!e.id)return null;const n=t.find(c=>c.id===e.id);if(!n)return null;const r=(e.addAliases??[]).map(c=>c.trim()).filter(c=>c&&c.toLowerCase()!==n.term.toLowerCase()),i=e.term&&e.term.trim()&&e.term.trim()!==n.term?e.term.trim():null,a=e.reason?.trim()||null,o=a!==null&&a!==(n.note??null);if(r.length===0&&!i&&!o)return null;const s=r.length?w_(n.aliases,r):n.aliases,l={};return s.length!==n.aliases.length&&(l.aliases=s),i&&(l.term=i),o&&(l.note=a),Object.keys(l).length===0?null:(await Vt.getState().update(n.id,l),{kind:"updated",term:i??n.term})}case"delete":{if(!e.id)return null;const n=t.find(r=>r.id===e.id);return n?(await Vt.getState().remove(n.id),{kind:"removed",term:n.term}):null}default:return console.warn("[dict-agent] unknown action:",e.action),null}}function SA(e){const t=`pages:history.edit.toast.dict_${e.kind}`,n=te.t(t,{term:e.term}),r=te.t("pages:history.edit.toast.dict_hint");me(n,{description:r,duration:4e3,style:{background:"var(--te-accent)",color:"var(--te-accent-fg)",borderColor:"var(--te-accent)"},classNames:{description:"!text-current opacity-80"}}),_A("info",n,{description:r,durationMs:4e3})}function w_(e,t){const n=new Set(e.map(i=>i.toLowerCase())),r=[...e];for(const i of t){const a=i.toLowerCase();n.has(a)||(n.add(a),r.push(i))}return r}async function MW(){try{return(await W("audio_list_input_devices")??[]).map(t=>({name:t.name,isDefault:t.is_default}))}catch(e){return console.warn("[audio] list devices failed:",e),[]}}async function w0(e){try{return await W("audio_level_start",{deviceName:e}),!0}catch(t){return console.warn("[audio] start failed:",t),!1}}async function kl(){try{await W("audio_level_stop")}catch(e){console.warn("[audio] stop failed:",e)}}function k0(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}async function RW(e){await W("audio_recording_start",{id:e,date:k0()})}async function EA(){return await W("audio_recording_stop")}async function CA(){try{await W("audio_recording_cancel")}catch(e){console.warn("[audio] cancel recording failed:",e)}}async function jA(e){return await W("audio_recording_load",{audioPath:e})}async function IW(e,t){await W("audio_recording_export",{audioPath:e,destPath:t})}async function pl(e){await W("audio_recording_delete",{audioPath:e})}async function DW(e={}){await W("stt_start",{lang:e.lang,mode:e.mode,provider:e.provider})}async function LW(){return await W("stt_finalize")}async function bu(){try{await W("stt_cancel")}catch(e){console.warn("[stt] cancel failed:",e)}}const $W=15e4;async function _0(e){const t=W("transcribe_recording_file",{audioPath:e.audioPath,durationMs:e.durationMs,lang:e.lang,provider:e.provider,systemPrompt:e.systemPrompt});let n=null;const r=new Promise((i,a)=>{n=setTimeout(()=>a(new Error("transcribe_timeout")),$W)});try{return await Promise.race([t,r])}finally{n!==null&&clearTimeout(n)}}function S0(){return Vt.getState().entries.filter(e=>e.enabled).map(e=>e.term.trim()).filter(e=>e.length>0)}function zW(){return Vt.getState().entries.filter(e=>e.enabled).map(e=>{const t=e.term.trim();if(!t)return null;const n=(e.aliases??[]).map(i=>i.trim()).filter(i=>i.length>0),r=(e.note??"").trim();return{term:t,aliases:n,note:r.length>0?r:null}}).filter(e=>e!==null)}const k_=["ChatGPT","Claude Code","Anthropic","OpenAI","Gemini","Sora","Whisper","Copilot","GitHub Copilot","Cursor","Windsurf","Devin","Replit","Lovable","Bolt.new","v0","Trae","Midjourney","NotebookLM","Perplexity","Grok","xAI","DeepSeek","豆包","Kimi","通义千问","夸克","MCP","vibe coding"],FW={programming:["API","REST","GraphQL","JSON","YAML","XML","OAuth","JWT","CORS","Git","GitHub","Docker","Kubernetes","K8s","Redis","PostgreSQL","MongoDB","MySQL","React","Vue","TypeScript","JavaScript","Python","Rust","Webhook","Vite","npm","CI/CD","DevOps","Next.js"],ai_ml:["Transformer","LLM","GPT","Claude","Gemini","PyTorch","TensorFlow","Hugging Face","CUDA","GPU","TPU","RLHF","RAG","embedding","fine-tuning","tokenizer","diffusion","GAN","CNN","RNN","LSTM","BERT","MoE","LoRA","softmax","ReLU","backpropagation","gradient descent","overfitting","prompt engineering"],cybersecurity:["XSS","CSRF","SQL injection","DDoS","TLS","SSL","HTTPS","VPN","MITM","RCE","CVE","CVSS","phishing","ransomware","0-day","WAF","IDS","IPS","OWASP","MFA","2FA","AES","RSA","SHA-256","ECDSA","SOC 2","ISO 27001","GDPR","pentest","zero trust"],design:["Figma","Sketch","Photoshop","Illustrator","Procreate","wireframe","mockup","prototype","UI","UX","Material Design","Tailwind","shadcn","Framer","Webflow","Canva","InDesign","After Effects","vector","raster","RGB","CMYK","DPI","kerning","leading","tracking","auto-layout","design system","spec","Figjam"],film_production:["DaVinci Resolve","Premiere Pro","Final Cut Pro","After Effects","Avid","LUT","RAW","ProRes","H.264","H.265","HEVC","BMPCC","ARRI","RED","Sony FX","S-log","C-log","color grading","B-roll","VFX","DIT","CGI","rotoscope","keyframe","ACES","DNxHD","ProRes 422","rec.709","rec.2020","log footage"],photography:["Sony","Canon","Nikon","Fujifilm","Leica","RAW","JPEG","ISO","aperture","f-stop","shutter","EXIF","bokeh","HDR","Lightroom","Capture One","DSLR","mirrorless","OVF","EVF","M4/3","APS-C","full-frame","tilt-shift","macro","TTL","white balance","ND filter","polarizer","stop down"],marketing:["SEO","SEM","CTR","CPC","CPM","ROI","ROAS","KPI","OKR","GTM","B2B","B2C","DTC","MQL","CAC","LTV","ARR","MRR","DAU","MAU","retention","churn","funnel","GA4","UTM","A/B test","HubSpot","Mailchimp","PMF","NPS"],finance:["IPO","ETF","ROI","ROE","EBITDA","EPS","P/E","PEG","DCF","M&A","VC","PE","LBO","REIT","FX","Forex","BTC","ETH","DeFi","NFT","stablecoin","USDT","S&P 500","Nasdaq","VIX","FCF","WACC","alpha","beta","yield"],law:["NDA","MOU","LOI","IP","IPR","M&A","JV","LLC","LLP","GDPR","CCPA","HIPAA","DMCA","TOS","EULA","SLA","force majeure","due diligence","pro bono","民法典","刑法","合同法","知识产权","商标权","著作权","专利权","反垄断","尽职调查","保密协议","仲裁"],academic:["DOI","arXiv","ORCID","PubMed","Scopus","JCR","SCI","SSCI","IEEE","ACM","ACL","NeurIPS","ICML","CVPR","ICLR","Nature","Science","Cell","h-index","impact factor","abstract","citation","BibTeX","LaTeX","Overleaf","Zotero","EndNote","preprint","peer review","ethics review"],medicine:["CT","MRI","PET","ECG","EEG","ICU","ER","BMI","BP","HbA1c","LDL","HDL","eGFR","ALT","AST","TSH","PSA","HPV","HIV","PCR","DNA","RNA","mRNA","CPR","AED","ICD-10","DSM-5","COVID-19","vaccine","antibody"],tcm:["黄芪","党参","当归","茯苓","白术","白芍","川芎","桂枝","麻黄","柴胡","黄连","黄芩","大黄","甘草","人参","枸杞","阴阳","五行","气血","津液","经络","穴位","针灸","推拿","艾灸","风寒","湿热","痰饮","瘀血","望闻问切"],psychology:["PTSD","OCD","ADHD","BPD","MDD","CBT","DBT","EMDR","ACT","DSM-5","ICD-11","IQ","EQ","MBTI","Big Five","Freud","Jung","Adler","Skinner","Pavlov","Erikson","Maslow","Piaget","Rogers","Beck","Ellis","ego","id","superego","neuroplasticity"],engineering:["CAD","CAM","CNC","PLC","FEA","FEM","BOM","MOQ","ERP","MES","QC","QA","ISO 9001","GD&T","CFD","MRP","OEM","ODM","JIT","Kaizen","Six Sigma","5S","TPM","lean","Kanban","Scrum","Gantt","RFQ","RFP","DFM"],automotive:["EV","HEV","PHEV","BEV","FCEV","ICE","ABS","ESP","TCS","ADAS","L2","L3","L4","LiDAR","OTA","VIN","RPM","MPG","BMS","ECU","OBD","CAN bus","torque","horsepower","NEDC","WLTP","EPA","Tesla","BYD","regen"],maritime:["IMO","SOLAS","MARPOL","MLC","ISPS","AIS","ECDIS","GMDSS","ARPA","EPIRB","SART","DWT","GT","NT","TEU","FEU","LNG","LPG","VLCC","ULCC","FPSO","Ro-Ro","OSV","B/L","ETA","ETD","BDI","P&I","knot","starboard"]},NA={os:"",arch:"",hostname:"",deviceName:"",username:""};let ax=NA;async function BW(){try{const e=await W("get_platform_info");ax={os:e.os??"",arch:e.arch??"",hostname:e.hostname??"",deviceName:e.deviceName??"",username:e.username??""}}catch(e){console.warn("[machineInfo] load failed:",e),ax=NA}}function HW(){return ax}const E0={"zh-CN":`<role>
735
735
  你是语音识别助手。任务:识别音频,输出**轻清洗后**的转写——还原用户说的所有信息,但去掉纯口语噪声。
736
736
  </role>
737
737