sh3-server 0.7.5 → 0.8.2

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.
Files changed (46) hide show
  1. package/app/assets/index-Cb-zoqb1.js +17 -0
  2. package/app/assets/index-Cb-zoqb1.js.map +1 -0
  3. package/app/assets/index-DPcN5Lor.css +1 -0
  4. package/app/index.html +2 -2
  5. package/dist/auth.d.ts +10 -3
  6. package/dist/auth.js +14 -22
  7. package/dist/caller.d.ts +16 -0
  8. package/dist/caller.js +54 -0
  9. package/dist/cli.js +9 -7
  10. package/dist/fs-backend.d.ts +10 -0
  11. package/dist/fs-backend.js +105 -0
  12. package/dist/index.js +30 -12
  13. package/dist/keys.d.ts +33 -19
  14. package/dist/keys.js +172 -49
  15. package/dist/packages.d.ts +23 -3
  16. package/dist/packages.js +67 -6
  17. package/dist/routes/admin.js +7 -3
  18. package/dist/routes/docs.d.ts +2 -0
  19. package/dist/routes/docs.js +30 -0
  20. package/dist/routes/keys.d.ts +21 -0
  21. package/dist/routes/keys.js +164 -0
  22. package/dist/scope.d.ts +9 -0
  23. package/dist/scope.js +25 -0
  24. package/dist/settings.d.ts +13 -0
  25. package/dist/settings.js +33 -0
  26. package/dist/shard-router.d.ts +9 -2
  27. package/dist/shard-router.js +58 -29
  28. package/dist/shell-shard/index.d.ts +6 -1
  29. package/dist/shell-shard/index.js +3 -1
  30. package/dist/shell-shard/session-manager.d.ts +2 -1
  31. package/dist/shell-shard/session-manager.js +15 -2
  32. package/dist/shell-shard/ws.js +14 -14
  33. package/dist/tenant-fs/http.d.ts +15 -0
  34. package/dist/tenant-fs/http.js +109 -0
  35. package/dist/tenant-fs/index.d.ts +4 -0
  36. package/dist/tenant-fs/index.js +4 -0
  37. package/dist/tenant-fs/paths.d.ts +23 -0
  38. package/dist/tenant-fs/paths.js +51 -0
  39. package/dist/tenant-fs/resolve.d.ts +16 -0
  40. package/dist/tenant-fs/resolve.js +48 -0
  41. package/dist/tenant-fs/session-required.d.ts +11 -0
  42. package/dist/tenant-fs/session-required.js +19 -0
  43. package/package.json +2 -2
  44. package/app/assets/index-25fXNyG3.js +0 -12
  45. package/app/assets/index-25fXNyG3.js.map +0 -1
  46. package/app/assets/index-BcQ1cruS.css +0 -1
@@ -0,0 +1,17 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const a of s)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const a={};return s.integrity&&(a.integrity=s.integrity),s.referrerPolicy&&(a.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?a.credentials="include":s.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(s){if(s.ep)return;s.ep=!0;const a=n(s);fetch(s.href,a)}})();const hd=1,pd=2,Qo=4,gd=8,md=16,_d=1,el=4,yd=8,bd=16,wd=1,kd=2,Sd=4,Ga=1,tl=2,Ed=4,xd=8,Ss="[",Es="[!",Xi="[?",xs="]",yn={},be=Symbol(),at=Symbol("filename"),$n=Symbol("hmr"),nl="http://www.w3.org/1999/xhtml",Cr="http://www.w3.org/2000/svg",Ya="http://www.w3.org/1998/Math/MathML",rl="@attach",sl=!1;var Xn=Array.isArray,Id=Array.prototype.indexOf,Un=Array.prototype.includes,Is=Array.from,as=Object.keys,bn=Object.defineProperty,It=Object.getOwnPropertyDescriptor,al=Object.getOwnPropertyDescriptors,il=Object.prototype,Ad=Array.prototype,As=Object.getPrototypeOf,Ji=Object.isExtensible,Td=Object.prototype.hasOwnProperty;function Dn(e){return typeof e=="function"}const it=()=>{};function Zi(e){return typeof e?.then=="function"}function Cd(e){return e()}function ba(e){for(var t=0;t<e.length;t++)e[t]()}function ol(){var e,t,n=new Promise((r,s)=>{e=r,t=s});return{promise:n,resolve:e,reject:t}}function Rd(e,t,n=!1){return e===void 0?n?t():t:e}function ll(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}function $d(e,t){var n={};for(var r in e)t.includes(r)||(n[r]=e[r]);for(var s of Object.getOwnPropertySymbols(e))Object.propertyIsEnumerable.call(e,s)&&!t.includes(s)&&(n[s]=e[s]);return n}const je=2,wn=4,Rr=8,Xa=1<<24,At=16,Ct=32,Gt=64,wa=128,_t=512,$e=1024,Me=2048,Rt=4096,Ke=8192,Qe=16384,Xt=32768,ka=1<<25,$t=65536,yr=1<<17,cl=1<<18,cn=1<<19,ul=1<<20,Mt=1<<25,kn=65536,Sa=1<<21,Bn=1<<22,nn=1<<23,Ve=Symbol("$state"),Ts=Symbol("legacy props"),Dd=Symbol(""),Pd=Symbol("proxy path"),Ld=Symbol("hmr anchor"),Nt=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Tn=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),dl=1,$r=3,Jt=8,fl=11;function vl(e){throw new Error("https://svelte.dev/e/experimental_async_required")}function Nd(){throw new Error("https://svelte.dev/e/invalid_default_snippet")}function Qi(){throw new Error("https://svelte.dev/e/invalid_snippet_arguments")}function Jn(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Od(){throw new Error("https://svelte.dev/e/missing_context")}function Md(){throw new Error("https://svelte.dev/e/snippet_without_render_tag")}function jd(e){throw new Error("https://svelte.dev/e/store_invalid_shape")}function zd(){throw new Error("https://svelte.dev/e/svelte_element_invalid_this_value")}function qd(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Vd(e,t){throw new Error("https://svelte.dev/e/component_api_changed")}function Ud(e,t){throw new Error("https://svelte.dev/e/component_api_invalid_new")}function Bd(e,t,n){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Fd(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Hd(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Kd(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Wd(){throw new Error("https://svelte.dev/e/effect_pending_outside_reaction")}function Gd(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Yd(){throw new Error("https://svelte.dev/e/fork_discarded")}function Xd(){throw new Error("https://svelte.dev/e/fork_timing")}function Jd(){throw new Error("https://svelte.dev/e/get_abort_signal_outside_reaction")}function Zd(){throw new Error("https://svelte.dev/e/hydration_failed")}function hl(e){throw new Error("https://svelte.dev/e/lifecycle_legacy_only")}function Qd(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function ef(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function tf(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function nf(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function rf(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}function sf(e,t){console.warn("https://svelte.dev/e/assignment_value_stale")}function af(e,t){console.warn("https://svelte.dev/e/binding_property_non_reactive")}function of(e){console.warn("https://svelte.dev/e/console_log_state")}function lf(){console.warn("https://svelte.dev/e/derived_inert")}function cf(e,t){console.warn("https://svelte.dev/e/event_handler_invalid")}function uf(e){console.warn("https://svelte.dev/e/hydratable_missing_but_expected")}function Dr(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function df(e,t,n,r){console.warn("https://svelte.dev/e/ownership_invalid_binding")}function ff(e,t,n,r){console.warn("https://svelte.dev/e/ownership_invalid_mutation")}function vf(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function pl(e){console.warn("https://svelte.dev/e/state_proxy_equality_mismatch")}function hf(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let B=!1;function me(e){B=e}let X;function fe(e){if(e===null)throw Dr(),yn;return X=e}function Ge(){return fe(dt(X))}function p(e){if(B){if(dt(X)!==null)throw Dr(),yn;X=e}}function pf(e){B&&(X=e.content)}function Wt(e=1){if(B){for(var t=e,n=X;t--;)n=dt(n);X=n}}function Sn(e=!0){for(var t=0,n=X;;){if(n.nodeType===Jt){var r=n.data;if(r===xs){if(t===0)return n;t-=1}else(r===Ss||r===Es||r[0]==="["&&!isNaN(Number(r.slice(1))))&&(t+=1)}var s=dt(n);e&&n.remove(),n=s}}function Ja(e){if(!e||e.nodeType!==Jt)throw Dr(),yn;return e.data}function gl(e){return e===this.v}function ml(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function _l(e){return!ml(e,this.v)}let gf=!1;function mf(e){console.warn("https://svelte.dev/e/dynamic_void_element_content")}const _f=[];function En(e,t=!1,n=!1){return Wr(e,new Map,"",_f,null,n)}function Wr(e,t,n,r,s=null,a=!1){if(typeof e=="object"&&e!==null){var i=t.get(e);if(i!==void 0)return i;if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(Xn(e)){var o=Array(e.length);t.set(e,o),s!==null&&t.set(s,o);for(var l=0;l<e.length;l+=1){var u=e[l];l in e&&(o[l]=Wr(u,t,n,r,null,a))}return o}if(As(e)===il){o={},t.set(e,o),s!==null&&t.set(s,o);for(var d of Object.keys(e))o[d]=Wr(e[d],t,n,r,null,a);return o}if(e instanceof Date)return structuredClone(e);if(typeof e.toJSON=="function"&&!a)return Wr(e.toJSON(),t,n,r,e)}if(e instanceof EventTarget)return e;try{return structuredClone(e)}catch{return e}}let Cn=null;function yl(e,t){const n=e.v;if(n===be)return;const r=yf(e),s=se,a=e.wv>s.wv||s.wv===0,i=a?"color: CornflowerBlue; font-weight: bold":"color: grey; font-weight: normal";if(console.groupCollapsed(e.label?`%c${r}%c ${e.label}`:`%c${r}%c`,i,a?"font-weight: normal":i,typeof n=="object"&&n!==null&&Ve in n?En(n,!0):n),r==="$derived"){const l=new Set(e.deps);for(const u of l)yl(u)}if(e.created&&console.log(e.created),a&&e.updated)for(const l of e.updated.values())l.error&&console.log(l.error);if(t)for(var o of t.traces)console.log(o);console.groupEnd()}function yf(e){return e.f&(je|Bn)?"$derived":e.label?.startsWith("$")?"store":"$state"}function bf(e,t){var n=Cn;try{Cn={entries:new Map,reaction:se};var r=performance.now(),s=t(),a=(performance.now()-r).toFixed(2),i=ye(e);if(!Mr())console.log(`${i} %cran outside of an effect (${a}ms)`,"color: grey");else if(Cn.entries.size===0)console.log(`${i} %cno reactive dependencies (${a}ms)`,"color: grey");else{console.group(`${i} %c(${a}ms)`,"color: grey");var o=Cn.entries;ye(()=>{for(const[l,u]of o)yl(l,u)}),Cn=null,console.groupEnd()}return s}finally{Cn=n}}function wf(e,t){return e.label=t,bl(e.v,t),e}function bl(e,t){return e?.[Pd]?.(t),e}function kf(e){const t=new Error,n=Sf();return n.length===0?null:(n.unshift(`
2
+ `),bn(t,"stack",{value:n.join(`
3
+ `)}),bn(t,"name",{value:e}),t)}function Sf(){const e=Error.stackTraceLimit;Error.stackTraceLimit=1/0;const t=new Error().stack;if(Error.stackTraceLimit=e,!t)return[];const n=t.split(`
4
+ `),r=[];for(let s=0;s<n.length;s++){const a=n[s],i=a.replaceAll("\\","/");if(a.trim()!=="Error"){if(a.includes("validate_each_keys"))return[];i.includes("svelte/src/internal")||i.includes("node_modules/.vite")||r.push(a)}}return r}let de=null;function Fn(e){de=e}let Gr=null;function Ef(e,t,n,r,s,a){const i=Gr;Gr={type:t,file:n[at],line:r,column:s,parent:i,...a};try{return e()}finally{Gr=i}}let Za=null;function eo(e){Za=e}function xf(){const e={};return[()=>(Sl(e)||Od(),wl(e)),t=>kl(e,t)]}function wl(e){return Cs().get(e)}function kl(e,t){return Cs().set(e,t),t}function Sl(e){return Cs().has(e)}function If(){return Cs()}function ne(e,t=!1,n){de={p:de,i:!1,c:null,e:null,s:e,x:null,r:J,l:null}}function re(e){var t=de,n=t.e;if(n!==null){t.e=null;for(var r of n)Jl(r)}return e!==void 0&&(t.x=e),t.i=!0,de=t.p,e??{}}function El(){return!0}function Cs(e){return de===null&&Jn(),de.c??=new Map(Af(de)||void 0)}function Af(e){let t=e.p;for(;t!==null;){const n=t.c;if(n!==null)return n;t=t.p}return null}let hn=[];function xl(){var e=hn;hn=[],ba(e)}function We(e){if(hn.length===0&&!qn){var t=hn;queueMicrotask(()=>{t===hn&&xl()})}hn.push(e)}function Tf(){for(;hn.length>0;)xl()}function Il(e){var t=J;if(t===null)return se.f|=nn,e;if(!(t.f&Xt)&&!(t.f&wn))throw e;jt(e,t)}function jt(e,t){for(;t!==null;){if(t.f&wa){if(!(t.f&Xt))throw e;try{t.b.error(e);return}catch(n){e=n}}t=t.parent}throw e}const Cf=-7169;function Se(e,t){e.f=e.f&Cf|t}function Qa(e){e.f&_t||e.deps===null?Se(e,$e):Se(e,Rt)}function Al(e){if(e!==null)for(const t of e)!(t.f&je)||!(t.f&kn)||(t.f^=kn,Al(t.deps))}function Tl(e,t,n){e.f&Me?t.add(e):e.f&Rt&&n.add(e),Al(e.deps),Se(e,$e)}function Cl(e,t,n){if(e==null)return t(void 0),it;const r=ye(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}function Rf(e){let t;return Cl(e,n=>t=n)(),t}let Ea=!1,lr=!1,xa=Symbol();function $f(e,t,n){const r=n[t]??={store:null,source:Ds(void 0),unsubscribe:it};if(r.store!==e&&!(xa in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=it;else{var s=!0;r.unsubscribe=Cl(e,a=>{s?r.source.v=a:_(r.source,a)}),s=!1}return e&&xa in n?Rf(e):c(r.source)}function Df(e,t,n){let r=n[t];return r&&r.store!==e&&(r.unsubscribe(),r.unsubscribe=it),e}function Rl(e,t){return Rs(e,t),t}function Pf(e,t){var n=e[t];n.store!==null&&Rl(n.store,n.source.v)}function Lf(){const e={};function t(){vt(()=>{for(var n in e)e[n].unsubscribe();bn(e,xa,{enumerable:!1,value:!0})})}return[e,t]}function Rs(e,t){Ea=!0;try{e.set(t)}finally{Ea=!1}}function Nf(e,t,n){return Rs(e,n),t}function Of(e,t,n=1){return Rs(e,t+n),t}function Mf(e,t,n=1){const r=t+n;return Rs(e,r),r}function jf(){lr=!0}function $l(e){var t=lr;try{return lr=!1,[e(),lr]}finally{lr=t}}const Ht=new Set;let ee=null,Fe=null,Ia=null,qn=!1,ia=!1,On=null,Yr=null;var to=0;let zf=1;class wt{id=zf++;current=new Map;previous=new Map;#e=new Set;#t=new Set;#n=new Set;#a=new Map;#r=new Map;#i=null;#s=[];#o=[];#l=new Set;#u=new Set;#c=new Map;#f=new Set;is_fork=!1;#h=!1;#v=new Set;#d(){return this.is_fork||this.#r.size>0}#_(){for(const r of this.#v)for(const s of r.#r.keys()){for(var t=!1,n=s;n.parent!==null;){if(this.#c.has(n)){t=!0;break}n=n.parent}if(!t)return!0}return!1}skip_effect(t){this.#c.has(t)||this.#c.set(t,{d:[],m:[]}),this.#f.delete(t)}unskip_effect(t,n=r=>this.schedule(r)){var r=this.#c.get(t);if(r){this.#c.delete(t);for(var s of r.d)Se(s,Me),n(s);for(s of r.m)Se(s,Rt),n(s)}this.#f.add(t)}#p(){if(to++>1e3&&(Ht.delete(this),qf()),!this.#d()){for(const o of this.#l)this.#u.delete(o),Se(o,Me),this.schedule(o);for(const o of this.#u)Se(o,Rt),this.schedule(o)}const t=this.#s;this.#s=[],this.apply();var n=On=[],r=[],s=Yr=[];for(const o of t)try{this.#m(o,n,r)}catch(l){throw Nl(o),l}if(ee=null,s.length>0){var a=wt.ensure();for(const o of s)a.schedule(o)}if(On=null,Yr=null,this.#d()||this.#_()){this.#g(r),this.#g(n);for(const[o,l]of this.#c)Ll(o,l)}else{this.#a.size===0&&Ht.delete(this),this.#l.clear(),this.#u.clear();for(const o of this.#e)o(this);this.#e.clear(),no(r),no(n),this.#i?.resolve()}var i=ee;if(this.#s.length>0){const o=i??=this;o.#s.push(...this.#s.filter(l=>!o.#s.includes(l)))}i!==null&&(Ht.add(i),i.#p())}#m(t,n,r){t.f^=$e;for(var s=t.first;s!==null;){var a=s.f,i=(a&(Ct|Gt))!==0,o=i&&(a&$e)!==0,l=o||(a&Ke)!==0||this.#c.has(s);if(!l&&s.fn!==null){i?s.f^=$e:a&wn?n.push(s):Zn(s)&&(a&At&&this.#u.add(s),In(s));var u=s.first;if(u!==null){s=u;continue}}for(;s!==null;){var d=s.next;if(d!==null){s=d;break}s=s.parent}}}#g(t){for(var n=0;n<t.length;n+=1)Tl(t[n],this.#l,this.#u)}capture(t,n,r=!1){t.v!==be&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&nn||(this.current.set(t,[n,r]),Fe?.set(t,n)),this.is_fork||(t.v=n)}activate(){ee=this}deactivate(){ee=null,Fe=null}flush(){try{ia=!0,ee=this,this.#p()}finally{to=0,Ia=null,On=null,Yr=null,ia=!1,ee=null,Fe=null,gn.clear()}}discard(){for(const t of this.#t)t(this);this.#t.clear(),this.#n.clear(),Ht.delete(this)}register_created_effect(t){this.#o.push(t)}#y(){for(const d of Ht){var t=d.id<this.id,n=[];for(const[f,[v,k]]of this.current){if(d.current.has(f)){var r=d.current.get(f)[0];if(t&&v!==r)d.current.set(f,[v,k]);else continue}n.push(f)}var s=[...d.current.keys()].filter(f=>!this.current.has(f));if(s.length===0)t&&d.discard();else if(n.length>0){if(t)for(const f of this.#f)d.unskip_effect(f,v=>{v.f&(At|Bn)?d.schedule(v):d.#g([v])});d.activate();var a=new Set,i=new Map;for(var o of n)Dl(o,s,a,i);i=new Map;var l=[...d.current.keys()].filter(f=>this.current.has(f)?this.current.get(f)[0]!==f:!0);for(const f of this.#o)!(f.f&(Qe|Ke|yr))&&ei(f,l,i)&&(f.f&(Bn|At)?(Se(f,Me),d.schedule(f)):d.#l.add(f));if(d.#s.length>0){d.apply();for(var u of d.#s)d.#m(u,[],[]);d.#s=[]}d.deactivate()}}for(const d of Ht)d.#v.has(this)&&(d.#v.delete(this),d.#v.size===0&&!d.#d()&&(d.activate(),d.#p()))}increment(t,n){let r=this.#a.get(n)??0;if(this.#a.set(n,r+1),t){let s=this.#r.get(n)??0;this.#r.set(n,s+1)}}decrement(t,n,r){let s=this.#a.get(n)??0;if(s===1?this.#a.delete(n):this.#a.set(n,s-1),t){let a=this.#r.get(n)??0;a===1?this.#r.delete(n):this.#r.set(n,a-1)}this.#h||r||(this.#h=!0,We(()=>{this.#h=!1,this.flush()}))}transfer_effects(t,n){for(const r of t)this.#l.add(r);for(const r of n)this.#u.add(r);t.clear(),n.clear()}oncommit(t){this.#e.add(t)}ondiscard(t){this.#t.add(t)}on_fork_commit(t){this.#n.add(t)}run_fork_commit_callbacks(){for(const t of this.#n)t(this);this.#n.clear()}settled(){return(this.#i??=ol()).promise}static ensure(){if(ee===null){const t=ee=new wt;ia||(Ht.add(ee),qn||We(()=>{ee===t&&t.flush()}))}return ee}apply(){{Fe=null;return}}schedule(t){if(Ia=t,t.b?.is_pending&&t.f&(wn|Rr|Xa)&&!(t.f&Xt)){t.b.defer_effect(t);return}for(var n=t;n.parent!==null;){n=n.parent;var r=n.f;if(On!==null&&n===J&&(se===null||!(se.f&je))&&!Ea)return;if(r&(Gt|Ct)){if(!(r&$e))return;n.f^=$e}}this.#s.push(n)}}function sn(e){var t=qn;qn=!0;try{var n;for(e&&(ee!==null&&!ee.is_fork&&ee.flush(),n=e());;){if(Tf(),ee===null)return n;ee.flush()}}finally{qn=t}}function qf(){try{Gd()}catch(e){jt(e,Ia)}}let Kt=null;function no(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&(Qe|Ke))&&Zn(r)&&(Kt=new Set,In(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&rc(r),Kt?.size>0)){gn.clear();for(const s of Kt){if(s.f&(Qe|Ke))continue;const a=[s];let i=s.parent;for(;i!==null;)Kt.has(i)&&(Kt.delete(i),a.push(i)),i=i.parent;for(let o=a.length-1;o>=0;o--){const l=a[o];l.f&(Qe|Ke)||In(l)}}Kt.clear()}}Kt=null}}function Dl(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const s of e.reactions){const a=s.f;a&je?Dl(s,t,n,r):a&(Bn|At)&&!(a&Me)&&ei(s,t,r)&&(Se(s,Me),ti(s))}}function Pl(e,t){if(e.reactions!==null)for(const n of e.reactions){const r=n.f;r&je?Pl(n,t):r&yr&&(Se(n,Me),t.add(n))}}function ei(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const s of e.deps){if(Un.call(t,s))return!0;if(s.f&je&&ei(s,t,n))return n.set(s,!0),!0}return n.set(e,!1),!1}function ti(e){ee.schedule(e)}let is=[];function Vf(){sn(()=>{const e=is;is=[];for(const t of e)Hn(t)})}function Uf(e){var t=ut(0),n=!0,r=void 0;return c(t),Ql(()=>{if(n){var s=Fe;try{Fe=null,r=e()}finally{Fe=s}return}is.length===0&&We(Vf),is.push(t)}),n=!1,r}function Ll(e,t){if(!(e.f&Ct&&e.f&$e)){e.f&Me?t.d.push(e):e.f&Rt&&t.m.push(e),Se(e,$e);for(var n=e.first;n!==null;)Ll(n,t),n=n.next}}function Nl(e){Se(e,$e);for(var t=e.first;t!==null;)Nl(t),t=t.next}function Bf(e){vl(),ee!==null&&Xd();var t=wt.ensure();t.is_fork=!0,Fe=new Map;var n=!1,r=t.settled();return sn(e),{commit:async()=>{if(n){await r;return}Ht.has(t)||Yd(),n=!0,t.is_fork=!1;for(var[s,[a]]of t.current)s.v=a,s.wv=ls();t.activate(),t.run_fork_commit_callbacks(),t.deactivate(),sn(()=>{var i=new Set;for(var o of t.current.keys())Pl(o,i);ev(i),Ul()}),t.flush(),await r},discard:()=>{for(var s of t.current.keys())s.wv=ls();!n&&Ht.has(t)&&t.discard()}}}function Ff(e){let t=0,n=ut(0),r;return()=>{Mr()&&(c(n),Ce(()=>(t===0&&(r=ye(()=>e(()=>vr(n)))),t+=1,()=>{We(()=>{t-=1,t===0&&(r?.(),r=void 0,vr(n))})})))}}var Hf=$t|cn;function Ol(e,t,n,r){new Kf(e,t,n,r)}class Kf{parent;is_pending=!1;transform_error;#e;#t=B?X:null;#n;#a;#r;#i=null;#s=null;#o=null;#l=null;#u=0;#c=0;#f=!1;#h=new Set;#v=new Set;#d=null;#_=Ff(()=>(this.#d=ut(this.#u),()=>{this.#d=null}));constructor(t,n,r,s){this.#e=t,this.#n=n,this.#a=a=>{var i=J;i.b=this,i.f|=wa,r(a)},this.parent=J.b,this.transform_error=s??this.parent?.transform_error??(a=>a),this.#r=Ut(()=>{if(B){const a=this.#t;Ge();const i=a.data===Es;if(a.data.startsWith(Xi)){const l=JSON.parse(a.data.slice(Xi.length));this.#m(l)}else i?this.#g():this.#p()}else this.#y()},Hf),B&&(this.#e=X)}#p(){try{this.#i=Be(()=>this.#a(this.#e))}catch(t){this.error(t)}}#m(t){const n=this.#n.failed;n&&(this.#o=Be(()=>{n(this.#e,()=>t,()=>()=>{})}))}#g(){const t=this.#n.pending;t&&(this.is_pending=!0,this.#s=Be(()=>t(this.#e)),We(()=>{var n=this.#l=document.createDocumentFragment(),r=qe();n.append(r),this.#i=this.#w(()=>Be(()=>this.#a(r))),this.#c===0&&(this.#e.before(n),this.#l=null,mn(this.#s,()=>{this.#s=null}),this.#b(ee))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#c=0,this.#u=0,this.#i=Be(()=>{this.#a(this.#e)}),this.#c>0){var t=this.#l=document.createDocumentFragment();di(this.#i,t);const n=this.#n.pending;this.#s=Be(()=>n(this.#e))}else this.#b(ee)}catch(n){this.error(n)}}#b(t){this.is_pending=!1,t.transfer_effects(this.#h,this.#v)}defer_effect(t){Tl(t,this.#h,this.#v)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#w(t){var n=J,r=se,s=de;Ue(this.#r),et(this.#r),Fn(this.#r.ctx);try{return wt.ensure(),t()}catch(a){return Il(a),null}finally{Ue(n),et(r),Fn(s)}}#k(t,n){if(!this.has_pending_snippet()){this.parent&&this.parent.#k(t,n);return}this.#c+=t,this.#c===0&&(this.#b(n),this.#s&&mn(this.#s,()=>{this.#s=null}),this.#l&&(this.#e.before(this.#l),this.#l=null))}update_pending_count(t,n){this.#k(t,n),this.#u+=t,!(!this.#d||this.#f)&&(this.#f=!0,We(()=>{this.#f=!1,this.#d&&zt(this.#d,this.#u)}))}get_effect_pending(){return this.#_(),c(this.#d)}error(t){if(!this.#n.onerror&&!this.#n.failed)throw t;ee?.is_fork?(this.#i&&ee.skip_effect(this.#i),this.#s&&ee.skip_effect(this.#s),this.#o&&ee.skip_effect(this.#o),ee.on_fork_commit(()=>{this.#S(t)})):this.#S(t)}#S(t){this.#i&&(Ne(this.#i),this.#i=null),this.#s&&(Ne(this.#s),this.#s=null),this.#o&&(Ne(this.#o),this.#o=null),B&&(fe(this.#t),Wt(),fe(Sn()));var n=this.#n.onerror;let r=this.#n.failed;var s=!1,a=!1;const i=()=>{if(s){hf();return}s=!0,a&&rf(),this.#o!==null&&mn(this.#o,()=>{this.#o=null}),this.#w(()=>{this.#y()})},o=l=>{try{a=!0,n?.(l,i),a=!1}catch(u){jt(u,this.#r&&this.#r.parent)}r&&(this.#o=this.#w(()=>{try{return Be(()=>{var u=J;u.b=this,u.f|=wa,r(this.#e,()=>l,()=>i)})}catch(u){return jt(u,this.#r.parent),null}}))};We(()=>{var l;try{l=this.transform_error(t)}catch(u){jt(u,this.#r&&this.#r.parent);return}l!==null&&typeof l=="object"&&typeof l.then=="function"?l.then(o,u=>jt(u,this.#r&&this.#r.parent)):o(l)})}}function Wf(){J===null&&Wd();var e=J.b;return e===null?0:e.get_effect_pending()}function Pr(e,t,n,r){const s=Nr;var a=e.filter(v=>!v.settled);if(n.length===0&&a.length===0){r(t.map(s));return}var i=J,o=$s(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(v=>v.promise)):null;function u(v){o();try{r(v)}catch(k){i.f&Qe||jt(k,i)}xn()}if(n.length===0){l.then(()=>u(t.map(s)));return}var d=Lr();function f(){Promise.all(n.map(v=>jl(v))).then(v=>u([...t.map(s),...v])).catch(v=>jt(v,i)).finally(()=>d())}l?l.then(()=>{o(),f(),xn()}):f()}function Ml(e,t){Pr(e,[],[],t)}function $s(){var e=J,t=se,n=de,r=ee;return function(a=!0){Ue(e),et(t),Fn(n),a&&!(e.f&Qe)&&(r?.activate(),r?.apply())}}async function Gf(e){var t=$s(),n=await e;return()=>(t(),n)}async function Aa(e){var t=fr;queueMicrotask(()=>{fr===t&&Xr(null)});var n=await e;return()=>(Xr(t),queueMicrotask(()=>{fr===t&&Xr(null)}),n)}async function*Yf(e){const t=e[Symbol.asyncIterator]?.()??e[Symbol.iterator]?.();if(t===void 0)throw new TypeError("value is not async iterable");let n=!1;try{for(;;){const{done:s,value:a}=(await Aa(t.next()))();if(s){n=!0;break}var r=fr;yield a,Xr(r)}}finally{if(!n&&t.return!==void 0)return(await Aa(t.return()))().value}}function xn(e=!0){Ue(null),et(null),Fn(null),e&&ee?.deactivate()}function Xf(e){const t=$s(),n=Lr();var r=J,s=null;const a=u=>{s={error:u},Ra(r)||jt(u,r)};var i=Promise.resolve(e[0]()).catch(a),o={promise:i,settled:!1},l=[o];i.finally(()=>{o.settled=!0,xn()});for(const u of e.slice(1)){i=i.then(()=>{if(t(),s)throw s.error;if(Ra(r))throw Nt;return u()}).catch(a);const d={promise:i,settled:!1};l.push(d),i.finally(()=>{d.settled=!0,xn()})}return i.then(()=>Promise.resolve()).finally(()=>n()),l}function Jf(e){return Promise.all(e.map(t=>t.promise))}function Lr(){var e=J,t=e.b,n=ee,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),(s=!1)=>{t.update_pending_count(-1,n),n.decrement(r,e,s)}}let fr=null;function Xr(e){fr=e}function Nr(e){var t=je|Me;return J!==null&&(J.f|=cn),{ctx:de,deps:null,effects:null,equals:gl,f:t,fn:e,reactions:null,rv:0,v:be,wv:0,parent:J,ac:null}}function jl(e,t,n){let r=J;r===null&&qd();var s=void 0,a=ut(be),i=!se,o=new Map;return fv(()=>{var l=J,u=ol();s=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).finally(xn)}catch(k){u.reject(k),xn()}var d=ee;if(i){if(l.f&Xt)var f=Lr();if(r.b.is_rendered())o.get(d)?.reject(Nt),o.delete(d);else{for(const k of o.values())k.reject(Nt);o.clear()}o.set(d,u)}const v=(k,y=void 0)=>{if(f){var w=y===Nt;f(w)}if(!(y===Nt||l.f&Qe)){if(d.activate(),y)a.f|=nn,zt(a,y);else{a.f&nn&&(a.f^=nn),zt(a,k);for(const[b,C]of o){if(o.delete(b),b===d)break;C.reject(Nt)}}d.deactivate()}};u.promise.then(v,k=>v(null,k||"unknown"))}),vt(()=>{for(const l of o.values())l.reject(Nt)}),new Promise(l=>{function u(d){function f(){d===s?l(a):u(s)}d.then(f,f)}u(s)})}function W(e){const t=Nr(e);return ic(t),t}function ni(e){const t=Nr(e);return t.equals=_l,t}function Zf(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Ne(t[n])}}function ri(e){var t,n=J,r=e.parent;if(!Yt&&r!==null&&r.f&(Qe|Ke))return lf(),e.v;Ue(r);try{e.f&=~kn,Zf(e),t=cc(e)}finally{Ue(n)}return t}function zl(e){var t=ri(e);if(!e.equals(t)&&(e.wv=ls(),(!ee?.is_fork||e.deps===null)&&(ee!==null?ee.capture(e,t,!0):e.v=t,e.deps===null))){Se(e,$e);return}Yt||(Fe!==null?(Mr()||ee?.is_fork)&&Fe.set(e,t):Qa(e))}function Qf(e){if(e.effects!==null)for(const t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(Nt),t.teardown=it,t.ac=null,br(t,0),ci(t))}function ql(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&In(t)}let os=new Set;const gn=new Map;function ev(e){os=e}let Vl=!1;function ut(e,t){var n={f:0,v:e,reactions:null,equals:gl,rv:0,wv:0};return n}function q(e,t){const n=ut(e);return ic(n),n}function Ds(e,t=!1,n=!0){const r=ut(e);return t||(r.equals=_l),r}function tv(e,t){return _(e,ye(()=>c(e))),t}function _(e,t,n=!1){se!==null&&(!xt||se.f&yr)&&El()&&se.f&(je|At|Bn|yr)&&(yt===null||!Un.call(yt,e))&&nf();let r=n?ce(t):t;return zt(e,r,Yr)}function zt(e,t,n=null){if(!e.equals(t)){gn.set(e,Yt?t:e.v);var r=wt.ensure();if(r.capture(e,t),e.f&je){const s=e;e.f&Me&&ri(s),Fe===null&&Qa(s)}e.wv=ls(),Bl(e,Me,n),J!==null&&J.f&$e&&!(J.f&(Ct|Gt))&&(gt===null?mv([e]):gt.push(e)),!r.is_fork&&os.size>0&&!Vl&&Ul()}return t}function Ul(){Vl=!1;for(const e of os)e.f&$e&&Se(e,Rt),Zn(e)&&In(e);os.clear()}function Hn(e,t=1){var n=c(e),r=t===1?n++:n--;return _(e,n),r}function nv(e,t=1){var n=c(e);return _(e,t===1?++n:--n)}function vr(e){_(e,e.v+1)}function Bl(e,t,n){var r=e.reactions;if(r!==null)for(var s=r.length,a=0;a<s;a++){var i=r[a],o=i.f,l=(o&Me)===0;if(l&&Se(i,t),o&je){var u=i;Fe?.delete(u),o&kn||(o&_t&&(i.f|=kn),Bl(u,Rt,n))}else if(l){var d=i;o&At&&Kt!==null&&Kt.add(d),n!==null?n.push(d):ti(d)}}}function ce(e){if(typeof e!="object"||e===null||Ve in e)return e;const t=As(e);if(t!==il&&t!==Ad)return e;var n=new Map,r=Xn(e),s=q(0),a=_n,i=o=>{if(_n===a)return o();var l=se,u=_n;et(null),ao(a);var d=o();return et(l),ao(u),d};return r&&n.set("length",q(e.length)),new Proxy(e,{defineProperty(o,l,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&ef();var d=n.get(l);return d===void 0?i(()=>{var f=q(u.value);return n.set(l,f),f}):_(d,u.value,!0),!0},deleteProperty(o,l){var u=n.get(l);if(u===void 0){if(l in o){const d=i(()=>q(be));n.set(l,d),vr(s)}}else _(u,be),vr(s);return!0},get(o,l,u){if(l===Ve)return e;var d=n.get(l),f=l in o;if(d===void 0&&(!f||It(o,l)?.writable)&&(d=i(()=>{var k=ce(f?o[l]:be),y=q(k);return y}),n.set(l,d)),d!==void 0){var v=c(d);return v===be?void 0:v}return Reflect.get(o,l,u)},getOwnPropertyDescriptor(o,l){var u=Reflect.getOwnPropertyDescriptor(o,l);if(u&&"value"in u){var d=n.get(l);d&&(u.value=c(d))}else if(u===void 0){var f=n.get(l),v=f?.v;if(f!==void 0&&v!==be)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return u},has(o,l){if(l===Ve)return!0;var u=n.get(l),d=u!==void 0&&u.v!==be||Reflect.has(o,l);if(u!==void 0||J!==null&&(!d||It(o,l)?.writable)){u===void 0&&(u=i(()=>{var v=d?ce(o[l]):be,k=q(v);return k}),n.set(l,u));var f=c(u);if(f===be)return!1}return d},set(o,l,u,d){var f=n.get(l),v=l in o;if(r&&l==="length")for(var k=u;k<f.v;k+=1){var y=n.get(k+"");y!==void 0?_(y,be):k in o&&(y=i(()=>q(be)),n.set(k+"",y))}if(f===void 0)(!v||It(o,l)?.writable)&&(f=i(()=>q(void 0)),_(f,ce(u)),n.set(l,f));else{v=f.v!==be;var w=i(()=>ce(u));_(f,w)}var b=Reflect.getOwnPropertyDescriptor(o,l);if(b?.set&&b.set.call(d,u),!v){if(r&&typeof l=="string"){var C=n.get("length"),h=Number(l);Number.isInteger(h)&&h>=C.v&&_(C,h+1)}vr(s)}return!0},ownKeys(o){c(s);var l=Reflect.ownKeys(o).filter(f=>{var v=n.get(f);return v===void 0||v.v!==be});for(var[u,d]of n)d.v!==be&&!(u in o)&&l.push(u);return l},setPrototypeOf(){tf()}})}function Kn(e){try{if(e!==null&&typeof e=="object"&&Ve in e)return e[Ve]}catch{}return e}function Fl(e,t){return Object.is(Kn(e),Kn(t))}function rv(e,t,n=!0){try{e===t!=(Kn(e)===Kn(t))&&pl(n?"===":"!==")}catch{}return e===t===n}function sv(e,t,n=!0){return e==t!=(Kn(e)==Kn(t))&&pl(),e==t===n}var Ta,Hl,si,Kl,Wl;function Ca(){if(Ta===void 0){Ta=window,Hl=document,si=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Kl=It(t,"firstChild").get,Wl=It(t,"nextSibling").get,Ji(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Ji(n)&&(n.__t=void 0)}}function qe(e=""){return document.createTextNode(e)}function we(e){return Kl.call(e)}function dt(e){return Wl.call(e)}function g(e,t){if(!B)return we(e);var n=we(X);if(n===null)n=X.appendChild(qe());else if(t&&n.nodeType!==$r){var r=qe();return n?.before(r),fe(r),r}return t&&Ps(n),fe(n),n}function _e(e,t=!1){if(!B){var n=we(e);return n instanceof Comment&&n.data===""?dt(n):n}if(t){if(X?.nodeType!==$r){var r=qe();return X?.before(r),fe(r),r}Ps(X)}return X}function E(e,t=1,n=!1){let r=B?X:e;for(var s;t--;)s=r,r=dt(r);if(!B)return r;if(n){if(r?.nodeType!==$r){var a=qe();return r===null?s?.after(a):r.before(a),fe(a),a}Ps(r)}return fe(r),r}function ai(e){e.textContent=""}function Gl(){return!1}function un(e,t,n){let r=n?{is:n}:void 0;return document.createElementNS(t??nl,e,r)}function av(){return document.createDocumentFragment()}function Yl(e=""){return document.createComment(e)}function iv(e,t,n=""){if(t.startsWith("xlink:")){e.setAttributeNS("http://www.w3.org/1999/xlink",t,n);return}return e.setAttribute(t,n)}function Ps(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===$r;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function ii(e,t){if(t){const n=document.body;e.autofocus=!0,We(()=>{document.activeElement===n&&e.focus()})}}function ov(e){B&&we(e)!==null&&ai(e)}let ro=!1;function Xl(){ro||(ro=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function nt(e,t,n,r=!0){r&&n();for(var s of t)e.addEventListener(s,n);vt(()=>{for(var a of t)e.removeEventListener(a,n)})}function dn(e){var t=se,n=J;et(null),Ue(null);try{return e()}finally{et(t),Ue(n)}}function Or(e,t,n,r=n){e.addEventListener(t,()=>dn(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),Xl()}function oi(e){J===null&&(se===null&&Kd(),Hd()),Yt&&Fd()}function lv(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function rt(e,t){var n=J;n!==null&&n.f&Ke&&(e|=Ke);var r={ctx:de,deps:null,nodes:null,f:e|Me|_t,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};ee?.register_created_effect(r);var s=r;if(e&wn)On!==null?On.push(r):wt.ensure().schedule(r);else if(t!==null){try{In(r)}catch(i){throw Ne(r),i}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&!(s.f&cn)&&(s=s.first,e&At&&e&$t&&s!==null&&(s.f|=$t))}if(s!==null&&(s.parent=n,n!==null&&lv(s,n),se!==null&&se.f&je&&!(e&Gt))){var a=se;(a.effects??=[]).push(s)}return r}function Mr(){return se!==null&&!xt}function vt(e){const t=rt(Rr,null);return Se(t,$e),t.teardown=e,t}function Le(e){oi();var t=J.f,n=!se&&(t&Ct)!==0&&(t&Xt)===0;if(n){var r=de;(r.e??=[]).push(e)}else return Jl(e)}function Jl(e){return rt(wn|ul,e)}function Zl(e){return oi(),rt(Rr|ul,e)}function Ql(e){return rt(yr,e)}function li(e){wt.ensure();const t=rt(Gt|cn,e);return()=>{Ne(t)}}function cv(e){wt.ensure();const t=rt(Gt|cn,e);return(n={})=>new Promise(r=>{n.outro?mn(t,()=>{Ne(t),r(void 0)}):(Ne(t),r(void 0))})}function ft(e){return rt(wn,e)}function uv(e,t){var n=de,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=Ce(()=>{if(e(),!r.ran){r.ran=!0;var s=J;try{Ue(s.parent),ye(t)}finally{Ue(s)}}})}function dv(){var e=de;Ce(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&$e&&n.deps!==null&&Se(n,Rt),Zn(n)&&In(n),t.ran=!1}})}function fv(e){return rt(Bn|cn,e)}function Ce(e,t=0){return rt(Rr|t,e)}function V(e,t=[],n=[],r=[]){Pr(r,t,n,s=>{rt(Rr,()=>e(...s.map(c)))})}function vv(e,t=[],n=[],r=[]){if(n.length>0||r.length>0)var s=Lr();Pr(r,t,n,a=>{rt(wn,()=>e(...a.map(c))),s&&s()})}function Ut(e,t=0){var n=rt(At|t,e);return n}function ec(e,t=0){var n=rt(Xa|t,e);return n}function Be(e){return rt(Ct|cn,e)}function tc(e){var t=e.teardown;if(t!==null){const n=Yt,r=se;so(!0),et(null);try{t.call(null)}finally{so(n),et(r)}}}function ci(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&dn(()=>{s.abort(Nt)});var r=n.next;n.f&Gt?n.parent=null:Ne(n,t),n=r}}function hv(e){for(var t=e.first;t!==null;){var n=t.next;t.f&Ct||Ne(t),t=n}}function Ne(e,t=!0){var n=!1;(t||e.f&cl)&&e.nodes!==null&&e.nodes.end!==null&&(nc(e.nodes.start,e.nodes.end),n=!0),Se(e,ka),ci(e,t&&!n),br(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(const a of r)a.stop();tc(e),e.f^=ka,e.f|=Qe;var s=e.parent;s!==null&&s.first!==null&&rc(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function nc(e,t){for(;e!==null;){var n=e===t?null:dt(e);e.remove(),e=n}}function rc(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function mn(e,t,n=!0){var r=[];sc(e,r,!0);var s=()=>{n&&Ne(e),t&&t()},a=r.length;if(a>0){var i=()=>--a||s();for(var o of r)o.out(i)}else s()}function sc(e,t,n){if(!(e.f&Ke)){e.f^=Ke;var r=e.nodes&&e.nodes.t;if(r!==null)for(const o of r)(o.is_global||n)&&t.push(o);for(var s=e.first;s!==null;){var a=s.next;if(!(s.f&Gt)){var i=(s.f&$t)!==0||(s.f&Ct)!==0&&(e.f&At)!==0;sc(s,t,i?n:!1)}s=a}}}function ui(e){ac(e,!0)}function ac(e,t){if(e.f&Ke){e.f^=Ke,e.f&$e||(Se(e,Me),wt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&$t)!==0||(n.f&Ct)!==0;ac(n,s?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(const i of a)(i.is_global||t)&&i.in()}}function Ra(e=J){return(e.f&Qe)!==0}function di(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var s=n===r?null:dt(n);t.append(n),n=s}}let Pn=null;function pv(e){var t=Pn;try{if(Pn=new Set,ye(e),t!==null)for(var n of Pn)t.add(n);return Pn}finally{Pn=t}}function gv(e){for(var t of pv(e))zt(t,t.v)}let Jr=!1,Yt=!1;function so(e){Yt=e}let se=null,xt=!1;function et(e){se=e}let J=null;function Ue(e){J=e}let yt=null;function ic(e){se!==null&&(yt===null?yt=[e]:yt.push(e))}let Je=null,st=0,gt=null;function mv(e){gt=e}let oc=1,pn=0,_n=pn;function ao(e){_n=e}function ls(){return++oc}function Zn(e){var t=e.f;if(t&Me)return!0;if(t&je&&(e.f&=~kn),t&Rt){for(var n=e.deps,r=n.length,s=0;s<r;s++){var a=n[s];if(Zn(a)&&zl(a),a.wv>e.wv)return!0}t&_t&&Fe===null&&Se(e,$e)}return!1}function lc(e,t,n=!0){var r=e.reactions;if(r!==null&&!(yt!==null&&Un.call(yt,e)))for(var s=0;s<r.length;s++){var a=r[s];a.f&je?lc(a,t,!1):t===a&&(n?Se(a,Me):a.f&$e&&Se(a,Rt),ti(a))}}function cc(e){var t=Je,n=st,r=gt,s=se,a=yt,i=de,o=xt,l=_n,u=e.f;Je=null,st=0,gt=null,se=u&(Ct|Gt)?null:e,yt=null,Fn(e.ctx),xt=!1,_n=++pn,e.ac!==null&&(dn(()=>{e.ac.abort(Nt)}),e.ac=null);try{e.f|=Sa;var d=e.fn,f=d();e.f|=Xt;var v=e.deps,k=ee?.is_fork;if(Je!==null){var y;if(k||br(e,st),v!==null&&st>0)for(v.length=st+Je.length,y=0;y<Je.length;y++)v[st+y]=Je[y];else e.deps=v=Je;if(Mr()&&e.f&_t)for(y=st;y<v.length;y++)(v[y].reactions??=[]).push(e)}else!k&&v!==null&&st<v.length&&(br(e,st),v.length=st);if(El()&&gt!==null&&!xt&&v!==null&&!(e.f&(je|Rt|Me)))for(y=0;y<gt.length;y++)lc(gt[y],e);if(s!==null&&s!==e){if(pn++,s.deps!==null)for(let w=0;w<n;w+=1)s.deps[w].rv=pn;if(t!==null)for(const w of t)w.rv=pn;gt!==null&&(r===null?r=gt:r.push(...gt))}return e.f&nn&&(e.f^=nn),f}catch(w){return Il(w)}finally{e.f^=Sa,Je=t,st=n,gt=r,se=s,yt=a,Fn(i),xt=o,_n=l}}function _v(e,t){let n=t.reactions;if(n!==null){var r=Id.call(n,e);if(r!==-1){var s=n.length-1;s===0?n=t.reactions=null:(n[r]=n[s],n.pop())}}if(n===null&&t.f&je&&(Je===null||!Un.call(Je,t))){var a=t;a.f&_t&&(a.f^=_t,a.f&=~kn),a.v!==be&&Qa(a),Qf(a),br(a,0)}}function br(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)_v(e,n[r])}function In(e){var t=e.f;if(!(t&Qe)){Se(e,$e);var n=J,r=Jr;J=e,Jr=!0;try{t&(At|Xa)?hv(e):ci(e),tc(e);var s=cc(e);e.teardown=typeof s=="function"?s:null,e.wv=oc;var a;sl&&gf&&e.f&Me&&e.deps}finally{Jr=r,J=n}}}async function fi(){await Promise.resolve(),sn()}function yv(){return wt.ensure().settled()}function c(e){var t=e.f,n=(t&je)!==0;if(Pn?.add(e),se!==null&&!xt){var r=J!==null&&(J.f&Qe)!==0;if(!r&&(yt===null||!Un.call(yt,e))){var s=se.deps;if(se.f&Sa)e.rv<pn&&(e.rv=pn,Je===null&&s!==null&&s[st]===e?st++:Je===null?Je=[e]:Je.push(e));else{(se.deps??=[]).push(e);var a=e.reactions;a===null?e.reactions=[se]:Un.call(a,se)||a.push(se)}}}if(Yt&&gn.has(e))return gn.get(e);if(n){var i=e;if(Yt){var o=i.v;return(!(i.f&$e)&&i.reactions!==null||dc(i))&&(o=ri(i)),gn.set(i,o),o}var l=(i.f&_t)===0&&!xt&&se!==null&&(Jr||(se.f&_t)!==0),u=(i.f&Xt)===0;Zn(i)&&(l&&(i.f|=_t),zl(i)),l&&!u&&(ql(i),uc(i))}if(Fe?.has(e))return Fe.get(e);if(e.f&nn)throw e.v;return e.v}function uc(e){if(e.f|=_t,e.deps!==null)for(const t of e.deps)(t.reactions??=[]).push(e),t.f&je&&!(t.f&_t)&&(ql(t),uc(t))}function dc(e){if(e.v===be)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(gn.has(t)||t.f&je&&dc(t))return!0;return!1}function bv(e){return e&&c(e)}function ye(e){var t=xt;try{return xt=!0,e()}finally{xt=t}}function vi(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(Ve in e)cs(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&Ve in n&&cs(n)}}}function cs(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let r in e)try{cs(e[r],t)}catch{}const n=As(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=al(n);for(let s in r){const a=r[s].get;if(a)try{a.call(e)}catch{}}}}}function wv(e,t){if(vl(),B){const n=window.__svelte?.h;if(n?.has(e))return n.get(e);uf()}return t()}const cr=Symbol("events"),fc=new Set,$a=new Set;function kv(e){if(!B)return;e.removeAttribute("onload"),e.removeAttribute("onerror");const t=e.__e;t!==void 0&&(e.__e=void 0,queueMicrotask(()=>{e.isConnected&&e.dispatchEvent(t)}))}function vc(e,t,n,r={}){function s(a){if(r.capture||Da.call(t,a),!a.cancelBubble)return dn(()=>n?.call(this,a))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?We(()=>{t.addEventListener(e,s,r)}):t.addEventListener(e,s,r),s}function tt(e,t,n,r,s){var a={capture:r,passive:s},i=vc(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&vt(()=>{t.removeEventListener(e,i,a)})}function H(e,t,n){(t[cr]??={})[e]=n}function ve(e){for(var t=0;t<e.length;t++)fc.add(e[t]);for(var n of $a)n(e)}let io=null;function Da(e){var t=this,n=t.ownerDocument,r=e.type,s=e.composedPath?.()||[],a=s[0]||e.target;io=e;var i=0,o=io===e&&e[cr];if(o){var l=s.indexOf(o);if(l!==-1&&(t===document||t===window)){e[cr]=t;return}var u=s.indexOf(t);if(u===-1)return;l<=u&&(i=l)}if(a=s[i]||e.target,a!==t){bn(e,"currentTarget",{configurable:!0,get(){return a||n}});var d=se,f=J;et(null),Ue(null);try{for(var v,k=[];a!==null;){var y=a.assignedSlot||a.parentNode||a.host||null;try{var w=a[cr]?.[r];w!=null&&(!a.disabled||e.target===a)&&w.call(a,e)}catch(b){v?k.push(b):v=b}if(e.cancelBubble||y===t||y===null)break;a=y}if(v){for(let b of k)queueMicrotask(()=>{throw b});throw v}}finally{e[cr]=t,delete e.currentTarget,et(d),Ue(f)}}}function Sv(e,t,n,r,s,a=!1,i=!1){let o,l;try{o=e()}catch(u){l=u}if(typeof o!="function"&&(a||o!=null||l)){const u=r?.[at];s?`${u}${s[0]}${s[1]}`:`${u}`;const d=n[0]?.eventPhase<Event.BUBBLING_PHASE?"capture":"";if(n[0]?.type+d,cf(),l)throw l}o?.apply(t,n)}const Ev=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function hc(e){return Ev?.createHTML(e)??e}function hi(e){var t=un("template");return t.innerHTML=hc(e.replaceAll("<!>","<!---->")),t.content}const xv=Tn?"template":"TEMPLATE",Iv=Tn?"script":"SCRIPT";function Oe(e,t){var n=J;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function R(e,t){var n=(t&Ga)!==0,r=(t&tl)!==0,s,a=!e.startsWith("<!>");return()=>{if(B)return Oe(X,null),X;s===void 0&&(s=hi(a?e:"<!>"+e),n||(s=we(s)));var i=r||si?document.importNode(s,!0):s.cloneNode(!0);if(n){var o=we(i),l=i.lastChild;Oe(o,l)}else Oe(i,i);return i}}function pc(e,t,n="svg"){var r=!e.startsWith("<!>"),s=(t&Ga)!==0,a=`<${n}>${r?e:"<!>"+e}</${n}>`,i;return()=>{if(B)return Oe(X,null),X;if(!i){var o=hi(a),l=we(o);if(s)for(i=document.createDocumentFragment();we(l);)i.appendChild(we(l));else i=we(l)}var u=i.cloneNode(!0);if(s){var d=we(u),f=u.lastChild;Oe(d,f)}else Oe(u,u);return u}}function Av(e,t){return pc(e,t,"svg")}function Tv(e,t){return pc(e,t,"math")}function gc(e,t){var n=av();for(var r of e){if(typeof r=="string"){n.append(qe(r));continue}if(r===void 0||r[0][0]==="/"){n.append(Yl(r?r[0].slice(3):""));continue}const[o,l,...u]=r,d=o==="svg"?Cr:o==="math"?Ya:t;var s=un(o,d,l?.is);for(var a in l)iv(s,a,l[a]);if(u.length>0){var i=s.nodeName===xv?s.content:s;i.append(gc(u,s.nodeName==="foreignObject"?void 0:d))}n.append(s)}return n}function Cv(e,t){var n=(t&Ga)!==0,r=(t&tl)!==0,s;return()=>{if(B)return Oe(X,null),X;if(s===void 0){const l=t&Ed?Cr:t&xd?Ya:void 0;s=gc(e,l),n||(s=we(s))}var a=r||si?document.importNode(s,!0):s.cloneNode(!0);if(n){var i=we(a),o=a.lastChild;Oe(i,o)}else Oe(a,a);return a}}function Rv(e){return()=>$v(e())}function $v(e){if(B)return e;const t=e.nodeType===fl,n=e.nodeName===Iv?[e]:e.querySelectorAll("script"),r=J;for(const a of n){const i=un("script");for(var s of a.attributes)i.setAttribute(s.name,s.value);i.textContent=a.textContent,(t?e.firstChild===a:e===a)&&(r.nodes.start=i),(t?e.lastChild===a:e===a)&&(r.nodes.end=i),a.replaceWith(i)}return e}function Vn(e=""){if(!B){var t=qe(e+"");return Oe(t,t),t}var n=X;return n.nodeType!==$r?(n.before(n=qe()),fe(n)):Ps(n),Oe(n,n),n}function ot(){if(B)return Oe(X,null),X;var e=document.createDocumentFragment(),t=document.createComment(""),n=qe();return e.append(t,n),Oe(t,n),e}function I(e,t){if(B){var n=J;(!(n.f&Xt)||n.nodes.end===null)&&(n.nodes.end=X),Ge();return}e!==null&&e.before(t)}function Dv(){if(B&&X&&X.nodeType===Jt&&X.textContent?.startsWith("$")){const e=X.textContent.substring(1);return Ge(),e}return(window.__svelte??={}).uid??=1,`c${window.__svelte.uid++}`}const Pv=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];function Lv(e){return Pv.includes(e)||e.toLowerCase()==="!doctype"}function Nv(e){return e.endsWith("capture")&&e!=="gotpointercapture"&&e!=="lostpointercapture"}const Ov=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function Mv(e){return Ov.includes(e)}const jv={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function zv(e){return e=e.toLowerCase(),jv[e]??e}const qv=["touchstart","touchmove"];function Vv(e){return qv.includes(e)}const Uv=["textarea","script","style","title"];function Bv(e){return Uv.includes(e)}function mc(e){return e?.replace(/\//g,"/​")}let us=!0;function Mn(e){us=e}function j(e,t){var n=t==null?"":typeof t=="object"?`${t}`:t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=`${n}`)}function ze(e,t){return yc(e,t)}function _c(e,t){Ca(),t.intro=t.intro??!1;const n=t.target,r=B,s=X;try{for(var a=we(n);a&&(a.nodeType!==Jt||a.data!==Ss);)a=dt(a);if(!a)throw yn;me(!0),fe(a);const i=yc(e,{...t,anchor:a});return me(!1),i}catch(i){if(i instanceof Error&&i.message.split(`
5
+ `).some(o=>o.startsWith("https://svelte.dev/e/")))throw i;return i!==yn&&console.warn("Failed to hydrate: ",i),t.recover===!1&&Zd(),Ca(),ai(n),me(!1),ze(e,t)}finally{me(r),fe(s)}}const Br=new Map;function yc(e,{target:t,anchor:n,props:r={},events:s,context:a,intro:i=!0,transformError:o}){Ca();var l=void 0,u=cv(()=>{var d=n??t.appendChild(qe());Ol(d,{pending:()=>{}},k=>{ne({});var y=de;if(a&&(y.c=a),s&&(r.$$events=s),B&&Oe(k,null),us=i,l=e(k,r)||{},us=!0,B&&(J.nodes.end=X,X===null||X.nodeType!==Jt||X.data!==xs))throw Dr(),yn;re()},o);var f=new Set,v=k=>{for(var y=0;y<k.length;y++){var w=k[y];if(!f.has(w)){f.add(w);var b=Vv(w);for(const m of[t,document]){var C=Br.get(m);C===void 0&&(C=new Map,Br.set(m,C));var h=C.get(w);h===void 0?(m.addEventListener(w,Da,{passive:b}),C.set(w,1)):C.set(w,h+1)}}}};return v(Is(fc)),$a.add(v),()=>{for(var k of f)for(const b of[t,document]){var y=Br.get(b),w=y.get(k);--w==0?(b.removeEventListener(k,Da),y.delete(k),y.size===0&&Br.delete(b)):y.set(k,w)}$a.delete(v),d!==n&&d.parentNode?.removeChild(d)}});return Pa.set(l,u),l}let Pa=new WeakMap;function He(e,t){const n=Pa.get(e);return n?(Pa.delete(e),n(t)):Promise.resolve()}function Fv(e){const t=e();t&&Lv(t)&&mf()}function Hv(e){const t=e();t&&!(typeof t=="string")&&zd()}function Kv(e,t){e!=null&&typeof e.subscribe!="function"&&jd()}function bc(e){return e.toString=()=>(Md(),""),e}class Qn{anchor;#e=new Map;#t=new Map;#n=new Map;#a=new Set;#r=!0;constructor(t,n=!0){this.anchor=t,this.#r=n}#i=t=>{if(this.#e.has(t)){var n=this.#e.get(t),r=this.#t.get(n);if(r)ui(r),this.#a.delete(n);else{var s=this.#n.get(n);s&&(this.#t.set(n,s.effect),this.#n.delete(n),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),r=s.effect)}for(const[a,i]of this.#e){if(this.#e.delete(a),a===t)break;const o=this.#n.get(i);o&&(Ne(o.effect),this.#n.delete(i))}for(const[a,i]of this.#t){if(a===n||this.#a.has(a))continue;const o=()=>{if(Array.from(this.#e.values()).includes(a)){var u=document.createDocumentFragment();di(i,u),u.append(qe()),this.#n.set(a,{effect:i,fragment:u})}else Ne(i);this.#a.delete(a),this.#t.delete(a)};this.#r||!r?(this.#a.add(a),mn(i,o,!1)):o()}}};#s=t=>{this.#e.delete(t);const n=Array.from(this.#e.values());for(const[r,s]of this.#n)n.includes(r)||(Ne(s.effect),this.#n.delete(r))};ensure(t,n){var r=ee,s=Gl();if(n&&!this.#t.has(t)&&!this.#n.has(t))if(s){var a=document.createDocumentFragment(),i=qe();a.append(i),this.#n.set(t,{effect:Be(()=>n(i)),fragment:a})}else this.#t.set(t,Be(()=>n(this.anchor)));if(this.#e.set(r,t),s){for(const[o,l]of this.#t)o===t?r.unskip_effect(l):r.skip_effect(l);for(const[o,l]of this.#n)o===t?r.unskip_effect(l.effect):r.skip_effect(l.effect);r.oncommit(this.#i),r.ondiscard(this.#s)}else B&&(this.anchor=X),this.#i(r)}}function Ls(e,t,...n){var r=new Qn(e);Ut(()=>{const s=t()??null;r.ensure(s,s&&(a=>s(a,...n)))},$t)}function Wv(e,t){const n=(r,...s)=>{var a=Za;eo(e);try{return t(r,...s)}finally{eo(a)}};return bc(n),n}function Gv(e){return(t,...n)=>{var r=e(...n),s;if(B)s=X,Ge();else{var a=r.render().trim(),i=hi(a);s=we(i),t.before(s)}const o=r.setup?.(s);Oe(s,s),typeof o=="function"&&vt(o)}}function Yv(){return se===null&&Jd(),(se.ac??=new AbortController).signal}function Ns(e){de===null&&Jn(),Le(()=>{const t=ye(e);if(typeof t=="function")return t})}function wc(e){de===null&&Jn(),Ns(()=>()=>ye(e))}function Xv(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Jv(){const e=de;return e===null&&Jn(),(t,n,r)=>{const s=e.s.$$events?.[t];if(s){const a=Xn(s)?s.slice():[s],i=Xv(t,n,r);for(const o of a)o.call(e.x,i);return!i.defaultPrevented}return!0}}function Zv(e){de===null&&Jn(),de.l===null&&hl(),kc(de).b.push(e)}function Qv(e){de===null&&Jn(),de.l===null&&hl(),kc(de).a.push(e)}function kc(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const Sc=Object.freeze(Object.defineProperty({__proto__:null,afterUpdate:Qv,beforeUpdate:Zv,createContext:xf,createEventDispatcher:Jv,createRawSnippet:Gv,flushSync:sn,fork:Bf,getAbortSignal:Yv,getAllContexts:If,getContext:wl,hasContext:Sl,hydratable:wv,hydrate:_c,mount:ze,onDestroy:wc,onMount:Ns,setContext:kl,settled:yv,tick:fi,unmount:He,untrack:ye},Symbol.toStringTag,{value:"Module"}));function eh(){return Symbol(rl)}function Ec(e,t,n,r){return e!==t&&typeof t=="object"&&Ve in t&&sf(n,mc(r)),e}function th(e,t,n,r,s){return Ec(n==="="?e[t]=r:n==="&&="?e[t]&&=r():n==="||="?e[t]||=r():n==="??="?e[t]??=r():null,ye(()=>e[t]),t,s)}async function nh(e,t,n,r,s){return Ec(n==="="?e[t]=await r:n==="&&="?e[t]&&=await r():n==="||="?e[t]||=await r():n==="??="?e[t]??=await r():null,ye(()=>e[t]),t,s)}var oo=new Map;function rh(e){var t=oo.get(e);if(t){for(const n of t)n.remove();oo.delete(e)}}function sh(e,t,n){return(...r)=>{const s=e(...r);var a=B?s:s.nodeType===fl?s.firstChild:s;return xc(a,t,n),s}}function ah(e,t,n){e.__svelte_meta={parent:Gr,loc:{file:t,line:n[0],column:n[1]}},n[2]&&xc(e.firstChild,t,n[2])}function xc(e,t,n){for(var r=0,s=0;e&&r<n.length;){if(B&&e.nodeType===Jt){var a=e;a.data[0]===Ss?s+=1:a.data[0]===xs&&(s-=1)}s===0&&e.nodeType===dl&&ah(e,t,n[r++]),e=e.nextSibling}}function ih(e){const t=ut(e);function n(r,s){let a={},i={},o,l=!1,u=r;return Ut(()=>{if(a!==(a=c(t))){if(o){for(var d in i)delete i[d];Ne(o)}o=Be(()=>{u=u[Ld]??u,l&&Mn(!1);var f=new.target?new a(u,s):a(u,s);f&&Object.defineProperties(i,Object.getOwnPropertyDescriptors(f)),l&&Mn(!0)}),J.nodes=o.nodes}},$t),l=!0,B&&(u=X),i}return n[at]=e[at],n[$n]={fn:e,current:t,update:r=>{_(n[$n].current,r[$n].fn),r[$n].current=n[$n].current}},n}function oh(e){const t=de?.function,n=de?.p?.function;return{mutation:(r,s,a,i,o)=>{const l=s[0];if(lo(e,l)||!n)return a;let u=e;for(let f=0;f<s.length-1;f++)if(u=u[s[f]],!u?.[Ve])return a;const d=mc(`${t[at]}:${i}:${o}`);return ff(l,d,r,n[at]),a},binding:(r,s,a)=>{!lo(e,r)&&n&&a()?.[Ve]&&df(t[at],r,s[at],n[at])}}}function lo(e,t){const n=Ve in e||Ts in e;return!!It(e,t)?.set||n&&t in e||!(t in e)}function lh(e){e&&Ud(e[at]??"a component",e.name)}function ch(){const e=de?.function;function t(n){Vd(n,e[at])}return{$destroy:()=>t("$destroy()"),$on:()=>t("$on(...)"),$set:()=>t("$set(...)")}}function uh(e,t,n=!1){oi();let r=!0,s=be;Ql(()=>{try{var a=e()}catch(o){s=o;return}var i=En(a,!0,!0);ye(()=>{if(n){if(t(...i),!r){const o=kf("$inspect(...)");o&&(console.groupCollapsed("stack trace"),console.log(o),console.groupEnd())}}else t(r?"init":"update",...i)}),r=!1}),Ce(()=>{try{e()}catch{}s!==be&&(console.error(s),s=be)})}function dh(e,t=[],n=[],r){var s=B,a=null;if(s&&(Ge(),a=Sn(!1)),n.length===0&&t.every(l=>l.settled)){r(e),s&&fe(a);return}const i=Lr();if(s){var o=X;fe(a)}Pr(t,[],n,l=>{s&&(me(!0),fe(o));try{for(const u of l)c(u);r(e,...l)}finally{s&&me(!1),i()}})}function fh(e,...t){(typeof e!="object"||!(e instanceof Node))&&Qi();for(let n of t)typeof n!="function"&&Qi()}const co=0,uo=1,vh=2;function hh(e,t,n,r,s){B&&Ge();var a=be,i=ut(a),o=ut(a),l=new Qn(e);Ut(()=>{var u=ee;u.deactivate();var d=t();u.activate();var f=!1;let v=B&&Zi(d)===(e.data===Es);if(v&&(fe(Sn()),me(!1)),Zi(d)){var k=$s(),y=!1;const w=b=>{if(!f){y=!0,k(!1),wt.ensure(),B&&me(!1);try{b()}finally{xn(!1),qn||sn()}}};d.then(b=>{w(()=>{zt(i,b),l.ensure(uo,r&&(C=>r(C,i)))})},b=>{w(()=>{if(zt(o,b),l.ensure(vh,s&&(C=>s(C,o))),!s)throw o.v})}),B?l.ensure(co,n):We(()=>{y||w(()=>{l.ensure(co,n)})})}else zt(i,d),l.ensure(uo,r&&(w=>r(w,i)));return v&&me(!0),()=>{f=!0}})}function F(e,t,n=!1){var r;B&&(r=X,Ge());var s=new Qn(e),a=n?$t:0;function i(o,l){if(B){var u=Ja(r);if(o!==parseInt(u.substring(1))){var d=Sn();fe(d),s.anchor=d,me(!1),s.ensure(o,l),me(!0);return}}s.ensure(o,l)}Ut(()=>{var o=!1;t((l,u=0)=>{o=!0,i(u,l)}),o||i(-1,null)},a)}const ph=Symbol("NaN");function gh(e,t,n){B&&Ge();var r=new Qn(e);Ut(()=>{var s=t();s!==s&&(s=ph),r.ensure(s,n)})}function mh(e,t){B&&fe(we(e)),Ce(()=>{var n=t();for(var r in n){var s=n[r];s?e.style.setProperty(r,s):e.style.removeProperty(r)}})}function an(e,t){return t}function _h(e,t,n){for(var r=[],s=t.length,a,i=t.length,o=0;o<s;o++){let f=t[o];mn(f,()=>{if(a){if(a.pending.delete(f),a.done.add(f),a.pending.size===0){var v=e.outrogroups;La(e,Is(a.done)),v.delete(a),v.size===0&&(e.outrogroups=null)}}else i-=1},!1)}if(i===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;ai(d),d.append(u),e.items.clear()}La(e,t,!l)}else a={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(a)}function La(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(const i of e.pending.values())for(const o of i)r.add(e.items.get(o).e)}for(var s=0;s<t.length;s++){var a=t[s];if(r?.has(a)){a.f|=Mt;const i=document.createDocumentFragment();di(a,i)}else Ne(t[s],n)}}var fo;function pe(e,t,n,r,s,a=null){var i=e,o=new Map,l=(t&Qo)!==0;if(l){var u=e;i=B?fe(we(u)):u.appendChild(qe())}B&&Ge();var d=null,f=ni(()=>{var m=n();return Xn(m)?m:m==null?[]:Is(m)}),v,k=new Map,y=!0;function w(m){h.effect.f&Qe||(h.pending.delete(m),h.fallback=d,yh(h,v,i,t,r),d!==null&&(v.length===0?d.f&Mt?(d.f^=Mt,ur(d,null,i)):ui(d):mn(d,()=>{d=null})))}function b(m){h.pending.delete(m)}var C=Ut(()=>{v=c(f);var m=v.length;let A=!1;if(B){var L=Ja(i)===Es;L!==(m===0)&&(i=Sn(),fe(i),me(!1),A=!0)}for(var x=new Set,S=ee,N=Gl(),D=0;D<m;D+=1){B&&X.nodeType===Jt&&X.data===xs&&(i=X,A=!0,me(!1));var O=v[D],T=r(O,D),P=y?null:o.get(T);P?(P.v&&zt(P.v,O),P.i&&zt(P.i,D),N&&S.unskip_effect(P.e)):(P=bh(o,y?i:fo??=qe(),O,T,D,s,t,n),y||(P.e.f|=Mt),o.set(T,P)),x.add(T)}if(m===0&&a&&!d&&(y?d=Be(()=>a(i)):(d=Be(()=>a(fo??=qe())),d.f|=Mt)),m>x.size&&Bd(),B&&m>0&&fe(Sn()),!y)if(k.set(S,x),N){for(const[U,z]of o)x.has(U)||S.skip_effect(z.e);S.oncommit(w),S.ondiscard(b)}else w(S);A&&me(!0),c(f)}),h={effect:C,items:o,pending:k,outrogroups:null,fallback:d};y=!1,B&&(i=X)}function ir(e){for(;e!==null&&!(e.f&Ct);)e=e.next;return e}function yh(e,t,n,r,s){var a=(r&gd)!==0,i=t.length,o=e.items,l=ir(e.effect.first),u,d=null,f,v=[],k=[],y,w,b,C;if(a)for(C=0;C<i;C+=1)y=t[C],w=s(y,C),b=o.get(w).e,b.f&Mt||(b.nodes?.a?.measure(),(f??=new Set).add(b));for(C=0;C<i;C+=1){if(y=t[C],w=s(y,C),b=o.get(w).e,e.outrogroups!==null)for(const O of e.outrogroups)O.pending.delete(b),O.done.delete(b);if(b.f&Ke&&(ui(b),a&&(b.nodes?.a?.unfix(),(f??=new Set).delete(b))),b.f&Mt)if(b.f^=Mt,b===l)ur(b,null,n);else{var h=d?d.next:l;b===e.effect.last&&(e.effect.last=b.prev),b.prev&&(b.prev.next=b.next),b.next&&(b.next.prev=b.prev),en(e,d,b),en(e,b,h),ur(b,h,n),d=b,v=[],k=[],l=ir(d.next);continue}if(b!==l){if(u!==void 0&&u.has(b)){if(v.length<k.length){var m=k[0],A;d=m.prev;var L=v[0],x=v[v.length-1];for(A=0;A<v.length;A+=1)ur(v[A],m,n);for(A=0;A<k.length;A+=1)u.delete(k[A]);en(e,L.prev,x.next),en(e,d,L),en(e,x,m),l=m,d=x,C-=1,v=[],k=[]}else u.delete(b),ur(b,l,n),en(e,b.prev,b.next),en(e,b,d===null?e.effect.first:d.next),en(e,d,b),d=b;continue}for(v=[],k=[];l!==null&&l!==b;)(u??=new Set).add(l),k.push(l),l=ir(l.next);if(l===null)continue}b.f&Mt||v.push(b),d=b,l=ir(b.next)}if(e.outrogroups!==null){for(const O of e.outrogroups)O.pending.size===0&&(La(e,Is(O.done)),e.outrogroups?.delete(O));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var S=[];if(u!==void 0)for(b of u)b.f&Ke||S.push(b);for(;l!==null;)!(l.f&Ke)&&l!==e.fallback&&S.push(l),l=ir(l.next);var N=S.length;if(N>0){var D=r&Qo&&i===0?n:null;if(a){for(C=0;C<N;C+=1)S[C].nodes?.a?.measure();for(C=0;C<N;C+=1)S[C].nodes?.a?.fix()}_h(e,S,D)}}a&&We(()=>{if(f!==void 0)for(b of f)b.nodes?.a?.apply()})}function bh(e,t,n,r,s,a,i,o){var l=i&hd?i&md?ut(n):Ds(n,!1,!1):null,u=i&pd?ut(s):null;return{v:l,i:u,e:Be(()=>(a(t,l??n,u??s,o),()=>{e.delete(r)}))}}function ur(e,t,n){if(e.nodes)for(var r=e.nodes.start,s=e.nodes.end,a=t&&!(t.f&Mt)?t.nodes.start:n;r!==null;){var i=dt(r);if(a.before(r),r===s)return;r=i}}function en(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function wh(e,t,n=!1,r=!1,s=!1,a=!1){var i=e,o="";if(n){var l=e;B&&(i=fe(we(l)))}V(()=>{var u=J;if(o===(o=t()??"")){B&&Ge();return}if(n&&!B){u.nodes=null,l.innerHTML=o,o!==""&&Oe(we(l),l.lastChild);return}if(u.nodes!==null&&(nc(u.nodes.start,u.nodes.end),u.nodes=null),o!==""){if(B){X.data;for(var d=Ge(),f=d;d!==null&&(d.nodeType!==Jt||d.data!=="");)f=d,d=dt(d);if(d===null)throw Dr(),yn;Oe(X,f),i=fe(d);return}var v=r?Cr:s?Ya:void 0,k=un(r?"svg":s?"math":"template",v);k.innerHTML=o;var y=r||s?k:k.content;if(Oe(we(y),y.lastChild),r||s)for(;we(y);)i.before(we(y));else i.before(y)}})}function kh(e,t,n,r,s){B&&Ge();var a=t.$$slots?.[n],i=!1;a===!0&&(a=t[n==="default"?"children":n],i=!0),a===void 0?s!==null&&s(e):a(e,i?()=>r:r)}function Sh(e){const t={};e.children&&(t.default=!0);for(const n in e.$$slots)t[n]=!0;return t}function jr(e,t,n){var r;B&&(r=X,Ge());var s=new Qn(e);Ut(()=>{var a=t()??null;if(B){var i=Ja(r),o=i===Ss,l=a!==null;if(o!==l){var u=Sn();fe(u),s.anchor=u,me(!1),s.ensure(a,a&&(d=>n(d,a))),me(!0);return}}s.ensure(a,a&&(d=>n(d,a)))},$t)}const Eh=()=>performance.now(),Ot={tick:e=>requestAnimationFrame(e),now:()=>Eh(),tasks:new Set};function Ic(){const e=Ot.now();Ot.tasks.forEach(t=>{t.c(e)||(Ot.tasks.delete(t),t.f())}),Ot.tasks.size!==0&&Ot.tick(Ic)}function xh(e){let t;return Ot.tasks.size===0&&Ot.tick(Ic),{promise:new Promise(n=>{Ot.tasks.add(t={c:e,f:n})}),abort(){Ot.tasks.delete(t)}}}function ds(e,t){dn(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ih(e){if(e==="float")return"cssFloat";if(e==="offset")return"cssOffset";if(e.startsWith("--"))return e;const t=e.split("-");return t.length===1?t[0]:t[0]+t.slice(1).map(n=>n[0].toUpperCase()+n.slice(1)).join("")}function vo(e){const t={},n=e.split(";");for(const r of n){const[s,a]=r.split(":");if(!s||a===void 0)break;const i=Ih(s.trim());t[i]=a.trim()}return t}const Ah=e=>e;let Ac=null;function ho(e){Ac=e}function Th(e,t,n){var r=Ac??J,s=r.nodes,a,i,o,l=null;s.a??={element:e,measure(){a=this.element.getBoundingClientRect()},apply(){if(o?.abort(),i=this.element.getBoundingClientRect(),a.left!==i.left||a.right!==i.right||a.top!==i.top||a.bottom!==i.bottom){const u=t()(this.element,{from:a,to:i},n?.());o=fs(this.element,u,void 0,1,()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:u,width:d,height:f}=getComputedStyle(e);if(u!=="absolute"&&u!=="fixed"){var v=e.style;l={position:v.position,width:v.width,height:v.height,transform:v.transform},v.position="absolute",v.width=d,v.height=f;var k=e.getBoundingClientRect();if(a.left!==k.left||a.top!==k.top){var y=`translate(${a.left-k.left}px, ${a.top-k.top}px)`;v.transform=v.transform?`${v.transform} ${y}`:y}}}},unfix(){if(l){var u=e.style;u.position=l.position,u.width=l.width,u.height=l.height,u.transform=l.transform}}},s.a.element=e}function Ch(e,t,n,r){var s=(e&wd)!==0,a=(e&kd)!==0,i=s&&a,o=(e&Sd)!==0,l=i?"both":s?"in":"out",u,d=t.inert,f=t.style.overflow,v,k;function y(){return dn(()=>u??=n()(t,r?.()??{},{direction:l}))}var w={is_global:o,in(){if(t.inert=d,!s){k?.abort(),k?.reset?.();return}a||v?.abort(),v=fs(t,y(),k,1,()=>{ds(t,"introend"),v?.abort(),v=u=void 0,t.style.overflow=f})},out(m){if(!a){m?.(),u=void 0;return}t.inert=!0,k=fs(t,y(),v,0,()=>{ds(t,"outroend"),m?.()})},stop:()=>{v?.abort(),k?.abort()}},b=J;if((b.nodes.t??=[]).push(w),s&&us){var C=o;if(!C){for(var h=b.parent;h&&h.f&$t;)for(;(h=h.parent)&&!(h.f&At););C=!h||(h.f&Xt)!==0}C&&ft(()=>{ye(()=>w.in())})}}function fs(e,t,n,r,s){var a=r===1;if(Dn(t)){var i,o=!1;return We(()=>{if(!o){var b=t({direction:a?"in":"out"});i=fs(e,b,n,r,s)}}),{abort:()=>{o=!0,i?.abort()},deactivate:()=>i.deactivate(),reset:()=>i.reset(),t:()=>i.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return ds(e,a?"introstart":"outrostart"),s(),{abort:it,deactivate:it,reset:it,t:()=>r};const{delay:l=0,css:u,tick:d,easing:f=Ah}=t;var v=[];if(a&&n===void 0&&(d&&d(0,1),u)){var k=vo(u(0,1));v.push(k,k)}var y=()=>1-r,w=e.animate(v,{duration:l,fill:"forwards"});return w.onfinish=()=>{w.cancel(),ds(e,a?"introstart":"outrostart");var b=n?.t()??1-r;n?.abort();var C=r-b,h=t.duration*Math.abs(C),m=[];if(h>0){var A=!1;if(u)for(var L=Math.ceil(h/16.666666666666668),x=0;x<=L;x+=1){var S=b+C*f(x/L),N=vo(u(S,1-S));m.push(N),A||=N.overflow==="hidden"}A&&(e.style.overflow="hidden"),y=()=>{var D=w.currentTime;return b+C*f(D/h)},d&&xh(()=>{if(w.playState!=="running")return!1;var D=y();return d(D,1-D),!0})}w=e.animate(m,{duration:h,fill:"forwards"}),w.onfinish=()=>{y=()=>r,d?.(r,1-r),s()}},{abort:()=>{w&&(w.cancel(),w.effect=null,w.onfinish=it)},deactivate:()=>{s=it},reset:()=>{r===0&&d?.(1,0)},t:()=>y()}}function Rh(e,t,n,r,s,a){let i=B;B&&Ge();var o=null;B&&X.nodeType===dl&&(o=X,Ge());var l=B?X:e,u=J,d=new Qn(l,!1);Ut(()=>{const f=t()||null;var v=s?s():n||f==="svg"?Cr:void 0;if(f===null){d.ensure(null,null),Mn(!0);return}return d.ensure(f,k=>{if(f){if(o=B?o:un(f,v),Oe(o,o),r){B&&Bv(f)&&o.append(document.createComment(""));var y=B?we(o):o.appendChild(qe());B&&(y===null?me(!1):fe(y)),ho(u),r(o,y),ho(null)}J.nodes.end=o,k.before(o)}B&&fe(k)}),Mn(!0),()=>{f&&Mn(!1)}},$t),vt(()=>{Mn(!0)}),i&&(me(!0),fe(l))}function $h(e,t){let n=null,r=B;var s;if(B){n=X;for(var a=we(document.head);a!==null&&(a.nodeType!==Jt||a.data!==e);)a=dt(a);if(a===null)me(!1);else{var i=dt(a);a.remove(),fe(i)}}B||(s=document.head.appendChild(qe()));try{Ut(()=>t(s),cl|cn)}finally{r&&(me(!0),fe(n))}}function Dh(e,t){ft(()=>{var n=e.getRootNode(),r=n.host?n:n.head??n.ownerDocument.head;if(!r.querySelector("#"+t.hash)){const s=un("style");s.id=t.hash,s.textContent=t.code,r.appendChild(s)}})}function Tc(e,t,n){ft(()=>{var r=ye(()=>t(e,n?.())||{});if(n&&r?.update){var s=!1,a={};Ce(()=>{var i=n();vi(i),s&&ml(a,i)&&(a=i,r.update(i))}),s=!0}if(r?.destroy)return()=>r.destroy()})}function pi(e,t){var n=void 0,r;ec(()=>{n!==(n=t())&&(r&&(Ne(r),r=null),n&&(r=Be(()=>{ft(()=>n(e))})))})}const Ph=/[&"<]/g;function Lh(e,t){const n=String(e??""),r=Ph;r.lastIndex=0;let s="",a=0;for(;r.test(n);){const i=r.lastIndex-1,o=n[i];s+=n.substring(a,i)+(o==="&"?"&amp;":o==='"'?"&quot;":"&lt;"),a=i+1}return s+n.substring(a)}function Cc(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=Cc(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Nh(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=Cc(e))&&(r&&(r+=" "),r+=t);return r}const po={translate:new Map([[!0,"yes"],[!1,"no"]])};function Oh(e,t,n=!1){if(e==="hidden"&&t!=="until-found"&&(n=!0),t==null||!t&&n)return"";const r=Td.call(po,e)&&po[e].get(t)||t,s=n?'=""':`="${Lh(r)}"`;return` ${e}${s}`}function Rc(e){return typeof e=="object"?Nh(e):e??""}const go=[...`
6
+ \r\f \v\uFEFF`];function Mh(e,t,n){var r=e==null?"":""+e;if(t&&(r=r?r+" "+t:t),n){for(var s of Object.keys(n))if(n[s])r=r?r+" "+s:s;else if(r.length)for(var a=s.length,i=0;(i=r.indexOf(s,i))>=0;){var o=i+a;(i===0||go.includes(r[i-1]))&&(o===r.length||go.includes(r[o]))?r=(i===0?"":r.substring(0,i))+r.substring(o+1):i=o}}return r===""?null:r}function mo(e,t=!1){var n=t?" !important;":";",r="";for(var s of Object.keys(e)){var a=e[s];a!=null&&a!==""&&(r+=" "+s+": "+a+n)}return r}function oa(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function jh(e,t){if(t){var n="",r,s;if(Array.isArray(t)?(r=t[0],s=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var a=!1,i=0,o=!1,l=[];r&&l.push(...Object.keys(r).map(oa)),s&&l.push(...Object.keys(s).map(oa));var u=0,d=-1;const w=e.length;for(var f=0;f<w;f++){var v=e[f];if(o?v==="/"&&e[f-1]==="*"&&(o=!1):a?a===v&&(a=!1):v==="/"&&e[f+1]==="*"?o=!0:v==='"'||v==="'"?a=v:v==="("?i++:v===")"&&i--,!o&&a===!1&&i===0){if(v===":"&&d===-1)d=f;else if(v===";"||f===w-1){if(d!==-1){var k=oa(e.substring(u,d).trim());if(!l.includes(k)){v!==";"&&f++;var y=e.substring(u,f).trim();n+=" "+y+";"}}u=f+1,d=-1}}}}return r&&(n+=mo(r)),s&&(n+=mo(s,!0)),n=n.trim(),n===""?null:n}return e==null?null:String(e)}function Pe(e,t,n,r,s,a){var i=e.__className;if(B||i!==n||i===void 0){var o=Mh(n,r,a);(!B||o!==e.getAttribute("class"))&&(o==null?e.removeAttribute("class"):t?e.className=o:e.setAttribute("class",o)),e.__className=n}else if(a&&s!==a)for(var l in a){var u=!!a[l];(s==null||u!==!!s[l])&&e.classList.toggle(l,u)}return a}function la(e,t={},n,r){for(var s in n){var a=n[s];t[s]!==a&&(n[s]==null?e.style.removeProperty(s):e.style.setProperty(s,a,r))}}function Bt(e,t,n,r){var s=e.__style;if(B||s!==t){var a=jh(t,r);(!B||a!==e.getAttribute("style"))&&(a==null?e.removeAttribute("style"):e.style.cssText=a),e.__style=t}else r&&(Array.isArray(r)?(la(e,n?.[0],r[0]),la(e,n?.[1],r[1],"important")):la(e,n,r));return r}function wr(e,t,n=!1){if(e.multiple){if(t==null)return;if(!Xn(t))return vf();for(var r of e.options)r.selected=t.includes(hr(r));return}for(r of e.options){var s=hr(r);if(Fl(s,t)){r.selected=!0;return}}(!n||t!==void 0)&&(e.selectedIndex=-1)}function gi(e){var t=new MutationObserver(()=>{wr(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),vt(()=>{t.disconnect()})}function vs(e,t,n=t){var r=new WeakSet,s=!0;Or(e,"change",a=>{var i=a?"[selected]":":checked",o;if(e.multiple)o=[].map.call(e.querySelectorAll(i),hr);else{var l=e.querySelector(i)??e.querySelector("option:not([disabled])");o=l&&hr(l)}n(o),e.__value=o,ee!==null&&r.add(ee)}),ft(()=>{var a=t();if(e===document.activeElement){var i=ee;if(r.has(i))return}if(wr(e,a,s),s&&a===void 0){var o=e.querySelector(":checked");o!==null&&(a=hr(o),n(a))}e.__value=a,s=!1}),gi(e)}function hr(e){return"__value"in e?e.__value:e.value}const Ln=Symbol("class"),Nn=Symbol("style"),$c=Symbol("is custom element"),Dc=Symbol("is html"),zh=Tn?"link":"LINK",qh=Tn?"input":"INPUT",Vh=Tn?"option":"OPTION",Uh=Tn?"select":"SELECT",Bh=Tn?"progress":"PROGRESS";function ke(e){if(B){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var r=e.value;Ee(e,"value",null),e.value=r}if(e.hasAttribute("checked")){var s=e.checked;Ee(e,"checked",null),e.checked=s}}};e.__on_r=n,We(n),Xl()}}function Fh(e,t){var n=Os(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Bh)||(e.value=t??"")}function Hh(e,t){var n=Os(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Pc(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function Kh(e,t){const n=e.checked;e.defaultChecked=t,e.checked=n}function Wh(e,t){const n=e.value;e.defaultValue=t,e.value=n}function Ee(e,t,n,r){var s=Os(e);B&&(s[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName===zh)||s[t]!==(s[t]=n)&&(t==="loading"&&(e[Dd]=n),n==null?e.removeAttribute(t):typeof n!="string"&&mi(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Gh(e,t,n){e.setAttributeNS("http://www.w3.org/1999/xlink",t,n)}function Yh(e,t,n){var r=se,s=J;let a=B;B&&me(!1),et(null),Ue(null);try{t!=="style"&&(Na.has(e.getAttribute("is")||e.nodeName)||!customElements||customElements.get(e.getAttribute("is")||e.nodeName.toLowerCase())?mi(e).includes(t):n&&typeof n=="object")?e[t]=n:Ee(e,t,n==null?n:String(n))}finally{et(r),Ue(s),a&&me(!0)}}function Xh(e,t,n,r,s=!1,a=!1){if(B&&s&&e.nodeName===qh){var i=e,o=i.type==="checkbox"?"defaultChecked":"defaultValue";o in n||ke(i)}var l=Os(e),u=l[$c],d=!l[Dc];let f=B&&u;f&&me(!1);var v=t||{},k=e.nodeName===Vh;for(var y in t)y in n||(n[y]=null);n.class?n.class=Rc(n.class):(r||n[Ln])&&(n.class=null),n[Nn]&&(n.style??=null);var w=mi(e);for(const x in n){let S=n[x];if(k&&x==="value"&&S==null){e.value=e.__value="",v[x]=S;continue}if(x==="class"){var b=e.namespaceURI==="http://www.w3.org/1999/xhtml";Pe(e,b,S,r,t?.[Ln],n[Ln]),v[x]=S,v[Ln]=n[Ln];continue}if(x==="style"){Bt(e,S,t?.[Nn],n[Nn]),v[x]=S,v[Nn]=n[Nn];continue}var C=v[x];if(!(S===C&&!(S===void 0&&e.hasAttribute(x)))){v[x]=S;var h=x[0]+x[1];if(h!=="$$")if(h==="on"){const N={},D="$$"+x;let O=x.slice(2);var m=Mv(O);if(Nv(O)&&(O=O.slice(0,-7),N.capture=!0),!m&&C){if(S!=null)continue;e.removeEventListener(O,v[D],N),v[D]=null}if(m)H(O,e,S),ve([O]);else if(S!=null){let T=function(P){v[x].call(this,P)};v[D]=vc(O,e,T,N)}}else if(x==="style")Ee(e,x,S);else if(x==="autofocus")ii(e,!!S);else if(!u&&(x==="__value"||x==="value"&&S!=null))e.value=e.__value=S;else if(x==="selected"&&k)Pc(e,S);else{var A=x;d||(A=zv(A));var L=A==="defaultValue"||A==="defaultChecked";if(S==null&&!u&&!L)if(l[x]=null,A==="value"||A==="checked"){let N=e;const D=t===void 0;if(A==="value"){let O=N.defaultValue;N.removeAttribute(A),N.defaultValue=O,N.value=N.__value=D?O:null}else{let O=N.defaultChecked;N.removeAttribute(A),N.defaultChecked=O,N.checked=D?O:!1}}else e.removeAttribute(x);else L||w.includes(A)&&(u||typeof S!="string")?(e[A]=S,A in l&&(l[A]=be)):typeof S!="function"&&Ee(e,A,S)}}}return f&&me(!0),v}function Jh(e,t,n=[],r=[],s=[],a,i=!1,o=!1){Pr(s,n,r,l=>{var u=void 0,d={},f=e.nodeName===Uh,v=!1;if(ec(()=>{var y=t(...l.map(c)),w=Xh(e,u,y,a,i,o);v&&f&&"value"in y&&wr(e,y.value);for(let C of Object.getOwnPropertySymbols(d))y[C]||Ne(d[C]);for(let C of Object.getOwnPropertySymbols(y)){var b=y[C];C.description===rl&&(!u||b!==u[C])&&(d[C]&&Ne(d[C]),d[C]=Be(()=>pi(e,()=>b))),w[C]=b}u=w}),f){var k=e;ft(()=>{wr(k,u.value,!0),gi(k)})}v=!0})}function Os(e){return e.__attributes??={[$c]:e.nodeName.includes("-"),[Dc]:e.namespaceURI===nl}}var Na=new Map;function mi(e){var t=e.getAttribute("is")||e.nodeName,n=Na.get(t);if(n)return n;Na.set(t,n=[]);for(var r,s=e,a=Element.prototype;a!==s;){r=al(s);for(var i in r)r[i].set&&n.push(i);s=As(s)}return n}let ca=null;function Lc(){if(ca===null){var e=un("select");e.innerHTML=hc("<option><span>t</span></option>"),ca=e.firstChild?.firstChild?.nodeType===1}return ca}function Zh(e,t){Lc()&&pi(e,()=>()=>{const n=e.closest("select");if(!n)return;const r=new MutationObserver(s=>{var a=!1;for(const i of s){if(i.target===e)return;a||=!!i.target.parentElement?.closest("option")?.selected}a&&(e.replaceWith(e=e.cloneNode(!0)),t(e))});return r.observe(n,{childList:!0,characterData:!0,subtree:!0}),()=>{r.disconnect()}})}function Qh(e,t){var n=B;Lc()||(me(!1),e.textContent="",e.append(Yl("")));try{t()}finally{n&&(B?p(e):(me(!0),fe(e)))}}function ep(e){nt(document,["focusin","focusout"],t=>{t&&t.type==="focusout"&&t.relatedTarget||e(document.activeElement)})}function De(e,t,n=t){var r=new WeakSet;Or(e,"input",async s=>{var a=s?e.defaultValue:e.value;if(a=da(e)?fa(a):a,n(a),ee!==null&&r.add(ee),await fi(),a!==(a=t())){var i=e.selectionStart,o=e.selectionEnd,l=e.value.length;if(e.value=a??"",o!==null){var u=e.value.length;i===o&&o===l&&u>l?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=i,e.selectionEnd=Math.min(o,u))}}}),(B&&e.defaultValue!==e.value||ye(t)==null&&e.value)&&(n(da(e)?fa(e.value):e.value),ee!==null&&r.add(ee)),Ce(()=>{var s=t();if(e===document.activeElement){var a=ee;if(r.has(a))return}da(e)&&s===fa(e.value)||e.type==="date"&&!s&&!e.value||s!==e.value&&(e.value=s??"")})}const ua=new Set;function tp(e,t,n,r,s=r){var a=n.getAttribute("type")==="checkbox",i=e;let o=!1;if(t!==null)for(var l of t)i=i[l]??=[];i.push(n),Or(n,"change",()=>{var u=n.__value;a&&(u=_o(i,u,n.checked)),s(u)},()=>s(a?[]:null)),Ce(()=>{var u=r();if(B&&n.defaultChecked!==n.checked){o=!0;return}a?(u=u||[],n.checked=u.includes(n.__value)):n.checked=Fl(n.__value,u)}),vt(()=>{var u=i.indexOf(n);u!==-1&&i.splice(u,1)}),ua.has(i)||(ua.add(i),We(()=>{i.sort((u,d)=>u.compareDocumentPosition(d)===4?-1:1),ua.delete(i)})),We(()=>{if(o){var u;if(a)u=_o(i,u,n.checked);else{var d=i.find(f=>f.checked);u=d?.__value}s(u)}})}function Zr(e,t,n=t){Or(e,"change",r=>{var s=r?e.defaultChecked:e.checked;n(s)}),(B&&e.defaultChecked!==e.checked||ye(t)==null)&&n(e.checked),Ce(()=>{var r=t();e.checked=!!r})}function _o(e,t,n){for(var r=new Set,s=0;s<e.length;s+=1)e[s].checked&&r.add(e[s].__value);return n||r.delete(t),Array.from(r)}function da(e){var t=e.type;return t==="number"||t==="range"}function fa(e){return e===""?null:+e}function np(e,t,n=t){Or(e,"change",()=>{n(e.files)}),B&&e.files&&n(e.files),Ce(()=>{e.files=t()})}function _i(e){for(var t=[],n=0;n<e.length;n+=1)t.push({start:e.start(n),end:e.end(n)});return t}function rp(e,t,n=t){var r,s,a=()=>{cancelAnimationFrame(r),e.paused||(r=requestAnimationFrame(a));var i=e.currentTime;s!==i&&n(s=i)};r=requestAnimationFrame(a),e.addEventListener("timeupdate",a),Ce(()=>{var i=Number(t());s!==i&&!isNaN(i)&&(e.currentTime=s=i)}),vt(()=>{cancelAnimationFrame(r),e.removeEventListener("timeupdate",a)})}function sp(e,t){var n;nt(e,["loadedmetadata","progress","timeupdate","seeking"],()=>{var r=e.buffered;(!n||n.length!==r.length||n.some((s,a)=>r.start(a)!==s.start||r.end(a)!==s.end))&&(n=_i(r),t(n))})}function ap(e,t){nt(e,["loadedmetadata"],()=>t(_i(e.seekable)))}function ip(e,t){nt(e,["timeupdate"],()=>t(_i(e.played)))}function op(e,t){nt(e,["seeking","seeked"],()=>t(e.seeking))}function lp(e,t){nt(e,["timeupdate","ended"],()=>t(e.ended))}function cp(e,t){nt(e,["loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","emptied"],()=>t(e.readyState))}function up(e,t,n=t){ft(()=>{var r=Number(t());r!==e.playbackRate&&!isNaN(r)&&(e.playbackRate=r)}),ft(()=>{nt(e,["ratechange"],()=>{n(e.playbackRate)})})}function dp(e,t,n=t){var r=t(),s=()=>{r!==e.paused&&n(r=e.paused)};nt(e,["play","pause","canplay"],s,r==null),ft(()=>{(r=!!t())!==e.paused&&(r?e.pause():e.play().catch(a=>{throw n(r=!0),a}))})}function fp(e,t,n=t){var r=()=>{n(e.volume)};t()==null&&r(),nt(e,["volumechange"],r,!1),Ce(()=>{var s=Number(t());s!==e.volume&&!isNaN(s)&&(e.volume=s)})}function vp(e,t,n=t){var r=()=>{n(e.muted)};t()==null&&r(),nt(e,["volumechange"],r,!1),Ce(()=>{var s=!!t();e.muted!==s&&(e.muted=s)})}function hp(e){nt(window,["online","offline"],()=>{e(navigator.onLine)})}function pp(e,t,n){var r=It(e,t);r&&r.set&&(e[t]=n,vt(()=>{e[t]=null}))}class zr{#e=new WeakMap;#t;#n;static entries=new WeakMap;constructor(t){this.#n=t}observe(t,n){var r=this.#e.get(t)||new Set;return r.add(n),this.#e.set(t,r),this.#a().observe(t,this.#n),()=>{var s=this.#e.get(t);s.delete(n),s.size===0&&(this.#e.delete(t),this.#t.unobserve(t))}}#a(){return this.#t??(this.#t=new ResizeObserver(t=>{for(var n of t){zr.entries.set(n.target,n);for(var r of this.#e.get(n.target)||[])r(n)}}))}}var gp=new zr({box:"content-box"}),Nc=new zr({box:"border-box"}),mp=new zr({box:"device-pixel-content-box"});function _p(e,t,n){var r=t==="contentRect"||t==="contentBoxSize"?gp:t==="borderBoxSize"?Nc:mp,s=r.observe(e,a=>n(a[t]));vt(s)}function yp(e,t,n){var r=Nc.observe(e,()=>n(e[t]));ft(()=>(ye(()=>n(e[t])),r))}function yo(e,t){return e===t||e?.[Ve]===t}function kt(e={},t,n,r){var s=de.r,a=J;return ft(()=>{var i,o;return Ce(()=>{i=o,o=r?.()||[],ye(()=>{e!==n(...o)&&(t(e,...o),i&&yo(n(...i),e)&&t(null,...i))})}),()=>{let l=a;for(;l!==s&&l.parent!==null&&l.parent.f&ka;)l=l.parent;const u=()=>{o&&yo(n(...o),e)&&t(null,...o)},d=l.teardown;l.teardown=()=>{u(),d?.()}}}),e}function bp(e,t,n,r=n){t.addEventListener("input",()=>{r(t[e])}),Ce(()=>{var s=n();if(t[e]!==s)if(s==null){var a=t[e];r(a)}else t[e]=s+""})}function wp(e,t,n,r,s){var a=()=>{r(n[e])};n.addEventListener(t,a),s?Ce(()=>{n[e]=s()}):a(),(n===document.body||n===window||n===document)&&vt(()=>{n.removeEventListener(t,a)})}function kp(e,t){nt(e,["focus","blur"],()=>{t(e===document.activeElement)})}function Sp(e,t,n=t){var r=e==="x",s=()=>dn(()=>{a=!0,clearTimeout(i),i=setTimeout(o,100),n(window[r?"scrollX":"scrollY"])});addEventListener("scroll",s,{passive:!0});var a=!1,i,o=()=>{a=!1},l=!0;Ce(()=>{var u=t();l?l=!1:!a&&u!=null&&(a=!0,clearTimeout(i),r?scrollTo(u,window.scrollY):scrollTo(window.scrollX,u),i=setTimeout(o,100))}),ft(s),vt(()=>{removeEventListener("scroll",s)})}function Ep(e,t){nt(window,["resize"],()=>dn(()=>t(window[e])))}function xp(e){return function(...t){var n=t[0];n.isTrusted&&e?.apply(this,t)}}function Ip(e){return function(...t){var n=t[0];n.target===this&&e?.apply(this,t)}}function Ap(e){return function(...t){var n=t[0];return n.stopPropagation(),e?.apply(this,t)}}function Tp(e){var t=!1;return function(...n){if(!t)return t=!0,e?.apply(this,n)}}function Cp(e){return function(...t){var n=t[0];return n.stopImmediatePropagation(),e?.apply(this,t)}}function Rp(e){return function(...t){var n=t[0];return n.preventDefault(),e?.apply(this,t)}}function $p(e=!1){const t=de,n=t.l.u;if(!n)return;let r=()=>vi(t.s);if(e){let s=0,a={};const i=Nr(()=>{let o=!1;const l=t.s;for(const u in l)l[u]!==a[u]&&(a[u]=l[u],o=!0);return o&&s++,s});r=()=>c(i)}n.b.length&&Zl(()=>{bo(t,r),ba(n.b)}),Le(()=>{const s=ye(()=>n.m.map(Cd));return()=>{for(const a of s)typeof a=="function"&&a()}}),n.a.length&&Le(()=>{bo(t,r),ba(n.a)})}function bo(e,t){if(e.l.s)for(const n of e.l.s)c(n);t()}function Dp(e){var t=ut(0);return function(){return arguments.length===1?(_(t,c(t)+1),arguments[0]):(c(t),e())}}function Pp(e,t){var n=e.$$events?.[t.type],r=Xn(n)?n.slice():n==null?[]:[n];for(var s of r)s.call(this,t)}function Lp(e,t,n){e.$$events||={},e.$$events[t]||=[],e.$$events[t].push(n)}function Np(e){for(var t in e)t in this&&(this[t]=e[t])}function Op(e,t=1){const n=e();return e(n+t),n}function Mp(e,t=1){const n=e()+t;return e(n),n}const jp={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function zp(e,t,n){return new Proxy({props:e,exclude:t},jp)}const qp={get(e,t){if(!e.exclude.includes(t))return c(e.version),t in e.special?e.special[t]():e.props[t]},set(e,t,n){if(!(t in e.special)){var r=J;try{Ue(e.parent_effect),e.special[t]=on({get[t](){return e.props[t]}},t,el)}finally{Ue(r)}}return e.special[t](n),Hn(e.version),!0},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},deleteProperty(e,t){return e.exclude.includes(t)||(e.exclude.push(t),Hn(e.version)),!0},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function Vp(e,t){return new Proxy({props:e,exclude:t,special:{},version:ut(0),parent_effect:J},qp)}const Up={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(Dn(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let s=e.props[r];Dn(s)&&(s=s());const a=It(s,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(Dn(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r){const s=It(r,t);return s&&!s.configurable&&(s.configurable=!0),s}}},has(e,t){if(t===Ve||t===Ts)return!1;for(let n of e.props)if(Dn(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){const t=[];for(let n of e.props)if(Dn(n)&&(n=n()),!!n){for(const r in n)t.includes(r)||t.push(r);for(const r of Object.getOwnPropertySymbols(n))t.includes(r)||t.push(r)}return t}};function qr(...e){return new Proxy({props:e},Up)}function on(e,t,n,r){var s=(n&yd)!==0,a=(n&bd)!==0,i=r,o=!0,l=()=>(o&&(o=!1,i=a?ye(r):r),i);let u;if(s){var d=Ve in e||Ts in e;u=It(e,t)?.set??(d&&t in e?h=>e[t]=h:void 0)}var f,v=!1;s?[f,v]=$l(()=>e[t]):f=e[t],f===void 0&&r!==void 0&&(f=l(),u&&(Qd(),u(f)));var k;if(k=()=>{var h=e[t];return h===void 0?l():(o=!0,h)},!(n&el))return k;if(u){var y=e.$$legacy;return function(h,m){return arguments.length>0?((!m||y||v)&&u(m?k():h),h):k()}}var w=!1,b=(n&_d?Nr:ni)(()=>(w=!1,k()));s&&c(b);var C=J;return function(h,m){if(arguments.length>0){const A=m?c(b):s?ce(h):h;return _(b,A),w=!0,i!==void 0&&(i=A),h}return Yt&&w||C.f&Qe?b.v:c(b)}}function Bp(e,t,n,r,s,a){Ml(t,()=>{var i=!1;Za?.[at],Ce(()=>{if(!i){var[o,l]=$l(n);if(!l){var u=r(),d=!1,f=Ce(()=>{d||o[u]});d=!0,f.deps===null&&(af(),i=!0)}}})})}function Fp(e){return new Hp(e)}class Hp{#e;#t;constructor(t){var n=new Map,r=(a,i)=>{var o=Ds(i,!1,!1);return n.set(a,o),o};const s=new Proxy({...t.props||{},$$events:{}},{get(a,i){return c(n.get(i)??r(i,Reflect.get(a,i)))},has(a,i){return i===Ts?!0:(c(n.get(i)??r(i,Reflect.get(a,i))),Reflect.has(a,i))},set(a,i,o){return _(n.get(i)??r(i,o),o),Reflect.set(a,i,o)}});this.#t=(t.hydrate?_c:ze)(t.component,{target:t.target,anchor:t.anchor,props:s,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&sn(),this.#e=s.$$events;for(const a of Object.keys(this.#t))a==="$set"||a==="$destroy"||a==="$on"||bn(this,a,{get(){return this.#t[a]},set(i){this.#t[a]=i},enumerable:!0});this.#t.$set=a=>{Object.assign(s,a)},this.#t.$destroy=()=>{He(this.#t)}}$set(t){this.#t.$set(t)}$on(t,n){this.#e[t]=this.#e[t]||[];const r=(...s)=>n.call(this,...s);return this.#e[t].push(r),()=>{this.#e[t]=this.#e[t].filter(s=>s!==r)}}$destroy(){this.#t.$destroy()}}let Oc;typeof HTMLElement=="function"&&(Oc=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;$$shadowRoot=null;constructor(e,t,n){super(),this.$$ctor=e,this.$$s=t,n&&(this.$$shadowRoot=this.attachShadow(n))}addEventListener(e,t,n){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const r=this.$$c.$on(e,t);this.$$l_u.set(t,r)}super.addEventListener(e,t,n)}removeEventListener(e,t,n){if(super.removeEventListener(e,t,n),this.$$c){const r=this.$$l_u.get(t);r&&(r(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(r){return s=>{const a=un("slot");r!=="default"&&(a.name=r),I(s,a)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},n=Kp(this);for(const r of this.$$s)r in n&&(r==="default"&&!this.$$d.children?(this.$$d.children=e(r),t.default=!0):t[r]=e(r));for(const r of this.attributes){const s=this.$$g_p(r.name);s in this.$$d||(this.$$d[s]=Qr(s,r.value,this.$$p_d,"toProp"))}for(const r in this.$$p_d)!(r in this.$$d)&&this[r]!==void 0&&(this.$$d[r]=this[r],delete this[r]);this.$$c=Fp({component:this.$$ctor,target:this.$$shadowRoot||this,props:{...this.$$d,$$slots:t,$$host:this}}),this.$$me=li(()=>{Ce(()=>{this.$$r=!0;for(const r of as(this.$$c)){if(!this.$$p_d[r]?.reflect)continue;this.$$d[r]=this.$$c[r];const s=Qr(r,this.$$d[r],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[r].attribute||r):this.setAttribute(this.$$p_d[r].attribute||r,s)}this.$$r=!1})});for(const r in this.$$l)for(const s of this.$$l[r]){const a=this.$$c.$on(r,s);this.$$l_u.set(s,a)}this.$$l={}}}attributeChangedCallback(e,t,n){this.$$r||(e=this.$$g_p(e),this.$$d[e]=Qr(e,n,this.$$p_d,"toProp"),this.$$c?.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(e){return as(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Qr(e,t,n,r){const s=n[e]?.type;if(t=s==="Boolean"&&typeof t!="boolean"?t!=null:t,!r||!n[e])return t;if(r==="toAttribute")switch(s){case"Object":case"Array":return t==null?null:JSON.stringify(t);case"Boolean":return t?"":null;case"Number":return t??null;default:return t}else switch(s){case"Object":case"Array":return t&&JSON.parse(t);case"Boolean":return t;case"Number":return t!=null?+t:t;default:return t}}function Kp(e){const t={};return e.childNodes.forEach(n=>{t[n.slot||"default"]=!0}),t}function Wp(e,t,n,r,s,a){let i=class extends Oc{constructor(){super(e,n,s),this.$$p_d=t}static get observedAttributes(){return as(t).map(o=>(t[o].attribute||o).toLowerCase())}};return as(t).forEach(o=>{bn(i.prototype,o,{get(){return this.$$c&&o in this.$$c?this.$$c[o]:this.$$d[o]},set(l){l=Qr(o,l,t),this.$$d[o]=l;var u=this.$$c;if(u){var d=It(u,o)?.get;d?u[o]=l:u.$set({[o]:l})}}})}),r.forEach(o=>{bn(i.prototype,o,{get(){return this.$$c?.[o]}})}),a&&(i=a(i)),e.element=i,i}function Gp(e,...t){return ye(()=>{try{let n=!1;const r=[];for(const s of t)s&&typeof s=="object"&&Ve in s?(r.push(En(s,!0)),n=!0):r.push(s);n&&(of(e),console.log("%c[snapshot]","color: grey",...r))}catch{}}),t}const Mc=Object.freeze(Object.defineProperty({__proto__:null,CLASS:Ln,FILENAME:at,HMR:$n,NAMESPACE_SVG:Cr,STYLE:Nn,aborted:Ra,action:Tc,get active_effect(){return J},add_legacy_event_listener:Lp,add_locations:sh,add_svelte_meta:Ef,animation:Th,append:I,append_styles:Dh,apply:Sv,assign:th,assign_async:nh,async:dh,async_derived:jl,attach:pi,attachment:eh,attr:Oh,attribute_effect:Jh,autofocus:ii,await:hh,bind_active_element:ep,bind_buffered:sp,bind_checked:Zr,bind_content_editable:bp,bind_current_time:rp,bind_element_size:yp,bind_ended:lp,bind_files:np,bind_focused:kp,bind_group:tp,bind_muted:vp,bind_online:hp,bind_paused:dp,bind_playback_rate:up,bind_played:ip,bind_prop:pp,bind_property:wp,bind_ready_state:cp,bind_resize_observer:_p,bind_seekable:ap,bind_seeking:op,bind_select_value:vs,bind_this:kt,bind_value:De,bind_volume:fp,bind_window_scroll:Sp,bind_window_size:Ep,boundary:Ol,bubble_event:Pp,check_target:lh,child:g,cleanup_styles:rh,clsx:Rc,comment:ot,component:jr,create_custom_element:Wp,create_ownership_validator:oh,css_props:mh,customizable_select:Qh,deep_read:cs,deep_read_state:vi,deferred_template_effect:vv,delegate:ve,delegated:H,derived:W,derived_safe_equal:ni,get document(){return Hl},each:pe,eager:Uf,effect:ft,effect_root:li,effect_tracking:Mr,element:Rh,equals:sv,event:tt,exclude_from_object:$d,fallback:Rd,first_child:_e,flush:sn,for_await_track_reactivity_loss:Yf,from_html:R,from_mathml:Tv,from_svg:Av,from_tree:Cv,get:c,head:$h,hmr:ih,html:wh,hydrate_template:pf,if:F,index:an,init:$p,init_select:gi,inspect:uh,invalid_default_snippet:Nd,invalidate_inner_signals:gv,invalidate_store:Pf,invoke_error_boundary:jt,key:gh,legacy_api:ch,legacy_pre_effect:uv,legacy_pre_effect_reset:dv,legacy_rest_props:Vp,log_if_contains_state:Gp,mark_store_binding:jf,mutable_source:Ds,mutate:tv,next:Wt,noop:it,once:Tp,pending:Wf,pop:re,preventDefault:Rp,prevent_snippet_stringification:bc,prop:on,props_id:Dv,proxy:ce,push:ne,raf:Ot,reactive_import:Dp,remove_input_defaults:ke,remove_textarea_child:ov,render_effect:Ce,replay_events:kv,reset:p,rest_props:zp,run:Xf,run_after_blockers:Ml,safe_get:bv,sanitize_slots:Sh,save:Gf,select_option:wr,selectedcontent:Zh,self:Ip,set:_,set_attribute:Ee,set_checked:Hh,set_class:Pe,set_custom_element_data:Yh,set_default_checked:Kh,set_default_value:Wh,set_selected:Pc,set_style:Bt,set_text:j,set_value:Fh,set_xlink_attribute:Gh,setup_stores:Lf,sibling:E,slot:kh,snapshot:En,snippet:Ls,spread_props:qr,state:q,stopImmediatePropagation:Cp,stopPropagation:Ap,store_get:$f,store_mutate:Nf,store_set:Rl,store_unsub:Df,strict_equals:rv,tag:wf,tag_proxy:bl,template_effect:V,text:Vn,tick:fi,to_array:ll,trace:bf,track_reactivity_loss:Aa,transition:Ch,trusted:xp,untrack:ye,update:Hn,update_legacy_props:Np,update_pre:nv,update_pre_prop:Mp,update_pre_store:Mf,update_prop:Op,update_store:Of,user_effect:Le,user_pre_effect:Zl,validate_binding:Bp,validate_dynamic_element_tag:Hv,validate_snippet_args:fh,validate_store:Kv,validate_void_dynamic_element:Fv,wait:Jf,get window(){return Ta},with_script:Rv,wrap_snippet:Wv},Symbol.toStringTag,{value:"Module"}));class wo{#e=new Map;read(t){return this.#e.get(t)}write(t,n){this.#e.set(t,n)}delete(t){this.#e.delete(t)}list(){return[...this.#e.keys()]}}class ko{#e;constructor(t){this.#e=t}read(t){if(typeof localStorage>"u")return;const n=localStorage.getItem(this.#e+t);if(n!=null)try{return JSON.parse(n)}catch{return}}write(t,n){if(!(typeof localStorage>"u"))try{localStorage.setItem(this.#e+t,JSON.stringify(n))}catch{}}delete(t){typeof localStorage>"u"||localStorage.removeItem(this.#e+t)}list(){if(typeof localStorage>"u")return[];const t=[];for(let n=0;n<localStorage.length;n++){const r=localStorage.key(n);r&&r.startsWith(this.#e)&&t.push(r.slice(this.#e.length))}return t}}const Yp=["workspace","user"],yi="state:manage",Dt={ephemeral:new wo,session:new wo,workspace:new ko("sh3:workspace:"),user:new ko("sh3:user:")},va=new Map;let ha=!1;function Xp(e,t,n){va.set(`${e}:${t}`,{zone:e,shardId:t,value:n}),!ha&&(ha=!0,queueMicrotask(()=>{ha=!1;for(const{zone:r,shardId:s,value:a}of va.values())Dt[r].write(s,a);va.clear()}))}function Ms(e,t){const n={};for(const r of Object.keys(t)){const s=t[r],i=Dt[r].read(e),o={...s,...i??{}},l=ce(o);n[r]=l,Yp.includes(r)&&li(()=>{let u=!0;Le(()=>{const d=En(l);if(u){u=!1;return}Xp(r,e,d)})})}return n}function So(e,t){Dt[e]=t}function Jp(e,t){return Dt[e].read(t)}function Oa(e,t){Dt[e].delete(t)}const Zp="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(Zp);const Qp=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(",");function eg(e){const t=document.activeElement;function n(){return Array.from(e.querySelectorAll(Qp))}function r(s){if(s.key!=="Tab")return;const a=n();if(a.length===0){s.preventDefault();return}const i=a[0],o=a[a.length-1],l=document.activeElement;s.shiftKey&&(l===i||!e.contains(l))?(s.preventDefault(),o.focus()):!s.shiftKey&&(l===o||!e.contains(l))&&(s.preventDefault(),i.focus())}return e.addEventListener("keydown",r),queueMicrotask(()=>{(n()[0]??e).focus()}),()=>{e.removeEventListener("keydown",r),t&&document.contains(t)&&t.focus()}}var tg=R('<div class="modal-frame svelte-2tcvcm" role="presentation"><div class="modal-box svelte-2tcvcm" role="dialog" aria-modal="true" tabindex="-1"><!></div></div>');function ng(e,t){ne(t,!0);let n;Le(()=>{if(n)return eg(n)});var r=tg(),s=g(r),a=g(s);jr(a,()=>t.Content,(i,o)=>{o(i,qr(()=>t.contentProps,{get close(){return t.close}}))}),p(s),kt(s,i=>n=i,()=>n),p(r),V(()=>Bt(s,t.boxStyle)),I(e,r),re()}const bi={};function rg(e,t){bi[e]=t}function sg(e){delete bi[e]}function js(e){const t=bi[e];if(!t)throw new Error(`Overlay layer "${e}" root is not registered — Shell.svelte must mount before opening overlays on this layer.`);return t}const ct=[];let hs=!1,pt=null;const ag=.5;function jc(){const e=js("modal");if(ct.length===0){pt&&(pt.remove(),pt=null);return}pt||(pt=document.createElement("div"),pt.className="sh3-modal-backdrop",pt.style.position="absolute",pt.style.inset="0",pt.style.pointerEvents="auto",pt.style.transition="background-color 120ms ease",pt.style.background=`rgba(0, 0, 0, ${ag})`);const t=ct[ct.length-1].host;e.insertBefore(pt,t)}function zc(e){e.key==="Escape"&&ct.length!==0&&(e.stopPropagation(),e.preventDefault(),ct[ct.length-1].handle.close())}function ig(){hs||(hs=!0,document.addEventListener("keydown",zc,!0))}function og(){ct.length>0||hs&&(hs=!1,document.removeEventListener("keydown",zc,!0))}function qc(e){const t=ct.indexOf(e);t<0||(ct.splice(t,1),He(e.frame),e.host.remove(),jc(),og())}function lg(e,t,n){const r=js("modal"),s=document.createElement("div");s.className="sh3-modal-host",s.style.position="absolute",s.style.inset="0",s.style.pointerEvents="auto",r.appendChild(s);const a={},i={close:()=>qc(a)},o=ze(ng,{target:s,props:{Content:e,contentProps:t??{},close:i.close,boxStyle:n?.boxStyle}});return a.host=s,a.frame=o,a.handle=i,ct.push(a),jc(),ig(),i}function cg(){for(;ct.length>0;)qc(ct[ct.length-1])}const ug={open:lg,closeAll:cg};var dg=R('<div class="popup-frame svelte-mp81cl" role="menu" tabindex="-1"><!></div>');function fg(e,t){ne(t,!0);let n,r=q(-9999),s=q(-9999);Le(()=>{if(!n)return;const o=n.getBoundingClientRect(),l=4,u=window.innerWidth,d=window.innerHeight;let f=t.anchorRect.bottom+l,v=t.anchorRect.left;if(v+o.width>u-l&&(v=Math.max(l,u-o.width-l)),f+o.height>d-l){const k=t.anchorRect.top-o.height-l;f=k>=l?k:Math.max(l,d-o.height-l)}_(r,f,!0),_(s,v,!0)});var a=dg(),i=g(a);jr(i,()=>t.Content,(o,l)=>{l(o,qr(()=>t.contentProps,{get close(){return t.close}}))}),p(a),kt(a,o=>n=o,()=>n),V(()=>Bt(a,`top: ${c(r)??""}px; left: ${c(s)??""}px;`)),I(e,a),re()}let bt=null;function Vc(e){if(!bt)return;const t=e.target;t&&bt.host.contains(t)||bt.handle.close()}function Uc(e){bt&&e.key==="Escape"&&(e.stopPropagation(),e.preventDefault(),bt.handle.close())}function vg(){document.addEventListener("pointerdown",Vc,!0),document.addEventListener("keydown",Uc,!0)}function hg(){document.removeEventListener("pointerdown",Vc,!0),document.removeEventListener("keydown",Uc,!0)}function Ma(e){bt===e&&(bt=null,hg(),He(e.frame),e.host.remove())}function pg(e,t,n){bt&&Ma(bt);const r=js("popup"),s=document.createElement("div");s.className="sh3-popup-host",s.style.position="absolute",s.style.inset="0",s.style.pointerEvents="none",r.appendChild(s);const a=t.anchor.getBoundingClientRect(),i={},o={close:()=>Ma(i)},l=ze(fg,{target:s,props:{Content:e,contentProps:n??{},anchorRect:a,close:o.close}});return i.host=s,i.frame=l,i.handle=o,bt=i,queueMicrotask(vg),o}function gg(){bt&&Ma(bt)}const mg={show:pg,close:gg};var _g=R('<div role="status" aria-live="polite"><span class="toast-level svelte-12gwnj0"> </span> <span class="toast-message svelte-12gwnj0"> </span></div>');function yg(e,t){var n=_g(),r=g(n),s=g(r,!0);p(r);var a=E(r,2),i=g(a,!0);p(a),p(n),V(()=>{Pe(n,1,`toast toast-${t.level??""}`,"svelte-12gwnj0"),j(s,t.level),j(i,t.message)}),H("click",n,function(...o){t.close?.apply(this,o)}),I(e,n)}ve(["click"]);const ps=new Set;let Xe=null;function bg(){if(Xe&&Xe.isConnected)return Xe;const e=js("toast");return Xe=document.createElement("div"),Xe.className="sh3-toast-stack",Xe.style.position="absolute",Xe.style.right="16px",Xe.style.bottom="16px",Xe.style.display="flex",Xe.style.flexDirection="column-reverse",Xe.style.gap="6px",Xe.style.pointerEvents="none",e.appendChild(Xe),Xe}function ja(e){ps.has(e)&&(ps.delete(e),e.timer!==null&&(clearTimeout(e.timer),e.timer=null),He(e.instance),e.host.remove())}function wg(e,t={}){const n=t.level??"info",r=t.duration??3e3,s=bg(),a=document.createElement("div");a.className="sh3-toast-host",s.appendChild(a);const i={},o={close:()=>ja(i)},l=ze(yg,{target:a,props:{message:e,level:n,close:o.close}});return i.host=a,i.instance=l,i.handle=o,i.timer=Number.isFinite(r)&&r>0?setTimeout(()=>ja(i),r):null,ps.add(i),o}function kg(){for(const e of[...ps])ja(e)}const Sg={notify:wg,clear:kg},Eo={w:120,h:80};function Bc(e){if(e.type==="slot")return{...Eo};if(e.type==="tabs")return{...Eo};const t=e.children.map(Bc);return e.direction==="horizontal"?{w:t.reduce((n,r)=>n+r.w,0),h:t.reduce((n,r)=>Math.max(n,r.h),0)}:{w:t.reduce((n,r)=>Math.max(n,r.w),0),h:t.reduce((n,r)=>n+r.h,0)}}const xo=32,Io={x:48,y:48};function Eg(e,t){if(e.length===0)return{...Io};const n=e[e.length-1],r={x:n.position.x+xo,y:n.position.y+xo};return r.x+120>t.w||r.y+32>t.h?{...Io}:r}let Ao=0;function xg(){return Ao+=1,`float-${Date.now().toString(36)}-${Ao.toString(36)}`}function Fc(e){return e.type==="slot"?e.viewId==null:e.type==="tabs"?e.tabs.every(t=>t.viewId==null):e.children.every(Fc)}let Ig=[],wi=null,ki=()=>({w:1600,h:900});function Ag(e,t){wi=e,ki=t}function Tg(){wi=null,ki=()=>({w:1600,h:900})}function zs(){return wi??Ig}let To=0;function Cg(e){return To+=1,`float:${e}:${To}`}const Rg={w:600,h:400};function $g(e,t){return{w:Math.max(e.w,t.w),h:Math.max(e.h,t.h)}}function Dg(e,t={}){const n=zs(),r=xg(),s=Cg(e),a=t.title??e,i={slotId:s,viewId:e,label:a};t.meta&&(i.meta=t.meta);const o={type:"tabs",tabs:[i],activeTab:0},l=Bc(o),u=t.size??$g(Rg,l),d=t.position??Eg(n,ki()),f={id:r,content:o,position:d,size:u,title:t.title};return n.push(f),r}function Pg(e){const t=zs(),n=t.findIndex(r=>r.id===e);n<0||t.splice(n,1)}function Lg(){return zs().slice()}function Ng(e){const t=zs(),n=t.findIndex(s=>s.id===e);if(n<0||n===t.length-1)return;const[r]=t.splice(n,1);t.push(r)}const Tt={open:Dg,close:Pg,list:Lg,focus:Ng};let gs=null;function Og(e){gs=e}function Mg(){gs=null}function Si(){if(!gs)throw new Error("presetManager: no app attached — bind an AppLayoutBlob first");return gs}function jg(){return Object.keys(Si().presets)}function zg(){return Si().activePreset}function qg(e){const t=Si();if(!(e in t.presets))throw new Error(`presetManager.switch: unknown preset "${e}"`);t.activePreset=e}const Vg={list:jg,active:zg,switch:qg},Hc={state:Ms,modal:ug,popup:mg,toast:Sg,float:Tt,presets:Vg},ms=new Map,Kc=new Set;function Ug(e){Kc.add(e)}function Bg(e,t){if(ms.has(e))throw new Error(`View "${e}" is already registered`);ms.set(e,t);for(const n of Kc)n(e,t)}function Wc(e){return ms.get(e)}function Fg(e){ms.delete(e)}const kr=new Map;function Hg(e,t){if(kr.has(e))throw new Error(`Verb "${e}" is already registered`);kr.set(e,t)}function Co(e){return kr.get(e)}function Kg(e){kr.delete(e)}function Ei(){return Array.from(kr.values()).sort((e,t)=>e.name.localeCompare(t.name))}function Fr(e,t,n){return`${e}/${t}/${n}`}function Wg(e,t){return`${e}/${t}/`}const Gg="sh3-documents",Lt="docs",Yg=2;class Xg{#e=null;#t(){return this.#e||(this.#e=new Promise((t,n)=>{const r=indexedDB.open(Gg,Yg);r.onupgradeneeded=()=>{const s=r.result;s.objectStoreNames.contains(Lt)||s.createObjectStore(Lt)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})),this.#e}async#n(t,n){const r=await this.#t();return new Promise((s,a)=>{const o=r.transaction(Lt,t).objectStore(Lt),l=n(o);l.onsuccess=()=>s(l.result),l.onerror=()=>a(l.error)})}async read(t,n,r){const s=Fr(t,n,r),a=await this.#n("readonly",i=>i.get(s));return a?a.content:null}async write(t,n,r,s){const a=Fr(t,n,r),i=typeof s=="string"?new Blob([s]).size:s.byteLength,o={content:s,size:i,lastModified:Date.now()};await this.#n("readwrite",l=>l.put(o,a))}async delete(t,n,r){const s=Fr(t,n,r);await this.#n("readwrite",a=>a.delete(s))}async list(t,n){const r=Wg(t,n),s=await this.#t();return new Promise((a,i)=>{const l=s.transaction(Lt,"readonly").objectStore(Lt),u=IDBKeyRange.bound(r,r+"￿",!1,!1),d=l.openCursor(u),f=[];d.onsuccess=()=>{const v=d.result;if(v){const k=v.value;f.push({path:v.key.slice(r.length),size:k.size,lastModified:k.lastModified}),v.continue()}else a(f)},d.onerror=()=>i(d.error)})}async exists(t,n,r){const s=Fr(t,n,r);return await this.#n("readonly",i=>i.getKey(s))!==void 0}async listAllShards(t){const n=`${t}/`,r=await this.#t();return new Promise((s,a)=>{const o=r.transaction(Lt,"readonly").objectStore(Lt),l=IDBKeyRange.bound(n,n+"￿",!1,!1),u=o.openKeyCursor(l),d=new Set;u.onsuccess=()=>{const f=u.result;if(f){const v=f.key.slice(n.length),k=v.indexOf("/");k>=0&&d.add(v.slice(0,k)),f.continue()}else s([...d])},u.onerror=()=>a(u.error)})}async listAllDocuments(t){const n=`${t}/`,r=await this.#t();return new Promise((s,a)=>{const o=r.transaction(Lt,"readonly").objectStore(Lt),l=IDBKeyRange.bound(n,n+"￿",!1,!1),u=o.openCursor(l),d=[];u.onsuccess=()=>{const f=u.result;if(f){const v=f.key.slice(n.length),k=v.indexOf("/");if(k>=0){const y=f.value;d.push({shardId:v.slice(0,k),path:v.slice(k+1),size:y.size,lastModified:y.lastModified})}f.continue()}else s(d)},u.onerror=()=>a(u.error)})}}class Jg{#e;#t;constructor(t,n){this.#e=t.replace(/\/$/,""),this.#t=n}async read(t,n,r){const s=`${this.#e}/api/docs/${t}/${n}/${r}`,a=await fetch(s);if(a.status===404)return null;if(!a.ok)throw new Error(`Document read failed: ${a.status}`);return(a.headers.get("content-type")??"").includes("application/octet-stream")?a.arrayBuffer():a.text()}async write(t,n,r,s){const a=`${this.#e}/api/docs/${t}/${n}/${r}`,i={...this.#n(),"Content-Type":typeof s=="string"?"text/plain":"application/octet-stream"},o=await fetch(a,{method:"PUT",headers:i,body:s});if(!o.ok)throw new Error(`Document write failed: ${o.status}`)}async delete(t,n,r){const s=`${this.#e}/api/docs/${t}/${n}/${r}`,a=await fetch(s,{method:"DELETE",headers:this.#n()});if(!a.ok)throw new Error(`Document delete failed: ${a.status}`)}async list(t,n){const r=`${this.#e}/api/docs/${t}/${n}`,s=await fetch(r);if(!s.ok)throw new Error(`Document list failed: ${s.status}`);return s.json()}async exists(t,n,r){const s=`${this.#e}/api/docs/${t}/${n}/${r}`;return(await fetch(s,{method:"HEAD"})).ok}async listAllShards(t){const n=`${this.#e}/api/docs/${t}/_shards`,r=await fetch(n);if(!r.ok)throw new Error(`listAllShards failed: ${r.status}`);return r.json()}async listAllDocuments(t){const n=`${this.#e}/api/docs/${t}/_all`,r=await fetch(n);if(!r.ok)throw new Error(`listAllDocuments failed: ${r.status}`);return r.json()}#n(){return this.#t?{Authorization:`Bearer ${this.#t}`}:{}}}class Zg{#e=new Set;subscribe(t){return this.#e.add(t),()=>{this.#e.delete(t)}}emit(t){for(const n of this.#e)try{n(t)}catch(r){console.error("SH3: document change listener threw",r)}}}const _s=new Zg;let za=null;function Qg(e){za=e}async function Ro(e){za&&await za(e)}async function dr(e){const t=typeof e=="string"?new TextEncoder().encode(e):new Uint8Array(e),n=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(s=>s.toString(16).padStart(2,"0")).join("").slice(0,16)}const em=1e3;function tm(e,t,n,r){const s=new Set,a=new Set;function i(u){return!r.extensions||r.extensions.length===0?!0:r.extensions.some(d=>u.endsWith(d))}function o(u,d){_s.emit({type:u,path:d,tenantId:e,shardId:t})}const l={async list(){const u=await n.list(e,t);return!r.extensions||r.extensions.length===0?u:u.filter(d=>i(d.path))},async read(u){const d=await n.read(e,t,u);return d===null?null:typeof d=="string"?d:new TextDecoder().decode(d)},async write(u,d){const f=await n.exists(e,t,u);await n.write(e,t,u,d),o(f?"update":"create",u);const v=await dr(d);await Ro({shardId:t,path:u,op:"upsert",hash:v})},async delete(u){await n.delete(e,t,u),o("delete",u),await Ro({shardId:t,path:u,op:"delete",hash:null})},async exists(u){return n.exists(e,t,u)},watch(u){const d=_s.subscribe(f=>{f.tenantId===e&&f.shardId===t&&i(f.path)&&u(f)});return a.add(d),()=>{d(),a.delete(d)}},autosave(u,d){const f=new nm(l,u,d?.debounceMs??em);return s.add(f),f},async dispose(){const u=[...s].map(d=>d.dispose());await Promise.all(u),s.clear();for(const d of a)d();a.clear()}};return l}class nm{#e;#t;#n;#a=null;#r=null;#i=!1;#s=!1;constructor(t,n,r){this.#e=t,this.#t=n,this.#n=r}get dirty(){return this.#i}update(t){this.#s||(this.#a=t,this.#i=!0,this.#o())}async flush(){if(this.#l(),this.#a!==null){const t=this.#a;this.#a=null,this.#i=!1,await this.#e.write(this.#t,t)}}async dispose(){this.#s||(this.#s=!0,await this.flush())}#o(){this.#l(),this.#r=setTimeout(()=>{this.#r=null,this.flush()},this.#n)}#l(){this.#r!==null&&(clearTimeout(this.#r),this.#r=null)}}const rm="local";let Gc=rm,Yc=new Xg;function vn(){return Gc}function jn(){return Yc}function pa(e){Gc=e}function sm(e){Yc=e}const Xc="documents:sync",qs="__sync__";class Jc extends Error{constructor(t){super(`Scope not granted: ${JSON.stringify(t)}`),this.scope=t,this.name="ScopeNotGrantedError"}}class am extends Error{constructor(t){super(`Scope revoked during operation: ${JSON.stringify(t)}`),this.scope=t,this.name="ScopeRevokedError"}}class im extends Error{constructor(){super("Sync handle tenantId does not match current session"),this.name="TenantMismatchError"}}async function Ze(e,t,n){const r=await e.read(t,qs,n);if(r===null)return null;const s=typeof r=="string"?r:new TextDecoder().decode(r);return JSON.parse(s)}async function tn(e,t,n,r){await e.write(t,qs,n,JSON.stringify(r))}async function ys(e,t,n){await e.delete(t,qs,n)}async function Sr(e,t,n){return(await e.list(t,qs)).map(s=>s.path).filter(s=>s.startsWith(n))}const om="bases/";function $o(e,t,n){return`${om}${encodeURIComponent(e)}__${t}__${encodeURIComponent(n)}.json`}function lm(e){return/\.sync-conflict-[^.]+-\d+$/.test(e)}class Zc{constructor(t,n){this.backend=t,this.tenantId=n}async resolve(t,n){switch(typeof t=="function"?await t({path:n.path,shardId:n.shardId,localHash:n.localHash,remoteHash:n.remoteHash,baseHash:n.baseHash}):t){case"remote-wins":return{action:"apply-remote"};case"local-wins":return{action:"skip"};case"keep-both":return{action:"apply-remote",asPath:`${n.path}.incoming-${n.connectorId}-${Date.now()}`};case"default":default:{const s=Date.now(),a=`${n.path}.sync-conflict-${n.connectorId}-${s}`;return n.remoteContent!==void 0&&await this.backend.write(this.tenantId,n.shardId,a,n.remoteContent),{action:"conflict",resolution:{path:n.path,shardId:n.shardId,localHash:n.localHash,remoteHash:n.remoteHash,conflictArtifactPath:a,base:n.baseHash?{hash:n.baseHash}:void 0}}}}}async getBaseHash(t,n,r){return Ze(this.backend,this.tenantId,$o(t,n,r))}async setBaseHash(t,n,r,s){await tn(this.backend,this.tenantId,$o(t,n,r),s)}async listConflicts(t){const n=await this.backend.list(this.tenantId,t),r=[];for(const s of n){const a=s.path;if(!lm(a))continue;const i=/^(.*)\.sync-conflict-([^-]+)-(\d+)$/.exec(a);if(!i)continue;const o=i[1];r.push({path:o,shardId:t,localHash:"",remoteHash:"",conflictArtifactPath:a})}return r}}const es="grants/";function pr(e){return`${es}${encodeURIComponent(e)}.json`}function Qc(e,t){return e.kind!==t.kind?!1:e.kind==="tenant"?!0:e.kind==="shard"&&t.kind==="shard"?e.shardId===t.shardId:e.kind==="path"&&t.kind==="path"?e.shardId===t.shardId&&e.prefix===t.prefix:!1}async function cm(e,t,n,r){const s=await Ze(e,t,pr(n))??[];s.some(a=>Qc(a.scope,r))||(s.push({connectorId:n,scope:r,grantedAt:Date.now()}),await tn(e,t,pr(n),s))}function eu(e,t){const n=new Zc(e,t);async function r(s){return await Ze(e,t,pr(s))??[]}return{async list(s){if(s)return r(s);const a=await Sr(e,t,es),i=[];for(const o of a){const l=await Ze(e,t,o);l&&i.push(...l)}return i},async revoke(s,a){const o=(await r(s)).filter(l=>!Qc(l.scope,a));o.length===0?await ys(e,t,pr(s)):await tn(e,t,pr(s),o)},async listConflicts(s){if(s!==void 0)return n.listConflicts(s);const a=await e.listAllShards(t),i=[];for(const o of a)i.push(...await n.listConflicts(o));return i},async listAllConnectorIds(){return(await Sr(e,t,es)).map(a=>decodeURIComponent(a.slice(es.length,-5)))}}}var um=R('<p class="error svelte-106syj7" part="error"> </p>'),dm=R('<section class="sync-grant-picker svelte-106syj7" part="container"><header part="header"><h3 part="title">Grant sync access</h3></header> <p part="summary"><strong> </strong> </p> <!> <!> <footer part="actions" class="svelte-106syj7"><button type="button" part="cancel">Cancel</button> <button type="button" part="confirm">Grant</button></footer></section>');function tu(e,t){ne(t,!0);let n=q(!1),r=q(null);function s(h){switch(h.kind){case"tenant":return"all your documents across every shard";case"shard":return`all documents for shard "${h.shardId}"`;case"path":return`documents under "${h.prefix}" in shard "${h.shardId}"`}}async function a(){_(n,!0),_(r,null);try{await cm(jn(),vn(),t.connectorId,t.scope),t.onGranted?.()}catch(h){_(r,h instanceof Error?h.message:String(h),!0)}finally{_(n,!1)}}var i=dm(),o=E(g(i),2),l=g(o),u=g(l,!0);p(l);var d=E(l);p(o);var f=E(o,2);{var v=h=>{var m=ot(),A=_e(m);Ls(A,()=>t.rationale),I(h,m)};F(f,h=>{t.rationale&&h(v)})}var k=E(f,2);{var y=h=>{var m=um(),A=g(m,!0);p(m),V(()=>j(A,c(r))),I(h,m)};F(k,h=>{c(r)&&h(y)})}var w=E(k,2),b=g(w),C=E(b,2);p(w),p(i),V(h=>{j(u,t.connectorId),j(d,` is requesting access to ${h??""}.`),b.disabled=c(n),C.disabled=c(n)},[()=>s(t.scope)]),H("click",b,()=>t.onCancel?.()),H("click",C,a),I(e,i),re()}ve(["click"]);var fm=R('<p part="empty">No scopes granted yet.</p>'),vm=R('<li class="svelte-wc9uuh"><span part="grant-connector"> </span> <span part="grant-scope"> </span> <button type="button" part="revoke">Revoke</button></li>'),hm=R('<ul part="grants" class="svelte-wc9uuh"></ul>'),pm=R('<p part="empty">No active conflicts.</p>'),gm=R('<li class="svelte-wc9uuh"><code part="conflict-path"> </code> <small part="conflict-artifact"> </small></li>'),mm=R('<ul part="conflicts" class="svelte-wc9uuh"></ul>'),_m=R('<section class="document-sync-explorer svelte-wc9uuh" part="container"><h2 part="title">Document Sync</h2> <!> <h3 part="subtitle">Granted scopes</h3> <!> <h3 part="subtitle">Conflicts</h3> <!></section>');function ym(e,t){ne(t,!0);let n=on(t,"conflictShardIds",19,()=>[]),r=q(null),s=q(ce([])),a=q(ce([]));async function i(){if(!c(r))return;_(s,await c(r).list(t.connectorId),!0);const h=[];for(const m of n())h.push(...await c(r).listConflicts(m));_(a,h,!0)}Ns(async()=>{_(r,eu(jn(),vn()),!0),await i()});async function o(h){c(r)&&(await c(r).revoke(h.connectorId,h.scope),await i())}function l(h){return h.kind==="tenant"?"entire tenant":h.kind==="shard"?`shard:${h.shardId}`:`shard:${h.shardId}/${h.prefix}`}var u=_m(),d=E(g(u),2);{var f=h=>{tu(h,{get connectorId(){return t.pendingRequest.connectorId},get scope(){return t.pendingRequest.scope},onGranted:i})};F(d,h=>{t.pendingRequest&&h(f)})}var v=E(d,4);{var k=h=>{var m=fm();I(h,m)},y=h=>{var m=hm();pe(m,21,()=>c(s),an,(A,L)=>{var x=vm(),S=g(x),N=g(S,!0);p(S);var D=E(S,2),O=g(D,!0);p(D);var T=E(D,2);p(x),V(P=>{j(N,c(L).connectorId),j(O,P)},[()=>l(c(L).scope)]),H("click",T,()=>o(c(L))),I(A,x)}),p(m),I(h,m)};F(v,h=>{c(s).length===0?h(k):h(y,-1)})}var w=E(v,4);{var b=h=>{var m=pm();I(h,m)},C=h=>{var m=mm();pe(m,21,()=>c(a),an,(A,L)=>{var x=gm(),S=g(x),N=g(S);p(S);var D=E(S,2),O=g(D,!0);p(D),p(x),V(()=>{j(N,`${c(L).shardId??""}:${c(L).path??""}`),j(O,c(L).conflictArtifactPath)}),I(A,x)}),p(m),I(h,m)};F(w,h=>{c(a).length===0?h(b):h(C,-1)})}p(u),I(e,u),re()}ve(["click"]);let er=q(null),qt=q(null),tr=q(!1),Vs="",qa=null;function Do(e,t){Vs=e,qa=t.auth,_(er,t.user,!0),_(qt,t.session,!0),_(tr,!t.session&&!t.user,!0)}async function nu(e,t){try{const n=await fetch(`${Vs}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({username:e,password:t})});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>({}))).error||"Login failed"};const r=await n.json();return _(er,r.user,!0),_(qt,r.session,!0),_(tr,!1),{ok:!0}}catch{return{ok:!1,error:"Network error"}}}async function bm(e,t,n){try{const r=await fetch(`${Vs}/api/auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({username:e,password:t,displayName:n})});if(!r.ok)return{ok:!1,error:(await r.json().catch(()=>({}))).error||"Registration failed"};const s=await r.json();return _(er,s.user,!0),_(qt,s.session,!0),_(tr,!1),{ok:!0}}catch{return{ok:!1,error:"Network error"}}}async function wm(){try{await fetch(`${Vs}/api/auth/logout`,{method:"POST",credentials:"include"})}catch{}if(qa?.required&&!qa.guestAllowed){window.location.reload();return}_(er,null),_(qt,null),_(tr,!0)}function km(){_(er,{id:"local",username:"local",displayName:"Local Owner",role:"admin",createdAt:"",updatedAt:""},!0),_(qt,{token:"local",userId:"local",role:"admin",expiresAt:1/0},!0),_(tr,!1)}function Sm(){return c(qt)?.token==="local"}function Zt(){return c(qt)?.role==="admin"}function ru(){return c(qt)!==null}function su(){return c(tr)}function Us(){return c(er)}function Bs(){return c(qt)?`Bearer ${c(qt).token}`:null}let nr="";function au(e){nr=e}async function Em(e){const t=await fetch(`${nr}/api/env-state/${encodeURIComponent(e)}`);return t.ok?await t.json():(console.warn(`[sh3] Failed to fetch env state for "${e}": HTTP ${t.status}`),{})}async function xm(e,t){if(!Zt())throw new Error("Cannot update env state: not elevated to admin");const n=Bs(),r={"Content-Type":"application/json"};n&&(r.Authorization=n);const s=await fetch(`${nr}/api/env-state/${encodeURIComponent(e)}`,{method:"PUT",headers:r,body:JSON.stringify(t)});if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(`Env state update failed: HTTP ${s.status} — ${a.error??"unknown"}`)}}async function xi(e,t,n){if(!Zt())throw new Error("Cannot install: not elevated to admin");const r=Bs(),s=new FormData;s.append("manifest",new Blob([JSON.stringify(e)],{type:"application/json"}),"manifest.json"),s.append("client",new Blob([t],{type:"application/javascript"}),"client.js"),n!==void 0&&s.append("server",new Blob([n],{type:"application/javascript"}),"server.js");const a={};r&&(a.Authorization=r);const i=await fetch(`${nr}/api/packages/install`,{method:"POST",headers:a,body:s});if(!i.ok){let o={};try{o=await i.json()}catch{}return{ok:!1,error:typeof o.error=="string"?o.error:`HTTP ${i.status}`,code:typeof o.code=="string"?o.code:void 0,missing:Array.isArray(o.missing)?o.missing:void 0}}return{ok:!0}}async function iu(e){if(!Zt())throw new Error("Cannot uninstall: not elevated to admin");const t=Bs(),n={"Content-Type":"application/json"};t&&(n.Authorization=t);const r=await fetch(`${nr}/api/packages/uninstall`,{method:"POST",headers:n,body:JSON.stringify({id:e})});if(!r.ok){const s=await r.json().catch(()=>({}));throw new Error(`Uninstall failed: HTTP ${r.status} — ${s.error??"unknown"}`)}}async function Im(){const e=await fetch(`${nr}/api/packages`);return e.ok?await e.json():[]}function Am(e){return Dt[e].list()}function Tm(e,t){return Dt[e].read(t)}function Cm(e,t){Dt[e].delete(t)}function Rm(e){for(const t of Dt[e].list())Dt[e].delete(t)}function ou(){return{list:Am,peek:Tm,clear:Cm,clearAll:Rm}}const Va="documents:browse";function $m(e,t){return{listDocuments:()=>t.listAllDocuments(e),listShards:()=>t.listAllShards(e),watchDocuments:n=>_s.subscribe(r=>{r.tenantId===e&&n(r)})}}const ga="journal/meta.json",Dm="journal/seg-",Ua="cursors/",Pm=500,Lm=100;function Rn(e){return`${Dm}${e}.json`}function ma(e){return`${Ua}${encodeURIComponent(e)}.json`}function Nm(e,t){switch(t.kind){case"tenant":return!0;case"shard":return e.shardId===t.shardId;case"path":return e.shardId===t.shardId&&e.path.startsWith(t.prefix)}}class gr{constructor(t,n,r={}){this.backend=t,this.tenantId=n,this.#t=r.segmentSize??Pm,this.#n=r.pageSize??Lm}#e={currentSeq:0,currentSegment:0,oldestSegment:0,version:0};#t;#n;async init(){const t=await Ze(this.backend,this.tenantId,ga);t&&(this.#e=t)}static encodeCursor(t,n){return`${t}:${n}`}static decodeCursor(t){const n=/^(\d+):(\d+)$/.exec(t);return n?{seq:Number(n[1]),version:Number(n[2])}:null}async append(t){const n=this.#e.currentSeq+1,r={...t,seq:n,ts:Date.now()},s=this.#e.currentSegment,a=await Ze(this.backend,this.tenantId,Rn(s))??[];return a.push(r),await tn(this.backend,this.tenantId,Rn(s),a),this.#e.currentSeq=n,a.length>=this.#t&&(this.#e.currentSegment=s+1),await tn(this.backend,this.tenantId,ga,this.#e),r}async oldestRetainedSeq(){const t=await Ze(this.backend,this.tenantId,Rn(this.#e.oldestSegment));return!t||t.length===0?0:t[0].seq}async changesSince(t,n){let r=0;if(n){const o=gr.decodeCursor(n);if(!o)return{entries:[],nextCursor:n,hasMore:!1};const l=await this.oldestRetainedSeq();if(o.version<this.#e.version&&o.seq<l)return{entries:[],nextCursor:n,hasMore:!1,truncated:!0};r=o.seq}const s=[];let a=r,i=!1;for(let o=this.#e.oldestSegment;o<=this.#e.currentSegment;o++){const l=await Ze(this.backend,this.tenantId,Rn(o))??[];for(const u of l)if(!(u.seq<=r)){if(!Nm(u,t)){a=u.seq;continue}if(s.length>=this.#n){i=!0;break}s.push(u),a=u.seq}if(i)break}return{entries:s,nextCursor:gr.encodeCursor(a,this.#e.version),hasMore:i}}async getCursor(t){return Ze(this.backend,this.tenantId,ma(t))}async ackCursor(t,n){await tn(this.backend,this.tenantId,ma(t),n)}async dropCursor(t){await ys(this.backend,this.tenantId,ma(t))}async listCursors(){const t=await Sr(this.backend,this.tenantId,Ua),n=[];for(const r of t){const s=await Ze(this.backend,this.tenantId,r);if(s===null)continue;const a=decodeURIComponent(r.slice(Ua.length,-5));n.push({connectorId:a,cursor:s})}return n}async minSeqAckedByAll(t){if(t.length===0)return 0;let n=1/0;for(const r of t){const s=await this.getCursor(r),a=s?gr.decodeCursor(s):null,i=a?a.seq:0;i<n&&(n=i)}return n===1/0?0:n}async __truncateForTest(t){for(let n=this.#e.oldestSegment;n<=this.#e.currentSegment;n++){const r=await Ze(this.backend,this.tenantId,Rn(n))??[],s=r[r.length-1];if(s&&s.seq<=t)await ys(this.backend,this.tenantId,Rn(n)),this.#e.oldestSegment=n+1;else break}this.#e.version+=1,await tn(this.backend,this.tenantId,ga,this.#e)}}const ts="tombstones/";function _a(e,t){return`${ts}${e}__${encodeURIComponent(t)}.json`}class Om{constructor(t,n){this.backend=t,this.tenantId=n}async record(t,n,r,s){await tn(this.backend,this.tenantId,_a(t,n),{deletedAt:s,lastHash:r})}async get(t,n){return Ze(this.backend,this.tenantId,_a(t,n))}async clear(t,n){await ys(this.backend,this.tenantId,_a(t,n))}async listByShard(t){const n=`${ts}${t}__`,r=await Sr(this.backend,this.tenantId,n),s=[];for(const a of r){const i=await Ze(this.backend,this.tenantId,a);if(!i)continue;const o=decodeURIComponent(a.slice(n.length,-5));s.push({shardId:t,path:o,...i})}return s}async listAll(){const t=await Sr(this.backend,this.tenantId,ts),n=[];for(const r of t){const s=await Ze(this.backend,this.tenantId,r);if(!s)continue;const a=r.slice(ts.length,-5),i=a.indexOf("__");if(i<0)continue;const o=a.slice(0,i),l=decodeURIComponent(a.slice(i+2));n.push({shardId:o,path:l,...s})}return n}}function Hr(e,t,n){switch(e.kind){case"tenant":return!0;case"shard":return e.shardId===t;case"path":return e.shardId===t&&n.startsWith(e.prefix)}}class Mm{constructor(t,n,r={}){this.backend=t,this.tenantId=n,this.#e=new gr(t,n,{segmentSize:r.segmentSize}),this.#t=new Om(t,n),this.#n=new Zc(t,n)}#e;#t;#n;async init(){await this.#e.init()}get journal(){return this.#e}async getManifest(t,n){const r=await this.#o(n),s=[];for(const a of r){const i=await this.backend.list(this.tenantId,a);for(const l of i){if(!Hr(n,a,l.path)||l.path.startsWith(".")||/\.sync-conflict-/.test(l.path))continue;const u=await this.backend.read(this.tenantId,a,l.path);if(u===null)continue;const d=await dr(u);s.push({path:l.path,shardId:a,hash:d,size:l.size,lastModified:l.lastModified})}const o=await this.#t.listByShard(a);for(const l of o)Hr(n,a,l.path)&&s.push({path:l.path,shardId:a,hash:l.lastHash,size:0,lastModified:l.deletedAt,tombstone:{deletedAt:l.deletedAt}})}return s}async changesSince(t,n){return this.#e.changesSince(t,n)}async ack(t,n,r){await this.#e.ackCursor(t,r)}async apply(t,n,r,s={}){if(!Hr(n,r.shardId,r.path))throw new Error(`ApplyEntry {${r.shardId}:${r.path}} falls outside scope`);return r.op==="upsert"?this.#a(t,r,s):this.#i(t,r)}async applyBatch(t,n,r,s={}){const a=[],i=[],o=[];for(const l of r){const u=await this.apply(t,n,l,s);u.status==="applied"?a.push({path:l.path,shardId:l.shardId,newHash:u.newHash}):u.status==="skipped-identical"?i.push({path:l.path,shardId:l.shardId,reason:"identical"}):o.push(u.resolution)}return{applied:a,skipped:i,conflicts:o}}async forget(t,n){const r=await this.#o(t);for(const s of r)Hr(t,s,n)&&await this.#t.clear(s,n)}async#a(t,n,r){const s=await this.backend.read(this.tenantId,n.shardId,n.path),a=s!==null,i=a?await dr(s):null;if(i!==null&&i===n.remoteHash)return{status:"skipped-identical"};if(a&&(r.expectedLocalHash!==void 0&&r.expectedLocalHash!==i||r.expectedLocalHash===void 0&&await this.#s(t,n,i))){const l=await this.#n.getBaseHash(t,n.shardId,n.path)??void 0,u=await this.#n.resolve(r.onConflict??"default",{connectorId:t,shardId:n.shardId,path:n.path,localHash:i,remoteHash:n.remoteHash,remoteContent:n.content,baseHash:l});if(u.action==="skip")return{status:"skipped-identical"};if(u.action==="conflict")return{status:"conflict",resolution:u.resolution};const d=u.asPath??n.path;return this.#r(t,n,d,a)}return this.#r(t,n,n.path,a)}async#r(t,n,r,s){if(n.content===void 0)throw new Error(`Upsert without content for ${n.shardId}:${n.path}`);await this.backend.write(this.tenantId,n.shardId,r,n.content),await this.#t.clear(n.shardId,r);const a=await dr(n.content);return await this.#n.setBaseHash(t,n.shardId,r,a),await this.#e.append({shardId:n.shardId,path:r,op:"upsert",hash:a}),this.#l({type:s&&r===n.path?"update":"create",path:r,tenantId:this.tenantId,shardId:n.shardId}),{status:"applied",newHash:a}}async#i(t,n){const r=await this.backend.read(this.tenantId,n.shardId,n.path);if(r===null)return await this.#t.record(n.shardId,n.path,n.remoteHash,Date.now()),await this.#e.append({shardId:n.shardId,path:n.path,op:"delete",hash:null}),{status:"applied",newHash:""};const s=await dr(r);return await this.backend.delete(this.tenantId,n.shardId,n.path),await this.#t.record(n.shardId,n.path,s,Date.now()),await this.#n.setBaseHash(t,n.shardId,n.path,""),await this.#e.append({shardId:n.shardId,path:n.path,op:"delete",hash:null}),this.#l({type:"delete",path:n.path,tenantId:this.tenantId,shardId:n.shardId}),{status:"applied",newHash:""}}async#s(t,n,r){const s=await this.#n.getBaseHash(t,n.shardId,n.path);return s?s!==r:!1}async#o(t){return t.kind==="tenant"?[]:[t.shardId]}#l(t){_s.emit(t)}}const Po=new Map;async function lu(e,t){const n=Po.get(t);if(n)return n;const r=new Mm(e,t);await r.init();const s=eu(e,t);Qg(async i=>{await r.journal.append(i)});const a={engine:r,registry:s};return Po.set(t,a),a}function jm(e,t){return e.kind==="tenant"?!0:e.kind==="shard"?t.kind==="shard"||t.kind==="path"?e.shardId===t.shardId:!1:t.kind==="path"?t.shardId===e.shardId&&t.prefix.startsWith(e.prefix):!1}function zm(e){const{connectorId:t,engine:n,registry:r}=e;async function s(){return(await r.list(t)).map(o=>o.scope)}async function a(i){const o=await s();if(o.filter(u=>jm(u,i)).length===0)throw new Jc(i);if(i.kind==="tenant"){const u=o.filter(d=>d.kind==="shard"||d.kind==="path");return u.length>0?u:[i]}return[i]}return{connectorId:t,async grantedScopes(){return s()},async getManifest(i){const o=await a(i),l=[];if(i.kind==="tenant"&&o[0]?.kind!=="tenant")for(const u of o)l.push(...await n.getManifest(t,u));else l.push(...await n.getManifest(t,i));return l},async changesSince(i,o){return await a(i),n.changesSince(i,o)},async ack(i,o){await a(i),await n.ack(t,i,o)},async apply(i,o,l){return await a(i),n.apply(t,i,o,l)},async applyBatch(i,o,l){return await a(i),n.applyBatch(t,i,o,l)},async forget(i,o){await a(i),await n.forget(i,o)}}}function qm(e,t){let n=null,r=null;function s(){return n?Promise.resolve(n):(r||(r=lu(e,t).then(({registry:a})=>(n=a,a))),r)}return()=>({async list(i){return(await s()).list(i)},async revoke(i,o){return(await s()).revoke(i,o)},listConflicts:async i=>{const o=await s();return i===void 0?o.listConflicts():o.listConflicts(i)},async listAllConnectorIds(){return(await s()).listAllConnectorIds()}})}const cu="keys:mint";class uu extends Error{constructor(t){super(`Shard may not mint a key with scope '${t}' — not declared in manifest.`),this.name="ScopeEscalationError"}}class du extends Error{constructor(){super("User denied key creation."),this.name="ConsentDeniedError"}}const Ba=new Map;let mr=null;function fu(e){return mr=e,()=>{mr===e&&(mr=null)}}async function Vm(e,t){if(!mr)throw new Error("No consent listener registered — the shell must mount ConsentDialog.");const n=`c_${Math.random().toString(36).slice(2)}${Date.now()}`;return new Promise(r=>{Ba.set(n,{resolve:r}),mr({...t,shardId:e,requestId:n})})}function Fa(e,t){const n=Ba.get(e);n&&(Ba.delete(e),n.resolve(t))}const bs=new Map,ns=new Map,Um=5e3;function Bm(e,t){let n=ns.get(e);n||(n=new Set,ns.set(e,n)),n.add(t),setTimeout(()=>{n.delete(t),n.size===0&&ns.delete(e)},Um)}function Fm(e,t){return ns.get(e)?.has(t)??!1}function Ii(e,t){const n=bs.get(e)??new Set;return n.add(t),bs.set(e,n),()=>{n.delete(t)}}function vu(e,t){if(!e||Fm(e,t))return;Bm(e,t);const n=bs.get(e);if(n)for(const s of n)s(t);const r=bs.get("*");if(r)for(const s of r)s(t)}function Hm(){if(typeof EventSource>"u")return()=>{};const e=new EventSource("/api/keys/events",{withCredentials:!0});return e.onmessage=t=>{try{const n=JSON.parse(t.data);vu(n.shardId,n.id)}catch{}},()=>e.close()}function Km(e){const{shardId:t,shardPermissions:n}=e,r=s=>{for(const a of s)if(!n.includes(a)&&!n.includes("admin:*"))throw new uu(a)};return{async mint(s){if(r(s.scopes),!await Vm(t,s))throw new du;const i=await fetch("/api/keys/consent",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({shardId:t,...s})});if(!i.ok)throw new Error(`Consent ticket failed: ${i.status}`);const{ticket:o}=await i.json(),l=await fetch("/api/keys",{method:"POST",credentials:"include",headers:{"content-type":"application/json"},body:JSON.stringify({ticket:o})});if(!l.ok)throw new Error(`Mint failed: ${l.status}`);return l.json()},async list(){const s=await fetch("/api/keys",{credentials:"include"});if(!s.ok)throw new Error(`List failed: ${s.status}`);return(await s.json()).filter(i=>i.mintedByShardId===t)},async revoke(s){const a=await fetch(`/api/keys/${encodeURIComponent(s)}`,{method:"DELETE",credentials:"include"});if(!a.ok&&a.status!==404)throw new Error(`Revoke failed: ${a.status}`);vu(t,s)}}}const Vt=ce(new Map),Er=new Map,Vr=ce(new Map);function Ai(e){const t=e.manifest.id;Vt.has(t)&&Vr.has(t)&&Fs(t),Vt.set(t,e)}async function hu(e){const t=Vt.get(e);if(!t)throw new Error(`Cannot activate shard "${e}": not registered`);if(Er.has(e))return;const n={shard:t,ctx:void 0,viewIds:new Set,verbNames:new Set,cleanupFns:[]},r=ce({proxy:null,defaults:null}),s={state:a=>Hc.state(e,a),registerView:(a,i)=>{Bg(a,i),n.viewIds.add(a)},registerVerb:a=>{const i=e==="shell"?a.name:`${e}:${a.name}`;Hg(i,{...a,name:i}),n.verbNames.add(i)},documents:a=>{const i=tm(vn(),e,jn(),a);return n.cleanupFns.push(()=>i.dispose()),i},env(a){return r.proxy?(console.warn(`[sh3] Shard "${e}" called ctx.env() more than once; extra calls are ignored.`),r.proxy):(r.defaults=a,r.proxy={...a},r.proxy)},async envUpdate(a){if(!r.proxy||!r.defaults)throw new Error(`Shard "${e}" called envUpdate() without declaring env state`);const i=En(r.proxy);Object.assign(r.proxy,a);try{const o=En(r.proxy);await xm(e,o)}catch(o){throw Object.assign(r.proxy,i),o}},get isAdmin(){return Zt()},get tenantId(){return vn()},zones:t.manifest.permissions?.includes(yi)?ou():void 0,browse:t.manifest.permissions?.includes(Va)?$m(vn(),jn()):void 0,syncRegistry:t.manifest.permissions?.includes(Va)?qm(jn(),vn()):void 0,sync:t.manifest.permissions?.includes(Xc)?()=>{const a=jn(),i=vn(),l=lu(a,i).then(({engine:u,registry:d})=>zm({connectorId:e,engine:u,registry:d}));return{connectorId:e,grantedScopes:async()=>(await l).grantedScopes(),getManifest:async u=>(await l).getManifest(u),changesSince:async(u,d)=>(await l).changesSince(u,d),ack:async(u,d)=>(await l).ack(u,d),apply:async(u,d,f)=>(await l).apply(u,d,f),applyBatch:async(u,d,f)=>(await l).applyBatch(u,d,f),forget:async(u,d)=>(await l).forget(u,d)}}:void 0,keys:t.manifest.permissions?.includes(cu)?Km({shardId:e,shardPermissions:t.manifest.permissions??[]}):void 0};if(n.ctx=s,t.onKeyRevoked){const a=Ii(e,async i=>{try{await t.onKeyRevoked(i)}catch(o){console.error(`[sh3] onKeyRevoked failed in "${e}":`,o)}});n.cleanupFns.push(async()=>a())}Er.set(e,n),Vr.set(e,t),await t.activate(s);for(const a of t.manifest.views)if(!n.viewIds.has(a.id))throw new Error(`Shard "${e}" declared view "${a.id}" in its manifest but registered no factory for it.`);if(r.proxy&&r.defaults)try{const a=await Em(e),i=Object.assign({},r.defaults,a);Object.assign(r.proxy,i)}catch(a){console.warn(`[sh3] Failed to hydrate env state for shard "${e}":`,a instanceof Error?a.message:a)}t.autostart?.(s)}function Fs(e){const t=Er.get(e);if(t){t.shard.deactivate?.();for(const n of t.cleanupFns)n();for(const n of t.verbNames)Kg(n);for(const n of t.viewIds)Fg(n);Er.delete(e),Vr.delete(e)}}function Wm(e){return Er.get(e)?.ctx}function Lo(){const e=[];for(const t of Vr.values())for(const n of t.manifest.views)n.standalone&&e.push({shardId:t.manifest.id,viewId:n.id,label:n.label});return e}const An=ce(new Map),Et=ce({id:null});function Ti(e){An.set(e.manifest.id,e)}function Ci(){return Array.from(An.values()).map(e=>e.manifest)}function pu(){const e=Et.id;return e?An.get(e)?.manifest??null:null}function Hs(e){return An.get(e)}const rn=new Map,rs=new Set;function Gm(e,t){for(const[n,r]of rn.entries()){if(r.viewId!==e||r.handle!==void 0)continue;const s={slotId:n,viewId:e,label:r.label,meta:r.meta,setDirty(a){Ks[n]=a}};queueMicrotask(()=>{if(rn.has(n)&&r.handle===void 0&&(r.handle=t.mount(r.host,s),(r.handle?.closable||n.startsWith("float:"))&&(Ws[n]=!0),r.handle?.onResize)){const a=r.handle.onResize.bind(r.handle);r.resizeObserver=new ResizeObserver(i=>{for(const o of i){const l=o.contentRect;a(Math.round(l.width),Math.round(l.height))}}),r.resizeObserver.observe(r.host)}})}}Ug(Gm);const Ks=ce({}),Ws=ce({});function Ym(e,t,n,r){const s=document.createElement("div");s.className="slot-host",s.dataset.slotId=e,s.style.position="absolute",s.style.inset="0",s.style.minWidth="0",s.style.minHeight="0";let a=!1;const i={host:s,handle:void 0,viewId:t,label:n,meta:r,refcount:0,resizeObserver:void 0,cancelPendingMount:()=>{a=!0}};return queueMicrotask(()=>{if(a)return;const o=t?Wc(t):void 0,l={slotId:e,viewId:t??"",label:n,meta:r,setDirty(u){Ks[e]=u}};if(i.handle=o?.mount(s,l),(i.handle?.closable||e.startsWith("float:"))&&(Ws[e]=!0),i.handle?.onResize){const u=i.handle.onResize.bind(i.handle);i.resizeObserver=new ResizeObserver(d=>{for(const f of d){const v=f.contentRect;u(Math.round(v.width),Math.round(v.height))}}),i.resizeObserver.observe(s)}}),i}function gu(e,t,n,r){rs.delete(e);let s=rn.get(e);return s||(s=Ym(e,t,n,r),rn.set(e,s)),s.refcount++,s.host}function mu(e){const t=rn.get(e);if(t){if(t.refcount--,t.refcount>0){t.host.remove();return}rs.add(e),queueMicrotask(()=>{if(!rs.has(e))return;rs.delete(e);const n=rn.get(e);!n||n.refcount>0||(n.resizeObserver?.disconnect(),n.handle?.unmount(),n.cancelPendingMount(),n.host.remove(),rn.delete(e),delete Ks[e],delete Ws[e])})}}function _u(e){const t=Ha.get(e);return t||rn.get(e)?.handle}function Xm(e){return Ks[e]??!1}function Jm(e){return Ha.has(e)?!!Ha.get(e).closable:Ws[e]??!1}const Ha=new Map;function yu(e){if(!e||typeof e!="object")return!1;const t=e.type;return t==="split"||t==="tabs"||t==="slot"}function Zm(e){if(!e||typeof e!="object")return!1;const t=e;return yu(t.docked)&&Array.isArray(t.floats)}function Qm(e){return{docked:e,floats:[]}}function e_(e){const t={};if(e.tree&&(t.default=e.tree),e.variants)for(const n of Object.keys(e.variants))t[n]=e.variants[n];if(!t.default)throw new Error(`LayoutPreset "${e.name}" must provide either 'tree' or 'variants.default'`);return{name:e.name,variants:t}}function t_(e){if(Array.isArray(e))return e.map(e_);if(Zm(e))return[{name:"default",variants:{default:e}}];if(yu(e))return[{name:"default",variants:{default:Qm(e)}}];throw new Error("normalizeInitialLayout: input is not a LayoutNode, LayoutTree, or LayoutPreset[]")}function No(e){const t=[],n=r=>{if(r.type==="slot"){t.push({slotId:r.slotId,viewId:r.viewId,label:r.viewId||r.slotId});return}if(r.type==="tabs"){for(const s of r.tabs)t.push({slotId:s.slotId,viewId:s.viewId,label:s.label,meta:s.meta});return}for(const s of r.children)n(s)};return n(e),t}function n_(e){const t=No(e.docked);for(const n of e.floats)t.push(...No(n.content));return t}Oa("workspace","__shell__");const r_={type:"slot",slotId:"sh3core.home",viewId:"sh3core:home"},s_=ce({docked:r_,floats:[]});let lt=q(null),Gs=q("home");function a_(e){if(!e||typeof e!="object")return null;const t=e;if(t.presets&&typeof t.presets=="object"&&typeof t.activePreset=="string")return t;if(t.root&&typeof t.layoutVersion=="number"){const n={docked:t.root,floats:[]};return{layoutVersion:t.layoutVersion,activePreset:"default",presets:{default:{default:n}}}}return null}function i_(e){const t=e.presets[e.activePreset];if(!t)throw new Error(`AppLayoutBlob active preset "${e.activePreset}" not found in presets map`);return t.default}function o_(e){if(c(lt))throw new Error(`Layout manager cannot attach app "${e.manifest.id}": app "${c(lt).appId}" is still attached`);const t=`__sh3core__:app:${e.manifest.id}`,n=t_(e.initialLayout);if(n.length===0)throw new Error(`App "${e.manifest.id}" normalized to zero presets`);const r={layoutVersion:e.manifest.layoutVersion,activePreset:n[0].name,presets:Object.fromEntries(n.map(l=>[l.name,{...l.variants}]))},s=Jp("workspace",t),a=a_(s);(a&&a.layoutVersion!==e.manifest.layoutVersion||s&&!a)&&Oa("workspace",t);const o=Ms(t,{workspace:r}).workspace;_(lt,{appId:e.manifest.id,proxy:o,heldSlotIds:[]},!0),Og(o)}function l_(){if(!c(lt))throw new Error("acquireAppSlotHolds: no app attached");if(c(lt).heldSlotIds.length>0)return;const e=i_(c(lt).proxy),t=n_(e);for(const{slotId:n,viewId:r,label:s,meta:a}of t)gu(n,r,s,a),c(lt).heldSlotIds.push(n)}function bu(){if(c(lt)){Mg();for(const e of c(lt).heldSlotIds)mu(e);_(lt,null)}}function wu(){_(Gs,"home")}function Oo(){if(!c(lt))throw new Error("Cannot switchToApp: no app is attached");_(Gs,"app")}const ss=W(()=>{if(c(Gs)==="app"&&c(lt)){const e=c(lt).proxy,t=e.activePreset,n=e.presets[t];if(!n)throw new Error(`AppLayoutBlob active preset "${t}" not found in presets map`);return n.default}return s_});function Ft(){return c(ss)}function ku(){return c(Gs)}const Wn={get root(){return c(ss).docked},get tree(){return c(ss)},get floats(){return c(ss).floats}},Su=Ms("__sh3core__:last-app",{user:{id:null}});function c_(){return Su.user.id}function ws(e){Su.user.id=e}const Ka=new Map;function Kr(e){let t=Ka.get(e);if(!t){const n=Hs(e);t={state:r=>Ms(`__app__:${e}`,r),zones:n?.manifest.permissions?.includes(yi)?ou():void 0},Ka.set(e,t)}return t}async function xr(e){const t=Hs(e);if(!t)throw new Error(`Cannot launch app "${e}": not registered`);if(Et.id&&Et.id!==e)Eu(Et.id);else if(Et.id===e){for(const n of t.manifest.requiredShards){const r=Vt.get(n),s=Wm(n);r&&s&&r.resume?.(s)}t.resume?.(Kr(e)),Oo(),t.onAppReady?.(Kr(e)),ws(e);return}for(const n of t.manifest.requiredShards)if(!Vt.has(n))throw new Error(`App "${e}" requires shard "${n}" which is not registered`);o_(t);try{for(const n of t.manifest.requiredShards)await hu(n)}catch(n){throw bu(),n}l_(),t.activate?.(Kr(e)),Et.id=e,Oo(),t.onAppReady?.(Kr(e)),ws(e)}function Eu(e){if(Et.id!==e)return;const t=Hs(e);if(t){t.deactivate?.(),wu(),bu();for(const n of t.manifest.requiredShards){const r=Vt.get(n);r&&(r.autostart||Fs(n))}Et.id=null,Ka.delete(e)}}function Ri(e){An.has(e)&&(Et.id===e&&(Eu(e),ws(null)),An.delete(e))}async function xu(){const e=Et.id?Hs(Et.id):null;if(e){for(const t of e.manifest.requiredShards){const n=Vt.get(t);if(n?.suspend&&await n.suspend()===!1)return!1}if(e.suspend&&await e.suspend()===!1)return!1}return wu(),ws(null),!0}function Gn(e,t){const n=(r,s)=>{if(r.type==="tabs"){const a=r.tabs.findIndex(i=>i.slotId===t);if(a>=0)return{tabsNode:r,tabsPath:s,tabIndex:a,entry:r.tabs[a]}}else if(r.type==="split")for(let a=0;a<r.children.length;a++){const i=n(r.children[a],[...s,a]);if(i)return i}return null};return n(e,[])}function Ys(e,t){const n=Gn(e,t);if(!n)return null;const{tabsNode:r,tabIndex:s,entry:a}=n;return r.tabs.splice(s,1),r.tabs.length===0?r.activeTab=0:s<r.activeTab?r.activeTab-=1:r.activeTab>=r.tabs.length&&(r.activeTab=r.tabs.length-1),a}function u_(e,t,n){const r=Math.max(0,Math.min(n,e.tabs.length));e.tabs.splice(r,0,t),e.activeTab=r}function d_(e,t,n){const r=e.tabs.slice(),[s]=r.splice(t,1),a=Math.max(0,Math.min(n,r.length));r.splice(a,0,s),e.tabs=r,e.activeTab=a}function Mo(e,t,n){const r=n==="left"||n==="right"?"horizontal":"vertical",s={type:"tabs",activeTab:0,tabs:[t]};return{type:"split",direction:r,sizes:[1,1],children:n==="left"||n==="top"?[s,e]:[e,s]}}function f_(e){if(e.type==="tabs")return{...e,tabs:[...e.tabs]};if(e.type==="split"){const t={...e,children:[...e.children],sizes:[...e.sizes]};return e.pinned&&(t.pinned=[...e.pinned]),e.collapsed&&(t.collapsed=[...e.collapsed]),t}return{...e}}function Iu(e,t,n,r){const s=ks(e,t);if(!s)return;if(t.length===0){const u=f_(s),d=Mo(u,n,r),f=e;delete f.tabs,delete f.activeTab,delete f.slotId,delete f.viewId,delete f.direction,delete f.sizes,delete f.pinned,delete f.collapsed,delete f.children,Object.assign(f,d);return}const a=Mo(s,n,r),i=t.slice(0,-1),o=t[t.length-1],l=ks(e,i);!l||l.type!=="split"||(l.children[o]=a)}function ks(e,t){let n=e;for(const r of t){if(n.type!=="split"||r<0||r>=n.children.length)return null;n=n.children[r]}return n}function zn(e){let t=!0;for(;t;)t=Au(e,null,0)}function Au(e,t,n){if(e.type==="split"){let r=!1;for(let s=0;s<e.children.length;s++)Au(e.children[s],e,s)&&(r=!0);for(let s=e.children.length-1;s>=0;s--){const a=e.children[s];a.type==="tabs"&&a.tabs.length===0&&!a.persistent&&(e.children.splice(s,1),e.sizes.splice(s,1),e.pinned&&e.pinned.splice(s,1),e.collapsed&&e.collapsed.splice(s,1),r=!0)}if(e.children.length<=1&&t)return e.children.length===1?t.children[n]=e.children[0]:(t.children.splice(n,1),t.sizes.splice(n,1),t.pinned&&t.pinned.splice(n,1),t.collapsed&&t.collapsed.splice(n,1)),!0;if(e.children.length===1&&!t){const s=e.children[0],a=e;return delete a.direction,delete a.sizes,delete a.pinned,delete a.collapsed,delete a.children,Object.assign(a,s),!0}return r}return e.type==="tabs",!1}function Tu(){return{root:Ft(),source:ku()}}function v_(e){const t=Ft().docked,n=Di(t);if(!n)throw new Error("spliceIntoActiveLayout: no tabs group found in the active layout; phase 8 only supports splicing into an existing tab group.");n.tabs.push(e),n.activeTab=n.tabs.length-1}function h_(e){const t=Ft();return Js(t.docked,n=>n.slotId===e)?!0:Cu(t,n=>n.slotId===e)}function Xs(e){const t=Ft();return Js(t.docked,n=>n.viewId===e)?!0:Cu(t,n=>n.viewId===e)}function Js(e,t){if(e.type==="tabs"){const n=e.tabs.findIndex(t);return n>=0?(e.activeTab=n,!0):!1}if(e.type==="split"){for(const n of e.children)if(Js(n,t))return!0}return!1}function Cu(e,t){for(const n of e.floats)if(Js(n.content,t))return Tt.focus(n.id),!0;return!1}function p_(e,t){return Ru(e,t,!0)}function g_(e,t){return Ru(e,t,!1)}function Ru(e,t,n){const r=Ft().docked,s=ks(r,e);if(!s||s.type!=="split")return!1;const a=s;return t<0||t>=a.children.length?!1:(a.collapsed||(a.collapsed=a.children.map(()=>!1)),a.collapsed[t]=n,!0)}async function $i(e){const t=Ft(),n=t.docked;if(!Gn(n,e))return m_(t,e);const a=_u(e)?.closable;return!a||typeof a=="object"&&(!await a.canClose()||!Gn(n,e))?!1:(Ys(n,e),zn(n),!0)}async function m_(e,t){for(const n of e.floats){if(!Gn(n.content,t))continue;const a=_u(t)?.closable;if(typeof a=="object"&&(!await a.canClose()||!Gn(n.content,t)))return!1;Ys(n.content,t);const i=n.content.type==="tabs"?n.content:null;return(!i||i.tabs.length===0)&&Tt.close(n.id),!0}return!1}function __(e){const t=Ft(),n=Gn(t.docked,e);if(!n)return null;const r=n.entry,s=r.viewId;if(!s)return null;const a=r.label,i=r.meta;return Ys(t.docked,e),zn(t.docked),Tt.open(s,{title:a,meta:i})}function y_(e){const n=Ft().floats.find(o=>o.id===e);if(!n)return!1;const r=n.content,s=r.type==="tabs"?r:null;if(!s||s.tabs.length===0)return Tt.close(e),!1;const a=s.tabs[s.activeTab??0]??s.tabs[0],i=Pi({slotId:a.slotId,viewId:a.viewId,label:a.label,meta:a.meta});return i&&Tt.close(e),i}function Di(e){if(e.type==="tabs")return e;if(e.type==="split")for(const t of e.children){const n=Di(t);if(n)return n}return null}function $u(e,t=[]){if(e.type==="slot")return e.viewId!==null?t:null;if(e.type==="split")for(let n=0;n<e.children.length;n++){const r=$u(e.children[n],[...t,n]);if(r)return r}return null}function Pi(e){const t=Ft().docked;if(Xs(e.viewId??""))return!0;const n=Di(t);if(n)return n.tabs.push(e),n.activeTab=n.tabs.length-1,!0;const r=$u(t);return r?(Iu(t,r,e,"right"),!0):!1}class mt extends Error{constructor(t,n){super(`Registry validation error at ${t}: ${n}`),this.name="RegistryValidationError",this.path=t}}function Du(e){if(!e||typeof e!="object"||Array.isArray(e))throw new mt("$","expected an object");const t=e;if(t.version!==1)throw new mt("$.version",`expected 1, got ${JSON.stringify(t.version)}`);if(!Array.isArray(t.packages))throw new mt("$.packages","expected an array");return{version:1,packages:t.packages.map((r,s)=>b_(r,`$.packages[${s}]`))}}function b_(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new mt(t,"expected an object");const n=e;St(n,"id",t),S_(n,"type",["shard","app","combo"],t),St(n,"label",t),St(n,"description",t);const r=`${t}.author`;if(!n.author||typeof n.author!="object"||Array.isArray(n.author))throw new mt(r,"expected an object");const s=n.author;if(typeof s.name!="string"||s.name.length===0)throw new mt(`${r}.name`,"expected a non-empty string");if(!Array.isArray(n.versions)||n.versions.length===0)throw new mt(`${t}.versions`,"expected a non-empty array");const a=n.versions.map((i,o)=>w_(i,`${t}.versions[${o}]`));return{id:n.id,type:n.type,label:n.label,description:n.description,author:{name:s.name},icon:typeof n.icon=="string"?n.icon:void 0,versions:a}}function w_(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new mt(t,"expected an object");const n=e;St(n,"version",t),St(n,"contractVersion",t),St(n,"bundleUrl",t),St(n,"integrity",t),"serverBundleUrl"in n&&n.serverBundleUrl!==void 0&&St(n,"serverBundleUrl",t),"serverIntegrity"in n&&n.serverIntegrity!==void 0&&St(n,"serverIntegrity",t);let r;if(n.requires!==void 0){if(!Array.isArray(n.requires))throw new mt(`${t}.requires`,"expected an array");r=n.requires.map((s,a)=>k_(s,`${t}.requires[${a}]`))}return{version:n.version,contractVersion:n.contractVersion,bundleUrl:n.bundleUrl,integrity:n.integrity,serverBundleUrl:typeof n.serverBundleUrl=="string"?n.serverBundleUrl:void 0,serverIntegrity:typeof n.serverIntegrity=="string"?n.serverIntegrity:void 0,requires:r}}function k_(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new mt(t,"expected an object");const n=e;return St(n,"id",t),St(n,"versionRange",t),{id:n.id,versionRange:n.versionRange}}function St(e,t,n){const r=e[t];if(typeof r!="string"||r.length===0)throw new mt(`${n}.${t}`,"expected a non-empty string")}function S_(e,t,n,r){if(!n.includes(e[t]))throw new mt(`${r}.${t}`,`expected one of: ${n.join(", ")}`)}const jo=["sha256","sha384","sha512"];function E_(e){const t=e.indexOf("-");if(t===-1)throw new Error(`Invalid SRI format: ${e}`);const n=e.slice(0,t),r=e.slice(t+1);if(!jo.includes(n))throw new Error(`Unsupported SRI algorithm: ${n}. Supported: ${jo.join(", ")}`);if(!r)throw new Error(`Empty hash in SRI: ${e}`);return{algorithm:n,hash:r}}function x_(e){return`SHA-${e.slice(3)}`}function I_(e){const t=new Uint8Array(e);let n="";for(let r=0;r<t.length;r++)n+=String.fromCharCode(t[r]);return btoa(n)}async function Li(e,t){const{algorithm:n,hash:r}=E_(t),s=x_(n),a=await crypto.subtle.digest(s,e),i=I_(a);if(i!==r)throw new Error(`Integrity check failed for ${n}. Expected: ${r}, got: ${i}`)}async function Pu(e){const t=new Set,n=[];for(const r of e){let s;try{const i=await fetch(r);if(!i.ok){console.warn(`[sh3] Registry fetch failed for ${r}: HTTP ${i.status}`);continue}s=await i.json()}catch(i){console.warn(`[sh3] Registry ${r}: ${i instanceof Error?i.message:String(i)}`);continue}let a;try{a=Du(s)}catch(i){console.warn(`[sh3] Registry ${r} failed validation: ${i instanceof Error?i.message:String(i)}`);continue}for(const i of a.packages)t.has(i.id)||(t.add(i.id),n.push({entry:i,latest:i.versions[0],sourceRegistry:r}))}return n}async function Zs(e,t){let n=e.bundleUrl;t&&!/^https?:\/\//i.test(n)&&(n=new URL(n,t).href);const r=await fetch(n);if(!r.ok)throw new Error(`Bundle fetch failed: HTTP ${r.status} ${r.statusText} from ${n}`);const s=await r.arrayBuffer();return await Li(s,e.integrity),s}async function Ni(e,t){if(!e.serverBundleUrl)throw new Error("fetchServerBundle called on a version with no serverBundleUrl");let n=e.serverBundleUrl;t&&!/^https?:\/\//i.test(n)&&(n=new URL(n,t).href);const r=await fetch(n);if(!r.ok)throw new Error(`Server bundle fetch failed: HTTP ${r.status} ${r.statusText} from ${n}`);const s=await r.arrayBuffer();return e.serverIntegrity?await Li(s,e.serverIntegrity):console.warn(`[sh3] Server bundle at ${n} has no serverIntegrity declared — skipping SRI check. This will become an error once the formal registry spec (ADR-015) lands.`),s}function Qs(e,t){return{id:e.entry.id,type:e.entry.type,version:t.version,contractVersion:t.contractVersion,sourceRegistry:e.sourceRegistry,integrity:t.integrity,requires:t.requires,hasServerBundle:!!t.serverBundleUrl,serverIntegrity:t.serverIntegrity}}const Qt="0.8.2",Oi="sh3:user:__sh3core__:theme";let Ir=[];function A_(e){const t=Object.keys(e);for(const n of Ir)t.includes(n)||document.documentElement.style.removeProperty(`--${n}`);for(const[n,r]of Object.entries(e))document.documentElement.style.setProperty(`--${n}`,r);Ir=t;try{localStorage.setItem(Oi,JSON.stringify(e))}catch{}}function T_(){for(const e of Ir)document.documentElement.style.removeProperty(`--${e}`);Ir=[];try{localStorage.removeItem(Oi)}catch{}}function Lu(){try{const e=localStorage.getItem(Oi);if(!e)return{};const t=JSON.parse(e);return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{}}catch{return{}}}function C_(){const e=Lu();if(Object.keys(e).length!==0){for(const[t,n]of Object.entries(e))document.documentElement.style.setProperty(`--${t}`,n);Ir=Object.keys(e)}}const R_={hotInstall:typeof Blob<"u"&&typeof URL.createObjectURL=="function"},Nu=["__sh3core__","shell","sh3-store","sh3-admin"],Ou=Object.freeze(Object.defineProperty({__proto__:null,ConsentDeniedError:du,DocumentSyncExplorer:ym,FRAMEWORK_SHARD_IDS:Nu,PERMISSION_DOCUMENTS_BROWSE:Va,PERMISSION_DOCUMENTS_SYNC:Xc,PERMISSION_KEYS_MINT:cu,PERMISSION_STATE_MANAGE:yi,ScopeEscalationError:uu,ScopeNotGrantedError:Jc,ScopeRevokedError:am,SyncGrantPicker:tu,TenantMismatchError:im,VERSION:Qt,activeShards:Vr,buildPackageMeta:Qs,capabilities:R_,clearTokenOverrides:T_,closeTab:$i,collapseChild:p_,dockIntoActiveLayout:Pi,expandChild:g_,fetchBundle:Zs,fetchRegistries:Pu,focusTab:h_,focusView:Xs,getActiveApp:pu,getAuthHeader:Bs,getTokenOverrides:Lu,getUser:Us,inspectActiveLayout:Tu,isAdmin:Zt,isAuthenticated:ru,isGuest:su,launchApp:xr,listRegisteredApps:Ci,listVerbs:Ei,registerConsentListener:fu,registeredShards:Vt,resolveConsent:Fa,returnToHome:xu,setTokenOverrides:A_,shell:Hc,spliceIntoActiveLayout:v_,subscribeKeyRevocation:Ii,unregisterApp:Ri,validateRegistryIndex:Du},Symbol.toStringTag,{value:"Module"})),$_="/assets/SH3-BG5NVpSD.png",D_="https://cdn.jsdelivr.net/npm/p5@1.11.13/lib/p5.min.js";let or=null;function P_(){return or||(or=new Promise((e,t)=>{const n=window.p5;if(n){e(n);return}const r=document.createElement("script");r.src=D_,r.async=!0,r.onload=()=>e(window.p5),r.onerror=s=>{or=null,t(s)},document.head.appendChild(r)}),or)}var L_=R('<h1 class="shell-title-fallback svelte-1ifjvh5">SH3</h1>'),N_=R('<div class="shell-title svelte-1ifjvh5"></div>');function O_(e,t){ne(t,!0);const n="`.-':;,^\"~=+<>*?!/\\|()[]{}x1ltzrcvunsXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$",r=64,s=Math.floor(64/(442/193)),a=8,i=7,o=80,l=r*a,u=s*i,d=o/u;let f=q(void 0),v=null,k=q(!1);const y=()=>m=>{const L=getComputedStyle(document.documentElement).getPropertyValue("--shell-accent").trim();let x,S,N=!1;m.setup=()=>{m.createCanvas(l,u),m.noSmooth(),m.noStroke(),m.textAlign(m.CENTER,m.CENTER),m.textFont("monospace"),m.textSize(10),m.textStyle(m.BOLD),S=m.loadImage($_,()=>{x=m.createGraphics(r,s),x.pixelDensity(1),x.image(S,0,0,r,s),x.loadPixels(),N=!0},()=>{_(k,!0)})},m.draw=()=>{if(!N)return;const D=m.millis()*.001;let O;m.clear(),m.background(0,0),m.fill(L);for(let T=0;T<s;T++)for(let P=0;P<r;P++){const U=(T*r+P)*4;if(x.pixels[U]<64){if(O=m.noise(P/r*2,T/s*2,D*.15),O>.33)continue;m.text(n[Math.floor(O*n.length*.25)],(P+.5)*a,(T+.5)*i);continue}O=m.noise(P/r*4,T/s*4,D*.5),m.text(n[Math.floor(O*n.length)],(P+.5)*a,(T+.5)*i)}}};Le(()=>{if(c(k))return;let m=!1;return P_().then(A=>{if(!(m||!c(f)))try{v=new A(y(),c(f))}catch(L){console.error("[ShellTitle] p5 sketch failed to start",L),_(k,!0)}}).catch(A=>{console.error("[ShellTitle] failed to load p5 from CDN",A),_(k,!0)}),()=>{m=!0,v&&(v.remove(),v=null)}});var w=ot(),b=_e(w);{var C=m=>{var A=L_();I(m,A)},h=m=>{var A=N_();Bt(A,"",{},{width:"216.7195767195767px",height:"80px","--shell-title-scale":d}),kt(A,L=>_(f,L),()=>c(f)),I(m,A)};F(b,m=>{c(k)?m(C):m(h,-1)})}I(e,w),re()}var M_=R('<button type="button" class="shell-home-card svelte-cpn2x2"><div class="shell-home-card-label svelte-cpn2x2"> </div> <div class="shell-home-card-meta svelte-cpn2x2"><span class="shell-home-card-id svelte-cpn2x2"> </span> <span class="shell-home-card-version svelte-cpn2x2"> </span></div></button>'),j_=R('<section class="shell-home-section svelte-cpn2x2"><h2 class="shell-home-section-title svelte-cpn2x2">Apps</h2> <div class="shell-home-grid svelte-cpn2x2"></div></section>'),z_=R('<button type="button" class="shell-home-card svelte-cpn2x2"><div class="shell-home-card-label svelte-cpn2x2"> </div> <div class="shell-home-card-meta svelte-cpn2x2"><span class="shell-home-card-id svelte-cpn2x2"> </span> <span class="shell-home-card-version svelte-cpn2x2"> </span></div></button>'),q_=R('<section class="shell-home-section svelte-cpn2x2"><h2 class="shell-home-section-title svelte-cpn2x2">Admin</h2> <div class="shell-home-grid svelte-cpn2x2"></div></section>'),V_=R('<p class="shell-home-empty svelte-cpn2x2"><!></p>'),U_=R('<div class="shell-home svelte-cpn2x2"><header class="shell-home-header svelte-cpn2x2"><div class="shell-home-title-row svelte-cpn2x2"><!> <span class="shell-home-version svelte-cpn2x2"> </span> <span class="shell-home-alpha svelte-cpn2x2">alpha</span></div> <div class="shell-home-credit svelte-cpn2x2">Art: by <a href="https://www.andbc.co/" target="_blank" rel="noopener noreferrer" class="svelte-cpn2x2">andbc</a></div></header> <div class="shell-home-filter svelte-cpn2x2"><input type="search" placeholder="Filter apps…" aria-label="Filter apps by name" class="shell-home-filter-input svelte-cpn2x2"/></div> <!> <!> <!></div>');function B_(e,t){ne(t,!0);let n=q("");const r=W(Ci),s=W(Zt);function a(S,N){if(!N)return!0;const D=N.toLowerCase();return S.label.toLowerCase().includes(D)||S.id.toLowerCase().includes(D)}const i=W(()=>c(r).filter(S=>!S.admin&&a(S,c(n)))),o=W(()=>c(r).filter(S=>S.admin&&a(S,c(n)))),l=W(()=>c(i).length+(c(s)?c(o).length:0));var u=U_(),d=g(u),f=g(d),v=g(f);O_(v,{});var k=E(v,2),y=g(k);p(k),Wt(2),p(f),Wt(2),p(d);var w=E(d,2),b=g(w);ke(b),p(w);var C=E(w,2);{var h=S=>{var N=j_(),D=E(g(N),2);pe(D,21,()=>c(i),O=>O.id,(O,T)=>{var P=M_(),U=g(P),z=g(U,!0);p(U);var K=E(U,2),Z=g(K),G=g(Z,!0);p(Z);var te=E(Z,2),Q=g(te);p(te),p(K),p(P),V(()=>{Ee(P,"title",`Launch ${c(T).label??""}`),j(z,c(T).label),j(G,c(T).id),j(Q,`v${c(T).version??""}`)}),H("click",P,()=>xr(c(T).id)),I(O,P)}),p(D),p(N),I(S,N)};F(C,S=>{c(i).length>0&&S(h)})}var m=E(C,2);{var A=S=>{var N=q_(),D=E(g(N),2);pe(D,21,()=>c(o),O=>O.id,(O,T)=>{var P=z_(),U=g(P),z=g(U,!0);p(U);var K=E(U,2),Z=g(K),G=g(Z,!0);p(Z);var te=E(Z,2),Q=g(te);p(te),p(K),p(P),V(()=>{Ee(P,"title",`Launch ${c(T).label??""}`),j(z,c(T).label),j(G,c(T).id),j(Q,`v${c(T).version??""}`)}),H("click",P,()=>xr(c(T).id)),I(O,P)}),p(D),p(N),I(S,N)};F(m,S=>{c(s)&&c(o).length>0&&S(A)})}var L=E(m,2);{var x=S=>{var N=V_(),D=g(N);{var O=P=>{var U=Vn("No apps registered.");I(P,U)},T=P=>{var U=Vn();V(()=>j(U,`No apps match “${c(n)??""}”.`)),I(P,U)};F(D,P=>{c(r).length===0?P(O):P(T,-1)})}p(N),I(S,N)};F(L,S=>{c(l)===0&&S(x)})}p(u),V(()=>j(y,`v${Qt}`)),De(b,()=>c(n),S=>_(n,S)),I(e,u),re()}ve(["click"]);var F_=R('<p class="keys-peers-muted svelte-19l5m7c">Loading...</p>'),H_=R('<p class="keys-peers-error svelte-19l5m7c"> </p>'),K_=R('<p class="keys-peers-muted svelte-19l5m7c">No keys yet. Shards will ask your permission before creating one.</p>'),W_=R('<button type="button" class="keys-peers-btn-danger svelte-19l5m7c">Confirm</button> <button type="button" class="keys-peers-btn-secondary svelte-19l5m7c">Cancel</button>',1),G_=R('<button type="button" class="keys-peers-btn-danger svelte-19l5m7c">Revoke</button>'),Y_=R('<li class="keys-peers-item svelte-19l5m7c"><div class="keys-peers-info svelte-19l5m7c"><span class="keys-peers-label svelte-19l5m7c"> </span> <span class="keys-peers-meta svelte-19l5m7c"> </span> <span class="keys-peers-meta svelte-19l5m7c"> </span> <span class="keys-peers-meta svelte-19l5m7c"> </span></div> <div class="keys-peers-actions svelte-19l5m7c"><!></div></li>'),X_=R('<ul class="keys-peers-list svelte-19l5m7c"></ul>'),J_=R('<div class="keys-peers svelte-19l5m7c"><div class="keys-peers-header svelte-19l5m7c"><h2 class="svelte-19l5m7c">Keys &amp; Peers</h2></div> <!></div>');function Z_(e,t){ne(t,!0);let n=q(ce([])),r=q(null),s=q(!0),a=q(null);async function i(){_(r,null),_(s,!0);try{const w=await fetch("/api/keys",{credentials:"include"});if(!w.ok)throw new Error(`HTTP ${w.status}`);_(n,await w.json(),!0)}catch(w){_(r,w instanceof Error?w.message:String(w),!0)}finally{_(s,!1)}}async function o(w){_(a,null);const b=await fetch(`/api/keys/${encodeURIComponent(w)}`,{method:"DELETE",credentials:"include"});(b.ok||b.status===404)&&_(n,c(n).filter(C=>C.id!==w),!0)}function l(w){return new Date(w).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}Le(()=>{i()}),Le(()=>Ii("*",()=>{i()}));var u=J_(),d=E(g(u),2);{var f=w=>{var b=F_();I(w,b)},v=w=>{var b=H_(),C=g(b);p(b),V(()=>j(C,`Failed to load: ${c(r)??""}`)),I(w,b)},k=w=>{var b=K_();I(w,b)},y=w=>{var b=X_();pe(b,21,()=>c(n),C=>C.id,(C,h)=>{var m=Y_(),A=g(m),L=g(A),x=g(L,!0);p(L);var S=E(L,2),N=g(S);p(S);var D=E(S,2),O=g(D);p(D);var T=E(D,2),P=g(T);p(T),p(A);var U=E(A,2),z=g(U);{var K=G=>{var te=W_(),Q=_e(te),ue=E(Q,2);H("click",Q,()=>o(c(h).id)),H("click",ue,()=>{_(a,null)}),I(G,te)},Z=G=>{var te=G_();H("click",te,()=>{_(a,c(h).id,!0)}),I(G,te)};F(z,G=>{c(a)===c(h).id?G(K):G(Z,-1)})}p(U),p(m),V((G,te,Q)=>{j(x,c(h).label),j(N,`Minted by: ${c(h).mintedByShardId??"system"??""}${c(h).connectorId?` · Connector: ${c(h).connectorId}`:""}`),j(O,`Scopes: ${G??""}`),j(P,`Created: ${te??""} · Expires: ${Q??""}`)},[()=>c(h).scopes.join(", "),()=>l(c(h).createdAt),()=>c(h).expiresAt?l(c(h).expiresAt):"never"]),I(C,m)}),p(b),I(w,b)};F(d,w=>{c(s)?w(f):c(r)?w(v,1):c(n).length===0?w(k,2):w(y,-1)})}p(u),I(e,u),re()}ve(["click"]);const Q_={manifest:{id:"__sh3core__",label:"SH3 Core",version:Qt,views:[{id:"sh3core:home",label:"Home"},{id:"shell:keys-and-peers",label:"Keys & Peers"}]},activate(e){const t={mount(r,s){const a=ze(B_,{target:r});return{unmount(){He(a)}}}},n={mount(r,s){const a=ze(Z_,{target:r});return{unmount(){He(a)}}}};e.registerView("sh3core:home",t),e.registerView("shell:keys-and-peers",n)},autostart(){}},ey={id:"shell",label:"Shell",version:Qt,views:[{id:"shell:terminal",label:"Shell",standalone:!0}],permissions:[]},ty=2e3;let ny=0;function ry(){return`e${++ny}`}class sy{#e;get entries(){return c(this.#e)}set entries(t){_(this.#e,t,!0)}constructor(t=ty){this.#e=q(ce([])),this.cap=t}push(t){const n=this.entries[this.entries.length-1];if(n&&n.kind==="text"&&t.kind==="text"&&n.stream===t.stream){n.chunks.push(...t.chunks);return}const r={...t,id:ry()};this.entries.push(r),this.entries.length>this.cap&&this.entries.splice(0,this.entries.length-this.cap)}clear(){this.entries.length=0}}var ay=R("<pre> </pre>");function iy(e,t){ne(t,!0);const n=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,r=W(()=>t.chunks.join("").replace(n,""));var s=ay();let a;var i=g(s,!0);p(s),V(()=>{a=Pe(s,1,"shell-text svelte-ypr8s",null,a,{stderr:t.stream==="stderr"}),j(i,c(r))}),I(e,s),re()}var oy=R('<div class="shell-prompt svelte-u0gb59"><span class="shell-prompt-cwd svelte-u0gb59"> </span> <span class="shell-prompt-arrow svelte-u0gb59">❯</span> <span class="shell-prompt-line svelte-u0gb59"> </span></div>');function ly(e,t){var n=oy(),r=g(n),s=g(r,!0);p(r);var a=E(r,4),i=g(a,!0);p(a),p(n),V(()=>{j(s,t.cwd),j(i,t.line)}),I(e,n)}var cy=R("<div> </div>");function uy(e,t){var n=cy();let r;var s=g(n,!0);p(n),V(()=>{r=Pe(n,1,"shell-status svelte-nfxdpt",null,r,{info:t.level==="info",warn:t.level==="warn",error:t.level==="error"}),j(s,t.text)}),I(e,n)}var dy=R('<div class="shell-rich svelte-1rnhl05"><!></div>');function fy(e,t){var n=dy(),r=g(n);jr(r,()=>t.component,(s,a)=>{a(s,qr(()=>t.componentProps))}),p(n),I(e,n)}var vy=R('<div class="shell-scrollback svelte-isy3jt"></div>');function hy(e,t){ne(t,!0);let n=q(null);Le(()=>{t.scrollback.entries.length,c(n)&&(c(n).scrollTop=c(n).scrollHeight)});var r=vy();pe(r,21,()=>t.scrollback.entries,s=>s.id,(s,a)=>{var i=ot(),o=_e(i);{var l=v=>{iy(v,{get stream(){return c(a).stream},get chunks(){return c(a).chunks}})},u=v=>{ly(v,{get cwd(){return c(a).cwd},get line(){return c(a).line}})},d=v=>{uy(v,{get text(){return c(a).text},get level(){return c(a).level}})},f=v=>{fy(v,{get component(){return c(a).component},get componentProps(){return c(a).props}})};F(o,v=>{c(a).kind==="text"?v(l):c(a).kind==="prompt"?v(u,1):c(a).kind==="status"?v(d,2):c(a).kind==="rich"&&v(f,3)})}I(s,i)}),p(r),kt(r,s=>_(n,s),()=>c(n)),I(e,r),re()}var py=R('<div><span class="shell-input-cwd svelte-1dfv2gk"> </span> <span class="shell-input-arrow svelte-1dfv2gk">❯</span> <input type="text" spellcheck="false" autocomplete="off" autocapitalize="off" class="shell-input-field svelte-1dfv2gk"/></div>');function gy(e,t){ne(t,!0);let n=q(""),r=q(null),s=q(""),a=q(null);function i(){if(t.locked)return;const w=c(n);w.trim()&&(_(n,""),_(r,null),t.onSubmit(w))}function o(){t.history.length!==0&&(c(r)===null?(_(s,c(n),!0),_(r,t.history.length-1)):c(r)>0&&Hn(r,-1),_(n,t.history[c(r)]??"",!0))}function l(){c(r)!==null&&(c(r)<t.history.length-1?(Hn(r),_(n,t.history[c(r)],!0)):(_(r,null),_(n,c(s),!0)))}function u(w){if(t.locked){if(w.ctrlKey&&w.key==="c"){w.preventDefault(),t.session.send({t:"signal",sig:"SIGINT"});return}if(w.ctrlKey&&w.key==="d"){w.preventDefault(),t.session.send({t:"signal",sig:"EOF"});return}w.preventDefault();return}w.key==="Enter"?(w.preventDefault(),i()):w.key==="ArrowUp"?(w.preventDefault(),o()):w.key==="ArrowDown"?(w.preventDefault(),l()):w.ctrlKey&&w.key==="c"?(w.preventDefault(),_(n,""),_(r,null)):w.ctrlKey&&w.key==="l"&&(w.preventDefault(),_(n,"clear"),i())}Le(()=>{!t.locked&&c(a)&&c(a).focus()});var d=py();let f;var v=g(d),k=g(v,!0);p(v);var y=E(v,4);ke(y),kt(y,w=>_(a,w),()=>c(a)),p(d),V(()=>{f=Pe(d,1,"shell-input svelte-1dfv2gk",null,f,{locked:t.locked}),j(k,t.cwd),y.disabled=t.locked}),H("keydown",y,u),De(y,()=>c(n),w=>_(n,w)),I(e,d),re()}ve(["keydown"]);const zo=[1e3,2e3,5e3,1e4];class my{#e;get connected(){return c(this.#e)}set connected(t){_(this.#e,t,!0)}#t;get cwd(){return c(this.#t)}set cwd(t){_(this.#t,t,!0)}#n;get env(){return c(this.#n)}set env(t){_(this.#n,t,!0)}#a;get history(){return c(this.#a)}set history(t){_(this.#a,t,!0)}constructor(t){this.url=t,this.ws=null,this.handlers=new Set,this.pendingHistoryLogs=[],this.lastSeq=0,this.backoffIndex=0,this.closed=!1,this.#e=q(!1),this.#t=q(""),this.#n=q(ce({})),this.#a=q(ce([]))}connect(){if(!this.closed){try{this.ws=new WebSocket(this.url)}catch{this.scheduleReconnect();return}this.ws.addEventListener("open",()=>{this.backoffIndex=0,this.connected=!0;const t=this.lastSeq>0?{t:"hello",replayFrom:this.lastSeq}:{t:"hello"};this.sendRaw(t);for(const n of this.pendingHistoryLogs)this.sendRaw(n);this.pendingHistoryLogs=[]}),this.ws.addEventListener("message",t=>{let n;try{n=JSON.parse(t.data)}catch{return}n.t==="event"&&typeof n.event.seq=="number"&&(this.lastSeq=n.event.seq),n.t==="welcome"&&(this.cwd=n.cwd,this.env=n.env,this.lastSeq=n.seq),n.t==="cwd"&&(this.cwd=n.cwd),n.t==="history"&&(this.history=n.lines);for(const r of this.handlers)r(n)}),this.ws.addEventListener("close",()=>{this.connected=!1,this.ws=null,this.scheduleReconnect()}),this.ws.addEventListener("error",()=>{})}}scheduleReconnect(){if(this.closed)return;const t=zo[Math.min(this.backoffIndex,zo.length-1)];this.backoffIndex++,setTimeout(()=>this.connect(),t)}send(t){if(t.t==="history-log"&&!this.connected){this.pendingHistoryLogs.push(t);return}this.sendRaw(t)}sendRaw(t){!this.ws||this.ws.readyState!==WebSocket.OPEN||this.ws.send(JSON.stringify(t))}onMessage(t){return this.handlers.add(t),()=>this.handlers.delete(t)}close(){this.closed=!0,this.ws?.close(),this.ws=null}}class _y{list(){return Ei()}get(t){return Co(t)}resolve(t){const n=t.trim();if(!n)return{kind:"forward",line:t};if(n.startsWith("$ "))return{kind:"forward",line:n.slice(2)};if(n==="$")return{kind:"forward",line:""};const r=n.indexOf(" "),s=r===-1?n:n.slice(0,r),a=r===-1?"":n.slice(r+1),i=Co(s);if(!i)return{kind:"forward",line:t};const o=a.length?a.split(/\s+/):[];return{kind:"local",verb:i,args:o,line:t}}}class yy{constructor(t=""){this.base=t}async list(t){return(await(await this.#e("/api/fs/list",t)).json()).entries}async stat(t){return await(await this.#e("/api/fs/stat",t)).json()}async read(t){return await(await this.#e("/api/fs/read",t)).text()}async#e(t,n){const r=`${this.base}${t}?path=${encodeURIComponent(n)}`,s=await fetch(r,{credentials:"include"});if(!s.ok){let a=`HTTP ${s.status}`;try{const i=await s.json();i.error&&(a=i.error)}catch{}throw new Error(a)}return s}}class by{#e=new Map;register(t){this.#e.set(t.id,t)}get(t){return this.#e.get(t)}list(t){const n=[];for(const r of this.#e.values())r.requiresRole&&r.requiresRole!==t||n.push(r);return n}}const wy={id:"dev",label:"Dev",requiresRole:"admin",transport:"ws",autoRelocate:!1},ky={id:"user",label:"User",transport:"none",autoRelocate:!0};function Sy(e){e.register(wy),e.register(ky)}function Mu(e){return`sh3.shell.lastMode.${e}`}function Ey(e){try{return globalThis.localStorage?.getItem(Mu(e))??null}catch{return null}}function xy(e,t){try{globalThis.localStorage?.setItem(Mu(e),t)}catch{}}function Iy(e,t,n){const r=Ey(t);if(r){const a=e.get(r);if(a&&(!a.requiresRole||a.requiresRole===n))return a}const s=n==="admin"?"dev":"user";return e.get(s)}function Ay(e){return async function t(n){const r=e.mode();if(e.session.history.push(n),r.transport==="none"&&n.trimStart().startsWith("$ ")){e.scrollback.push({kind:"prompt",cwd:e.cwd(),line:n,ts:Date.now()}),e.scrollback.push({kind:"status",text:"shell: server shell not available in user mode",level:"error",ts:Date.now()});return}const s=e.resolver.resolve(n);if(s.kind==="local"){r.transport==="ws"&&e.session.send({t:"history-log",line:n}),e.scrollback.push({kind:"prompt",cwd:e.cwd(),line:n,ts:Date.now()});try{await s.verb.run({shell:e.shell,scrollback:e.scrollback,session:e.session,cwd:e.cwd(),dispatch:t,fs:e.fs},s.args)}catch(a){e.scrollback.push({kind:"status",text:`shell: verb ${s.verb.name} threw — ${a.message}`,level:"error",ts:Date.now()})}return}if(r.transport==="ws")e.session.send({t:"submit",line:s.line});else{const a=s.line.split(/\s+/)[0]??"";e.scrollback.push({kind:"prompt",cwd:e.cwd(),line:s.line,ts:Date.now()}),e.scrollback.push({kind:"status",text:`unknown verb: ${a}`,level:"error",ts:Date.now()})}}}async function Ty(e,t){if(!e.modeAutoRelocate)return{kind:"noop"};if(e.focusLocked)return{kind:"noop"};if(e.focusedShardId===null)return{kind:"noop"};if(e.focusedShardId===e.currentShardId)return{kind:"noop"};const n=e.focusedShardId;try{if((await t.stat(n)).kind!=="dir")return{kind:"noop"}}catch{return{kind:"noop"}}return{kind:"relocate",path:n}}var Cy=R('<div class="toolbar svelte-gnowwz"><div class="toolbar-slots svelte-gnowwz"></div></div>');function Ry(e,t){ne(t,!0);let n=on(t,"slotProps",19,()=>({})),r=W(()=>t.registry.list(t.ctx));var s=Cy(),a=g(s);pe(a,21,()=>c(r),i=>i.id,(i,o)=>{const l=W(()=>c(o).component);var u=ot(),d=_e(u);jr(d,()=>c(l),(f,v)=>{v(f,qr(()=>n()[c(o).id]??{}))}),I(i,u)}),p(a),p(s),I(e,s),re()}class $y{#e=[];register(t){this.#e=this.#e.filter(n=>n.id!==t.id).concat(t)}list(t){return this.#e.filter(n=>n.visible(t)).sort((n,r)=>n.order-r.order)}}var Dy=R('<button type="button"> </button>'),Py=R('<div class="mode-bar svelte-1i4cqlj" role="toolbar" aria-label="Shell mode"></div>'),Ly=R('<span class="mode-label svelte-1i4cqlj"> </span>');function Ny(e,t){ne(t,!0);let n=W(()=>t.registry.list(t.role));var r=ot(),s=_e(r);{var a=o=>{var l=Py();pe(l,21,()=>c(n),u=>u.id,(u,d)=>{var f=Dy();let v;var k=g(f,!0);p(f),V(()=>{v=Pe(f,1,"mode-btn svelte-1i4cqlj",null,v,{active:c(d).id===t.mode.id}),Ee(f,"aria-pressed",c(d).id===t.mode.id),j(k,c(d).label)}),H("click",f,()=>t.onSelect(c(d).id)),I(u,f)}),p(l),I(o,l)},i=o=>{var l=Ly(),u=g(l,!0);p(l),V(()=>j(u,t.mode.label)),I(o,l)};F(s,o=>{t.role==="admin"?o(a):o(i,-1)})}I(e,r),re()}ve(["click"]);var Oy=R('<button class="focus-lock-btn svelte-1q6gbap"> </button>');function My(e,t){var n=Oy(),r=g(n,!0);p(n),V(()=>{Ee(n,"title",t.locked?"Unlock focus":"Lock focus"),j(r,t.locked?"🔒":"🔓")}),H("click",n,function(...s){t.onToggle?.apply(this,s)}),I(e,n)}ve(["click"]);var jy=R('<span class="target-shard svelte-1nn2m6x" title="Target shard"> </span>');function zy(e,t){var n=jy(),r=g(n);p(n),V(()=>j(r,`→ ${t.target??"—"??""}`)),I(e,n)}var qy=R('<div class="shell-terminal svelte-13komre"><!> <!> <!></div>');function Vy(e,t){ne(t,!0);const n=new sy,r=new _y,s=new yy,a=new by;Sy(a);let i=q(ce(ye(()=>Iy(a,t.userId,t.role))));function o(x){const S=a.get(x);S&&(S.requiresRole&&S.requiresRole!==t.role||(_(i,S,!0),xy(t.userId,x),S.transport!=="ws"&&n.push({kind:"status",text:"mode switch: reload to take effect for server-shell changes",level:"info",ts:Date.now()})))}const l=ye(()=>new my(t.wsUrl)),u=ye(()=>Ay({mode:()=>c(i),resolver:r,scrollback:n,session:l,shell:t.shell,fs:s,cwd:()=>l.cwd}));let d=q(!1),f=q(!1),v=q(null);const k=new $y;k.register({id:"mode",order:10,visible:()=>!0,component:Ny}),k.register({id:"focus-lock",order:20,visible:x=>x.mode.id==="user",component:My}),k.register({id:"target-shard",order:30,visible:x=>x.mode.id==="user",component:zy});function y(x){if(x.type==="tabs")return x.tabs[x.activeTab]?.viewId??null;if(x.type==="split")for(const S of x.children){const N=y(S);if(N!==null)return N}return x.viewId??null}function w(){try{const x=Ft(),S=y(x.docked);if(!S)return null;const N=S.indexOf(":");return N>=0?S.slice(0,N):S}catch{return null}}Le(()=>{const x=w(),S=c(i).autoRelocate,N=c(f);(async()=>{const D=await Ty({modeAutoRelocate:S,focusLocked:N,focusedShardId:x,currentShardId:"shell"},s);D.kind==="relocate"&&D.path!==void 0&&(l.cwd=D.path),x&&x!=="shell"?_(v,x,!0):x||_(v,null)})()});function b(x){if(x.t!=="event")return;const S=x.event;switch(S.kind){case"prompt":n.push({kind:"prompt",cwd:S.cwd,line:S.line,ts:S.ts}),_(d,!0);break;case"stdout":n.push({kind:"text",stream:"stdout",chunks:[S.data],ts:S.ts});break;case"stderr":n.push({kind:"text",stream:"stderr",chunks:[S.data],ts:S.ts});break;case"exit":(S.signal||S.code!==null&&S.code!==0)&&n.push({kind:"status",text:S.signal?`shell: process exited (${S.signal})`:`shell: process exited (${S.code})`,level:"error",ts:S.ts}),_(d,!1);break;case"status":n.push({kind:"status",text:S.text,level:S.level,ts:S.ts});break}}let C=null;Ns(()=>{C=l.onMessage(b),c(i).transport==="ws"&&l.connect()}),wc(()=>{C?.(),l.close()});var h=qy(),m=g(h);{let x=W(()=>({mode:c(i),role:t.role})),S=W(()=>({mode:{mode:c(i),role:t.role,registry:a,onSelect:o},"focus-lock":{locked:c(f),onToggle:()=>_(f,!c(f))},"target-shard":{target:c(v)}}));Ry(m,{get registry(){return k},get ctx(){return c(x)},get slotProps(){return c(S)}})}var A=E(m,2);hy(A,{get scrollback(){return n}});var L=E(A,2);gy(L,{get cwd(){return l.cwd},get locked(){return c(d)},get history(){return l.history},get session(){return l},get onSubmit(){return u}}),p(h),I(e,h),re()}var Uy=R('<tr><td class="svelte-m248jy"><button type="button" class="svelte-m248jy"> </button></td><td class="svelte-m248jy"> </td></tr>'),By=R('<div class="shell-rich-help svelte-m248jy"><table class="svelte-m248jy"><thead><tr><th class="svelte-m248jy">Name</th><th class="svelte-m248jy">Summary</th></tr></thead><tbody></tbody></table></div>');function Fy(e,t){ne(t,!0);var n=By(),r=g(n),s=E(g(r));pe(s,21,()=>t.data.rows,a=>a.name,(a,i)=>{var o=Uy(),l=g(o),u=g(l),d=g(u,!0);p(u),p(l);var f=E(l),v=g(f,!0);p(f),p(o),V(()=>{j(d,c(i).name),j(v,c(i).summary)}),H("click",u,()=>t.data.onClickName(c(i).name)),I(a,o)}),p(s),p(r),p(n),I(e,n),re()}ve(["click"]);function Hy(){return{name:"help",summary:"List verbs or show detail for one.",async run(e){const t=Ei().map(n=>({name:n.name,summary:n.summary}));e.scrollback.push({kind:"rich",component:Fy,props:{data:{rows:t,onClickName:n=>e.dispatch(n)}},ts:Date.now()})}}}const Ky={name:"clear",summary:"Clear the scrollback (local only — other views are unaffected).",async run(e){e.scrollback.clear()}};var Wy=R('<li class="svelte-o8m437"><button type="button" class="svelte-o8m437"> </button></li>'),Gy=R('<div class="shell-rich-history svelte-o8m437"><ol class="svelte-o8m437"></ol></div>');function Yy(e,t){ne(t,!0);var n=Gy(),r=g(n);pe(r,21,()=>t.data.lines,an,(s,a)=>{var i=Wy(),o=g(i),l=g(o,!0);p(o),p(i),V(()=>j(l,c(a))),H("click",o,()=>t.data.onClickLine(c(a))),I(s,i)}),p(r),p(n),I(e,n),re()}ve(["click"]);const Xy={name:"history",summary:"Show the last N history lines. Default 50.",async run(e,t){const n=t[0]?Math.max(1,parseInt(t[0],10)||50):50,r=e.session.history.slice(-n);e.scrollback.push({kind:"rich",component:Yy,props:{data:{lines:r,onClickLine:s=>e.dispatch(s)}},ts:Date.now()})}};var Jy=R('<tr><td class="svelte-1u5krjz"><button type="button" class="svelte-1u5krjz"> </button></td><td class="svelte-1u5krjz"> </td></tr>'),Zy=R('<div class="shell-rich-apps svelte-1u5krjz"><table class="svelte-1u5krjz"><thead><tr><th class="svelte-1u5krjz">ID</th><th class="svelte-1u5krjz">Label</th></tr></thead><tbody></tbody></table></div>');function Qy(e,t){ne(t,!0);var n=Zy(),r=g(n),s=E(g(r));pe(s,21,()=>t.data.apps,a=>a.id,(a,i)=>{var o=Jy(),l=g(o),u=g(l),d=g(u,!0);p(u),p(l);var f=E(l),v=g(f,!0);p(f),p(o),V(()=>{j(d,c(i).id),j(v,c(i).label)}),H("click",u,()=>t.data.onClickApp(c(i).id)),I(a,o)}),p(s),p(r),p(n),I(e,n),re()}ve(["click"]);var eb=R('<div class="shell-rich-appcard svelte-npcp8i"><h3 class="svelte-npcp8i"> </h3> <p class="svelte-npcp8i"><strong>ID:</strong> </p> <p class="svelte-npcp8i"><strong>Shards:</strong> </p></div>');function tb(e,t){ne(t,!0);var n=eb(),r=g(n),s=g(r,!0);p(r);var a=E(r,2),i=E(g(a));p(a);var o=E(a,2),l=E(g(o));p(o),p(n),V(u=>{j(s,t.data.label),j(i,` ${t.data.id??""}`),j(l,` ${u??""}`)},[()=>t.data.shards.join(", ")]),I(e,n),re()}const nb={name:"apps",summary:"List installed apps. Click a row to launch.",async run(e){const t=e.shell.listApps();e.scrollback.push({kind:"rich",component:Qy,props:{data:{apps:t,onClickApp:n=>{e.shell.launchApp(n),e.scrollback.push({kind:"status",text:`shell: launched app ${n}`,level:"info",ts:Date.now()})}}},ts:Date.now()})}},rb={name:"app",summary:"Show the currently active app.",async run(e){const t=e.shell.getActiveApp();if(!t){e.scrollback.push({kind:"status",text:"shell: no active app",level:"info",ts:Date.now()});return}e.scrollback.push({kind:"rich",component:tb,props:{data:{id:t.id,label:t.label,shards:[]}},ts:Date.now()})}};var sb=R('<tr><td class="svelte-sc3ux4"> </td><td class="svelte-sc3ux4"> </td><td class="svelte-sc3ux4"> </td></tr>'),ab=R('<div class="shell-rich-shards svelte-sc3ux4"><table class="svelte-sc3ux4"><thead><tr><th class="svelte-sc3ux4">ID</th><th class="svelte-sc3ux4">Label</th><th class="svelte-sc3ux4">Version</th></tr></thead><tbody></tbody></table></div>');function ib(e,t){ne(t,!0);var n=ab(),r=g(n),s=E(g(r));pe(s,21,()=>t.data.shards,a=>a.id,(a,i)=>{var o=sb(),l=g(o),u=g(l,!0);p(l);var d=E(l),f=g(d,!0);p(d);var v=E(d),k=g(v,!0);p(v),p(o),V(()=>{j(u,c(i).id),j(f,c(i).label),j(k,c(i).version)}),I(a,o)}),p(s),p(r),p(n),I(e,n),re()}const ob={name:"shards",summary:"List active shards.",async run(e){const t=e.shell.listShards();e.scrollback.push({kind:"rich",component:ib,props:{data:{shards:t}},ts:Date.now()})}};var lb=R('<tr><td class="svelte-15elbr1"> </td><td class="svelte-15elbr1"> </td><td class="svelte-15elbr1"> </td><td class="svelte-15elbr1"><button type="button" class="svelte-15elbr1">Close</button></td></tr>'),cb=R('<div class="shell-rich-views svelte-15elbr1"><table class="svelte-15elbr1"><thead><tr><th class="svelte-15elbr1">Slot ID</th><th class="svelte-15elbr1">View ID</th><th class="svelte-15elbr1">Label</th><th class="svelte-15elbr1">Action</th></tr></thead><tbody></tbody></table></div>');function ub(e,t){ne(t,!0);var n=cb(),r=g(n),s=E(g(r));pe(s,21,()=>t.data.views,a=>a.slotId,(a,i)=>{var o=lb(),l=g(o),u=g(l,!0);p(l);var d=E(l),f=g(d,!0);p(d);var v=E(d),k=g(v,!0);p(v);var y=E(v),w=g(y);p(y),p(o),V(()=>{j(u,c(i).slotId),j(f,c(i).viewId),j(k,c(i).label)}),H("click",w,()=>t.data.onClose(c(i).slotId)),I(a,o)}),p(s),p(r),p(n),I(e,n),re()}ve(["click"]);const db={name:"views",summary:"List views currently mounted. Pass --standalone to list summonable views instead.",async run(e,t){if(t.includes("--standalone")){const r=e.shell.listStandaloneViews();if(r.length===0){e.scrollback.push({kind:"status",text:"shell: no standalone views are currently available.",level:"info",ts:Date.now()});return}e.scrollback.push({kind:"status",text:r.map(s=>` ${s.viewId.padEnd(32)} ${s.label}`).join(`
7
+ `),level:"info",ts:Date.now()});return}const n=e.shell.listViewsInCurrentLayout();e.scrollback.push({kind:"rich",component:ub,props:{data:{views:n,onClose:r=>{const s=e.shell.closeSlot(r);s.ok||e.scrollback.push({kind:"status",text:`shell: close failed — ${s.error??"unknown"}`,level:"error",ts:Date.now()})}}},ts:Date.now()})}},fb={name:"open",summary:"Open a view from any active shard into the current layout.",async run(e,t){const n=t[0];if(!n){e.scrollback.push({kind:"status",text:"usage: open <viewId>",level:"warn",ts:Date.now()});return}const r=e.shell.openViewInCurrentLayout(n);r.ok?e.scrollback.push({kind:"status",text:`shell: opened ${n}`,level:"info",ts:Date.now()}):e.scrollback.push({kind:"status",text:`shell: open failed — ${r.error??"unknown"}`,level:"error",ts:Date.now()})}},vb={name:"popout",summary:"Pop a docked view out into a float by slot id.",async run(e,t){const n=t[0];if(!n){e.scrollback.push({kind:"status",text:"usage: popout <slotId>",level:"warn",ts:Date.now()});return}const r=e.shell.popoutSlot(n);r.ok?e.scrollback.push({kind:"status",text:`shell: popped out ${n} → ${r.floatId}`,level:"info",ts:Date.now()}):e.scrollback.push({kind:"status",text:`shell: popout failed — ${r.error??"unknown"}`,level:"error",ts:Date.now()})}},hb={name:"dock",summary:"Dock a float back into the current layout by float id. Run with no args to list floats.",async run(e,t){const n=t[0];if(!n){const s=e.shell.listFloats();if(s.length===0){e.scrollback.push({kind:"status",text:"shell: no active floats.",level:"info",ts:Date.now()});return}e.scrollback.push({kind:"status",text:s.map(a=>` ${a.floatId.padEnd(24)} ${a.viewId??"-"} ${a.label}`).join(`
8
+ `),level:"info",ts:Date.now()});return}const r=e.shell.dockFloat(n);r.ok?e.scrollback.push({kind:"status",text:`shell: docked ${n}`,level:"info",ts:Date.now()}):e.scrollback.push({kind:"status",text:`shell: dock failed — ${r.error??"unknown"}`,level:"error",ts:Date.now()})}},pb={name:"close",summary:"Close a view by slot id.",async run(e,t){const n=t[0];if(!n){e.scrollback.push({kind:"status",text:"usage: close <slotId>",level:"warn",ts:Date.now()});return}const r=e.shell.closeSlot(n);r.ok||e.scrollback.push({kind:"status",text:`shell: close failed — ${r.error??"unknown"}`,level:"error",ts:Date.now()})}};var gb=R('<tr><td class="svelte-1w7onag"> </td><td class="svelte-1w7onag"> </td></tr>'),mb=R('<div class="shell-rich-zones svelte-1w7onag"><table class="svelte-1w7onag"><thead><tr><th class="svelte-1w7onag">Shard ID</th><th class="svelte-1w7onag">Zones</th></tr></thead><tbody></tbody></table></div>');function _b(e,t){ne(t,!0);var n=mb(),r=g(n),s=E(g(r));pe(s,21,()=>t.data.rows,a=>a.shardId,(a,i)=>{var o=gb(),l=g(o),u=g(l,!0);p(l);var d=E(l),f=g(d,!0);p(d),p(o),V(v=>{j(u,c(i).shardId),j(f,v)},[()=>c(i).zones.join(", ")]),I(a,o)}),p(s),p(r),p(n),I(e,n),re()}var yb=R('<div class="shell-rich-zonetree svelte-13iiyr1"><pre class="svelte-13iiyr1"> </pre></div>');function bb(e,t){ne(t,!0);var n=yb(),r=g(n),s=g(r,!0);p(r),p(n),V(a=>j(s,a),[()=>JSON.stringify(t.data.value,null,2)]),I(e,n),re()}const wb={name:"zones",summary:"List zones for the current user (optionally scoped to a shard).",async run(e,t){const n=e.shell.listZones(t[0]);e.scrollback.push({kind:"rich",component:_b,props:{data:{rows:n}},ts:Date.now()})}},kb={name:"zone",summary:"Dump the contents of a zone as a collapsible JSON tree.",async run(e,t){const[n,r]=t;if(!n||!r){e.scrollback.push({kind:"status",text:"usage: zone <shardId> <zoneName>",level:"warn",ts:Date.now()});return}const s=e.shell.readZone(n,r);e.scrollback.push({kind:"rich",component:bb,props:{data:{value:s}},ts:Date.now()})}};function Sb(e,t){if(t.startsWith("/"))return Eb(t.slice(1));const n=[...e.split("/").filter(Boolean),...t.split("/")],r=[];for(const s of n)if(!(s===""||s===".")){if(s===".."){r.pop();continue}r.push(s)}return r.join("/")}function Eb(e){return e.split("/").filter(t=>t&&t!==".").join("/")}const xb={name:"pwd",summary:"Show the current working directory.",async run(e){const t=e.session.cwd||"",n=t.startsWith("/")?t:`/${t}`;e.scrollback.push({kind:"text",stream:"stdout",chunks:[n+`
9
+ `],ts:Date.now()})}},Ib={name:"cd",summary:"Change the session working directory.",async run(e,t){const n=t[0]??"";if(n===""){e.session.cwd="";return}const r=e.session.cwd,s=Sb(r,n);try{if((await e.fs.stat(s)).kind!=="dir"){e.scrollback.push({kind:"status",text:`cd: not a directory: ${n}`,level:"error",ts:Date.now()});return}}catch(a){e.scrollback.push({kind:"status",text:`cd: ${a.message}`,level:"error",ts:Date.now()});return}e.session.cwd=s}},Ab={name:"whoami",summary:"Show the current admin user and session info.",async run(e){const t=e.shell.whoAmI();e.scrollback.push({kind:"text",stream:"stdout",chunks:[`${t.userId}${t.admin?" (admin)":""}
10
+ `],ts:Date.now()})}};var Tb=R('<tr><td class="svelte-1ox8vog"> </td><td class="svelte-1ox8vog"> </td></tr>'),Cb=R('<div class="shell-rich-env svelte-1ox8vog"><table class="svelte-1ox8vog"><thead><tr><th class="svelte-1ox8vog">Key</th><th class="svelte-1ox8vog">Value</th></tr></thead><tbody></tbody></table></div>');function Rb(e,t){ne(t,!0);var n=Cb(),r=g(n),s=E(g(r));pe(s,21,()=>Object.entries(t.data.env),([a,i])=>a,(a,i)=>{var o=W(()=>ll(c(i),2));let l=()=>c(o)[0],u=()=>c(o)[1];var d=Tb(),f=g(d),v=g(f,!0);p(f);var k=E(f),y=g(k,!0);p(k),p(d),V(()=>{j(v,l()),j(y,u())}),I(a,d)}),p(s),p(r),p(n),I(e,n),re()}const $b={name:"env",summary:"Show the session environment.",async run(e){const t=e.session.env;e.scrollback.push({kind:"rich",component:Rb,props:{data:{env:t}},ts:Date.now()})}},Db={name:"ls",summary:"List the current directory.",async run(e){let t;try{t=await e.fs.list(e.session.cwd)}catch(r){e.scrollback.push({kind:"status",text:`ls: ${r.message}`,level:"error",ts:Date.now()});return}const n=t.sort((r,s)=>r.name.localeCompare(s.name)).map(r=>r.kind==="dir"?`${r.name}/`:r.name).join(`
11
+ `);e.scrollback.push({kind:"text",stream:"stdout",chunks:[n||"(empty)"],ts:Date.now()})}},Pb={name:"cat",summary:"Read a file into the scrollback.",async run(e,t){if(t.length===0){e.scrollback.push({kind:"status",text:"cat: missing file argument",level:"error",ts:Date.now()});return}const n=t[0],r=e.session.cwd?`${e.session.cwd}/${n}`:n;try{const s=await e.fs.read(r);e.scrollback.push({kind:"text",stream:"stdout",chunks:[s],ts:Date.now()})}catch(s){e.scrollback.push({kind:"status",text:`cat: ${s.message}`,level:"error",ts:Date.now()})}}};function Lb(e){e.registerVerb(Hy()),e.registerVerb(Ky),e.registerVerb(Xy),e.registerVerb(nb),e.registerVerb(rb),e.registerVerb(ob),e.registerVerb(db),e.registerVerb(fb),e.registerVerb(pb),e.registerVerb(vb),e.registerVerb(hb),e.registerVerb(wb),e.registerVerb(kb),e.registerVerb(xb),e.registerVerb(Ib),e.registerVerb($b),e.registerVerb(Ab),e.registerVerb(Db),e.registerVerb(Pb)}function ju(e){return e.type==="tabs"?e.tabs.filter(t=>t.viewId!==null):e.type==="split"?e.children.flatMap(ju):e.viewId!==null?[{slotId:e.slotId,viewId:e.viewId,label:e.viewId}]:[]}function Nb(e){return{listApps(){return Ci().map(t=>({id:t.id,label:t.label}))},getActiveApp(){const t=pu();return t?{id:t.id,label:t.label}:null},launchApp(t){xr(t)},listShards(){return Array.from(Vt.values()).map(t=>({id:t.manifest.id,label:t.manifest.label,version:t.manifest.version}))},listViewsInCurrentLayout(){try{const{root:t}=Tu();return ju(t.docked).map(n=>({slotId:n.slotId,viewId:n.viewId??"",label:n.label}))}catch{return[]}},openViewInCurrentLayout(t){try{if(Xs(t))return{ok:!0};const n=Lo().find(r=>r.viewId===t);if(n){const r=`standalone:${t}:${Date.now()}`;return Pi({slotId:r,viewId:t,label:n.label})?{ok:!0}:{ok:!1,error:`could not dock "${t}" — no available slot`}}return{ok:!1,error:`view "${t}" not found in current layout`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}},listStandaloneViews(){return Lo()},popoutSlot(t){try{const n=__(t);return n?{ok:!0,floatId:n}:{ok:!1,error:`slot "${t}" not found in docked tree`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}},dockFloat(t){try{return y_(t)?{ok:!0}:{ok:!1,error:`float "${t}" not found or has no dockable content`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}},listFloats(){return Tt.list().map(t=>{const n=t.content.type==="tabs"?t.content:null,r=n?n.tabs[n.activeTab??0]??n.tabs[0]:null;return{floatId:t.id,viewId:r?.viewId??null,label:t.title??r?.label??t.id}})},closeSlot(t){return $i(t),{ok:!0}},listZones(t){return[]},readZone(t,n){return null},whoAmI(){return{userId:Us()?.id??"guest",admin:Zt()}}}}const Ob={manifest:ey,activate(e){if(!e.isAdmin)return;Lb(e);const t=Nb(),n={mount(r,s){const a=typeof location<"u"&&location.protocol==="https:"?"wss":"ws",i=typeof location<"u"?location.host:"localhost",o=`${a}://${i}/api/shell/session`,u=Us()?.id??"guest",d=Zt()?"admin":"user",f=ze(Vy,{target:r,props:{shell:t,wsUrl:o,userId:u,role:d}});return{unmount(){He(f)},closable:!0}}};e.registerView("shell:terminal",n)},autostart(){}},qo=new Set(["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","enum","export","extends","false","finally","for","function","if","import","in","instanceof","let","new","null","return","super","switch","this","throw","true","try","typeof","var","void","while","with","yield"]);function ya(e,t){const n=Object.keys(t),r=n.filter(i=>!qo.has(i)),s=n.filter(i=>qo.has(i)),a=[`const __m__ = globalThis.${e};`];r.length>0&&a.push(`export const { ${r.join(", ")} } = __m__;`);for(const i of s)a.push(`const __r_${i}__ = __m__['${i}']; export { __r_${i}__ as ${i} };`);return a.push("export default __m__.default;"),URL.createObjectURL(new Blob([a.join(`
12
+ `)],{type:"application/javascript"}))}const Mi=globalThis;Mi.__sh3__=Ou;Mi.__sh3_svelte__=Sc;Mi.__sh3_svelte_internal_client__=Mc;const ji={"sh3-core":ya("__sh3__",Ou),svelte:ya("__sh3_svelte__",Sc),"svelte/internal/client":ya("__sh3_svelte_internal_client__",Mc)};ji["svelte/internal/disclose-version"]=URL.createObjectURL(new Blob([""],{type:"application/javascript"}));ji["sh3-core/tokens.css"]=URL.createObjectURL(new Blob([""],{type:"application/javascript"}));const Mb=/(?:from|import)\s*(['"])(sh3-core(?:\/[^'"]*)?|svelte(?:\/[^'"]*)?)\1/g;function jb(e){return e.replace(Mb,(t,n,r)=>{const s=ji[r];return s?`${t.startsWith("from")?"from":"import"} '${s}'`:t})}async function zi(e){const t=new TextDecoder().decode(e),n=jb(t),r=new Blob([n],{type:"application/javascript"}),s=URL.createObjectURL(r);try{const a=await import(s),i={shards:[],apps:[]};for(const o of Object.values(a)){if(!o||typeof o!="object"||!("manifest"in o))continue;const l=o;zb(l)?i.shards.push(l):qb(l)&&i.apps.push(l)}if(i.shards.length===0&&i.apps.length===0)throw new Error('Bundle has no exports with a "manifest" property — expected at least one shard or app');return i}finally{URL.revokeObjectURL(s)}}function zb(e){return"activate"in e&&typeof e.activate=="function"&&Array.isArray(e.manifest.views)}function qb(e){return"initialLayout"in e&&Array.isArray(e.manifest.requiredShards)}const Vb="sh3-packages",Ub=1,Ar="bundles",Tr="meta";function ea(){return new Promise((e,t)=>{const n=indexedDB.open(Vb,Ub);n.onupgradeneeded=()=>{const r=n.result;r.objectStoreNames.contains(Ar)||r.createObjectStore(Ar),r.objectStoreNames.contains(Tr)||r.createObjectStore(Tr)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function Yn(e,t,n,r){return new Promise((s,a)=>{const o=e.transaction(t,n).objectStore(t),l=r(o);l.onsuccess=()=>s(l.result),l.onerror=()=>a(l.error)})}async function zu(e,t,n){const r=await ea();await Yn(r,Ar,"readwrite",s=>s.put(t,e)),await Yn(r,Tr,"readwrite",s=>s.put(n,e)),r.close()}async function qu(e){const t=await ea(),n=await Yn(t,Ar,"readonly",r=>r.get(e));return t.close(),n??null}async function Vu(){const e=await ea(),t=await Yn(e,Tr,"readonly",n=>n.getAll());return e.close(),t??[]}async function Bb(e){const t=await ea();await Yn(t,Ar,"readwrite",n=>n.delete(e)),await Yn(t,Tr,"readwrite",n=>n.delete(e)),t.close()}function qi(e,t){for(const n of e.shards)n.manifest={...n.manifest,version:t.version},Ai(n);for(const n of e.apps)n.manifest={...n.manifest,version:t.version},Ti(n)}async function Vi(e,t){try{await Li(e,t.integrity)}catch(a){return{success:!1,hotLoaded:!1,error:`Integrity check failed: ${a instanceof Error?a.message:String(a)}`}}let n;try{n=await zi(e)}catch(a){return{success:!1,hotLoaded:!1,error:`Failed to load bundle: ${a instanceof Error?a.message:String(a)}`}}if(t.type==="shard"&&n.shards.length===0)return{success:!1,hotLoaded:!1,error:`Package "${t.id}" declared type "shard" but bundle contains no valid shard`};if(t.type==="app"&&n.apps.length===0)return{success:!1,hotLoaded:!1,error:`Package "${t.id}" declared type "app" but bundle contains no valid app`};const r={id:t.id,type:t.type,version:t.version,sourceRegistry:t.sourceRegistry,contractVersion:t.contractVersion,installedAt:new Date().toISOString()};try{await zu(t.id,e,r)}catch(a){return{success:!1,hotLoaded:!1,error:`Failed to persist package: ${a instanceof Error?a.message:String(a)}`}}if(t.type==="shard"||t.type==="combo")try{Fs(t.id)}catch{}(t.type==="app"||t.type==="combo")&&Ri(t.id);let s=!0;try{qi(n,{version:t.version,sourceRegistry:t.sourceRegistry,contractVersion:t.contractVersion})}catch(a){console.warn(`[sh3] Package "${t.id}" installed but registration failed (will retry on next boot):`,a instanceof Error?a.message:a),s=!1}return{success:!0,package:r,hotLoaded:s}}async function Uu(e){try{Fs(e)}catch{}Ri(e),await Bb(e)}async function Fb(){return Vu()}async function Hb(){let e;try{e=await Vu()}catch(t){console.warn("[sh3] Failed to read installed packages from storage:",t instanceof Error?t.message:t);return}for(const t of e)try{const n=await qu(t.id);if(!n){console.warn(`[sh3] No bundle found for installed package "${t.id}", skipping`);continue}const r=await zi(n);qi(r,{version:t.version,sourceRegistry:t.sourceRegistry,contractVersion:t.contractVersion}),r.shards.length===0&&r.apps.length===0&&console.warn(`[sh3] Package "${t.id}" contains no valid shards or apps, skipping`)}catch(n){console.warn(`[sh3] Failed to load installed package "${t.id}":`,n instanceof Error?n.message:n)}}const Vo={version:1};var Kb=R('<div class="store-registry-entry svelte-1aafzt0"><span class="store-registry-url svelte-1aafzt0"> </span> <button class="store-registry-remove svelte-1aafzt0">Remove</button></div>'),Wb=R('<div class="store-registries svelte-1aafzt0"></div>'),Gb=R('<form class="store-add-registry svelte-1aafzt0"><input class="store-registry-input svelte-1aafzt0" type="url" placeholder="Registry URL (e.g. https://sh3.example.com/registry.json)"/> <button type="submit" class="store-add-btn svelte-1aafzt0">Add</button></form>'),Yb=R('<div class="store-error svelte-1aafzt0"> </div>'),Xb=R('<div class="store-error svelte-1aafzt0"> </div>'),Jb=R('<img alt="" class="store-icon-img svelte-1aafzt0"/>'),Zb=R('<span class="store-icon-placeholder svelte-1aafzt0"> </span>'),Qb=R('<div class="store-card-warning svelte-1aafzt0"> </div>'),ew=R('<button class="store-update-btn svelte-1aafzt0"> </button>'),tw=R('<span class="store-installed-label svelte-1aafzt0">Installed</span>'),nw=R('<span class="store-card-missing svelte-1aafzt0"> </span>'),rw=R('<div class="store-install-wrap svelte-1aafzt0"><button class="store-install-btn svelte-1aafzt0"> </button> <!></div>'),sw=R('<div class="store-card svelte-1aafzt0"><div class="store-card-header svelte-1aafzt0"><div class="store-card-icon svelte-1aafzt0"><!></div> <div class="store-card-title svelte-1aafzt0"><span class="store-card-label svelte-1aafzt0"> </span> <span> </span> <span class="store-card-version svelte-1aafzt0"> </span></div></div> <p class="store-card-desc svelte-1aafzt0"> </p> <div class="store-card-author svelte-1aafzt0"> </div> <!> <div class="store-card-actions svelte-1aafzt0"><!></div></div>'),aw=R("No packages found. <!>",1),iw=R('<div class="store-empty svelte-1aafzt0"><!></div>'),ow=R('<div class="store-view svelte-1aafzt0"><header class="store-header svelte-1aafzt0"><h2 class="svelte-1aafzt0">Package Store</h2> <div class="store-controls svelte-1aafzt0"><input class="store-search svelte-1aafzt0" type="text" placeholder="Search packages..."/> <select class="store-filter svelte-1aafzt0"><option>All</option><option>Shards</option><option>Apps</option></select> <button class="store-refresh svelte-1aafzt0"> </button></div></header> <!> <!> <!> <!> <div class="store-grid svelte-1aafzt0"></div> <!></div>');function lw(e,t){ne(t,!0);let n=q(""),r=q("all"),s=q(ce(new Set)),a=q(ce(new Set)),i=q(null),o=q("");const l=ln;async function u(){const $=c(o).trim();if($&&!l.env.registries.includes($))try{await l.addRegistry($),_(o,""),l.refreshCatalog(),l.refreshInstalled()}catch(M){_(i,M instanceof Error?M.message:String(M),!0)}}async function d($){try{await l.removeRegistry($),l.refreshCatalog()}catch(M){_(i,M instanceof Error?M.message:String(M),!0)}}const f=W(()=>{const $=c(n).toLowerCase().trim();return l.state.ephemeral.catalog.filter(M=>c(r)!=="all"&&M.entry.type!==c(r)?!1:$?M.entry.id.toLowerCase().includes($)||M.entry.label.toLowerCase().includes($)||M.entry.description.toLowerCase().includes($):!0)});function v($){return l.state.ephemeral.installed.some(M=>M.id===$)}function k($){return String($.latest.contractVersion)!==String(Vo.version)}function y($){return $ in l.state.ephemeral.updatable}function w($){return l.state.ephemeral.installed.find(M=>M.id===$)?.version??""}function b($,M){const Y=$.latest.requires?.map(oe=>oe.id)??[];if(Y.length===0)return[];const le=new Set(Nu);for(const oe of M)(oe.type==="shard"||oe.type==="combo")&&le.add(oe.id);return Y.filter(oe=>!le.has(oe))}async function C($){if(!c(a).has($)){_(a,new Set([...c(a),$]),!0),_(i,null);try{await l.updatePackage($)}catch(M){_(i,M instanceof Error?M.message:String(M),!0)}finally{const M=new Set(c(a));M.delete($),_(a,M,!0)}}}async function h($){const M=$.entry.id;if(!c(s).has(M)){_(s,new Set([...c(s),M]),!0),_(i,null);try{const Y=await Zs($.latest,$.sourceRegistry),le=Qs($,$.latest);let oe;$.latest.serverBundleUrl&&(oe=await Ni($.latest,$.sourceRegistry));const Ae={id:le.id,type:le.type,label:$.entry.label,version:le.version,contractVersion:le.contractVersion,sourceRegistry:le.sourceRegistry,requiredShards:$.latest.requires?.map(fn=>fn.id)??[],installedAt:new Date().toISOString()},he=await xi(Ae,Y,oe);if(!he.ok){_(i,he.error??"Server install failed",!0);return}const Ye=await Vi(Y,le);Ye.success||console.warn(`[sh3-store] Server install ok but local hot-load failed: ${Ye.error}`),await l.refreshInstalled()}catch(Y){_(i,Y instanceof Error?Y.message:String(Y),!0)}finally{const Y=new Set(c(s));Y.delete(M),_(s,Y,!0)}}}function m(){l.refreshCatalog(),l.refreshInstalled()}var A=ow(),L=g(A),x=E(g(L),2),S=g(x);ke(S);var N=E(S,2),D=g(N);D.value=D.__value="all";var O=E(D);O.value=O.__value="shard";var T=E(O);T.value=T.__value="app",p(N);var P=E(N,2),U=g(P,!0);p(P),p(x),p(L);var z=E(L,2);{var K=$=>{var M=Wb();pe(M,21,()=>l.env.registries,an,(Y,le)=>{var oe=Kb(),Ae=g(oe),he=g(Ae,!0);p(Ae);var Ye=E(Ae,2);p(oe),V(()=>j(he,c(le))),H("click",Ye,()=>d(c(le))),I(Y,oe)}),p(M),I($,M)};F(z,$=>{l.isAdmin&&l.env.registries.length>0&&$(K)})}var Z=E(z,2);{var G=$=>{var M=Gb(),Y=g(M);ke(Y);var le=E(Y,2);p(M),V(oe=>le.disabled=oe,[()=>!c(o).trim()]),tt("submit",M,oe=>{oe.preventDefault(),u()}),De(Y,()=>c(o),oe=>_(o,oe)),I($,M)};F(Z,$=>{l.isAdmin&&$(G)})}var te=E(Z,2);{var Q=$=>{var M=Yb(),Y=g(M,!0);p(M),V(()=>j(Y,l.state.ephemeral.error)),I($,M)};F(te,$=>{l.state.ephemeral.error&&$(Q)})}var ue=E(te,2);{var ge=$=>{var M=Xb(),Y=g(M,!0);p(M),V(()=>j(Y,c(i))),I($,M)};F(ue,$=>{c(i)&&$(ge)})}var ie=E(ue,2);pe(ie,21,()=>c(f),$=>$.entry.id,($,M)=>{const Y=W(()=>v(c(M).entry.id)),le=W(()=>k(c(M))),oe=W(()=>c(s).has(c(M).entry.id)),Ae=W(()=>y(c(M).entry.id)),he=W(()=>c(a).has(c(M).entry.id)),Ye=W(()=>b(c(M),l.state.ephemeral.installed));var fn=sw(),rr=g(fn),Pt=g(rr),sr=g(Pt);{var Zu=Re=>{var Te=Jb();V(()=>Ee(Te,"src",c(M).entry.icon)),I(Re,Te)},Qu=Re=>{var Te=Zb(),ht=g(Te,!0);p(Te),V(()=>j(ht,c(M).entry.type==="shard"?"S":"A")),I(Re,Te)};F(sr,Re=>{c(M).entry.icon?Re(Zu):Re(Qu,-1)})}p(Pt);var Hi=E(Pt,2),ta=g(Hi),ed=g(ta,!0);p(ta);var Ur=E(ta,2);let Ki;var td=g(Ur,!0);p(Ur);var Wi=E(Ur,2),nd=g(Wi,!0);p(Wi),p(Hi),p(rr);var na=E(rr,2),rd=g(na,!0);p(na);var ra=E(na,2),sd=g(ra,!0);p(ra);var Gi=E(ra,2);{var ad=Re=>{var Te=Qb(),ht=g(Te);p(Te),V(()=>j(ht,`Contract mismatch: package targets v${c(M).latest.contractVersion??""}, running v${Vo.version}`)),I(Re,Te)};F(Gi,Re=>{c(le)&&Re(ad)})}var Yi=E(Gi,2),id=g(Yi);{var od=Re=>{var Te=ew(),ht=g(Te,!0);p(Te),V(sa=>{Te.disabled=c(he),j(ht,sa)},[()=>c(he)?"Updating...":`Update ${w(c(M).entry.id)} -> ${c(M).latest.version}`]),H("click",Te,()=>C(c(M).entry.id)),I(Re,Te)},ld=Re=>{var Te=tw();I(Re,Te)},cd=Re=>{var Te=rw(),ht=g(Te),sa=g(ht,!0);p(ht);var ud=E(ht,2);{var dd=ar=>{var aa=nw(),fd=g(aa);p(aa),V(vd=>j(fd,`requires: ${vd??""}`),[()=>c(Ye).join(", ")]),I(ar,aa)};F(ud,ar=>{c(Ye).length>0&&ar(dd)})}p(Te),V(ar=>{ht.disabled=c(oe)||c(Ye).length>0,Ee(ht,"title",ar),j(sa,c(oe)?"Installing...":"Install")},[()=>c(Ye).length>0?`Missing required shards: ${c(Ye).join(", ")}`:void 0]),H("click",ht,()=>h(c(M))),I(Re,Te)};F(id,Re=>{c(Y)&&c(Ae)?Re(od):c(Y)?Re(ld,1):Re(cd,-1)})}p(Yi),p(fn),V(()=>{j(ed,c(M).entry.label),Ki=Pe(Ur,1,"store-card-badge svelte-1aafzt0",null,Ki,{"badge-shard":c(M).entry.type==="shard","badge-app":c(M).entry.type==="app"}),j(td,c(M).entry.type),j(nd,c(M).latest.version),j(rd,c(M).entry.description),j(sd,c(M).entry.author.name)}),I($,fn)}),p(ie);var xe=E(ie,2);{var Ie=$=>{var M=iw(),Y=g(M);{var le=Ae=>{var he=aw(),Ye=E(_e(he));{var fn=Pt=>{var sr=Vn("Add a registry URL above to get started.");I(Pt,sr)},rr=Pt=>{var sr=Vn("No registries configured.");I(Pt,sr)};F(Ye,Pt=>{l.isAdmin?Pt(fn):Pt(rr,-1)})}I(Ae,he)},oe=Ae=>{var he=Vn("No packages match the current filter.");I(Ae,he)};F(Y,Ae=>{l.env.registries.length===0?Ae(le):Ae(oe,-1)})}p(M),I($,M)};F(xe,$=>{!l.state.ephemeral.loading&&c(f).length===0&&$(Ie)})}p(A),V(()=>{P.disabled=l.state.ephemeral.loading,j(U,l.state.ephemeral.loading?"Loading...":"Refresh")}),De(S,()=>c(n),$=>_(n,$)),vs(N,()=>c(r),$=>_(r,$)),H("click",P,m),I(e,A),re()}ve(["click"]);var cw=R('<div class="installed-error svelte-1hqclkp"> </div>'),uw=R('<div class="installed-empty svelte-1hqclkp">No packages installed.</div>'),dw=R('<button class="installed-update-btn svelte-1hqclkp"> </button>'),fw=R('<li class="installed-item svelte-1hqclkp"><div class="installed-item-main svelte-1hqclkp"><span class="installed-item-id svelte-1hqclkp"> </span> <span> </span> <span class="installed-item-version svelte-1hqclkp"> </span></div> <div class="installed-item-meta svelte-1hqclkp"><span> </span> <span> </span> <span> </span></div> <div class="installed-item-actions svelte-1hqclkp"><!> <button class="installed-uninstall-btn svelte-1hqclkp"> </button></div></li>'),vw=R('<ul class="installed-list svelte-1hqclkp"></ul>'),hw=R('<div class="installed-view svelte-1hqclkp"><header class="installed-header svelte-1hqclkp"><h2 class="svelte-1hqclkp">Installed Packages</h2> <button>Refresh</button></header> <!> <!></div>');function pw(e,t){ne(t,!0);const n=ln;let r=q(ce(new Set)),s=q(ce(new Set)),a=q(null);async function i(h){if(!c(r).has(h)){_(r,new Set([...c(r),h]),!0);try{await iu(h),await Uu(h),await n.refreshInstalled()}catch(m){console.warn("[sh3-store] Uninstall failed:",m instanceof Error?m.message:m)}finally{const m=new Set(c(r));m.delete(h),_(r,m,!0)}}}async function o(h){if(!c(s).has(h)){_(s,new Set([...c(s),h]),!0),_(a,null);try{await n.updatePackage(h)}catch(m){_(a,m instanceof Error?m.message:String(m),!0)}finally{const m=new Set(c(s));m.delete(h),_(s,m,!0)}}}function l(){n.refreshInstalled()}function u(h){try{return new Date(h).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch{return h}}var d=hw(),f=g(d),v=E(g(f),2);p(f);var k=E(f,2);{var y=h=>{var m=cw(),A=g(m,!0);p(m),V(()=>j(A,c(a))),I(h,m)};F(k,h=>{c(a)&&h(y)})}var w=E(k,2);{var b=h=>{var m=uw();I(h,m)},C=h=>{var m=vw();pe(m,21,()=>n.state.ephemeral.installed,A=>A.id,(A,L)=>{const x=W(()=>c(r).has(c(L).id));var S=fw(),N=g(S),D=g(N),O=g(D,!0);p(D);var T=E(D,2);let P;var U=g(T,!0);p(T);var z=E(T,2),K=g(z,!0);p(z),p(N);var Z=E(N,2),G=g(Z),te=g(G);p(G);var Q=E(G,2),ue=g(Q);p(Q);var ge=E(Q,2),ie=g(ge);p(ge),p(Z);var xe=E(Z,2),Ie=g(xe);{var $=le=>{const oe=W(()=>n.state.ephemeral.updatable[c(L).id]),Ae=W(()=>c(s).has(c(L).id));var he=dw(),Ye=g(he,!0);p(he),V(()=>{he.disabled=c(Ae)||c(x),j(Ye,c(Ae)?"Updating...":`Update -> ${c(oe).latest.version}`)}),H("click",he,()=>o(c(L).id)),I(le,he)};F(Ie,le=>{c(L).id in n.state.ephemeral.updatable&&le($)})}var M=E(Ie,2),Y=g(M,!0);p(M),p(xe),p(S),V(le=>{j(O,c(L).id),P=Pe(T,1,"installed-item-badge svelte-1hqclkp",null,P,{"badge-shard":c(L).type==="shard","badge-app":c(L).type==="app"}),j(U,c(L).type),j(K,c(L).version),j(te,`Contract: v${c(L).contractVersion??""}`),j(ue,`Source: ${c(L).sourceRegistry??""}`),j(ie,`Installed: ${le??""}`),M.disabled=c(x),j(Y,c(x)?"Removing...":"Uninstall")},[()=>u(c(L).installedAt)]),H("click",M,()=>i(c(L).id)),I(A,S)}),p(m),I(h,m)};F(w,h=>{n.state.ephemeral.installed.length===0?h(b):h(C,-1)})}p(d),H("click",v,l),I(e,d),re()}ve(["click"]);function Bu(e){return ln.state.ephemeral.catalog.find(t=>t.entry.id===e)}function Ui(e){return ln.state.ephemeral.installed.find(t=>t.id===e)}const gw={name:"install",summary:"Install a package by id from the catalog.",async run(e,t){const n=t[0];if(!n){e.scrollback.push({kind:"status",text:"usage: sh3-store:install <package-id>",level:"warn",ts:Date.now()});return}const r=Ui(n);if(r){e.scrollback.push({kind:"status",text:`${n} is already installed (v${r.version})`,level:"warn",ts:Date.now()});return}const s=Bu(n);if(!s){e.scrollback.push({kind:"status",text:`package "${n}" not found in catalog — try refreshing the store`,level:"error",ts:Date.now()});return}e.scrollback.push({kind:"status",text:`installing ${n} v${s.latest.version}...`,level:"info",ts:Date.now()});try{const a=await Zs(s.latest,s.sourceRegistry),i=Qs(s,s.latest);let o;s.latest.serverBundleUrl&&(o=await Ni(s.latest,s.sourceRegistry));const l={id:i.id,type:i.type,label:s.entry.label,version:i.version,contractVersion:i.contractVersion,sourceRegistry:i.sourceRegistry,installedAt:new Date().toISOString(),requiredShards:s.latest.requires?.map(f=>f.id)??[]},u=await xi(l,a,o);if(!u.ok){let f=`install failed: ${u.error??"server error"}`;u.code==="missing-shards"&&u.missing&&(f=`install failed: missing required shard(s): ${u.missing.map(k=>k.id).join(", ")}`),e.scrollback.push({kind:"status",text:f,level:"error",ts:Date.now()});return}const d=await Vi(a,i);d.success||e.scrollback.push({kind:"status",text:`server ok but local hot-load failed: ${d.error}`,level:"warn",ts:Date.now()}),await ln.refreshInstalled(),e.scrollback.push({kind:"status",text:`installed ${n} v${s.latest.version}`,level:"info",ts:Date.now()})}catch(a){e.scrollback.push({kind:"status",text:`install failed: ${a instanceof Error?a.message:String(a)}`,level:"error",ts:Date.now()})}}},mw={name:"uninstall",summary:"Uninstall an installed package by id.",async run(e,t){const n=t[0];if(!n){e.scrollback.push({kind:"status",text:"usage: sh3-store:uninstall <package-id>",level:"warn",ts:Date.now()});return}if(!Ui(n)){e.scrollback.push({kind:"status",text:`package "${n}" is not installed`,level:"error",ts:Date.now()});return}e.scrollback.push({kind:"status",text:`uninstalling ${n}...`,level:"info",ts:Date.now()});try{await iu(n),await Uu(n),await ln.refreshInstalled(),e.scrollback.push({kind:"status",text:`uninstalled ${n}`,level:"info",ts:Date.now()})}catch(s){e.scrollback.push({kind:"status",text:`uninstall failed: ${s instanceof Error?s.message:String(s)}`,level:"error",ts:Date.now()})}}},_w={name:"appinfo",summary:"Show info about a package (installed status, version, catalog details).",async run(e,t){const n=t[0];if(!n){e.scrollback.push({kind:"status",text:"usage: sh3-store:appinfo <package-id>",level:"warn",ts:Date.now()});return}const r=Ui(n),s=Bu(n);if(!r&&!s){e.scrollback.push({kind:"status",text:`package "${n}" not found in catalog or installed list`,level:"error",ts:Date.now()});return}const a=[];a.push(`--- ${n} ---`),r?(a.push(" installed: yes"),a.push(` version: ${r.version}`),a.push(` type: ${r.type}`),a.push(` contract: v${r.contractVersion}`),a.push(` source: ${r.sourceRegistry}`),r.installedAt&&a.push(` installed: ${r.installedAt}`)):a.push(" installed: no"),s?(a.push(" catalog: yes"),a.push(` latest: ${s.latest.version}`),a.push(` label: ${s.entry.label}`),a.push(` author: ${s.entry.author.name}`),a.push(` desc: ${s.entry.description}`)):a.push(" catalog: no (not in any configured registry)"),e.scrollback.push({kind:"text",stream:"stdout",chunks:[a.join(`
13
+ `)+`
14
+ `],ts:Date.now()})}};function yw(e,t){const n=e.split(".").map(a=>parseInt(a,10)||0),r=t.split(".").map(a=>parseInt(a,10)||0),s=Math.max(n.length,r.length);for(let a=0;a<s;a++){const i=n[a]??0,o=r[a]??0;if(i>o)return!0;if(i<o)return!1}return!1}let ln;const bw={manifest:{id:"sh3-store",label:"Package Store",version:Qt,views:[{id:"sh3-store:browse",label:"Store"},{id:"sh3-store:installed",label:"Installed"}]},activate(e){const t=e.env({registries:[]}),n=e.state({ephemeral:{catalog:[],installed:[],updatable:{},loading:!1,error:null}});function r(){const f={};for(const v of n.ephemeral.installed){const k=n.ephemeral.catalog.find(y=>y.entry.id===v.id);k&&yw(k.latest.version,v.version)&&(f[v.id]=k)}n.ephemeral.updatable=f}async function s(){n.ephemeral.loading=!0,n.ephemeral.error=null;try{const f=await Pu(t.registries);n.ephemeral.catalog=f,r()}catch(f){n.ephemeral.error=f instanceof Error?f.message:String(f)}finally{n.ephemeral.loading=!1}}async function a(){try{const f=await Im();n.ephemeral.installed=f.map(v=>({id:v.id,type:v.type,version:v.version,sourceRegistry:v.sourceRegistry??"",contractVersion:v.contractVersion??"",installedAt:v.installedAt??""})),r()}catch(f){console.warn("[sh3-store] Failed to list installed packages:",f instanceof Error?f.message:f);try{const v=await Fb();n.ephemeral.installed=v,r()}catch{}}}async function i(f){const v=[...t.registries];v.includes(f)||(v.push(f),await e.envUpdate({registries:v}))}async function o(f){const v=t.registries.filter(k=>k!==f);await e.envUpdate({registries:v})}async function l(f){const v=n.ephemeral.updatable[f];if(!v)return;const k=n.ephemeral.installed.find(x=>x.id===f);if(!k)return;const y=await Zs(v.latest,v.sourceRegistry);let w;v.latest.serverBundleUrl&&(w=await Ni(v.latest,v.sourceRegistry));const b=Qs(v,v.latest),C=await qu(f),h={...k},m={id:b.id,type:b.type,label:v.entry.label,version:b.version,contractVersion:b.contractVersion,sourceRegistry:b.sourceRegistry,installedAt:new Date().toISOString(),requiredShards:v.latest.requires?.map(x=>x.id)??[]},A=await xi(m,y,w);if(!A.ok){let x=A.error??"Server update failed";throw A.code==="missing-shards"&&A.missing&&(x=`missing required shard(s): ${A.missing.map(N=>N.id).join(", ")}`),new Error(x)}const L=await Vi(y,b);if(!L.success){if(C)try{await zu(f,C,h)}catch(x){console.warn(`[sh3-store] Rollback failed for "${f}":`,x instanceof Error?x.message:x)}throw new Error(L.error??"Local install failed during update")}await a()}ln={env:t,state:n,get isAdmin(){return e.isAdmin},refreshCatalog:s,refreshInstalled:a,updatePackage:l,addRegistry:i,removeRegistry:o};const u={mount(f,v){const k=ze(lw,{target:f});return{unmount(){He(k)}}}},d={mount(f,v){const k=ze(pw,{target:f});return{unmount(){He(k)}}}};e.registerView("sh3-store:browse",u),e.registerView("sh3-store:installed",d),e.registerVerb(gw),e.registerVerb(mw),e.registerVerb(_w),a()},autostart(){ln.refreshCatalog()}},ww={manifest:{id:"sh3-store-app",label:"Package Store",version:Qt,requiredShards:["sh3-store"],layoutVersion:1,admin:!0},initialLayout:{type:"tabs",activeTab:0,tabs:[{slotId:"store.browse",viewId:"sh3-store:browse",label:"Browse"},{slotId:"store.installed",viewId:"sh3-store:installed",label:"Installed"}]}};var kw=R('<div class="admin-error svelte-4q792t"> </div>'),Sw=R('<form class="admin-create-form svelte-4q792t"><input class="admin-input svelte-4q792t" type="text" placeholder="Username"/> <input class="admin-input svelte-4q792t" type="text" placeholder="Display name"/> <input class="admin-input svelte-4q792t" type="password" placeholder="Password"/> <select class="admin-input svelte-4q792t"><option>User</option><option>Admin</option></select> <button type="submit" class="admin-btn svelte-4q792t">Create</button> <!></form>'),Ew=R('<p class="admin-muted svelte-4q792t">Loading...</p>'),xw=R('<p class="admin-error svelte-4q792t"> </p>'),Iw=R('<form class="admin-edit-form svelte-4q792t"><input class="admin-input svelte-4q792t" type="text"/> <input class="admin-input svelte-4q792t" type="password" placeholder="New password (leave empty to keep)"/> <select class="admin-input svelte-4q792t"><option>User</option><option>Admin</option></select> <div class="admin-edit-actions svelte-4q792t"><button type="submit" class="admin-btn svelte-4q792t">Save</button> <button type="button" class="admin-btn-secondary svelte-4q792t">Cancel</button></div></form>'),Aw=R('<div class="admin-user-info svelte-4q792t"><span class="admin-user-name svelte-4q792t"> </span> <span class="admin-user-meta svelte-4q792t"> </span></div> <div class="admin-user-actions svelte-4q792t"><button type="button" class="admin-btn-secondary svelte-4q792t">Edit</button> <button type="button" class="admin-btn-danger svelte-4q792t">Delete</button></div>',1),Tw=R('<li class="admin-user-item svelte-4q792t"><!></li>'),Cw=R('<ul class="admin-user-list svelte-4q792t"></ul>'),Rw=R('<div class="admin-users svelte-4q792t"><div class="admin-users-header svelte-4q792t"><h2 class="svelte-4q792t">Users</h2> <button type="button" class="admin-btn svelte-4q792t"> </button></div> <!> <!></div>');function $w(e,t){ne(t,!0);let n=q(ce([])),r=q(!0),s=q(null),a=q(!1),i=q(""),o=q(""),l=q(""),u=q("user"),d=q(null),f=q(null),v=q(""),k=q("user"),y=q("");async function w(){_(r,!0),_(s,null);try{const z=await fetch("/api/admin/users",{credentials:"include"});if(!z.ok)throw new Error("Failed to fetch users");_(n,await z.json(),!0)}catch(z){_(s,z instanceof Error?z.message:"Failed to load users",!0)}finally{_(r,!1)}}async function b(){_(d,null);try{const z=await fetch("/api/admin/users",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({username:c(i),displayName:c(o)||c(i),password:c(l),role:c(u)})});if(!z.ok){const K=await z.json().catch(()=>({}));_(d,K.error||"Failed to create user",!0);return}_(i,""),_(o,""),_(l,""),_(u,"user"),_(a,!1),await w()}catch{_(d,"Network error")}}function C(z){_(f,z.id,!0),_(v,z.displayName,!0),_(k,z.role,!0),_(y,"")}async function h(){if(!c(f))return;const z={displayName:c(v),role:c(k)};c(y).trim()&&(z.password=c(y));try{if(!(await fetch(`/api/admin/users/${c(f)}`,{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(z)})).ok)return;_(f,null),await w()}catch{}}async function m(z){try{await fetch(`/api/admin/users/${z}`,{method:"DELETE",credentials:"include"}),await w()}catch{}}w();var A=Rw(),L=g(A),x=E(g(L),2),S=g(x,!0);p(x),p(L);var N=E(L,2);{var D=z=>{var K=Sw(),Z=g(K);ke(Z);var G=E(Z,2);ke(G);var te=E(G,2);ke(te);var Q=E(te,2),ue=g(Q);ue.value=ue.__value="user";var ge=E(ue);ge.value=ge.__value="admin",p(Q);var ie=E(Q,2),xe=E(ie,2);{var Ie=$=>{var M=kw(),Y=g(M,!0);p(M),V(()=>j(Y,c(d))),I($,M)};F(xe,$=>{c(d)&&$(Ie)})}p(K),V($=>ie.disabled=$,[()=>!c(i).trim()||!c(l).trim()]),tt("submit",K,$=>{$.preventDefault(),b()}),De(Z,()=>c(i),$=>_(i,$)),De(G,()=>c(o),$=>_(o,$)),De(te,()=>c(l),$=>_(l,$)),vs(Q,()=>c(u),$=>_(u,$)),I(z,K)};F(N,z=>{c(a)&&z(D)})}var O=E(N,2);{var T=z=>{var K=Ew();I(z,K)},P=z=>{var K=xw(),Z=g(K,!0);p(K),V(()=>j(Z,c(s))),I(z,K)},U=z=>{var K=Cw();pe(K,21,()=>c(n),Z=>Z.id,(Z,G)=>{var te=Tw(),Q=g(te);{var ue=ie=>{var xe=Iw(),Ie=g(xe);ke(Ie);var $=E(Ie,2);ke($);var M=E($,2),Y=g(M);Y.value=Y.__value="user";var le=E(Y);le.value=le.__value="admin",p(M);var oe=E(M,2),Ae=E(g(oe),2);p(oe),p(xe),tt("submit",xe,he=>{he.preventDefault(),h()}),De(Ie,()=>c(v),he=>_(v,he)),De($,()=>c(y),he=>_(y,he)),vs(M,()=>c(k),he=>_(k,he)),H("click",Ae,()=>{_(f,null)}),I(ie,xe)},ge=ie=>{var xe=Aw(),Ie=_e(xe),$=g(Ie),M=g($,!0);p($);var Y=E($,2),le=g(Y);p(Y),p(Ie);var oe=E(Ie,2),Ae=g(oe),he=E(Ae,2);p(oe),V(()=>{j(M,c(G).displayName),j(le,`${c(G).username??""} · ${c(G).role??""}`)}),H("click",Ae,()=>C(c(G))),H("click",he,()=>m(c(G).id)),I(ie,xe)};F(Q,ie=>{c(f)===c(G).id?ie(ue):ie(ge,-1)})}p(te),I(Z,te)}),p(K),I(z,K)};F(O,z=>{c(r)?z(T):c(s)?z(P,1):z(U,-1)})}p(A),V(()=>j(S,c(a)?"Cancel":"New user")),H("click",x,()=>{_(a,!c(a))}),I(e,A),re()}ve(["click"]);var Dw=R('<p class="admin-muted svelte-1hsgdb4">Loading...</p>'),Pw=R('<div class="admin-error svelte-1hsgdb4"> </div>'),Lw=R('<div class="admin-auth-fields svelte-1hsgdb4"><label class="admin-toggle svelte-1hsgdb4"><input type="checkbox" class="svelte-1hsgdb4"/> <span>Require sign-in</span> <span class="admin-hint svelte-1hsgdb4">When enabled, unauthenticated visitors see a sign-in wall.</span></label> <label class="admin-toggle svelte-1hsgdb4"><input type="checkbox" class="svelte-1hsgdb4"/> <span>Allow guest browsing</span> <span class="admin-hint svelte-1hsgdb4">When sign-in is required, guests can still browse with session-only data.</span></label> <label class="admin-toggle svelte-1hsgdb4"><input type="checkbox" class="svelte-1hsgdb4"/> <span>Self-registration</span> <span class="admin-hint svelte-1hsgdb4">Visitors can create their own accounts from the sign-in screen.</span></label> <label class="admin-field svelte-1hsgdb4"><span class="svelte-1hsgdb4">Session lifetime (hours)</span> <input type="number" class="admin-input admin-input-sm svelte-1hsgdb4" min="1" max="8760"/></label> <button type="button" class="admin-btn svelte-1hsgdb4"> </button></div> <!>',1),Nw=R('<div class="admin-auth svelte-1hsgdb4"><h2 class="svelte-1hsgdb4">Auth Settings</h2> <!></div>');function Ow(e,t){ne(t,!0);let n=q(null),r=q(!0),s=q(!1),a=q(null);async function i(){_(r,!0);try{const v=await fetch("/api/admin/settings",{credentials:"include"});if(!v.ok)throw new Error("Failed to fetch settings");_(n,await v.json(),!0)}catch(v){_(a,v instanceof Error?v.message:"Failed to load settings",!0)}finally{_(r,!1)}}async function o(){if(c(n)){_(s,!0),_(a,null);try{const v=await fetch("/api/admin/settings",{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(c(n))});if(!v.ok)throw new Error("Failed to save settings");_(n,await v.json(),!0)}catch(v){_(a,v instanceof Error?v.message:"Failed to save",!0)}finally{_(s,!1)}}}i();var l=Nw(),u=E(g(l),2);{var d=v=>{var k=Dw();I(v,k)},f=v=>{var k=Lw(),y=_e(k),w=g(y),b=g(w);ke(b),Wt(4),p(w);var C=E(w,2),h=g(C);ke(h),Wt(4),p(C);var m=E(C,2),A=g(m);ke(A),Wt(4),p(m);var L=E(m,2),x=E(g(L),2);ke(x),p(L);var S=E(L,2),N=g(S,!0);p(S),p(y);var D=E(y,2);{var O=T=>{var P=Pw(),U=g(P,!0);p(P),V(()=>j(U,c(a))),I(T,P)};F(D,T=>{c(a)&&T(O)})}V(()=>{S.disabled=c(s),j(N,c(s)?"Saving...":"Save")}),Zr(b,()=>c(n).auth.required,T=>c(n).auth.required=T),Zr(h,()=>c(n).auth.guestAllowed,T=>c(n).auth.guestAllowed=T),Zr(A,()=>c(n).auth.selfRegistration,T=>c(n).auth.selfRegistration=T),De(x,()=>c(n).auth.sessionTTL,T=>c(n).auth.sessionTTL=T),H("click",S,o),I(v,k)};F(u,v=>{c(r)?v(d):c(n)&&v(f,1)})}p(l),I(e,l),re()}ve(["click"]);var Mw=R('<button type="button"> </button>'),jw=R('<div class="admin-error svelte-1gkiloq"> </div>'),zw=R('<div class="admin-error svelte-1gkiloq"> </div>'),qw=R(`<div class="admin-system svelte-1gkiloq"><h2 class="svelte-1gkiloq">System</h2> <div class="admin-system-info svelte-1gkiloq"><div class="admin-system-row svelte-1gkiloq"><span class="admin-system-label svelte-1gkiloq">Server version</span> <span> </span></div></div> <section class="admin-system-section svelte-1gkiloq"><h3 class="svelte-1gkiloq">Package bundle cache</h3> <p class="admin-system-hint svelte-1gkiloq">Controls the <code>Cache-Control</code> header on <code>/packages/:id/client.js</code>.
15
+ Set to <strong>0</strong> during development so drop-in bundle replacements take effect on F5.
16
+ Use a long value in production.</p> <input type="range" min="0" max="31536000" step="1" class="svelte-1gkiloq"/> <div class="admin-system-readout svelte-1gkiloq"><code> </code> </div> <div class="admin-system-snaps svelte-1gkiloq"></div> <div class="admin-system-actions svelte-1gkiloq"><button type="button" class="admin-btn svelte-1gkiloq"> </button> <button type="button" class="admin-btn-ghost svelte-1gkiloq">Reset</button> <!></div></section> <section class="admin-system-section svelte-1gkiloq"><h3 class="svelte-1gkiloq">Server control</h3> <div class="admin-system-actions svelte-1gkiloq"><button type="button" class="admin-btn-danger svelte-1gkiloq"> </button> <!></div></section></div>`);function Vw(e,t){ne(t,!0);const n=[{value:0,label:"Off (no-store)"},{value:5,label:"5s (dev)"},{value:60,label:"1 min"},{value:3600,label:"1 hour"},{value:86400,label:"1 day"},{value:31536e3,label:"1 year"}];let r=q("..."),s=q(!1),a=q(null),i=q(31536e3),o=q(31536e3),l=q(!1),u=q(null);const d=W(()=>c(i)!==c(o)),f=W(()=>v(c(i)));function v($){return $===0?"0 seconds (off — browsers never cache)":$<60?`${$} seconds`:$<3600?`${Math.round($/60)} minutes`:$<86400?`${Math.round($/3600)} hours`:$<31536e3?`${Math.round($/86400)} days`:`${Math.round($/31536e3)} years`}async function k(){try{const $=await fetch("/api/version");if($.ok){const M=await $.json();_(r,M.version,!0)}}catch{}}async function y(){try{const $=await fetch("/api/admin/settings",{credentials:"include"});if($.ok){const Y=(await $.json()).packages?.cacheMaxAge??31536e3;_(i,Y,!0),_(o,Y,!0)}}catch{}}async function w(){_(l,!0),_(u,null);try{const $=await fetch("/api/admin/settings",{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({packages:{cacheMaxAge:c(i)}})});if($.ok){const M=await $.json();_(o,M.packages?.cacheMaxAge??c(i),!0),_(i,c(o),!0)}else{const M=await $.json().catch(()=>({}));_(u,M.error||"Save failed",!0)}}catch{_(u,"Network error")}finally{_(l,!1)}}async function b(){_(s,!0),_(a,null);try{const $=await fetch("/api/admin/restart",{method:"POST",credentials:"include"});if(!$.ok){const M=await $.json().catch(()=>({}));_(a,M.error||"Restart failed",!0),_(s,!1)}}catch{_(a,"Network error"),_(s,!1)}}k(),y();var C=qw(),h=E(g(C),2),m=g(h),A=E(g(m),2),L=g(A,!0);p(A),p(m),p(h);var x=E(h,2),S=E(g(x),4);ke(S);var N=E(S,2),D=g(N),O=g(D,!0);p(D);var T=E(D);p(N);var P=E(N,2);pe(P,21,()=>n,$=>$.value,($,M)=>{var Y=Mw();let le;var oe=g(Y,!0);p(Y),V(()=>{le=Pe(Y,1,"admin-snap svelte-1gkiloq",null,le,{active:c(i)===c(M).value}),Y.disabled=c(l),j(oe,c(M).label)}),H("click",Y,()=>_(i,c(M).value,!0)),I($,Y)}),p(P);var U=E(P,2),z=g(U),K=g(z,!0);p(z);var Z=E(z,2),G=E(Z,2);{var te=$=>{var M=jw(),Y=g(M,!0);p(M),V(()=>j(Y,c(u))),I($,M)};F(G,$=>{c(u)&&$(te)})}p(U),p(x);var Q=E(x,2),ue=E(g(Q),2),ge=g(ue),ie=g(ge,!0);p(ge);var xe=E(ge,2);{var Ie=$=>{var M=zw(),Y=g(M,!0);p(M),V(()=>j(Y,c(a))),I($,M)};F(xe,$=>{c(a)&&$(Ie)})}p(ue),p(Q),p(C),V(()=>{j(L,c(r)),S.disabled=c(l),j(O,c(i)),j(T,` — ${c(f)??""}`),z.disabled=!c(d)||c(l),j(K,c(l)?"Saving...":"Save"),Z.disabled=!c(d)||c(l),ge.disabled=c(s),j(ie,c(s)?"Restarting...":"Restart server")}),De(S,()=>c(i),$=>_(i,$)),H("click",z,w),H("click",Z,()=>_(i,c(o),!0)),H("click",ge,b),I(e,C),re()}ve(["click"]);var Uw=R(`<div class="admin-key-created"><div class="admin-key-created-label">New key — copy now, it won't be shown again:</div> <code class="admin-key-value svelte-1afg5z5"> </code> <button type="button" class="admin-btn-secondary svelte-1afg5z5">Dismiss</button></div>`),Bw=R('<div class="admin-error svelte-1afg5z5"> </div>'),Fw=R('<form class="admin-create-form svelte-1afg5z5"><input class="admin-input svelte-1afg5z5" type="text" placeholder="Key label"/> <button type="submit" class="admin-btn svelte-1afg5z5">Create</button> <!></form>'),Hw=R('<p class="admin-muted svelte-1afg5z5">Loading...</p>'),Kw=R('<p class="admin-error svelte-1afg5z5"> </p>'),Ww=R('<p class="admin-muted svelte-1afg5z5">No API keys. Create one to enable external access.</p>'),Gw=R('<button type="button" class="admin-btn-danger svelte-1afg5z5">Confirm</button> <button type="button" class="admin-btn-secondary svelte-1afg5z5">Cancel</button>',1),Yw=R('<button type="button" class="admin-btn-danger svelte-1afg5z5">Revoke</button>'),Xw=R('<li class="admin-key-item svelte-1afg5z5"><div class="admin-key-info svelte-1afg5z5"><span class="admin-key-label svelte-1afg5z5"> </span> <span class="admin-key-meta svelte-1afg5z5"> </span></div> <div class="admin-key-actions svelte-1afg5z5"><!></div></li>'),Jw=R('<ul class="admin-key-list svelte-1afg5z5"></ul>'),Zw=R('<div class="admin-keys svelte-1afg5z5"><div class="admin-keys-header svelte-1afg5z5"><h2 class="svelte-1afg5z5">API Keys</h2> <button type="button" class="admin-btn svelte-1afg5z5"> </button></div> <!> <!> <!></div>');function Qw(e,t){ne(t,!0);let n=q(ce([])),r=q(!0),s=q(null),a=q(!1),i=q(""),o=q(null),l=q(null),u=q(null);async function d(){_(r,!0),_(s,null);try{const T=await fetch("/api/admin/keys",{credentials:"include"});if(!T.ok)throw new Error("Failed to fetch keys");_(n,await T.json(),!0)}catch(T){_(s,T instanceof Error?T.message:"Failed to load keys",!0)}finally{_(r,!1)}}async function f(){_(o,null);try{const T=await fetch("/api/admin/keys",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({label:c(i)})});if(!T.ok){const U=await T.json().catch(()=>({}));_(o,U.error||"Failed to create key",!0);return}const P=await T.json();_(l,{id:P.id,key:P.key},!0),_(i,""),_(a,!1),await d()}catch{_(o,"Network error")}}async function v(T){_(u,null);try{await fetch(`/api/admin/keys/${T}`,{method:"DELETE",credentials:"include"}),c(l)?.id===T&&_(l,null),await d()}catch{}}function k(T){return new Date(T).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}d();var y=Zw(),w=g(y),b=E(g(w),2),C=g(b,!0);p(b),p(w);var h=E(w,2);{var m=T=>{var P=Uw(),U=E(g(P),2),z=g(U,!0);p(U);var K=E(U,2);p(P),V(()=>j(z,c(l).key)),H("click",K,()=>{_(l,null)}),I(T,P)};F(h,T=>{c(l)&&T(m)})}var A=E(h,2);{var L=T=>{var P=Fw(),U=g(P);ke(U);var z=E(U,2),K=E(z,2);{var Z=G=>{var te=Bw(),Q=g(te,!0);p(te),V(()=>j(Q,c(o))),I(G,te)};F(K,G=>{c(o)&&G(Z)})}p(P),V(G=>z.disabled=G,[()=>!c(i).trim()]),tt("submit",P,G=>{G.preventDefault(),f()}),De(U,()=>c(i),G=>_(i,G)),I(T,P)};F(A,T=>{c(a)&&T(L)})}var x=E(A,2);{var S=T=>{var P=Hw();I(T,P)},N=T=>{var P=Kw(),U=g(P,!0);p(P),V(()=>j(U,c(s))),I(T,P)},D=T=>{var P=Ww();I(T,P)},O=T=>{var P=Jw();pe(P,21,()=>c(n),U=>U.id,(U,z)=>{var K=Xw(),Z=g(K),G=g(Z),te=g(G,!0);p(G);var Q=E(G,2),ue=g(Q);p(Q),p(Z);var ge=E(Z,2),ie=g(ge);{var xe=$=>{var M=Gw(),Y=_e(M),le=E(Y,2);H("click",Y,()=>v(c(z).id)),H("click",le,()=>{_(u,null)}),I($,M)},Ie=$=>{var M=Yw();H("click",M,()=>{_(u,c(z).id,!0)}),I($,M)};F(ie,$=>{c(u)===c(z).id?$(xe):$(Ie,-1)})}p(ge),p(K),V($=>{j(te,c(z).label),j(ue,`${c(z).id??""} · ${$??""}`)},[()=>k(c(z).createdAt)]),I(U,K)}),p(P),I(T,P)};F(x,T=>{c(r)?T(S):c(s)?T(N,1):c(n).length===0?T(D,2):T(O,-1)})}p(y),V(()=>j(C,c(a)?"Cancel":"New key")),H("click",b,()=>{_(a,!c(a))}),I(e,y),re()}ve(["click"]);const ek={manifest:{id:"sh3-admin",label:"Admin",version:Qt,views:[{id:"sh3-admin:users",label:"Users"},{id:"sh3-admin:auth",label:"Auth Settings"},{id:"sh3-admin:system",label:"System"},{id:"sh3-admin:keys",label:"API Keys"}]},activate(e){const t={mount(a,i){const o=ze($w,{target:a});return{unmount(){He(o)}}}},n={mount(a,i){const o=ze(Ow,{target:a});return{unmount(){He(o)}}}},r={mount(a,i){const o=ze(Vw,{target:a});return{unmount(){He(o)}}}},s={mount(a,i){const o=ze(Qw,{target:a});return{unmount(){He(o)}}}};e.registerView("sh3-admin:users",t),e.registerView("sh3-admin:auth",n),e.registerView("sh3-admin:system",r),e.registerView("sh3-admin:keys",s)}},tk={manifest:{id:"sh3-admin-app",label:"Admin",version:Qt,requiredShards:["sh3-admin"],layoutVersion:1,admin:!0},initialLayout:{type:"tabs",activeTab:0,tabs:[{slotId:"admin.users",viewId:"sh3-admin:users",label:"Users"},{slotId:"admin.auth",viewId:"sh3-admin:auth",label:"Auth"},{slotId:"admin.system",viewId:"sh3-admin:system",label:"System"},{slotId:"admin.keys",viewId:"sh3-admin:keys",label:"Keys"}]}},nk={id:"terminal",label:"Terminal",version:Qt,requiredShards:["shell"],layoutVersion:1},rk={manifest:nk,initialLayout:{type:"slot",slotId:"terminal.main",viewId:"shell:terminal"}},Uo="sh3:migrations:shell-rename:done",Bo="__shell__:",sk="__sh3core__:",Fo="sh3:user:__shell__:theme",Ho="sh3:user:__sh3core__:theme";function ak(e,t){if(t.getItem(Uo))return;const n=t.getItem(Fo);n!==null&&t.getItem(Ho)===null&&(t.setItem(Ho,n),t.removeItem(Fo));for(const r of e.keys()){if(!r.startsWith(Bo))continue;const s=sk+r.slice(Bo.length),a=e.read(r);e.write(s,a),e.delete(r)}t.setItem(Uo,"1")}function ik(e){Ai(e)}function ok(){const e=Dt.workspace;return{keys:()=>e.list(),read:t=>e.read(t),write:(t,n)=>e.write(t,n),delete:t=>e.delete(t)}}async function lk(e){typeof globalThis.localStorage<"u"&&ak(ok(),globalThis.localStorage);const t=new Set(e?.excludeShards),n=[Q_,Ob,bw,ek];for(const a of n)t.has(a.manifest.id)||Ai(a);const r=[ww,tk,rk];for(const a of r)Ti(a);await Hb();for(const[a,i]of Vt)i.autostart&&await hu(a);const s=c_();s&&An.has(s)&&await xr(s)}var ck=R('<button type="button" aria-label="Expand pane"><span class="collapse-icon"> </span></button>'),uk=R('<button type="button" aria-label="Collapse pane"><span class="collapse-icon"> </span></button>'),dk=R('<!> <div class="pane-content svelte-1adl4o1"><!></div>',1),fk=R('<div role="separator"></div>'),vk=R("<div><!></div> <!>",1),hk=R("<div></div>");function pk(e,t){ne(t,!0);const n=40,r=28;let s;const a=y=>t.pinned?.[y]??"fr",i=y=>t.collapsed?.[y]??!1;function o(y){return i(y)?`0 0 ${r}px`:a(y)==="px"?`0 0 ${Math.max(n,t.sizes[y])}px`:`${Math.max(1e-4,t.sizes[y])} 1 0`}let l=q(null);function u(y,w){if(i(w)||i(w+1))return;y.preventDefault(),y.target.setPointerCapture(y.pointerId);const b=s.getBoundingClientRect(),C=t.direction==="horizontal"?b.width:b.height;let h=0,m=0;for(let A=0;A<t.sizes.length;A++)a(A)==="fr"?h+=t.sizes[A]:m+=Math.max(n,t.sizes[A]);_(l,{handleIndex:w,startClient:t.direction==="horizontal"?y.clientX:y.clientY,startSizes:t.sizes.slice(),containerPx:C,totalFr:h,frAvailPx:Math.max(1,C-m)},!0)}function d(y){if(!c(l))return;const b=(t.direction==="horizontal"?y.clientX:y.clientY)-c(l).startClient,C=c(l).handleIndex,h=C+1,m=a(C),A=a(h),L=c(l).totalFr/c(l).frAvailPx;if(m==="fr"&&A==="fr"){const x=n*L,S=b*L,N=c(l).startSizes[h]-x,D=-(c(l).startSizes[C]-x),O=Math.min(Math.max(S,D),N);t.onResize?.(C,c(l).startSizes[C]+O),t.onResize?.(h,c(l).startSizes[h]-O)}else if(m==="px"&&A==="fr"){const x=c(l).frAvailPx-n,S=n-c(l).startSizes[C];t.onResize?.(C,c(l).startSizes[C]+Math.min(Math.max(b,S),x))}else if(m==="fr"&&A==="px"){const x=c(l).startSizes[h]-n,S=-(c(l).frAvailPx-n);t.onResize?.(h,c(l).startSizes[h]-Math.min(Math.max(b,S),x))}else{const x=c(l).startSizes[h]-n,S=-(c(l).startSizes[C]-n),N=Math.min(Math.max(b,S),x);t.onResize?.(C,c(l).startSizes[C]+N),t.onResize?.(h,c(l).startSizes[h]-N)}}function f(y){c(l)&&(y.target.releasePointerCapture(y.pointerId),_(l,null))}var v=hk();let k;pe(v,21,()=>Array(t.count),an,(y,w,b)=>{var C=vk(),h=_e(C);let m;var A=g(h);{var L=O=>{var T=ck();let P;var U=g(T),z=g(U,!0);p(U),p(T),V(()=>{P=Pe(T,1,"collapse-header svelte-1adl4o1",null,P,{horizontal:t.direction==="horizontal",vertical:t.direction==="vertical"}),j(z,t.direction==="horizontal"?"▸":"▾")}),H("click",T,()=>t.onCollapseToggle?.(b,!1)),I(O,T)},x=W(()=>i(b)),S=O=>{var T=dk(),P=_e(T);{var U=Z=>{var G=uk();let te;var Q=g(G),ue=g(Q,!0);p(Q),p(G),V(()=>{te=Pe(G,1,"collapse-header expanded svelte-1adl4o1",null,te,{horizontal:t.direction==="horizontal",vertical:t.direction==="vertical"}),j(ue,t.direction==="horizontal"?"◂":"▴")}),H("click",G,()=>t.onCollapseToggle?.(b,!0)),I(Z,G)};F(P,Z=>{t.onCollapseToggle&&Z(U)})}var z=E(P,2),K=g(z);Ls(K,()=>t.pane,()=>b),p(z),I(O,T)};F(A,O=>{c(x)?O(L):O(S,-1)})}p(h);var N=E(h,2);{var D=O=>{var T=fk();let P;Ee(T,"data-testid",`splitter-handle-${b}`),V(U=>{P=Pe(T,1,"splitter-handle svelte-1adl4o1",null,P,U),Ee(T,"aria-orientation",t.direction==="horizontal"?"vertical":"horizontal")},[()=>({dragging:c(l)?.handleIndex===b,disabled:i(b)||i(b+1)})]),H("pointerdown",T,U=>u(U,b)),H("pointermove",T,d),H("pointerup",T,f),tt("pointercancel",T,f),H("dblclick",T,()=>t.onCollapseToggle?.(b,!i(b))),I(O,T)};F(N,O=>{b<t.count-1&&O(D)})}V((O,T)=>{m=Pe(h,1,"splitter-pane svelte-1adl4o1",null,m,O),Bt(h,`flex: ${T??""};`)},[()=>({collapsed:i(b)}),()=>o(b)]),I(y,C)}),p(v),kt(v,y=>s=y,()=>s),V(()=>k=Pe(v,1,"splitter svelte-1adl4o1",null,k,{horizontal:t.direction==="horizontal",vertical:t.direction==="vertical"})),I(e,v),re()}ve(["click","pointerdown","pointermove","pointerup","dblclick"]);function gk(e,t,n){if(!n)return null;const r=n.getBoundingClientRect(),s=t.filter(o=>!!o);if(s.length===0)return{left:4,top:2,height:r.height-4};const a=Math.max(0,Math.min(e,s.length));let i;return a===s.length?i=s[s.length-1].getBoundingClientRect().right:i=s[a].getBoundingClientRect().left,{left:i-r.left-1,top:2,height:r.height-4}}var mk=R('<span class="tab-dirty svelte-1kxcyhf" title="Unsaved changes"></span>'),_k=R('<span class="tab-icon svelte-1kxcyhf"> </span>'),yk=R('<span class="tab-close svelte-1kxcyhf" role="button" tabindex="-1" title="Close">&#x2715;</span>'),bk=R('<button type="button" role="tab"><!> <!> <span class="tab-label svelte-1kxcyhf"> </span> <!></button>'),wk=R('<div class="drop-indicator svelte-1kxcyhf"></div>'),kk=R("<div><!></div>"),Sk=R('<div class="tabbed-panel svelte-1kxcyhf"><div class="tab-strip svelte-1kxcyhf" role="tablist" tabindex="-1"><!> <!></div> <div class="tab-body svelte-1kxcyhf" role="tabpanel"></div></div>');function Ek(e,t){ne(t,!0);function n(b){t.clickGuard?.()||t.onActiveChange?.(b)}function r(b,C){C.stopPropagation(),t.onClose?.(b)}let s=q(void 0);const a=ce([]);let i=q(null);function o(b,C){if(!t.dragController)return;const h=a[b];h&&t.dragController.onPointerDown(b,C,h)}function l(b){if(!t.dragController||!t.dragController.isDragging||!c(s))return;const C=c(s).getBoundingClientRect(),h=a.filter(m=>!!m).map(m=>m.getBoundingClientRect());_(i,t.dragController.onStripHover(C,b.clientX,b.clientY,h),!0)}function u(){t.dragController&&(_(i,null),t.dragController.onStripLeave())}var d=Sk(),f=g(d),v=g(f);pe(v,17,()=>t.labels,an,(b,C,h)=>{var m=bk();let A;var L=g(m);{var x=U=>{var z=mk();I(U,z)};F(L,U=>{t.dirty?.[h]&&U(x)})}var S=E(L,2);{var N=U=>{var z=_k(),K=g(z,!0);p(z),V(()=>j(K,t.icons[h])),I(U,z)};F(S,U=>{t.icons?.[h]&&U(N)})}var D=E(S,2),O=g(D,!0);p(D);var T=E(D,2);{var P=U=>{var z=yk();V(()=>Ee(z,"data-testid",t.tabIds?.[h]?`tab-close-${t.tabIds[h]}`:void 0)),H("click",z,K=>r(h,K)),H("keydown",z,K=>{(K.key==="Enter"||K.key===" ")&&r(h,K)}),I(U,z)};F(T,U=>{t.closable?.[h]&&U(P)})}p(m),kt(m,(U,z)=>a[z]=U,U=>a?.[U],()=>[h]),V(()=>{A=Pe(m,1,"tab svelte-1kxcyhf",null,A,{active:t.activeTab===h}),Ee(m,"aria-selected",t.activeTab===h),j(O,c(C))}),H("click",m,()=>n(h)),H("pointerdown",m,U=>o(h,U)),tt("auxclick",m,U=>{U.button===1&&t.closable?.[h]&&r(h,U)}),I(b,m)});var k=E(v,2);{var y=b=>{const C=W(()=>gk(c(i),a,c(s)));var h=ot(),m=_e(h);{var A=L=>{var x=wk();V(()=>Bt(x,`left: ${c(C).left??""}px; height: ${c(C).height??""}px; top: ${c(C).top??""}px;`)),I(L,x)};F(m,L=>{c(C)&&L(A)})}I(b,h)};F(k,b=>{c(i)!==null&&t.dragController?.isDragging&&b(y)})}p(f),kt(f,b=>_(s,b),()=>c(s));var w=E(f,2);pe(w,21,()=>t.labels,an,(b,C,h)=>{var m=kk();let A;var L=g(m);Ls(L,()=>t.body,()=>h),p(m),V(()=>A=Pe(m,1,"tab-body-pane svelte-1kxcyhf",null,A,{active:t.activeTab===h})),I(b,m)}),p(w),p(d),H("pointermove",f,l),tt("pointerleave",f,u),I(e,d),re()}ve(["pointermove","click","pointerdown","keydown"]);var xk=R('no factory for <code class="svelte-1czj0s8"> </code>',1),Ik=R("<em>empty slot</em>"),Ak=R('<div class="slot-placeholder svelte-1czj0s8"><div class="slot-id svelte-1czj0s8"> </div> <div class="slot-meta svelte-1czj0s8"><!></div> <div class="slot-dims svelte-1czj0s8"> </div></div>'),Tk=R('<div class="slot svelte-1czj0s8"><!></div>');function Ko(e,t){ne(t,!0);let n=on(t,"label",3,""),r=q(void 0),s=q(0),a=q(0);const i=W(()=>t.node.viewId?!!Wc(t.node.viewId):!1);Le(()=>{if(!c(r))return;const d=t.node.slotId,f=gu(d,t.node.viewId,n()||t.node.viewId||d);c(r).appendChild(f);const v=new ResizeObserver(k=>{for(const y of k){const w=y.contentRect;_(s,Math.round(w.width),!0),_(a,Math.round(w.height),!0)}});return v.observe(c(r)),()=>{v.disconnect(),mu(d)}});var o=Tk(),l=g(o);{var u=d=>{var f=Ak(),v=g(f),k=g(v,!0);p(v);var y=E(v,2),w=g(y);{var b=A=>{var L=xk(),x=E(_e(L)),S=g(x,!0);p(x),V(()=>j(S,t.node.viewId)),I(A,L)},C=A=>{var L=Ik();I(A,L)};F(w,A=>{t.node.viewId?A(b):A(C,-1)})}p(y);var h=E(y,2),m=g(h);p(h),p(f),V(()=>{j(k,t.node.slotId),j(m,`${c(s)??""} × ${c(a)??""}`)}),I(d,f)};F(l,d=>{c(i)||d(u)})}p(o),kt(o,d=>_(r,d),()=>c(r)),V(()=>{Ee(o,"data-slot-id",t.node.slotId),Ee(o,"data-view-id",t.node.viewId??"")}),I(e,o),re()}const ae=ce({phase:"idle",source:null,pointerX:0,pointerY:0,target:null});let Fu=0;function Ck(){return performance.now()<Fu}const Wo=4;let Hu=0,Ku=0;function Rk(e,t,n,r,s){if(ae.phase!=="idle")return;const a=s.getBoundingClientRect();ae.phase="pending",ae.source={slotId:e,entry:t,sourceRoot:n,startRect:a,offsetX:r.clientX-a.left,offsetY:r.clientY-a.top},ae.pointerX=r.clientX,ae.pointerY=r.clientY,ae.target=null,Hu=r.clientX,Ku=r.clientY,$k()}function $k(){window.addEventListener("pointermove",Wu,!0),window.addEventListener("pointerup",Gu,!0),window.addEventListener("pointercancel",Yu,!0),document.body.style.userSelect="none",document.body.dataset.dragging=""}function Dk(){window.removeEventListener("pointermove",Wu,!0),window.removeEventListener("pointerup",Gu,!0),window.removeEventListener("pointercancel",Yu,!0),document.body.style.userSelect="",delete document.body.dataset.dragging}function Wu(e){if(ae.pointerX=e.clientX,ae.pointerY=e.clientY,ae.phase==="pending"){const t=e.clientX-Hu,n=e.clientY-Ku;t*t+n*n>=Wo*Wo&&(ae.phase="dragging")}}function Gu(e){ae.phase==="dragging"&&(Pk(),Fu=performance.now()+50),Xu()}function Yu(e){Xu()}function Go(e){const t=Wn.tree;if(e.kind==="docked")return t.docked;const n=t.floats.find(r=>r.id===e.floatId);return n?n.content:null}function Yo(e){if(e.kind!=="float")return;const t=Wn.tree,n=t.floats.findIndex(r=>r.id===e.floatId);n<0||Fc(t.floats[n].content)&&t.floats.splice(n,1)}function Pk(){const{source:e,target:t}=ae;if(!e||!t)return;const n=Go(e.sourceRoot),r=Go(t.root);if(!n||!r)return;if(t.kind==="strip"){const a=t.tabsNode.tabs.findIndex(i=>i.slotId===e.slotId);if(a>=0){d_(t.tabsNode,a,t.insertIndex),zn(n),r!==n&&zn(r),Yo(e.sourceRoot);return}}const s=Ys(n,e.slotId);s&&(t.kind==="strip"?u_(t.tabsNode,s,t.insertIndex):Iu(r,t.path,s,t.side),zn(n),r!==n&&zn(r),Yo(e.sourceRoot))}function Xu(){ae.phase="idle",ae.source=null,ae.target=null,Dk()}function Wa(e){ae.phase==="dragging"&&(ae.target=e)}function _r(e){ae.phase==="dragging"&&ae.target&&(e&&!e(ae.target)||(ae.target=null))}var Lk=R("<div></div>"),Nk=R('<div class="quad-target quad-left svelte-re71zu" data-testid="drop-zone-left"></div> <div class="quad-target quad-right svelte-re71zu" data-testid="drop-zone-right"></div> <div class="quad-target quad-top svelte-re71zu" data-testid="drop-zone-top"></div> <div class="quad-target quad-bottom svelte-re71zu" data-testid="drop-zone-bottom"></div>',1),Ok=R("<div><!> <!></div>");function Xo(e,t){ne(t,!0);let n=q(void 0),r=q(null);const s=W(()=>ae.phase==="dragging");function a(y,w,b){const C=b.left+b.width/2,h=b.top+b.height/2,m=y-C,A=w-h,L=m/b.width,x=A/b.height;return Math.abs(L)>Math.abs(x)?L<0?"left":"right":x<0?"top":"bottom"}function i(y){if(!c(n))return;const w=c(n).getBoundingClientRect();if(y.clientX<w.left||y.clientX>w.right||y.clientY<w.top||y.clientY>w.bottom){c(r)!==null&&(_(r,null),_r(C=>C.kind==="split"&&C.path.join("/")===t.path.join("/")));return}const b=a(y.clientX,y.clientY,w);if(b!==c(r)){_(r,b,!0);const C={kind:"split",root:t.rootRef,path:[...t.path],side:b};Wa(C)}}function o(){c(r)!==null&&(_(r,null),_r(y=>y.kind==="split"&&y.path.join("/")===t.path.join("/")))}var l=Ok();let u;var d=g(l);{var f=y=>{var w=Lk();V(()=>Pe(w,1,`quad-highlight quad-${c(r)??""}`,"svelte-re71zu")),I(y,w)};F(d,y=>{c(r)&&y(f)})}var v=E(d,2);{var k=y=>{var w=Nk();Wt(6),I(y,w)};F(v,y=>{c(s)&&y(k)})}p(l),kt(l,y=>_(n,y),()=>c(n)),V(()=>u=Pe(l,1,"slot-drop-zone svelte-re71zu",null,u,{active:c(s)})),H("pointermove",l,i),tt("pointerleave",l,o),I(e,l),re()}ve(["pointermove"]);var Mk=R('<div class="tab-slot-wrapper svelte-1gw9g38"><!> <!></div>'),jk=R('<div class="empty-tabs-custom svelte-1gw9g38"></div>'),zk=R('<div class="empty-tabs-default svelte-1gw9g38"><div class="empty-tabs-drop svelte-1gw9g38"></div></div>'),qk=R('<div class="empty-tabs-placeholder svelte-1gw9g38"><!></div>'),Vk=R('<div class="leaf-slot-wrapper svelte-1gw9g38"><!> <!></div>');function Bi(e,t){ne(t,!0);let n=on(t,"path",19,()=>[]),r=on(t,"rootRef",19,()=>({kind:"docked"}));const s=W(()=>{let h;return r().kind==="docked"?h=Wn.root:h=Wn.tree.floats.find(A=>A.id===r().floatId)?.content??null,h?ks(h,n()):null});function a(h){return{get isDragging(){return ae.phase==="dragging"},onPointerDown(m,A,L){const x=h.tabs[m];x&&Rk(x.slotId,x,r(),A,L)},onStripHover(m,A,L,x){if(L<m.top||L>m.bottom)return _r(D=>D.kind==="strip"&&D.tabsNode===h),null;let S=x.length;for(let D=0;D<x.length;D++){const O=x[D],T=O.left+O.width/2;if(A<T){S=D;break}}const N=ae.source;if(N){const D=h.tabs.findIndex(O=>O.slotId===N.slotId);D>=0&&D<S&&(S-=1)}return Wa({kind:"strip",root:r(),tabsNode:h,insertIndex:S}),S},onStripLeave(){_r(m=>m.kind==="strip"&&m.tabsNode===h)}}}function i(h){return h.type==="split"?h:null}function o(h){return h.type==="tabs"?h:null}function l(h){return h.type==="slot"?h:null}function u(h){return h.map(m=>Jm(m.slotId)||void 0)}function d(h){return h.map(m=>Xm(m.slotId)||void 0)}function f(h,m){const A=h[m];A&&$i(A.slotId)}function v(h,m){m(h)}function k(h,m){ae.phase==="dragging"&&Wa({kind:"strip",root:r(),tabsNode:m,insertIndex:0})}function y(){_r(h=>h.kind==="strip"&&h.insertIndex===0)}var w=ot(),b=_e(w);{var C=h=>{var m=ot(),A=_e(m);{var L=N=>{const D=(T,P=it)=>{{let U=W(()=>[...n(),P()]);Bi(T,{get rootRef(){return r()},get path(){return c(U)}})}},O=W(()=>i(c(s)));pk(N,{get direction(){return c(O).direction},get sizes(){return c(O).sizes},get pinned(){return c(O).pinned},get collapsed(){return c(O).collapsed},get count(){return c(O).children.length},get pane(){return D},onResize:(T,P)=>c(O).sizes[T]=P,onCollapseToggle:(T,P)=>{c(O).collapsed||(c(O).collapsed=c(O).children.map(()=>!1)),c(O).collapsed[T]=P}})},x=N=>{const D=W(()=>o(c(s)));var O=ot(),T=_e(O);{var P=z=>{const K=(G,te=it)=>{const Q=W(()=>c(D)?.tabs[te()]);var ue=ot(),ge=_e(ue);{var ie=xe=>{var Ie=Mk(),$=g(Ie);{let Y=W(()=>({type:"slot",slotId:c(Q).slotId,viewId:c(Q).viewId}));Ko($,{get node(){return c(Y)},get label(){return c(Q).label}})}var M=E($,2);Xo(M,{get rootRef(){return r()},get path(){return n()}}),p(Ie),I(xe,Ie)};F(ge,xe=>{c(Q)&&xe(ie)})}I(G,ue)},Z=W(()=>a(c(D)));{let G=W(()=>c(D).tabs.map(ie=>ie.label)),te=W(()=>c(D).tabs.map(ie=>ie.icon)),Q=W(()=>u(c(D).tabs)),ue=W(()=>d(c(D).tabs)),ge=W(()=>c(D).tabs.map(ie=>ie.slotId));Ek(z,{get labels(){return c(G)},get icons(){return c(te)},get activeTab(){return c(D).activeTab},onActiveChange:ie=>c(D).activeTab=ie,get body(){return K},get dragController(){return c(Z)},get clickGuard(){return Ck},get closable(){return c(Q)},get dirty(){return c(ue)},onClose:ie=>f(c(D).tabs,ie),get tabIds(){return c(ge)}})}},U=z=>{var K=qk(),Z=g(K);{var G=Q=>{var ue=jk();Tc(ue,(ge,ie)=>v?.(ge,ie),()=>c(D).emptyRenderer),I(Q,ue)},te=Q=>{var ue=zk(),ge=g(ue);p(ue),H("pointermove",ge,ie=>k(ie,c(D))),tt("pointerleave",ge,y),I(Q,ue)};F(Z,Q=>{c(D).emptyRenderer?Q(G):Q(te,-1)})}p(K),I(z,K)};F(T,z=>{c(D)&&c(D).tabs.length>0?z(P):c(D)?.persistent&&z(U,1)})}I(N,O)},S=N=>{const D=W(()=>l(c(s)));var O=Vk(),T=g(O);Ko(T,{get node(){return c(D)}});var P=E(T,2);Xo(P,{get rootRef(){return r()},get path(){return n()}}),p(O),I(N,O)};F(A,N=>{c(s).type==="split"?N(L):c(s).type==="tabs"?N(x,1):N(S,-1)})}I(h,m)};F(b,h=>{c(s)&&h(C)})}I(e,w),re()}ve(["pointermove"]);var Uk=R('<span class="drag-preview-icon svelte-133fiip"> </span>'),Bk=R('<div class="drag-preview svelte-133fiip"><!> <span class="drag-preview-label svelte-133fiip"> </span></div>');function Fk(e,t){ne(t,!0);const n=W(()=>ae.phase==="dragging"&&!!ae.source),r=W(()=>ae.source?ae.pointerX-ae.source.offsetX:0),s=W(()=>ae.source?ae.pointerY-ae.source.offsetY:0),a=W(()=>ae.source?.startRect.width??0),i=W(()=>ae.source?.startRect.height??0),o=W(()=>ae.source?.entry.label??""),l=W(()=>ae.source?.entry.icon);var u=ot(),d=_e(u);{var f=v=>{var k=Bk(),y=g(k);{var w=h=>{var m=Uk(),A=g(m,!0);p(m),V(()=>j(A,c(l))),I(h,m)};F(y,h=>{c(l)&&h(w)})}var b=E(y,2),C=g(b,!0);p(b),p(k),V(()=>{Bt(k,`left: ${c(r)??""}px; top: ${c(s)??""}px; width: ${c(a)??""}px; height: ${c(i)??""}px;`),j(C,c(o))}),I(v,k)};F(d,v=>{c(n)&&v(f)})}I(e,u),re()}var Hk=R('<div class="sh3-float-frame svelte-1p734al" role="dialog" tabindex="-1"><header class="sh3-float-header svelte-1p734al"><span class="sh3-float-title svelte-1p734al"> </span> <button class="sh3-float-close svelte-1p734al" aria-label="Close float">×</button></header> <div class="sh3-float-body svelte-1p734al"><!></div></div>');function Kk(e,t){ne(t,!0);const n=on(t,"entry",7);let r=q(!1),s={x:0,y:0};function a(h){if(h.button!==0||h.target.closest(".sh3-float-close"))return;h.currentTarget.setPointerCapture(h.pointerId),_(r,!0),s={x:h.clientX-n().position.x,y:h.clientY-n().position.y},Tt.focus(n().id)}function i(h){c(r)&&(n().position.x=h.clientX-s.x,n().position.y=h.clientY-s.y)}function o(h){if(!c(r))return;_(r,!1);const m=h.currentTarget;m.hasPointerCapture(h.pointerId)&&m.releasePointerCapture(h.pointerId)}function l(){Tt.focus(n().id)}function u(h){h.stopPropagation(),Tt.close(n().id)}var d=Hk();let f;var v=g(d),k=g(v),y=g(k,!0);p(k);var w=E(k,2);p(v);var b=E(v,2),C=g(b);{let h=W(()=>({kind:"float",floatId:n().id}));Bi(C,{get rootRef(){return c(h)},path:[]})}p(b),p(d),V(()=>{Ee(d,"aria-label",n().title??"Float panel"),f=Bt(d,"",f,{left:`${n().position.x??""}px`,top:`${n().position.y??""}px`,width:`${n().size.w??""}px`,height:`${n().size.h??""}px`}),j(y,n().title??n().content.type)}),H("click",d,l),H("pointerdown",v,a),H("pointermove",v,i),H("pointerup",v,o),tt("pointercancel",v,o),H("click",w,u),I(e,d),re()}ve(["click","pointerdown","pointermove","pointerup"]);var Wk=R('<div class="sh3-float-layer svelte-1rzcset"></div>');function Gk(e,t){ne(t,!0);const n=W(()=>Wn.floats);var r=Wk();pe(r,21,()=>c(n),s=>s.id,(s,a)=>{Kk(s,{get entry(){return c(a)}})}),p(r),I(e,r),re()}const Jo="/assets/icons-CnAqUqbR.svg";var Yk=R('<div class="guest-signin-error svelte-pymkh"> </div>'),Xk=R('<div class="guest-signin-overlay svelte-pymkh" role="dialog"><div class="guest-signin-card svelte-pymkh"><form class="guest-signin-form svelte-pymkh"><input class="guest-signin-input svelte-pymkh" type="text" placeholder="Username" autocomplete="username"/> <input class="guest-signin-input svelte-pymkh" type="password" placeholder="Password" autocomplete="current-password"/> <div class="guest-signin-actions svelte-pymkh"><button type="submit" class="guest-signin-btn svelte-pymkh"> </button> <button type="button" class="guest-signin-cancel svelte-pymkh">Cancel</button></div></form> <!></div></div>'),Jk=R('<div class="guest-banner svelte-pymkh"><span class="guest-banner-text">Browsing as guest. Sign in to save your work.</span> <button type="button" class="guest-banner-action svelte-pymkh">Sign in</button></div> <!>',1),Zk=R('<div class="guest-banner-slot"><!></div>');function Qk(e,t){ne(t,!0);let n=q(!1),r=q(""),s=q(""),a=q(null),i=q(!1);async function o(){if(!c(r).trim()||!c(s).trim()||c(i))return;_(i,!0),_(a,null);const v=await nu(c(r).trim(),c(s).trim());_(i,!1),v.ok?_(n,!1):_(a,v.error,!0)}var l=Zk(),u=g(l);{var d=v=>{var k=Jk(),y=_e(k),w=E(g(y),2);p(y);var b=E(y,2);{var C=h=>{var m=Xk(),A=g(m),L=g(A),x=g(L);ke(x);var S=E(x,2);ke(S);var N=E(S,2),D=g(N),O=g(D,!0);p(D);var T=E(D,2);p(N),p(L);var P=E(L,2);{var U=z=>{var K=Yk(),Z=g(K,!0);p(K),V(()=>j(Z,c(a))),I(z,K)};F(P,z=>{c(a)&&z(U)})}p(A),p(m),V(z=>{x.disabled=c(i),S.disabled=c(i),D.disabled=z,j(O,c(i)?"Signing in...":"Sign in")},[()=>c(i)||!c(r).trim()||!c(s).trim()]),tt("submit",L,z=>{z.preventDefault(),o()}),De(x,()=>c(r),z=>_(r,z)),De(S,()=>c(s),z=>_(s,z)),H("click",T,()=>{_(n,!1),_(a,null)}),I(h,m)};F(b,h=>{c(n)&&h(C)})}H("click",w,()=>{_(n,!0)}),I(v,k)},f=W(()=>su());F(u,v=>{c(f)&&v(d)})}p(l),I(e,l),re()}ve(["click"]);var e1=R('<code class="sh3-consent-scope svelte-14me5sj"> </code>'),t1=R('<dt class="svelte-14me5sj">Connector</dt> <dd class="svelte-14me5sj"> </dd>',1),n1=R('<dt class="svelte-14me5sj">Expires in</dt> <dd class="svelte-14me5sj"> </dd>',1),r1=R('<div class="sh3-consent-backdrop svelte-14me5sj" role="dialog" aria-modal="true" aria-label="Key creation consent"><div class="sh3-consent-card svelte-14me5sj"><h2 class="sh3-consent-title svelte-14me5sj"><span class="svelte-14me5sj"> </span> wants to create a key</h2> <dl class="sh3-consent-fields svelte-14me5sj"><dt class="svelte-14me5sj">Label</dt> <dd class="svelte-14me5sj"> </dd> <dt class="svelte-14me5sj">Scopes</dt> <dd class="sh3-consent-scopes svelte-14me5sj"></dd> <!> <!></dl> <div class="sh3-consent-actions svelte-14me5sj"><button type="button" class="sh3-consent-deny svelte-14me5sj">Deny</button> <button type="button" class="sh3-consent-approve svelte-14me5sj">Approve</button></div></div></div>');function s1(e,t){ne(t,!0);let n=q(null);Le(()=>fu(u=>{_(n,u,!0)}));function r(){c(n)&&(Fa(c(n).requestId,!0),_(n,null))}function s(){c(n)&&(Fa(c(n).requestId,!1),_(n,null))}var a=ot(),i=_e(a);{var o=l=>{var u=r1(),d=g(u),f=g(d),v=g(f),k=g(v,!0);p(v),Wt(),p(f);var y=E(f,2),w=E(g(y),2),b=g(w,!0);p(w);var C=E(w,4);pe(C,20,()=>c(n).scopes,D=>D,(D,O)=>{var T=e1(),P=g(T,!0);p(T),V(()=>j(P,O)),I(D,T)}),p(C);var h=E(C,2);{var m=D=>{var O=t1(),T=E(_e(O),2),P=g(T,!0);p(T),V(()=>j(P,c(n).connectorId)),I(D,O)};F(h,D=>{c(n).connectorId&&D(m)})}var A=E(h,2);{var L=D=>{var O=n1(),T=E(_e(O),2),P=g(T);p(T),V(U=>j(P,`${U??""}s`),[()=>Math.round(c(n).expiresIn/1e3)]),I(D,O)};F(A,D=>{c(n).expiresIn&&D(L)})}p(y);var x=E(y,2),S=g(x);ii(S,!0);var N=E(S,2);p(x),p(d),p(u),V(()=>{j(k,c(n).shardId),j(b,c(n).label)}),H("click",S,s),H("click",N,r),I(l,u)};F(i,l=>{c(n)&&l(o)})}I(e,a),re()}ve(["click"]);var a1=R('<button type="button" class="shell-tabbar-signout svelte-187fra4" title="Sign out"><svg class="shell-tabbar-signout-icon svelte-187fra4" aria-hidden="true"><use></use></svg></button>'),i1=R('<div class="shell-tabbar-user svelte-187fra4"><span class="shell-tabbar-user-name svelte-187fra4"> </span> <span class="shell-tabbar-tag svelte-187fra4"> </span> <!></div>'),o1=R('<div class="shell-overlay-root svelte-187fra4"><!></div>'),l1=R('<div class="shell svelte-187fra4"><header class="shell-tabbar svelte-187fra4" data-shell-region="tabbar"><button type="button" class="shell-tabbar-home-button svelte-187fra4" title="Home"><svg class="shell-tabbar-home-icon svelte-187fra4" aria-hidden="true"><use></use></svg></button> <span class="shell-tabbar-brand svelte-187fra4">SH3</span> <!></header> <!> <main class="shell-content svelte-187fra4" data-shell-region="content" data-shell-layer="0"><!></main> <footer class="shell-statusbar svelte-187fra4" data-shell-region="statusbar"></footer> <div class="shell-overlays svelte-187fra4" aria-hidden="true"></div> <!></div>');function c1(e,t){ne(t,!0);const n=W(ru),r=W(Us),s=W(Zt),a=W(()=>ku()==="home"),i=[{layer:1,name:"floating"},{layer:2,name:"drag-preview"},{layer:3,name:"popup"},{layer:4,name:"modal"},{layer:5,name:"toast"},{layer:6,name:"command"}],o=ce({});Le(()=>{for(const{name:A}of i){const L=o[A];L&&rg(A,L)}return()=>{for(const{name:A}of i)sg(A)}}),Le(()=>{function A(L){if(L.key!=="²"||!c(s))return;const x=L.target;if(x){const S=x.tagName;if(S==="INPUT"||S==="TEXTAREA"||x.isContentEditable)return}L.preventDefault(),Xs("shell:terminal")||Tt.open("shell:terminal",{title:"Shell"})}return window.addEventListener("keydown",A),()=>window.removeEventListener("keydown",A)}),Le(()=>{const A=Wn.tree;return Ag(A.floats,()=>({w:window.innerWidth,h:window.innerHeight})),()=>Tg()}),Le(()=>Hm());var l=l1(),u=g(l),d=g(u),f=g(d),v=g(f);p(f),p(d);var k=E(d,4);{var y=A=>{var L=i1(),x=g(L),S=g(x,!0);p(x);var N=E(x,2),D=g(N,!0);p(N);var O=E(N,2);{var T=U=>{var z=a1(),K=g(z),Z=g(K);p(K),p(z),V(()=>Ee(Z,"href",`${Jo}#log-out`)),H("click",z,()=>wm()),I(U,z)},P=W(()=>!Sm());F(O,U=>{c(P)&&U(T)})}p(L),V(()=>{j(S,c(r).displayName),j(D,c(s)?"admin":"user")}),I(A,L)};F(k,A=>{c(n)&&c(r)&&A(y)})}p(u);var w=E(u,2);Qk(w,{});var b=E(w,2),C=g(b);Bi(C,{}),p(b);var h=E(b,4);pe(h,21,()=>i,({layer:A,name:L})=>A,(A,L)=>{let x=()=>c(L).layer,S=()=>c(L).name;var N=o1(),D=g(N);{var O=P=>{Gk(P,{})},T=P=>{Fk(P,{})};F(D,P=>{S()==="floating"?P(O):S()==="drag-preview"&&P(T,1)})}p(N),kt(N,(P,U)=>o[U]=P,P=>o?.[P],()=>[S()]),V(()=>{Ee(N,"data-shell-overlay",S()),Ee(N,"data-shell-layer",x()),Bt(N,`z-index: var(--shell-z-layer-${x()??""});`)}),I(A,N)}),p(h);var m=E(h,2);s1(m,{}),p(l),V(()=>{d.disabled=c(a),Ee(v,"href",`${Jo}#house`)}),H("click",d,()=>xu()),I(e,l),re()}ve(["click"]);const u1="modulepreload",d1=function(e){return"/"+e},Zo={},f1=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=i?.nonce||i?.getAttribute("nonce");s=Promise.allSettled(n.map(l=>{if(l=d1(l),l in Zo)return;Zo[l]=!0;const u=l.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${d}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":u1,u||(f.as="script"),f.crossOrigin="",f.href=l,o&&f.setAttribute("nonce",o),document.head.appendChild(f),u)return new Promise((v,k)=>{f.addEventListener("load",v),f.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${l}`)))})}))}function a(i){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i}return s.then(i=>{for(const o of i||[])o.status==="rejected"&&a(o.reason);return t().catch(a)})};async function v1(){try{const{TauriStoreBackend:e}=await f1(async()=>{const{TauriStoreBackend:r}=await import("./tauri-backend-B3LR3-lo.js");return{TauriStoreBackend:r}},[]),t=new e("workspace"),n=new e("user");return await Promise.all([t.init(),n.init()]),{backends:{workspace:t,user:n},localOwner:!0}}catch{return{backends:null,localOwner:sl}}}var h1=R('<button type="button" class="signin-link svelte-lh4k15">Create an account</button>'),p1=R('<form class="signin-form svelte-lh4k15"><input class="signin-input svelte-lh4k15" type="text" placeholder="Username" autocomplete="username"/> <input class="signin-input svelte-lh4k15" type="password" placeholder="Password" autocomplete="current-password"/> <button type="submit" class="signin-btn svelte-lh4k15"> </button></form> <!>',1),g1=R('<form class="signin-form svelte-lh4k15"><input class="signin-input svelte-lh4k15" type="text" placeholder="Username" autocomplete="username"/> <input class="signin-input svelte-lh4k15" type="text" placeholder="Display name (optional)"/> <input class="signin-input svelte-lh4k15" type="password" placeholder="Password" autocomplete="new-password"/> <button type="submit" class="signin-btn svelte-lh4k15"> </button></form> <button type="button" class="signin-link svelte-lh4k15">Back to sign in</button>',1),m1=R('<div class="signin-error svelte-lh4k15"> </div>'),_1=R('<div class="signin-wall svelte-lh4k15"><div class="signin-card svelte-lh4k15"><h1 class="signin-brand svelte-lh4k15">SH3</h1> <!> <!></div></div>');function y1(e,t){ne(t,!0);let n=q("login"),r=q(""),s=q(""),a=q(""),i=q(null),o=q(!1);async function l(){if(!c(r).trim()||!c(s).trim()||c(o))return;_(o,!0),_(i,null);const h=await nu(c(r).trim(),c(s).trim());_(o,!1),h.ok?t.onSuccess():_(i,h.error,!0)}async function u(){if(!c(r).trim()||!c(s).trim()||c(o))return;_(o,!0),_(i,null);const h=await bm(c(r).trim(),c(s).trim(),c(a).trim()||void 0);_(o,!1),h.ok?t.onSuccess():_(i,h.error,!0)}function d(h){_(n,h,!0),_(i,null)}var f=_1(),v=g(f),k=E(g(v),2);{var y=h=>{var m=p1(),A=_e(m),L=g(A);ke(L);var x=E(L,2);ke(x);var S=E(x,2),N=g(S,!0);p(S),p(A);var D=E(A,2);{var O=T=>{var P=h1();H("click",P,()=>d("register")),I(T,P)};F(D,T=>{t.selfRegistration&&T(O)})}V(T=>{L.disabled=c(o),x.disabled=c(o),S.disabled=T,j(N,c(o)?"Signing in...":"Sign in")},[()=>c(o)||!c(r).trim()||!c(s).trim()]),tt("submit",A,T=>{T.preventDefault(),l()}),De(L,()=>c(r),T=>_(r,T)),De(x,()=>c(s),T=>_(s,T)),I(h,m)},w=h=>{var m=g1(),A=_e(m),L=g(A);ke(L);var x=E(L,2);ke(x);var S=E(x,2);ke(S);var N=E(S,2),D=g(N,!0);p(N),p(A);var O=E(A,2);V(T=>{L.disabled=c(o),x.disabled=c(o),S.disabled=c(o),N.disabled=T,j(D,c(o)?"Creating...":"Create account")},[()=>c(o)||!c(r).trim()||!c(s).trim()]),tt("submit",A,T=>{T.preventDefault(),u()}),De(L,()=>c(r),T=>_(r,T)),De(x,()=>c(a),T=>_(a,T)),De(S,()=>c(s),T=>_(s,T)),H("click",O,()=>d("login")),I(h,m)};F(k,h=>{c(n)==="login"?h(y):h(w,-1)})}var b=E(k,2);{var C=h=>{var m=m1(),A=g(m,!0);p(m),V(()=>j(A,c(i))),I(h,m)};F(b,h=>{c(i)&&h(C)})}p(v),p(f),I(e,f),re()}ve(["click"]);async function b1(e){const t=e?.serverUrl??"",n=await v1();n.backends&&(So("workspace",n.backends.workspace),So("user",n.backends.user)),n.localOwner&&km(),au(t),C_();const r=typeof e?.target=="string"?document.querySelector(e.target):e?.target??document.getElementById("app");if(!r)throw new Error("SH3: mount target not found");let s=null;if(!n.localOwner)try{const i=await fetch(`${t}/api/boot`,{credentials:"include"});i.ok&&(s=await i.json())}catch{}if(n.localOwner)pa("local");else if(s){Do(t,s),pa(s.tenantId);const{auth:i,session:o}=s;if(!o&&i.required&&!i.guestAllowed){await w1(r,s);const l=await fetch(`${t}/api/boot`,{credentials:"include"});l.ok&&(s=await l.json(),Do(t,s),pa(s.tenantId))}}if(e?.discoveredPackages?.length)for(const i of e.discoveredPackages)try{const o=await fetch(i.bundleUrl);if(!o.ok){console.warn(`[sh3] Failed to fetch discovered package "${i.id}": HTTP ${o.status}`);continue}const l=await o.arrayBuffer(),u=await zi(l);qi(u,{version:i.version,sourceRegistry:i.sourceRegistry??"",contractVersion:i.contractVersion??""}),console.log(`[sh3] Loaded discovered package: ${i.id}`)}catch(o){console.warn(`[sh3] Failed to load discovered package "${i.id}":`,o)}if(e?.shards)for(const i of e.shards)ik(i);if(e?.apps)for(const i of e.apps)Ti(i);const a={};e?.excludeShards&&(a.excludeShards=e.excludeShards),await lk(a),ze(c1,{target:r})}function w1(e,t){return new Promise(n=>{const r=ze(y1,{target:e,props:{selfRegistration:t.auth.selfRegistration,onSuccess:()=>{He(r),n()}}})})}const Fi=window.location.origin;au(Fi);sm(new Jg(Fi));let Ju=[];try{const e=await fetch("/api/packages");e.ok&&(Ju=await e.json())}catch{}await b1({discoveredPackages:Ju,serverUrl:Fi});
17
+ //# sourceMappingURL=index-Cb-zoqb1.js.map