@devframes/plugin-code-server 0.7.0 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.mts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { CodeServerOptions } from "./types.mjs";
2
2
  import { CacHandle, CreateCacOptions } from "devframe/adapters/cac";
3
-
4
3
  //#region src/cli.d.ts
5
4
  /**
6
5
  * Build a standalone CLI for the code-server panel — `dev` / `build` / `mcp`
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as createCodeServerDevframe } from "./src-GS0U_BNx.mjs";
1
+ import { n as createCodeServerDevframe } from "./src-BEBmIz_T.mjs";
2
2
  import { createCac } from "devframe/adapters/cac";
3
3
  //#region src/cli.ts
4
4
  /**
@@ -1,7 +1,6 @@
1
1
  import { CodeServerAuth, CodeServerDetection, CodeServerServerInfo, CodeServerSharedState, CodeServerStatus } from "../types.mjs";
2
2
  import { o as STATE_KEY } from "../constants-ICLvdiRe.mjs";
3
3
  import { DevframeRpcClient } from "devframe/client";
4
-
5
4
  //#region src/client/view.d.ts
6
5
  /** The data the view renders from. Pure — no RPC, no process knowledge. */
7
6
  interface CodeServerViewState {
package/dist/index.d.mts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { CodeServerAuth, CodeServerDetection, CodeServerOptions, CodeServerServerInfo, CodeServerSharedState, CodeServerStartRequest, CodeServerStartResult, CodeServerStatus, CodeServerStatusResult } from "./types.mjs";
2
2
  import { i as PLUGIN_ID, l as getCookieSessionName, n as DEFAULT_PORT, o as STATE_KEY, t as DEFAULT_CODE_SERVER_PORT } from "./constants-ICLvdiRe.mjs";
3
3
  import { DevframeDefinition } from "devframe/types";
4
-
5
4
  //#region src/index.d.ts
6
5
  /**
7
6
  * Build a {@link DevframeDefinition} for the code-server panel. The same
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { n as createCodeServerDevframe, t as codeServer } from "./src-GS0U_BNx.mjs";
1
+ import { n as createCodeServerDevframe, t as codeServer } from "./src-BEBmIz_T.mjs";
2
2
  import { DEFAULT_CODE_SERVER_PORT, DEFAULT_PORT, PLUGIN_ID, STATE_KEY, getCookieSessionName } from "./constants.mjs";
3
3
  export { DEFAULT_CODE_SERVER_PORT, DEFAULT_PORT, PLUGIN_ID, STATE_KEY, createCodeServerDevframe, codeServer as default, getCookieSessionName };
@@ -1,7 +1,6 @@
1
1
  import { CodeServerDetection, CodeServerOptions, CodeServerStartRequest, CodeServerStartResult, CodeServerStatusResult } from "../types.mjs";
2
2
  import { DevframeNodeContext } from "devframe/types";
3
3
  import { Diagnostic } from "nostics";
4
-
5
4
  //#region src/node/supervisor.d.ts
6
5
  /**
7
6
  * Owns the lifecycle of a single code-server child process: detects the
@@ -109,9 +108,7 @@ declare function detectCodeServer(bin?: string, timeoutMs?: number): Promise<Det
109
108
  interface ReporterOptions {
110
109
  method?: 'log' | 'warn' | 'error';
111
110
  }
112
- declare function reporter(d: Diagnostic, {
113
- method
114
- }?: ReporterOptions): void;
111
+ declare function reporter(d: Diagnostic, { method }?: ReporterOptions): void;
115
112
  /**
116
113
  * Structured diagnostics for the code-server plugin. Uses the plugin's own
117
114
  * `DP_CODE_SERVER_` prefix per the built-in plugin convention, keeping it
@@ -1,6 +1,6 @@
1
1
  import { CodeServerDetection, CodeServerSharedState, CodeServerStartRequest, CodeServerStatusResult } from "../types.mjs";
2
+ import "../index.mjs";
2
3
  import { RpcDefinitionsToFunctions } from "devframe/rpc";
3
-
4
4
  //#region src/rpc/index.d.ts
5
5
  declare const serverFunctions: readonly [{
6
6
  name: "devframes-plugin-code-server:detect";
@@ -1,2 +1,2 @@
1
1
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`__connection.json`,t=`__rpc-dump/index.json`,n=`devframe_otp`,r=`devframe_auth_token`;function i(e){return typeof e==`string`?`'${e}'`:new a().serialize(e)}var a=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}(),o=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],s=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],c=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,l=[],u=class{_data=new d;_hash=new d([...o]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],c=n[4],u=n[5],d=n[6],f=n[7];for(let n=0;n<64;n++){if(n<16)l[n]=e[t+n]|0;else{let e=l[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=l[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;l[n]=t+l[n-7]+i+l[n-16]}let p=c&u^~c&d,m=r&i^r&a^i&a,h=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),g=(c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25),_=f+g+p+s[n]+l[n],v=h+m;f=d,d=u,u=c,c=o+_|0,o=a,a=i,i=r,r=_+v|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+c|0,n[5]=n[5]+u|0,n[6]=n[6]+d|0,n[7]=n[7]+f|0}_append(e){typeof e==`string`&&(e=d.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e<r;e+=16)this._doProcessBlock(this._data.words,e);t=this._data.words.splice(0,r),this._data.sigBytes-=i}return new d(t,i)}},d=class e{words;sigBytes;constructor(e,t){e=this.words=e||[],this.sigBytes=t===void 0?e.length*4:t}static fromUtf8(t){let n=unescape(encodeURIComponent(t)),r=n.length,i=[];for(let e=0;e<r;e++)i[e>>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t<this.sigBytes;t+=3){let n=this.words[t>>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6<this.sigBytes*8;n++)e.push(c.charAt(a>>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t<e.sigBytes;t++){let n=e.words[t>>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t<e.sigBytes;t+=4)this.words[this.sigBytes+t>>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function f(e){return new u().finalize(e).toBase64()}function p(e){return f(i(e))}function m(e){return p(e)}function h(e,...t){return typeof e==`function`?e(...t):e}var g=Error.captureStackTrace,_=class e extends Error{name=`Diagnostic`;docs;fix;sources;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,g?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,stack:this.stack}}};function v(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function y(e){let t=e.reporters??[],n={},{docsBase:r}=e;for(let i of Object.keys(e.codes)){let a=e.codes[i],o=a.docs===!1?void 0:a.docs||v(r,i),s=(e={},n={})=>{let r=new _({why:h(a.why,e),fix:h(a.fix,e),docs:o,cause:e.cause,sources:e.sources},s);r.name=i;for(let e of t)e(r,n);return r};n[i]=s}return n}function b(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}var x={blue:b(34,39),cyan:b(36,39),gray:b(90,39),green:b(32,39),red:b(31,39),yellow:b(33,39),bold:b(1,22),dim:b(2,22),reset:b(0,0),underline:b(4,24)};function ee(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
2
- `)}}var te=ee(x);function ne(e,{method:t=`warn`}={}){console[t](te(e))}var S=y({docsBase:`https://devfra.me/errors`,reporters:[ne],codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is not \`true\` — MCP requires JSON-serializable data.`,fix:"Set `jsonSerializable: true` if the payload is JSON-safe, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."}}});function re(e){let t=e.cause instanceof Error?e.cause:ie(e.cause)?re(e.cause):e.cause,n=t===void 0?Error(e.message):Error(e.message,{cause:t});n.name=e.name;for(let t of Object.keys(e))t===`name`||t===`message`||t===`cause`||(n[t]=e[t]);return n}function ie(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}async function ae(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function oe(e,t){if(e.handler)return e.handler;let n=await ae(e,t);if(!n.handler)throw S.DF0024({name:e.name});return n.handler}var se=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>m(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},ce=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return oe(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw S.DF0021({name:e.name});le(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw S.DF0022({name:e.name});le(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await oe(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw S.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function le(e){if(e.agent&&e.jsonSerializable!==!0)throw S.DF0019({name:e.name})}function ue(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw C(t,`undefined`,r,e);return n}if(i===null)return n;if(typeof i==`bigint`)throw C(t,`BigInt`,r,e);if(typeof i==`object`){if(i instanceof Map)throw C(t,`Map`,r,e);if(i instanceof Set)throw C(t,`Set`,r,e);if(i instanceof Date)throw C(t,`Date`,r,e);if(Array.isArray(i))return n;let a=Object.getPrototypeOf(i);if(a!==null&&a!==Object.prototype)throw C(t,i.constructor?.name??`class instance`,r,e)}return n})}function C(e,t,n,r){let i=de(n,r);return S.DF0020({name:e||`<anonymous>`,type:t,path:i})}function de(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}function fe(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}String.fromCharCode;var pe=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,me=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,he=/^([/\\]\s*){2,}[^/\\]/,ge=/\/$|\/\?|\/#/,_e=/^\.?\//;function ve(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?pe.test(e):me.test(e)||(t.acceptRelative?he.test(e):!1)}function ye(e=``,t){return t?ge.test(e):e.endsWith(`/`)}function be(e=``,t){if(!t)return(ye(e)?e.slice(0,-1):e)||`/`;if(!ye(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function xe(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(ye(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function Se(e,t){if(Ce(t)||ve(e))return e;let n=be(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return Te(n,e)}function Ce(e){return!e||e===`/`}function we(e){return e&&e!==`/`}function Te(e,...t){let n=e||``;for(let e of t.filter(e=>we(e)))if(n){let t=e.replace(_e,``);n=xe(n)+t}else n=e;return n}function Ee(e,t){let n=e.match(me);return n||=e.match(/^\/{2,}/),n?t+e.slice(n[0].length):t+e}function De(e=n){try{return new URLSearchParams(globalThis.location?.search).get(e)||void 0}catch{return}}function Oe(e){try{let t=new URL(globalThis.location.href);if(!t.searchParams.has(e))return;t.searchParams.delete(e),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function ke(e=n){let t=De(e);return t&&Oe(e),t}async function Ae(e,t={}){let n=ke(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}var je=Symbol.for(`immer-nothing`),Me=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`);function T(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object,D=E.getPrototypeOf,Ne=`constructor`,Pe=`prototype`,Fe=`configurable`,Ie=`enumerable`,Le=`writable`,Re=`value`,O=e=>!!e&&!!e[w];function k(e){return e?Ve(e)||Ge(e)||!!e[Me]||!!e[Ne]?.[Me]||Ke(e)||qe(e):!1}var ze=E[Pe][Ne].toString(),Be=new WeakMap;function Ve(e){if(!e||!N(e))return!1;let t=D(e);if(t===null||t===E[Pe])return!0;let n=E.hasOwnProperty.call(t,Ne)&&t[Ne];if(n===Object)return!0;if(!P(n))return!1;let r=Be.get(n);return r===void 0&&(r=Function.toString.call(n),Be.set(n,r)),r===ze}function He(e,t,n=!0){A(e)===0?(n?Reflect.ownKeys(e):E.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function A(e){let t=e[w];return t?t.type_:Ge(e)?1:Ke(e)?2:qe(e)?3:0}var j=(e,t,n=A(e))=>n===2?e.has(t):E[Pe].hasOwnProperty.call(e,t),M=(e,t,n=A(e))=>n===2?e.get(t):e[t],Ue=(e,t,n,r=A(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function We(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ge=Array.isArray,Ke=e=>e instanceof Map,qe=e=>e instanceof Set,N=e=>typeof e==`object`,P=e=>typeof e==`function`,Je=e=>typeof e==`boolean`;function Ye(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Xe=e=>N(e)?e?.[w]:null,F=e=>e.copy_||e.base_,Ze=e=>e.modified_?e.copy_:e.base_;function Qe(e,t){if(Ke(e))return new Map(e);if(qe(e))return new Set(e);if(Ge(e))return Array[Pe].slice.call(e);let n=Ve(e);if(t===!0||t===`class_only`&&!n){let t=E.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Le]===!1&&(a[Le]=!0,a[Fe]=!0),(a.get||a.set)&&(t[i]={[Fe]:!0,[Le]:!0,[Ie]:a[Ie],[Re]:e[i]})}return E.create(D(e),t)}else{let t=D(e);if(t!==null&&n)return{...e};let r=E.create(t);return E.assign(r,e)}}function $e(e,t=!1){return nt(e)||O(e)||!k(e)?e:(A(e)>1&&E.defineProperties(e,{set:tt,add:tt,clear:tt,delete:tt}),E.freeze(e),t&&He(e,(e,t)=>{$e(t,!0)},!1),e)}function et(){T(2)}var tt={[Re]:et};function nt(e){return e===null||!N(e)?!0:E.isFrozen(e)}var rt=`MapSet`,it=`Patches`,at=`ArrayMethods`,ot={};function I(e){let t=ot[e];return t||T(0,e),t}var st=e=>!!ot[e];function ct(e,t){ot[e]||(ot[e]=t)}var lt,ut=()=>lt,dt=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:st(rt)?I(rt):void 0,arrayMethodsPlugin_:st(at)?I(at):void 0});function ft(e,t){t&&(e.patchPlugin_=I(it),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function pt(e){mt(e),e.drafts_.forEach(gt),e.drafts_=null}function mt(e){e===lt&&(lt=e.parent_)}var ht=e=>lt=dt(lt,e);function gt(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function _t(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[w].modified_&&(pt(t),T(4)),k(e)&&(e=vt(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[w].base_,e,t)}else e=vt(t,n);return yt(t,e,!0),pt(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===je?void 0:e}function vt(e,t){if(nt(t))return t;let n=t[w];if(!n)return Dt(t,e.handledSet_,e);if(!xt(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Tt(n,e)}return n.copy_}function yt(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&$e(t,n)}function bt(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var xt=(e,t)=>e.scope_===t,St=[];function Ct(e,t,n,r){let i=F(e),a=e.type_;if(r!==void 0&&M(i,r,a)===t){Ue(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;He(i,(e,n)=>{if(O(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??St;for(let e of o)Ue(i,e,n,a)}function wt(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!xt(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ze(i);Ct(e,i.draft_??i,a,n),Tt(i,r)})}function Tt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}bt(e)}}function Et(e,t,n){let{scope_:r}=e;if(O(n)){let i=n[w];xt(i,r)&&i.callbacks_.push(function(){Ft(e),Ct(e,n,Ze(i),t)})}else k(n)&&e.callbacks_.push(function(){let i=F(e);e.type_===3?i.has(n)&&Dt(n,r.handledSet_,r):M(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Dt(M(e.copy_,t,e.type_),r.handledSet_,r)})}function Dt(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||O(e)||t.has(e)||!k(e)||nt(e)?e:(t.add(e),He(e,(r,i)=>{if(O(i)){let t=i[w];xt(t,n)&&(Ue(e,r,Ze(t),e.type_),bt(t))}else k(i)&&Dt(i,t,n)}),e)}function Ot(e,t){let n=Ge(e),r={type_:+!!n,scope_:t?t.scope_:ut(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=kt;n&&(i=[r],a=At);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var kt={get(e,t){if(t===w)return e;if(t===`constructor`||t===`__proto__`){let n=F(e)[t];return new Proxy(n||{},{get:(e,t)=>t===`__proto__`||t===`prototype`?Object.freeze(Object.create(null)):Reflect.get(e,t),set:()=>!0,apply:(e,t,n)=>Reflect.apply(e,t,n)})}let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=F(e);if(!j(i,t,e.type_))return Mt(e,i,t);let a=i[t];if(e.finalized_||!k(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Ye(t))return a;if(a===jt(e.base_,t)){Ft(e);let n=e.type_===1?+t:t,r=Lt(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t===`constructor`||t===`__proto__`||t===`prototype`?!1:t in F(e)},ownKeys(e){return Reflect.ownKeys(F(e))},set(e,t,n){if(t===`constructor`||t===`__proto__`||t===`prototype`)return!0;let r=Nt(F(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=jt(F(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(We(n,r)&&(n!==void 0||j(e.base_,t,e.type_)))return!0;Ft(e),Pt(e)}return e.copy_[t]===n&&(n!==void 0||j(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Et(e,t,n),!0)},deleteProperty(e,t){return Ft(e),jt(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Pt(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=F(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Le]:!0,[Fe]:e.type_!==1||t!==`length`,[Ie]:r[Ie],[Re]:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return D(e.base_)},setPrototypeOf(){T(12)}},At={};for(let e in kt){let t=kt[e];At[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}At.deleteProperty=function(e,t){return At.set.call(this,e,t,void 0)},At.set=function(e,t,n){return kt.set.call(this,e[0],t,n,e[0])};function jt(e,t){let n=e[w];return(n?F(n):e)[t]}function Mt(e,t,n){let r=Nt(t,n);return r?Re in r?r[Re]:r.get?.call(e.draft_):void 0}function Nt(e,t){if(!(t in e))return;let n=D(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=D(n)}}function Pt(e){e.modified_||(e.modified_=!0,e.parent_&&Pt(e.parent_))}function Ft(e){e.copy_||=(e.assigned_=new Map,Qe(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var It=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(P(e)&&!P(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}P(t)||T(6),n!==void 0&&!P(n)&&T(7);let r;if(k(e)){let i=ht(this),a=Lt(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?pt(i):mt(i)}return ft(i,n),_t(r,i)}else if(!e||!N(e)){if(r=t(e),r===void 0&&(r=e),r===je&&(r=void 0),this.autoFreeze_&&$e(r,!0),n){let t=[],i=[];I(it).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(P(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Je(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Je(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Je(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){k(e)||T(8),O(e)&&(e=Rt(e));let t=ht(this),n=Lt(t,e,void 0);return n[w].isManual_=!0,mt(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return ft(r,t),_t(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=I(it).applyPatches_;return O(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Lt(e,t,n,r){let[i,a]=Ke(t)?I(rt).proxyMap_(t,n):qe(t)?I(rt).proxySet_(t,n):Ot(t,n);return(n?.scope_??ut()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?wt(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Rt(e){return O(e)||T(10,e),zt(e)}function zt(e){if(!k(e)||nt(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Qe(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Qe(e,!0);return He(n,(e,t)=>{Ue(n,e,zt(t))},r),t&&(t.finalized_=!1),n}function Bt(){function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Xe(M(e,n.key_)),i=M(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||j(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=M(n,r),!N(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[w];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;He(e.assigned_,(e,l)=>{let u=M(o,e,c),f=M(s,e,c),p=l?j(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===je?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=A(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===Ne)&&T(19),P(o)&&n===Pe&&T(19),o=M(o,n),N(o)||T(18,i.join(`/`))}let s=A(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:T(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:T(17,a)}}),e}function u(e){if(!k(e))return e;if(Ge(e))return e.map(u);if(Ke(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(qe(e))return new Set(Array.from(e).map(u));let t=Object.create(D(e));for(let n in e)t[n]=u(e[n]);return j(e,Me)&&(t[Me]=e[Me]),t}function d(e){return O(e)?u(e):e}ct(it,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}var Vt=new It,Ht=Vt.produce,Ut=Vt.produceWithPatches.bind(Vt),Wt=Vt.applyPatches.bind(Vt),Gt=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kt(e=21){let t=``,n=e;for(;n--;)t+=Gt[Math.random()*64|0];return t}var qt=1e3;function Jt(e,t){if(e.add(t),e.size>qt){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Yt(e){let{enablePatches:t=!1}=e,n=fe(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kt())=>{i.has(t)||(Bt(),r=Wt(r,e),Jt(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kt())=>{if(!i.has(a))if(Jt(i,a),t){let[t,i]=Ut(r,e);r=t,n.emit(`updated`,r,i,a)}else r=Ht(r,e),n.emit(`updated`,r,void 0,a)},syncIds:i}}function Xt(e){let t=new Map,n=new Map,r=new Set,i=e.connectionMeta.backend===`static`;function a(e,t){let r=n.get(e);return r&&typeof r==`object`&&!Array.isArray(r)&&typeof t==`object`&&!Array.isArray(t)?{...r,...t}:t}e.client.register({name:`devframe:rpc:client-state:updated`,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.mutate(()=>a(e,n),r)}}),e.client.register({name:`devframe:rpc:client-state:patch`,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.patch(n,r)}});function o(t,n){let r=[];return r.push(n.on(`updated`,(n,r,a)=>{i||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,a):e.callEvent(`devframe:rpc:server-state:set`,t,n,a))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return r.add(e),()=>{r.delete(e)}},get:async(s,c)=>{if(c?.initialValue!==void 0&&n.set(s,c.initialValue),t.has(s))return t.get(s);let l=Yt({initialValue:c?.initialValue,enablePatches:!1});async function u(){if(i||e.callEvent(`devframe:rpc:server-state:subscribe`,s),c?.initialValue!==void 0){t.set(s,l);for(let e of r)e(s);return e.call(`devframe:rpc:server-state:get`,s).then(e=>{e!==void 0&&l.mutate(()=>a(s,e))}).catch(e=>{console.error(`Error getting server state`,e)}),o(s,l),l}else{let n=await e.call(`devframe:rpc:server-state:get`,s);l.mutate(()=>a(s,n)),t.set(s,l);for(let e of r)e(s);return o(s,l),l}}return new Promise(t=>{if(e.isTrusted)u().then(t);else{t(l);let n=!1;e.events.on(`rpc:is-trusted:updated`,e=>{e&&!n&&(n=!0,u())})}})}}}var Zt=typeof self==`object`?self:globalThis;function Qt(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(new Zt[e](t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(new Zt[a](o),i)};return r}function $t(e){return Qt(new Map,e)(0)}var L=``,{toString:en}={},{keys:tn}=Object;function nn(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=en.call(e).slice(8,-1);switch(n){case`Array`:return[1,L];case`Object`:return[2,L];case`Date`:return[3,L];case`RegExp`:return[4,L];case`Map`:return[5,L];case`Set`:return[6,L];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function rn([e,t]){return e===0&&(t===`function`||t===`symbol`)}function an(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=nn(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of tn(r))(e||!rn(nn(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(rn(nn(n))||rn(nn(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!rn(nn(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function on(e,t={}){let n=[];return an(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:sn,stringify:cn}=JSON,ln={json:!0,lossy:!0};function un(e){return $t(sn(e))}function dn(e){return cn(on(e,ln))}function fn(e){return $t(e)}function pn(e){return dn(e)}function mn(e){return un(e)}function hn(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function gn(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function _n(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function vn(e){if(e.error)throw re(e.error);return e.output}function yn(e){return e.some(e=>e!=null)}function bn(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function xn(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?fn(e):e}function a(e,t){return i(bn(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return _n(r)?vn(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(hn(r)){if(yn(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(gn(r)){let e=m(n),i=r.records[e];if(i)return vn(await s(i,r.serialization));if(r.fallback)return vn(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!yn(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Sn(e){let n=xn(await e.fetchJsonFromBases(t),e.fetchJsonFromBases);return{isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,ensureTrusted:async()=>!0,call:(...e)=>n.call(e[0],e.slice(1)),callEvent:(...e)=>n.callEvent(e[0],e.slice(1)),callOptional:(...e)=>n.callOptional(e[0],e.slice(1))}}var Cn=256,wn=class extends Error{name=`StreamClosedError`};function Tn(e={}){let t=e.id??Kt(),n=Math.max(0,e.replayWindow??0),r=fe(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new wn(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=Dn(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function En(e={}){let t=e.id??Kt(),n=Math.max(1,e.highWaterMark??Cn),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function Dn(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var On=``;function kn(e,t){return`${e}${On}${t}`}function An(e){let t=new Map,n=new Map;e.client.register({name:`devframe:streaming:chunk`,type:`event`,handler(e,n,r,i){t.get(kn(e,n))?._push(r,i)}}),e.client.register({name:`devframe:streaming:end`,type:`event`,handler(e,n,r){let i=kn(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:`devframe:streaming:upload-cancel`,type:`event`,handler(e,t){let r=kn(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(`rpc:is-trusted:updated`,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(On);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=kn(n,r),o=t.get(a);if(o)return o;let s=En({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(`rpc:is-trusted:updated`,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=kn(t,r),a=n.get(i);if(a)return a;let o=Tn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}var jn=`q`,Mn=`s`;function Nn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Pn=Math.random.bind(Math),Fn=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function In(e=21){let t=``,n=e;for(;n--;)t+=Fn[Pn()*64|0];return t}var Ln=6e4,Rn=e=>e,zn=Rn,{clearTimeout:Bn,setTimeout:Vn}=globalThis;function Hn(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=Rn,deserialize:s=zn,resolver:c,bind:l=`rpc`,timeout:u=Ln,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:jn};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=Nn(),_=In();s.i=_;let v;async function y(n=s){return u>=0&&(v=Vn(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{Bn(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.prototype.hasOwnProperty.call(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===jn){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:Mn,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:Mn,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Bn(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function Un(e,t){let{channel:n,rpcOptions:r={}}=t;return Hn(e,{...n,timeout:-1,...r,proxify:!1})}function Wn(){}var Gn=new Map;function Kn(e){let t=e.url;e.authToken&&(t=`${t}?${r}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:i=Wn,onError:a=Wn,onDisconnected:o=Wn,definitions:s=Gn}=e;n.addEventListener(`open`,e=>{i(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);a(t)}),n.addEventListener(`close`,e=>{o(e)});let c=new Map;return{on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}a(Error(`Devframe WebSocket is not open; message dropped`))},serialize:e=>{let t;return e.t===`q`?t=e.m:(t=c.get(e.i),c.delete(e.i)),!(e.t===`s`&&`e`in e)&&t&&s.get(t)?.jsonSerializable===!0?ue(e,t??``):`s:${pn(e)}`},deserialize:e=>{let t=e.startsWith(`s:`)?mn(e.slice(2)):JSON.parse(e);return t.t===`q`&&t.i&&t.m&&c.set(t.i,t.m),t}}}function qn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Jn=``,Yn=`?`,Xn=`major`,R=`model`,z=`name`,B=`type`,V=`vendor`,H=`version`,U=`architecture`,Zn=`console`,W=`mobile`,G=`tablet`,K=`smarttv`,q=`wearable`,Qn=`embedded`,$n=500,er=`Amazon`,tr=`Apple`,nr=`ASUS`,rr=`BlackBerry`,J=`Browser`,ir=`Chrome`,ar=`Edge`,or=`Firefox`,sr=`Google`,cr=`Huawei`,lr=`LG`,ur=`Microsoft`,dr=`Motorola`,fr=`Opera`,pr=`Samsung`,mr=`Sharp`,hr=`Sony`,gr=`Xiaomi`,_r=`Zebra`,vr=`Facebook`,yr=`Chromium OS`,br=`Mac OS`;function xr(e,t={}){let n={};for(let r of Object.keys(e)){let i=t[r];i&&i.length%2==0?n[r]=[...i,...e[r]]:n[r]=e[r]}return n}function Sr(e){let t={};for(let n=0;n<e.length;n++)t[e[n].toUpperCase()]=e[n];return t}function Cr(e){return e.toLowerCase()}function wr(e,t){return typeof e==`string`?Cr(t).includes(Cr(e)):!1}function Tr(e){return typeof e==`string`?e.replace(/[^\d.]/g,Jn).split(`.`)[0]:void 0}function Er(e,t){let n=e.replace(/^\s+/,Jn);return t===void 0?n:n.substring(0,t)}function Dr(e,t,n){let r=n??{};for(let n=0;n<t.length;n+=2){let i=t[n],a=t[n+1];for(let t=0;t<i.length;t++){let n=i[t];if(!n)break;let o=n.exec(e);if(o){for(let e=0;e<a.length;e++){let t=o[e+1],n=a[e];if(Array.isArray(n)){let e=n[0],i=n.length;if(i===2){let i=n[1];typeof i==`function`?r[e]=i(t,void 0,r):r[e]=i}else if(i===3){let i=n[1],a=n[2];typeof i==`function`&&!(`exec`in i)&&!(`test`in i)?r[e]=t?i(t,a,r):void 0:r[e]=t?t.replace(i,a):void 0}else i===4&&(r[e]=t?n[3](t.replace(n[1],n[2]),void 0,r):void 0)}else r[n]=t||void 0}return r}}}return r}function Or(e,t){for(let n in t){let r=t[n];if(Array.isArray(r)&&r.length>0){for(let t=0;t<r.length;t++)if(wr(r[t],e))return n===Yn?void 0:n}else if(wr(r,e))return n===Yn?void 0:n}return e}var kr={"1.0":`/8`,"1.2":`/1`,"1.3":`/3`,"2.0":`/412`,"2.0.2":`/416`,"2.0.3":`/417`,"2.0.4":`/419`,"?":`/`},Ar={ME:`4.90`,"NT 3.11":`NT3.51`,"NT 4.0":`NT4.0`,2e3:`NT 5.0`,XP:[`NT 5.1`,`NT 5.2`],Vista:`NT 6.0`,7:`NT 6.1`,8:`NT 6.2`,"8.1":`NT 6.3`,10:[`NT 6.4`,`NT 10.0`],RT:`ARM`},jr={browser:[[/\b(?:crmo|crios)\/([\w.]+)/i],[H,[z,`Chrome`]],[/edg(?:e|ios|a)?\/([\w.]+)/i],[H,[z,`Edge`]],[/(opera mini)\/([-\w.]+)/i,/(opera [mobileta]{3,6})\b.+version\/([-\w.]+)/i,/(opera)(?:.+version\/|[/ ]+)([\w.]+)/i],[z,H],[/opios[/ ]+([\w.]+)/i],[H,[z,`${fr} Mini`]],[/\bop(?:rg)?x\/([\w.]+)/i],[H,[z,`${fr} GX`]],[/\bopr\/([\w.]+)/i],[H,[z,fr]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[/ ]?([\w.]+)/i],[H,[z,`Baidu`]],[/(kindle)\/([\w.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[/ ]?([\w.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[/ ]?([\w.]*)/i,/(?:ms|\()(ie) ([\w.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w.]+)/i,/(heytap|ovi)browser\/([\d.]+)/i,/(weibo)__([\d.]+)/i],[z,H],[/\bddg\/([\w.]+)/i],[H,[z,`DuckDuckGo`]],[/(?:\buc? ?browser|juc.+ucweb)[/ ]?([\w.]+)/i],[H,[z,`UC${J}`]],[/microm.+\bqbcore\/([\w.]+)/i,/\bqbcore\/([\w.]+).+microm/i,/micromessenger\/([\w.]+)/i],[H,[z,`WeChat`]],[/konqueror\/([\w.]+)/i],[H,[z,`Konqueror`]],[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i],[H,[z,`IE`]],[/ya(?:search)?browser\/([\w.]+)/i],[H,[z,`Yandex`]],[/slbrowser\/([\w.]+)/i],[H,[z,`Smart Lenovo ${J}`]],[/(avast|avg)\/([\w.]+)/i],[[z,/(.+)/,`$1 Secure ${J}`],H],[/\bfocus\/([\w.]+)/i],[H,[z,`${or} Focus`]],[/\bopt\/([\w.]+)/i],[H,[z,`${fr} Touch`]],[/coc_coc\w+\/([\w.]+)/i],[H,[z,`Coc Coc`]],[/dolfin\/([\w.]+)/i],[H,[z,`Dolphin`]],[/coast\/([\w.]+)/i],[H,[z,`${fr} Coast`]],[/miuibrowser\/([\w.]+)/i],[H,[z,`MIUI ${J}`]],[/fxios\/([-\w.]+)/i],[H,[z,or]],[/\bqihu|(qi?ho{0,2}|360)browser/i],[[z,`360 ${J}`]],[/(oculus|sailfish|huawei|vivo)browser\/([\w.]+)/i],[[z,/(.+)/,`$1 ${J}`],H],[/samsungbrowser\/([\w.]+)/i],[H,[z,`${pr} Internet`]],[/(comodo_dragon)\/([\w.]+)/i],[[z,/_/g,` `],H],[/metasr[/ ]?([\d.]+)/i],[H,[z,`Sogou Explorer`]],[/(sogou)mo\w+\/([\d.]+)/i],[[z,`Sogou Mobile`],H],[/(electron)\/([\w.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w.]+))/i,/m?(qqbrowser|2345Explorer)[/ ]?([\w.]+)/i],[z,H],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[z],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w.]+);)/i],[[z,vr],H],[/(Klarna)\/([\w.]+)/i,/(kakao(?:talk|story))[/ ]([\w.]+)/i,/(naver)\(.*?(\d+\.[\w.]+).*\)/i,/safari (line)\/([\w.]+)/i,/\b(line)\/([\w.]+)\/iab/i,/(alipay)client\/([\w.]+)/i,/(twitter)(?:and| f.+e\/([\w.]+))/i,/(chromium|instagram|snapchat)[/ ]([-\w.]+)/i],[z,H],[/\bgsa\/([\w.]+) .*safari\//i],[H,[z,`GSA`]],[/musical_ly(?:.+app_?version\/|_)([\w.]+)/i],[H,[z,`TikTok`]],[/headlesschrome(?:\/([\w.]+)| )/i],[H,[z,`${ir} Headless`]],[/ wv\).+(chrome)\/([\w.]+)/i],[[z,`${ir} WebView`],H],[/droid.+ version\/([\w.]+)\b.+(?:mobile safari|safari)/i],[H,[z,`Android ${J}`]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w.]+)/i],[z,H],[/version\/([\w.,]+) .*mobile\/\w+ (safari)/i],[H,[z,`Mobile Safari`]],[/version\/([\w(.|,)]+) .*(mobile ?safari|safari)/i],[H,z],[/webkit.+?(mobile ?safari|safari)(\/[\w.]+)/i],[z,[H,Or,kr]],[/(webkit|khtml)\/([\w.]+)/i],[z,H],[/(navigator|netscape\d?)\/([-\w.]+)/i],[[z,`Netscape`],H],[/mobile vr; rv:([\w.]+)\).+firefox/i],[H,[z,`${or} Reality`]],[/ekiohf.+(flow)\/([\w.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[/ ]?([\w.+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w.]+)$/i,/(firefox)\/([\w.]+)/i,/(mozilla)\/([\w.]+) .+rv:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[. ]?browser)[-/ ]?v?([\w.]+)/i,/(links) \(([\w.]+)/i,/panasonic;(viera)/i],[z,H],[/(cobalt)\/([\w.]+)/i],[z,[H,/master.|lts./,``]]],cpu:[[/(amd|x(?:(?:86|64)[-_])?|wow|win)64[;)]/i],[[U,`amd64`]],[/(ia32(?=;))/i],[[U,Cr]],[/((?:i[346]|x)86)[;)]/i],[[U,`ia32`]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[U,`arm64`]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[U,`armhf`]],[/windows (ce|mobile); ppc;/i],[[U,`arm`]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[U,/ower/,Jn,Cr]],[/(sun4\w)[;)]/i],[[U,`sparc`]],[/(avr32|ia64(?=;)|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[U,Cr]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[R,[V,pr],[B,G]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?\d+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[R,[V,pr],[B,W]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[R,[V,tr],[B,W]],[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[R,[V,tr],[B,G]],[/(macintosh);/i],[R,[V,tr]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[R,[V,mr],[B,W]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[R,[V,cr],[B,G]],[/(?:huawei|honor)([-\w ]+)[;)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][0-359c][adn]?)\b(?!.+d\/s)/i],[R,[V,cr],[B,W]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?[\w ]+)(?: bui|\))/i,/oid[^)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?\d?\w?[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[R,/_/g,` `],[V,gr],[B,W]],[/oid[^)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?pad[\w ]+)(?: bui|\))/i],[[R,/_/g,` `],[V,gr],[B,G]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[R,[V,`OPPO`],[B,W]],[/\b(opd2\d{3}a?) bui/i],[R,[V,`OPPO`],[B,G]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[R,[V,`Vivo`],[B,W]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[R,[V,`Realme`],[B,W]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w() ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[R,[V,dr],[B,W]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[R,[V,dr],[B,G]],[/((?=lg)?[vl]k-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[R,[V,lr],[B,G]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?(\w+) bui/i],[R,[V,lr],[B,W]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab[\w ]+|yt[-\w]{6}|tb[-\w]{6})/i],[R,[V,`Lenovo`],[B,G]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w.]*)/i],[[R,/_/g,` `],[V,`Nokia`],[B,W]],[/(pixel c)\b/i],[R,[V,sr],[B,G]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[R,[V,sr],[B,W]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]?\d\.))/i],[R,[V,hr],[B,W]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[R,`Xperia Tablet`],[V,hr],[B,G]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[R,[V,`OnePlus`],[B,W]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[R,[V,er],[B,G]],[/((?:sd|kf)[0349hijor-uw]+)( bui|\)).+silk\//i],[[R,/(.+)/g,`Fire Phone $1`],[V,er],[B,W]],[/(playbook);[-\w),; ]+(rim)/i],[R,V,[B,G]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[R,[V,rr],[B,W]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[R,[V,nr],[B,G]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[R,[V,nr],[B,W]],[/(nexus 9)/i],[R,[V,`HTC`],[B,G]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!;|\.)|sony(?!-bra))[-_ ]?([-\w]*)/i],[V,[R,/_/g,` `],[B,W]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[R,[V,`Acer`],[B,G]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[R,[V,`Meizu`],[B,W]],[/; ((?:power )?armor[\w ]{0,8})(?: bui|\))/i],[R,[V,`Ulefone`],[B,W]],[/(blackberry|benq|palm(?=-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[V,R,[B,W]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[V,R,[B,G]],[/(surface duo)/i],[R,[V,ur],[B,G]],[/droid [\d.]+; (fp\du?)(?: b|\))/i],[R,[V,`Fairphone`],[B,W]],[/(u304aa)/i],[R,[V,`AT&T`],[B,W]],[/\bsie-(\w*)/i],[R,[V,`Siemens`],[B,W]],[/\b(rct\w+) b/i],[R,[V,`RCA`],[B,G]],[/\b(venue[\d ]{2,7}) b/i],[R,[V,`Dell`],[B,G]],[/\b(q(?:mv|ta)\w+) b/i],[R,[V,`Verizon`],[B,G]],[/\b(?:barnes[& ]+noble |bn[rt])([\w+ ]*) b/i],[R,[V,`Barnes & Noble`],[B,G]],[/\b(tm\d{3}\w+) b/i],[R,[V,`NuVision`],[B,G]],[/\b(k88) b/i],[R,[V,`ZTE`],[B,G]],[/\b(nx\d{3}j) b/i],[R,[V,`ZTE`],[B,W]],[/\b(gen\d{3}) b.+49h/i],[R,[V,`Swiss`],[B,W]],[/\b(zur\d{3}) b/i],[R,[V,`Swiss`],[B,G]],[/\b((zeki)?tb.*\b) b/i],[R,[V,`Zeki`],[B,G]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[V,`Dragon Touch`],R,[B,G]],[/\b(ns-?\w{0,9}) b/i],[R,[V,`Insignia`],[B,G]],[/\b((nxa|next)-?\w{0,9}) b/i],[R,[V,`NextBook`],[B,G]],[/\b(xtreme_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[V,`Voice`],R,[B,W]],[/\b(lvtel-)?(v1[12]) b/i],[[V,`LvTel`],R,[B,W]],[/\b(ph-1) /i],[R,[V,`Essential`],[B,W]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[R,[V,`Envizen`],[B,G]],[/\b(trio[-\w. ]+) b/i],[R,[V,`MachSpeed`],[B,G]],[/\btu_(1491) b/i],[R,[V,`Rotor`],[B,G]],[/(shield[\w ]+) b/i],[R,[V,`Nvidia`],[B,G]],[/(sprint) (\w+)/i],[V,R,[B,W]],[/(kin\.[onetw]{3})/i],[[R,/\./g,` `],[V,ur],[B,W]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[R,[V,_r],[B,G]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[R,[V,_r],[B,W]],[/smart-tv.+(samsung)/i],[V,[B,K]],[/hbbtv.+maple;(\d+)/i],[[R,/^/,`SmartTV`],[V,pr],[B,K]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[V,lr],[B,K]],[/(apple) ?tv/i],[V,[R,`${tr} TV`],[B,K]],[/crkey/i],[[R,`${ir}cast`],[V,sr],[B,K]],[/droid.+aft(\w+)( bui|\))/i],[R,[V,er],[B,K]],[/\(dtv[);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[R,[V,mr],[B,K]],[/(bravia[\w ]+)( bui|\))/i],[R,[V,hr],[B,K]],[/(mitv-\w{5}) bui/i],[R,[V,gr],[B,K]],[/Hbbtv.*(technisat) (.*);/i],[V,R,[B,K]],[/\b(roku)[\dx]*[)/]((?:dvp-)?[\d.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w+ ]*; *(\w[^;]*);([^;]*)/i],[[V,Er],[R,Er],[B,K]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[B,K]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[V,R,[B,Zn]],[/droid.+; (shield) bui/i],[R,[V,`Nvidia`],[B,Zn]],[/(playstation [345portablevi]+)/i],[R,[V,hr],[B,Zn]],[/\b(xbox(?: one)?(?!; xbox))[); ]/i],[R,[V,ur],[B,Zn]],[/((pebble))app/i],[V,R,[B,q]],[/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i],[R,[V,tr],[B,q]],[/droid.+; (glass) \d/i],[R,[V,sr],[B,q]],[/droid.+; (wt63?0{2,3})\)/i],[R,[V,_r],[B,q]],[/(quest( \d| pro)?)/i],[R,[V,vr],[B,q]],[/(tesla)(?: qtcarbrowser|\/[-\w.]+)/i],[V,[B,Qn]],[/(aeobc)\b/i],[R,[V,er],[B,Qn]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[R,[B,W]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[R,[B,G]],[/\b((tablet|tab)[;/]|focus\/\d(?!.+mobile))/i],[[B,G]],[/(phone|mobile(?:[;/]| [ \w/.]*safari)|pda(?=.+windows ce))/i],[[B,W]],[/(android[-\w. ]{0,9});.+buil/i],[R,[V,`Generic`]]],engine:[[/windows.+ edge\/([\w.]+)/i],[H,[z,`${ar}HTML`]],[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i],[H,[z,`Blink`]],[/(presto)\/([\w.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w.]+)/i,/ekioh(flow)\/([\w.]+)/i,/(khtml|tasman|links)[/ ]\(?([\w.]+)/i,/(icab)[/ ]([23]\.[\d.]+)/i,/\b(libweb)/i],[z,H],[/rv:([\w.]{1,9})\b.+(gecko)/i],[H,z]],os:[[/microsoft (windows) (vista|xp)/i],[z,H],[/(windows (?:phone(?: os)?|mobile))[/ ]?([.\w ]*)/i],[z,[H,Or,Ar]],[/windows nt 6\.2; (arm)/i,/windows[/ ]?([ntce\d. ]+\w)(?!.+xbox)/i,/(?:win(?=[39n])|win 9x )([nt\d.]+)/i],[[H,Or,Ar],[z,`Windows`]],[/ip[honead]{2,4}\b(?:.*os (\w+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[/ ])([\d.]+)/i,/cfnetwork\/.+darwin/i],[[H,/_/g,`.`],[z,`iOS`]],[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[z,br],[H,/_/g,`.`]],[/droid ([\w.]+)\b.+(android[- ]x86|harmonyos)/i],[H,z],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-/ ]?([\w.]*)/i,/(blackberry)\w*\/([\w.]*)/i,/(tizen|kaios)[/ ]([\w.]+)/i,/\((series40);/i],[z,H],[/\(bb(10);/i],[H,[z,rr]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-/ ]?([\w.]*)/i],[H,[z,`Symbian`]],[/mozilla\/[\d.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w.]+)/i],[H,[z,`${or} OS`]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w.]+)/i],[H,[z,`webOS`]],[/watch(?: ?os[,/]|\d,\d\/)([\d.]+)/i],[H,[z,`watchOS`]],[/crkey\/([\d.]+)/i],[H,[z,`${ir}cast`]],[/(cros) \w+(?:\)| ([\w.]+)\b)/i],[[z,yr],H],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w.]*)/i,/(mint)[/() ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-/ ]?(?!chrom|package)([-\w.]*)/i,/(hurd|linux) ?([\w.]*)/i,/(gnu) ?([\w.]*)/i,/\b([-e-hrntopcs]{0,5}bsd|dragonfly)[/ ]?(?!amd|[ix346]{1,2}86)([\w.]*)/i,/(haiku) (\w+)/i],[z,H],[/(sunos) ?([\w.]*)/i],[[z,`Solaris`],H],[/((?:open)?solaris)[-/ ]?([\w.]*)/i,/(aix) ((\d)(?=[.) ])[\w.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w.]*)/i],[z,H]]};function Mr(e){return typeof e==`object`&&!!e}Object.freeze(Sr([z,H,Xn])),Object.freeze(Sr([U])),Object.freeze(Sr([R,V,B,Zn,W,K,G,q,Qn])),Object.freeze(Sr([z,H])),Object.freeze(Sr([z,H]));function Nr(){if(!(typeof window>`u`||!window.navigator))return window.navigator}function Pr(e){return e.length>$n?Er(e,$n):e}function Fr(e){if(typeof e==`string`)return{ua:Pr(e),isSelfNavigator:!1,navigator:void 0,userAgentData:void 0,regexMap:jr};let t=Nr(),n=Pr(t&&t.userAgent?t.userAgent:Jn);return{ua:n,isSelfNavigator:!!(t&&t.userAgent===n),navigator:t,userAgentData:t?.userAgentData,regexMap:jr}}function Ir(e,t){if(!t&&!Mr(e))return Fr(e);let n=Nr(),r=Mr(e)?void 0:e,i=Mr(e)?e:t,a=Pr(r||(n&&n.userAgent?n.userAgent:Jn)),o=n?.userAgentData;return{ua:a,isSelfNavigator:!!(n&&n.userAgent===a),navigator:n,userAgentData:o,regexMap:i?xr(jr,i):jr}}function Lr(e){let t={name:void 0,version:void 0,major:void 0};return Dr(e.ua,e.regexMap.browser,t),t.major=Tr(t.version),e.isSelfNavigator&&e.navigator?.brave&&typeof e.navigator.brave.isBrave==`function`&&(t.name=`Brave`),t}function Rr(e){let t={architecture:void 0};return Dr(e.ua,e.regexMap.cpu,t),t}function zr(e){let t={vendor:void 0,model:void 0,type:void 0};return Dr(e.ua,e.regexMap.device,t),e.isSelfNavigator&&!t.type&&e.userAgentData?.mobile&&(t.type=W),e.isSelfNavigator&&t.model===`Macintosh`&&e.navigator&&e.navigator.standalone!==void 0&&e.navigator.maxTouchPoints&&e.navigator.maxTouchPoints>2&&(t.model=`iPad`,t.type=G),t}function Br(e){let t={name:void 0,version:void 0};return Dr(e.ua,e.regexMap.engine,t),t}function Vr(e){let t={name:void 0,version:void 0};return Dr(e.ua,e.regexMap.os,t),e.isSelfNavigator&&!t.name&&e.userAgentData?.platform&&e.userAgentData.platform!==`Unknown`&&(t.name=e.userAgentData.platform.replace(/chrome os/i,yr).replace(/macos/i,br)),t}function Hr(e,t){let n,r,i,a,o,s,c=()=>n||=Ir(e,t);return{get ua(){return c().ua},get browser(){return r||=Lr(c()),r},get engine(){return i||=Br(c()),i},get os(){return a||=Vr(c()),a},get device(){return o||=zr(c()),o},get cpu(){return s||=Rr(c()),s}}}var Y=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Ur(e,t,n){let r=n.protocol===`https:`?`wss:`:`ws:`,i=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${n.hostname}:${e.port}`,i=new URL(e.path??`/`,`${r}//${t}`);return i.protocol=r,i.href}let t=new URL(e.path??``,i);return t.protocol=r,t.href}if(typeof e==`number`)return`${r}//${n.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Ee(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,i);return o.protocol=r,o.href}function Wr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=!1,u=`connecting`,d=null,f=qn(),p=Ur(n.websocket,r??`./`,location);function m(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(`connection:status`,e,n)}let h=new Set;function g(e){for(let t of[...h])t.reject(e)}function _(){return u===`disconnected`||u===`error`?new Y(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new Y(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function v(e,t){return new Promise((n,r)=>{let a=!1,o,s={reject(e){a||(l(),i.emit(`rpc:error`,e,t),r(e))}};function l(){a=!0,h.delete(s),o&&clearTimeout(o)}h.add(s),c>0&&(o=setTimeout(()=>{s.reject(new Y(`timeout`,`[devframe] RPC call "${t}" timed out after ${c}ms`))},c)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(`rpc:error`,n,t),r(n)})})}let y=new Map;for(let e of n.jsonSerializableMethods??[])y.set(e,{jsonSerializable:!0});let b=Un(a.functions,{channel:Kn({url:p,authToken:t,definitions:y,...s,onConnected(e){s.onConnected?.(e)},onError(e){m(`error`,e),i.emit(`connection:error`,e),g(new Y(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e})),s.onError?.(e)},onDisconnected(e){u!==`error`&&m(`disconnected`),g(new Y(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0})),s.onDisconnected?.(e)}}),rpcOptions:o});a.register({name:`devframe:auth:revoked`,type:`event`,handler:()=>{l=!1;let e=new Y(`auth`,`[devframe] The devframe server revoked this client's trust`);m(`unauthorized`,e),i.emit(`connection:error`,e),g(e),i.emit(`rpc:is-trusted:updated`,!1)}});let x=t;function ee(){let e=Hr(navigator.userAgent);return[e.browser.name,e.browser.version,`|`,e.os.name,e.os.version,e.device.type].filter(e=>e).join(` `)}async function te(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:ee(),origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),m(`connected`);else{let e=new Y(`auth`,`[devframe] The devframe server refused this client's credentials`);m(`unauthorized`,e),i.emit(`connection:error`,e)}return i.emit(`rpc:is-trusted:updated`,l),t.isTrusted}async function ne(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:ee(),origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),m(`connected`),i.emit(`rpc:is-trusted:updated`,!0)),t}async function S(){return l?!0:te(x??``)}async function re(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t=()=>{};return await Promise.race([f.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),l}return{get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:S,requestTrustWithToken:te,requestTrustWithCode:ne,ensureTrusted:re,call:(...e)=>{let t=String(e[0]),n=_();return n?(i.emit(`rpc:error`,n,t),Promise.reject(n)):v(b.$call(...e),t)},callEvent:(...e)=>{let t=_();if(t){i.emit(`rpc:error`,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=_();return n?(i.emit(`rpc:error`,n,t),Promise.reject(n)):v(b.$callOptional(...e),t)}}}function Gr(e){return e.includes(`:`)}function X(e,t){return Gr(t)?t:`${e}:${t}`}function Kr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return{async get(e){return(await a()).value()[e]},async set(e,t){(await a()).mutate(n=>{n[e]=t})},async delete(e){(await a()).mutate(t=>{delete t[e]})},async all(){return(await a()).value()},async onChange(e){return(await a()).on(`updated`,t=>e(t))}}}function qr(e,t){return{global:Kr(e,t,`global`),project:Kr(e,t,`project`)}}function Jr(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Gr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(X(t,n),...r)),callEvent:((n,...r)=>e.callEvent(X(t,n),...r)),callOptional:((n,...r)=>e.callOptional(X(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(X(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(X(t,n),r,i),upload:(n,r)=>e.streaming.upload(X(t,n),r)}},settings:qr(e,t),scope:e.scope}}var Yr=`__DEVFRAME_CONNECTION_META__`,Z=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Xr(e){let t=[()=>e,()=>localStorage.getItem(Z)??void 0,()=>window?.[Z],()=>globalThis?.[Z],()=>parent.window?.[Z]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Zr(e){try{localStorage.setItem(Z,e)}catch{}globalThis[Z]=e}function Qr(){let e=[()=>window?.[Yr],()=>globalThis?.[Yr],()=>parent.window?.[Yr]];for(let t of e)try{let e=t();if(e)return e}catch{}}async function $r(t={}){let{baseURL:n=`./`,rpcOptions:r={},cacheOptions:i=!1}=t,a=fe(),o=Array.isArray(n)?n:[n],s=t.connectionMeta||Qr(),c=o[0]??`./`;function l(){let t=Se(e,c);try{return new URL(t,globalThis.location?.href).href}catch{return t}}if(!s){let t=[];for(let n of o)try{s=await fetch(Se(e,n)).then(e=>e.json()),c=n,globalThis[Yr]=s;break}catch(e){t.push(e)}if(!s)throw Error(`Failed to get connection meta from ${o.join(`, `)}`,{cause:t})}let u=new se({functions:[],...typeof t.cacheOptions==`object`?t.cacheOptions:{}}),d={rpc:void 0},f=Xr(t.authToken);f&&Zr(f);let p=new ce(d);async function m(e){let t=[c,...o.filter(e=>e!==c)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Se(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let h=s.backend===`static`?await Sn({fetchJsonFromBases:m}):Wr({authToken:f,connectionMeta:s,metaBaseUrl:l(),events:a,clientRpc:p,callTimeout:t.callTimeout,rpcOptions:{...r,async onRequest(e,t,n){if(await r.onRequest?.call(this,e,t,n),i&&u?.validate(e.m)){if(u.has(e.m,e.a))return n(u.cached(e.m,e.a));let r=await t(e);u.apply(e,r)}else await t(e)}},wsOptions:t.wsOptions}),g;try{g=new BroadcastChannel(`devframe-auth`)}catch{}let _={events:a,get isTrusted(){return h.isTrusted},get status(){return h.status},get connectionError(){return h.connectionError},connectionMeta:s,ensureTrusted:h.ensureTrusted,requestTrust:h.requestTrust,requestTrustWithToken:async e=>(Zr(e),h.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await h.requestTrustWithCode(e);if(!t)return!1;Zr(t);try{g?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:h.call,callEvent:h.callEvent,callOptional:h.callOptional,client:p,sharedState:void 0,streaming:void 0,cacheManager:u,scope:void 0};_.sharedState=Xt(_),_.streaming=An(_);let v=new Map;_.scope=(e=>{if(!e)return _;let t=v.get(e);return t||(t=Jr(_,e),v.set(e,t)),t}),d.rpc=_,h.requestTrust();let y=t.otpParam??`devframe_otp`;return y&&Ae(_,{param:y}),g&&(g.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&_.requestTrustWithToken(e.data.authToken)}),_}var ei=$r,ti=`devframes-plugin-code-server:state`;function Q(...e){return e.filter(Boolean).join(` `)}function ni({variant:e=`primary`,size:t=`md`,class:n}={}){let r={primary:`btn-primary`,secondary:`btn-action`,outline:`btn-action`,ghost:`inline-flex items-center justify-center gap-1.5 rounded px2 py1 op75 hover:op100 hover:bg-active transition disabled:pointer-events-none disabled:op30!`,destructive:`btn-action text-error border-error/30!`,link:`inline-flex items-center gap-1.5 color-active hover:underline underline-offset-2`},i=t===`sm`?e===`primary`?`text-sm px-2.5! py-1!`:`text-sm`:t===`lg`?`text-base px-4! py-2!`:``;return Q(r[e],i,n)}function ri(e){return Q(`color-active hover:underline underline-offset-2`,e)}function ii(e){return Q(`inline-block size-4 rounded-full border-2 border-current border-t-transparent animate-spin`,e)}var ai={connecting:{icon:`i-ph-plugs-connected-duotone`,title:`Connecting…`,body:`Establishing a connection to the devframe server.`},disconnected:{icon:`i-ph-plugs-duotone`,title:`Disconnected`,body:`Lost the connection to the devframe server. Reload once it is back up.`},unauthorized:{icon:`i-ph-lock-key-duotone`,title:`Not authorized`,body:`Reopen the link printed by your dev server, then reload.`},error:{icon:`i-ph-warning-octagon-duotone`,title:`Connection failed`,body:`Could not reach the devframe server.`}};function oi(e){let t=document.createElement(`div`);t.className=`absolute inset-0 flex flex-col items-center justify-center gap-4 bg-base color-base p-8 text-center z-nav`,t.hidden=!0,e.append(t);function n(e,n){if(e===`connected`)return t.hidden=!0,t.replaceChildren(),!1;let r=ai[e];t.replaceChildren();let i=document.createElement(`div`);i.className=Q(r.icon,`text-4xl color-active`),t.append(i);let a=document.createElement(`div`);a.className=`flex flex-col gap-1`;let o=document.createElement(`p`);o.className=`text-lg font-medium`,o.textContent=r.title;let s=document.createElement(`p`);if(s.className=`text-sm color-muted max-w-sm`,s.textContent=r.body,a.append(o,s),n&&e===`error`){let e=document.createElement(`code`);e.className=`mt-1 max-w-sm break-words font-mono text-xs color-faint`,e.textContent=n,a.append(e)}if(t.append(a),e!==`connecting`){let e=document.createElement(`button`);e.type=`button`,e.className=ni({variant:`primary`,size:`sm`}),e.textContent=`Reload`,e.addEventListener(`click`,()=>location.reload()),t.append(e)}return t.hidden=!1,!0}return{update:n,dispose(){t.remove()}}}function si(e){let t=e.ownerDocument?.defaultView;return t?.HTMLIFrameElement?e instanceof t.HTMLIFrameElement:typeof HTMLIFrameElement<`u`?e instanceof HTMLIFrameElement:`src`in e}function ci(e={}){let t=new Map,n=new Map,r=e.maxPanes??1/0,i,a,o=0,s,c=!1,l=0;function u(){let t=e.document??globalThis.document;if(!t)throw Error("[iframe-pane] No document available. Provide `options.document` or run in a DOM environment.");return t}function d(){return u().defaultView}function f(){if(e.container){let t=e.container,n=t.ownerDocument.defaultView?.getComputedStyle(t).position;return(!n||n===`static`)&&(t.style.position=`relative`),t}if(!i){let t=u();i=t.createElement(`div`),i.setAttribute(`data-iframe-panes`,``),Object.assign(i.style,{position:`fixed`,inset:`0`,pointerEvents:`none`}),e.zIndex!=null&&(i.style.zIndex=String(e.zIndex)),t.body.appendChild(i)}return i}function p(){return!a&&typeof ResizeObserver<`u`&&(a=new ResizeObserver(e=>{for(let t of e)n.get(t.target)?.forEach(e=>e.update())})),a}function m(){if(s!=null)return;let e=d();if(!e){h();return}s=e.requestAnimationFrame(()=>{s=void 0,h()})}function h(){for(let e of n.values())for(let t of e)t.update()}let g=()=>m();function _(){let e=d();e&&(n.size>0?(e.addEventListener(`scroll`,g,{capture:!0,passive:!0}),e.addEventListener(`resize`,g,{passive:!0})):(e.removeEventListener(`scroll`,g,{capture:!0}),e.removeEventListener(`resize`,g),s!=null&&(e.cancelAnimationFrame(s),s=void 0)))}function v(e,t){let r=n.get(t);r||(r=new Set,n.set(t,r),p()?.observe(t)),r.add(e),_()}function y(e,t){let r=n.get(t);r&&(r.delete(e),r.size===0&&(n.delete(t),a?.unobserve(t)),_())}function b(e){e.element.style.pointerEvents=o>0?`none`:e.stateStyle.pointerEvents}function x(e){if(t.size<=r)return;let n=[...t.values()].filter(t=>!t.isMounted&&t!==e).sort((e,t)=>e.lastActiveAt-t.lastActiveAt);for(let e of n){if(t.size<=r)break;e.dispose()}}class ee{id;element;styleDefault;styleActive;styleHidden;stateKeys;target=null;isVisible=!1;isDisposed=!1;lastActiveAt=0;constructor(t,n){this.id=t,this.styleDefault={...e.styleDefault,...n.style},this.styleActive={opacity:`1`,pointerEvents:`auto`,...e.styleActive,...n.styleActive},this.styleHidden={opacity:`0.001`,pointerEvents:`none`,...e.styleHidden,...n.styleHidden},this.stateKeys=[...new Set([...Object.keys(this.styleActive),...Object.keys(this.styleHidden)])];let r=u(),i=this.element=n.element??r.createElement(n.tagName??`iframe`);if(i.setAttribute(`data-iframe-pane`,t),Object.assign(i.style,{display:`block`,position:`absolute`,left:`0px`,top:`0px`,border:`0`},this.styleDefault),n.attrs)for(let[e,t]of Object.entries(n.attrs))i.setAttribute(e,t);this.applyState(),n.onCreated?.(i),n.src!=null&&si(i)&&(i.src=n.src),f().appendChild(i)}get iframe(){return si(this.element)?this.element:void 0}get isMounted(){return this.target!=null}get stateStyle(){return this.isVisible?this.styleActive:this.styleHidden}applyState(){let e=this.stateStyle,t={};for(let n of this.stateKeys)n in e||(t[n]=this.styleDefault[n]??``);Object.assign(this.element.style,t,e),o>0&&(this.element.style.pointerEvents=`none`)}touch(){this.lastActiveAt=++l}mount(e){this.assertNotDisposed(),this.target!==e&&(this.target&&y(this,this.target),this.target=e,v(this,e)),this.show()}unmount(){this.target&&=(y(this,this.target),null),this.hide()}show(){this.assertNotDisposed(),this.touch(),this.isVisible=!0,this.applyState(),this.update()}hide(){this.isDisposed||(this.isVisible=!1,this.applyState())}update(){if(this.isDisposed||!this.target||!this.isVisible)return;let e=this.target.getBoundingClientRect(),t=f().getBoundingClientRect();Object.assign(this.element.style,{left:`${e.left-t.left}px`,top:`${e.top-t.top}px`,width:`${e.width}px`,height:`${e.height}px`})}dispose(){this.isDisposed||(this.unmount(),this.isDisposed=!0,this.element.remove(),t.delete(this.id),e.onPaneDisposed?.(this))}assertNotDisposed(){if(this.isDisposed)throw Error(`[iframe-pane] Pane "${this.id}" has been disposed`)}}return{list(){return[...t.values()]},get(e){return t.get(e)},has(e){return t.has(e)},ensure:((n,r={})=>{if(c)throw Error(`[iframe-pane] Manager has been disposed`);let i=t.get(n);return i?i.touch():(i=new ee(n,r),i.touch(),t.set(n,i),e.onPaneCreated?.(i),x(i)),i}),get maxPanes(){return r},set maxPanes(e){r=e,x()},get isPointerLocked(){return o>0},lockPointerEvents(){o++,t.forEach(b);let e=!1;return()=>{e||(e=!0,o--,t.forEach(b))}},updateAll:h,get container(){return e.container??i},get isDisposed(){return c},dispose(){if(!c){c=!0;for(let e of[...t.values()])e.dispose();a?.disconnect(),a=void 0,_(),i?.remove(),i=void 0}}}}var li=`https://coder.com/docs/code-server/latest/install`,ui=`https://github.com/coder/code-server`,di=ci(),fi=0,pi=[{label:`Install script (Linux / macOS)`,command:`curl -fsSL https://code-server.dev/install.sh | sh`},{label:`npm`,command:`npm install -g code-server`},{label:`Homebrew`,command:`brew install code-server`}];function mi(e){let{detection:t,server:n,auth:r,busy:i}=e;return n.status===`running`&&n.port!=null?r?`running`:`starting`:n.status===`starting`||i&&n.status!==`error`?`starting`:t.checked?t.installed?`launch`:`not-installed`:`connecting`}function $(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function hi(e,t=``){return $(`span`,Q(e,`shrink-0`,t))}function gi(){let e=$(`p`,`flex items-center gap-1.5 mb-2.5 text-xs tracking-wider uppercase color-muted`);return e.append(hi(`i-ph-code-duotone`,`text-sm`),document.createTextNode(`code-server`)),e}function _i(e){return`${location.protocol}//${location.hostname}:${e}/`}function vi(e){document.cookie=`${e.cookieName}=${e.cookieValue}; path=/; SameSite=Lax`}function yi(e,t={}){let n=t.resolveEditorUrl??_i,r=t.applyAuth??vi,i=()=>t.actions?.launch?.(),a=()=>t.actions?.recheck?.(),o=$(`div`,`absolute inset-0 flex flex-col of-hidden bg-base color-base font-sans`);e.append(o);let s=`code-server-editor-${++fi}`,c=$(`div`,`dcs-frame flex-1 w-full`),l=null;function u(...e){di.get(s)?.unmount(),l=null;let t=$(`div`,`flex-1 flex items-center justify-center p-6`),n=$(`div`,`w-full max-w-[560px]`);n.append(...e),t.append(n),o.replaceChildren(t)}function d(){let e=$(`div`,`flex items-center gap-2.5`);e.append($(`div`,ii(`color-muted`)),$(`span`,`text-sm color-muted`,`Connecting to devframe…`)),u(e)}function f(e){let t=[];t.push(gi()),t.push($(`h1`,`mb-2 text-[1.35rem] font-semibold`,`code-server is not installed`)),t.push($(`p`,`mb-5 text-sm leading-relaxed color-muted`,`Install code-server (VS Code in the browser) to open the editor here. Pick whichever fits your setup, then re-check.`));let n=$(`div`,`flex flex-col gap-3 mb-5`);for(let{label:e,command:t}of pi){let r=$(`div`);r.append($(`label`,`block mb-1 text-xs color-muted`,e));let i=$(`div`,`flex items-center gap-2 px-2.5 py-2 rounded-md border border-base bg-secondary`);i.append($(`code`,`flex-1 of-x-auto whitespace-nowrap font-mono text-xs color-base`,t));let a=$(`button`,ni({variant:`outline`,size:`sm`,class:`shrink-0 text-[11px]`}),`Copy`);a.onclick=()=>{navigator.clipboard?.writeText(t).then(()=>{a.textContent=`Copied`,setTimeout(()=>{a.textContent=`Copy`},1200)}).catch(()=>{})},i.append(a),r.append(i),n.append(r)}t.push(n);let r=$(`div`,`flex flex-wrap items-center gap-2.5`),i=$(`button`,ni({variant:`primary`}));i.append(hi(`i-ph-arrows-clockwise`,Q(`size-4`,e&&`animate-spin`)),document.createTextNode(e?`Checking…`:`Re-check`)),i.disabled=e,i.onclick=a,r.append(i),r.append(g(`Installation docs`,li)),r.append(g(`GitHub`,ui)),t.push(r),u(...t)}function p(e){let{detection:t,server:n,busy:r}=e,a=[];a.push(gi()),a.push($(`h1`,`mb-2 text-[1.35rem] font-semibold`,`Launch the editor`)),a.push($(`p`,`mb-5 text-sm leading-relaxed color-muted`,`Start a code-server instance scoped to this workspace and open VS Code right here. The server runs with a generated password and the editor is signed in automatically.`)),n.status===`error`&&n.error&&a.push($(`div`,`mb-4 px-3 py-2.5 rounded-md border border-error/35 bg-error/10 text-error text-sm whitespace-pre-wrap break-words`,n.error));let o=$(`div`,`flex flex-wrap gap-x-4 gap-y-1.5 mb-5 text-xs color-muted`);if(t.version){let e=$(`span`);e.append(document.createTextNode(`version `),$(`code`,`font-mono color-base`,t.version)),o.append(e)}let s=$(`span`);s.append(document.createTextNode(`binary `),$(`code`,`font-mono color-base`,t.bin)),o.append(s),a.push(o);let c=$(`div`,`flex flex-wrap items-center gap-2.5`),l=$(`button`,ni({variant:`primary`}));r?l.append($(`span`,ii()),document.createTextNode(`Starting…`)):l.append(hi(`i-ph-rocket-launch-duotone`,`size-4`),document.createTextNode(`Launch code-server`)),l.disabled=r??!1,l.onclick=i,c.append(l),a.push(c),u(...a)}function m(){let e=$(`div`,`flex items-center gap-2.5`);e.append($(`div`,ii(`color-muted`)),$(`span`,`text-sm color-muted`,`Starting code-server…`)),u(e)}function h(e){let t=n(e.server.port);l!==t&&(e.auth&&r(e.auth),l=t);let i=di.ensure(s,{src:t,attrs:{allow:`clipboard-read; clipboard-write; cross-origin-isolated`},style:{border:`0`}});i.iframe.src!==t&&(i.iframe.src=t),o.firstElementChild!==c&&o.replaceChildren(c),i.mount(c)}function g(e,t){let n=$(`a`,ri(`inline-flex items-center gap-1 text-sm`));return n.append(document.createTextNode(e),hi(`i-ph-arrow-square-out`,`size-3.5`)),n.href=t,n.target=`_blank`,n.rel=`noreferrer`,n}function _(e){switch(mi(e)){case`running`:h(e);break;case`starting`:m();break;case`connecting`:d();break;case`not-installed`:f(e.busy??!1);break;case`launch`:p(e);break}}return{update:_,dispose(){di.get(s)?.dispose(),o.remove()}}}async function bi(e,t={}){let n=t.rpc??await ei();n.connectionMeta.backend===`websocket`&&await n.ensureTrusted(5e3).catch(()=>{}),e.style.position||(e.style.position=`relative`);let r=oi(e),i=()=>{r.update(n.status,n.connectionError?.message)};i();let a=n.events.on(`connection:status`,i),o={checked:!1,installed:!1,bin:`code-server`},s={status:`stopped`},c,l=!1,u=!1,d=yi(e,{actions:{launch:h,recheck:_}});function f(){u||d.update({detection:o,server:s,auth:c,busy:l})}function p(e){o=e.detection,s=e.server,e.auth&&(c=e.auth)}async function m(e,...t){try{return await n.call(e,...t)}catch(e){s={status:`error`,error:e instanceof Error?e.message:String(e)};return}}async function h(){if(l)return;l=!0,f();let e=await m(`devframes-plugin-code-server:start`,{});e&&p(e),l=!1,f()}async function g(){if(l)return;l=!0,f();let e=await m(`devframes-plugin-code-server:stop`);e&&p(e),c=void 0,l=!1,f()}async function _(){l||(l=!0,f(),await m(`devframes-plugin-code-server:detect`),l=!1,f())}f();let v=await m(`devframes-plugin-code-server:status`);v&&p(v),f();let y=await n.sharedState.get(ti,{initialValue:{detection:o,server:s}}),b=y.value();o=b.detection??o,s=b.server??s;let x=y.on(`updated`,e=>{if(o=e.detection??o,s=e.server??s,s.status===`running`&&!c){m(`devframes-plugin-code-server:status`).then(e=>{e?.auth&&(c=e.auth),f()});return}f()});return f(),{rpc:n,stop:g,dispose(){u=!0,x?.(),a?.(),r.dispose(),d.dispose()}}}var xi=document.getElementById(`app`);if(!xi)throw Error(`#app mount node missing from index.html`);bi(xi).catch(e=>{xi.textContent=`Failed to connect: ${e instanceof Error?e.message:String(e)}`});
2
+ `)}}var te=ee(x);function ne(e,{method:t=`warn`}={}){console[t](te(e))}var S=y({docsBase:`https://devfra.me/errors`,reporters:[ne],codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is not \`true\` — MCP requires JSON-serializable data.`,fix:"Set `jsonSerializable: true` if the payload is JSON-safe, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."}}});function re(e){let t=e.cause instanceof Error?e.cause:ie(e.cause)?re(e.cause):e.cause,n=t===void 0?Error(e.message):Error(e.message,{cause:t});n.name=e.name;for(let t of Object.keys(e))t===`name`||t===`message`||t===`cause`||(n[t]=e[t]);return n}function ie(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}async function ae(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function oe(e,t){if(e.handler)return e.handler;let n=await ae(e,t);if(!n.handler)throw S.DF0024({name:e.name});return n.handler}var se=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>m(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},ce=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return oe(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw S.DF0021({name:e.name});le(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw S.DF0022({name:e.name});le(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await oe(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw S.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function le(e){if(e.agent&&e.jsonSerializable!==!0)throw S.DF0019({name:e.name})}function ue(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw C(t,`undefined`,r,e);return n}if(i===null)return n;if(typeof i==`bigint`)throw C(t,`BigInt`,r,e);if(typeof i==`object`){if(i instanceof Map)throw C(t,`Map`,r,e);if(i instanceof Set)throw C(t,`Set`,r,e);if(i instanceof Date)throw C(t,`Date`,r,e);if(Array.isArray(i))return n;let a=Object.getPrototypeOf(i);if(a!==null&&a!==Object.prototype)throw C(t,i.constructor?.name??`class instance`,r,e)}return n})}function C(e,t,n,r){let i=de(n,r);return S.DF0020({name:e||`<anonymous>`,type:t,path:i})}function de(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}function fe(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}String.fromCharCode;var pe=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,me=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,he=/^([/\\]\s*){2,}[^/\\]/,ge=/\/$|\/\?|\/#/,_e=/^\.?\//;function ve(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?pe.test(e):me.test(e)||(t.acceptRelative?he.test(e):!1)}function ye(e=``,t){return t?ge.test(e):e.endsWith(`/`)}function be(e=``,t){if(!t)return(ye(e)?e.slice(0,-1):e)||`/`;if(!ye(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function xe(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(ye(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function Se(e,t){if(Ce(t)||ve(e))return e;let n=be(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return Te(n,e)}function Ce(e){return!e||e===`/`}function we(e){return e&&e!==`/`}function Te(e,...t){let n=e||``;for(let e of t.filter(e=>we(e)))if(n){let t=e.replace(_e,``);n=xe(n)+t}else n=e;return n}function Ee(e,t){let n=e.match(me);return n||=e.match(/^\/{2,}/),n?t+e.slice(n[0].length):t+e}function De(e=n){try{return new URLSearchParams(globalThis.location?.search).get(e)||void 0}catch{return}}function Oe(e){try{let t=new URL(globalThis.location.href);if(!t.searchParams.has(e))return;t.searchParams.delete(e),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function ke(e=n){let t=De(e);return t&&Oe(e),t}async function Ae(e,t={}){let n=ke(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}var je=Symbol.for(`immer-nothing`),Me=Symbol.for(`immer-draftable`),w=Symbol.for(`immer-state`);function T(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var E=Object,D=E.getPrototypeOf,Ne=`constructor`,Pe=`prototype`,Fe=`configurable`,Ie=`enumerable`,Le=`writable`,Re=`value`,O=e=>!!e&&!!e[w];function k(e){return e?Ve(e)||Ge(e)||!!e[Me]||!!e[Ne]?.[Me]||Ke(e)||qe(e):!1}var ze=E[Pe][Ne].toString(),Be=new WeakMap;function Ve(e){if(!e||!N(e))return!1;let t=D(e);if(t===null||t===E[Pe])return!0;let n=E.hasOwnProperty.call(t,Ne)&&t[Ne];if(n===Object)return!0;if(!P(n))return!1;let r=Be.get(n);return r===void 0&&(r=Function.toString.call(n),Be.set(n,r)),r===ze}function He(e,t,n=!0){A(e)===0?(n?Reflect.ownKeys(e):E.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function A(e){let t=e[w];return t?t.type_:Ge(e)?1:Ke(e)?2:qe(e)?3:0}var j=(e,t,n=A(e))=>n===2?e.has(t):E[Pe].hasOwnProperty.call(e,t),M=(e,t,n=A(e))=>n===2?e.get(t):e[t],Ue=(e,t,n,r=A(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function We(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ge=Array.isArray,Ke=e=>e instanceof Map,qe=e=>e instanceof Set,N=e=>typeof e==`object`,P=e=>typeof e==`function`,Je=e=>typeof e==`boolean`;function Ye(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Xe=e=>N(e)?e?.[w]:null,F=e=>e.copy_||e.base_,Ze=e=>e.modified_?e.copy_:e.base_;function Qe(e,t){if(Ke(e))return new Map(e);if(qe(e))return new Set(e);if(Ge(e))return Array[Pe].slice.call(e);let n=Ve(e);if(t===!0||t===`class_only`&&!n){let t=E.getOwnPropertyDescriptors(e);delete t[w];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Le]===!1&&(a[Le]=!0,a[Fe]=!0),(a.get||a.set)&&(t[i]={[Fe]:!0,[Le]:!0,[Ie]:a[Ie],[Re]:e[i]})}return E.create(D(e),t)}else{let t=D(e);if(t!==null&&n)return{...e};let r=E.create(t);return E.assign(r,e)}}function $e(e,t=!1){return nt(e)||O(e)||!k(e)?e:(A(e)>1&&E.defineProperties(e,{set:tt,add:tt,clear:tt,delete:tt}),E.freeze(e),t&&He(e,(e,t)=>{$e(t,!0)},!1),e)}function et(){T(2)}var tt={[Re]:et};function nt(e){return e===null||!N(e)?!0:E.isFrozen(e)}var rt=`MapSet`,it=`Patches`,at=`ArrayMethods`,ot={};function I(e){let t=ot[e];return t||T(0,e),t}var st=e=>!!ot[e];function ct(e,t){ot[e]||(ot[e]=t)}var lt,ut=()=>lt,dt=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:st(rt)?I(rt):void 0,arrayMethodsPlugin_:st(at)?I(at):void 0});function ft(e,t){t&&(e.patchPlugin_=I(it),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function pt(e){mt(e),e.drafts_.forEach(gt),e.drafts_=null}function mt(e){e===lt&&(lt=e.parent_)}var ht=e=>lt=dt(lt,e);function gt(e){let t=e[w];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function _t(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[w].modified_&&(pt(t),T(4)),k(e)&&(e=vt(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[w].base_,e,t)}else e=vt(t,n);return yt(t,e,!0),pt(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===je?void 0:e}function vt(e,t){if(nt(t))return t;let n=t[w];if(!n)return Dt(t,e.handledSet_,e);if(!xt(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Tt(n,e)}return n.copy_}function yt(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&$e(t,n)}function bt(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var xt=(e,t)=>e.scope_===t,St=[];function Ct(e,t,n,r){let i=F(e),a=e.type_;if(r!==void 0&&M(i,r,a)===t){Ue(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;He(i,(e,n)=>{if(O(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??St;for(let e of o)Ue(i,e,n,a)}function wt(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!xt(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ze(i);Ct(e,i.draft_??i,a,n),Tt(i,r)})}function Tt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}bt(e)}}function Et(e,t,n){let{scope_:r}=e;if(O(n)){let i=n[w];xt(i,r)&&i.callbacks_.push(function(){Ft(e),Ct(e,n,Ze(i),t)})}else k(n)&&e.callbacks_.push(function(){let i=F(e);e.type_===3?i.has(n)&&Dt(n,r.handledSet_,r):M(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Dt(M(e.copy_,t,e.type_),r.handledSet_,r)})}function Dt(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||O(e)||t.has(e)||!k(e)||nt(e)?e:(t.add(e),He(e,(r,i)=>{if(O(i)){let t=i[w];xt(t,n)&&(Ue(e,r,Ze(t),e.type_),bt(t))}else k(i)&&Dt(i,t,n)}),e)}function Ot(e,t){let n=Ge(e),r={type_:+!!n,scope_:t?t.scope_:ut(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=kt;n&&(i=[r],a=At);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var kt={get(e,t){if(t===w)return e;if(t===`constructor`||t===`__proto__`){let n=F(e)[t];return new Proxy(n||{},{get:(e,t)=>t===`__proto__`||t===`prototype`?Object.freeze(Object.create(null)):Reflect.get(e,t),set:()=>!0,apply:(e,t,n)=>Reflect.apply(e,t,n)})}let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=F(e);if(!j(i,t,e.type_))return Mt(e,i,t);let a=i[t];if(e.finalized_||!k(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Ye(t))return a;if(a===jt(e.base_,t)){Ft(e);let n=e.type_===1?+t:t,r=Lt(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t===`constructor`||t===`__proto__`||t===`prototype`?!1:t in F(e)},ownKeys(e){return Reflect.ownKeys(F(e))},set(e,t,n){if(t===`constructor`||t===`__proto__`||t===`prototype`)return!0;let r=Nt(F(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=jt(F(e),t),i=r?.[w];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(We(n,r)&&(n!==void 0||j(e.base_,t,e.type_)))return!0;Ft(e),Pt(e)}return e.copy_[t]===n&&(n!==void 0||j(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Et(e,t,n),!0)},deleteProperty(e,t){return Ft(e),jt(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Pt(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=F(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Le]:!0,[Fe]:e.type_!==1||t!==`length`,[Ie]:r[Ie],[Re]:n[t]}},defineProperty(){T(11)},getPrototypeOf(e){return D(e.base_)},setPrototypeOf(){T(12)}},At={};for(let e in kt){let t=kt[e];At[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}At.deleteProperty=function(e,t){return At.set.call(this,e,t,void 0)},At.set=function(e,t,n){return kt.set.call(this,e[0],t,n,e[0])};function jt(e,t){let n=e[w];return(n?F(n):e)[t]}function Mt(e,t,n){let r=Nt(t,n);return r?Re in r?r[Re]:r.get?.call(e.draft_):void 0}function Nt(e,t){if(!(t in e))return;let n=D(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=D(n)}}function Pt(e){e.modified_||(e.modified_=!0,e.parent_&&Pt(e.parent_))}function Ft(e){e.copy_||=(e.assigned_=new Map,Qe(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var It=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(P(e)&&!P(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}P(t)||T(6),n!==void 0&&!P(n)&&T(7);let r;if(k(e)){let i=ht(this),a=Lt(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?pt(i):mt(i)}return ft(i,n),_t(r,i)}else if(!e||!N(e)){if(r=t(e),r===void 0&&(r=e),r===je&&(r=void 0),this.autoFreeze_&&$e(r,!0),n){let t=[],i=[];I(it).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else T(1,e)},this.produceWithPatches=(e,t)=>{if(P(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Je(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Je(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Je(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){k(e)||T(8),O(e)&&(e=Rt(e));let t=ht(this),n=Lt(t,e,void 0);return n[w].isManual_=!0,mt(t),n}finishDraft(e,t){let n=e&&e[w];(!n||!n.isManual_)&&T(9);let{scope_:r}=n;return ft(r,t),_t(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=I(it).applyPatches_;return O(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Lt(e,t,n,r){let[i,a]=Ke(t)?I(rt).proxyMap_(t,n):qe(t)?I(rt).proxySet_(t,n):Ot(t,n);return(n?.scope_??ut()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?wt(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Rt(e){return O(e)||T(10,e),zt(e)}function zt(e){if(!k(e)||nt(e))return e;let t=e[w],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Qe(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Qe(e,!0);return He(n,(e,t)=>{Ue(n,e,zt(t))},r),t&&(t.finalized_=!1),n}function Bt(){function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Xe(M(e,n.key_)),i=M(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||j(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=M(n,r),!N(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[w];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;He(e.assigned_,(e,l)=>{let u=M(o,e,c),f=M(s,e,c),p=l?j(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===je?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=A(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===Ne)&&T(19),P(o)&&n===Pe&&T(19),o=M(o,n),N(o)||T(18,i.join(`/`))}let s=A(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:T(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:T(17,a)}}),e}function u(e){if(!k(e))return e;if(Ge(e))return e.map(u);if(Ke(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(qe(e))return new Set(Array.from(e).map(u));let t=Object.create(D(e));for(let n in e)t[n]=u(e[n]);return j(e,Me)&&(t[Me]=e[Me]),t}function d(e){return O(e)?u(e):e}ct(it,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}var Vt=new It,Ht=Vt.produce,Ut=Vt.produceWithPatches.bind(Vt),Wt=Vt.applyPatches.bind(Vt),Gt=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kt(e=21){let t=``,n=e;for(;n--;)t+=Gt[Math.random()*64|0];return t}var qt=1e3;function Jt(e,t){if(e.add(t),e.size>qt){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Yt(e){let{enablePatches:t=!1}=e,n=fe(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kt())=>{i.has(t)||(Bt(),r=Wt(r,e),Jt(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kt())=>{if(!i.has(a))if(Jt(i,a),t){let[t,i]=Ut(r,e);r=t,n.emit(`updated`,r,i,a)}else r=Ht(r,e),n.emit(`updated`,r,void 0,a)},syncIds:i}}function Xt(e){let t=new Map,n=new Map,r=new Set,i=e.connectionMeta.backend===`static`;function a(e,t){let r=n.get(e);return r&&typeof r==`object`&&!Array.isArray(r)&&typeof t==`object`&&!Array.isArray(t)?{...r,...t}:t}e.client.register({name:`devframe:rpc:client-state:updated`,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.mutate(()=>a(e,n),r)}}),e.client.register({name:`devframe:rpc:client-state:patch`,type:`event`,handler:(e,n,r)=>{let i=t.get(e);!i||i.syncIds.has(r)||i.patch(n,r)}});function o(t,n){let r=[];return r.push(n.on(`updated`,(n,r,a)=>{i||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,a):e.callEvent(`devframe:rpc:server-state:set`,t,n,a))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return r.add(e),()=>{r.delete(e)}},get:async(s,c)=>{if(c?.initialValue!==void 0&&n.set(s,c.initialValue),t.has(s))return t.get(s);let l=Yt({initialValue:c?.initialValue,enablePatches:!1});async function u(){if(i||e.callEvent(`devframe:rpc:server-state:subscribe`,s),c?.initialValue!==void 0){t.set(s,l);for(let e of r)e(s);return e.call(`devframe:rpc:server-state:get`,s).then(e=>{e!==void 0&&l.mutate(()=>a(s,e))}).catch(e=>{console.error(`Error getting server state`,e)}),o(s,l),l}else{let n=await e.call(`devframe:rpc:server-state:get`,s);l.mutate(()=>a(s,n)),t.set(s,l);for(let e of r)e(s);return o(s,l),l}}return new Promise(t=>{if(e.isTrusted)u().then(t);else{t(l);let n=!1;e.events.on(`rpc:is-trusted:updated`,e=>{e&&!n&&(n=!0,u())})}})}}}var Zt=typeof self==`object`?self:globalThis;function Qt(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(new Zt[e](t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(new Zt[a](o),i)};return r}function $t(e){return Qt(new Map,e)(0)}var L=``,{toString:en}={},{keys:tn}=Object;function nn(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=en.call(e).slice(8,-1);switch(n){case`Array`:return[1,L];case`Object`:return[2,L];case`Date`:return[3,L];case`RegExp`:return[4,L];case`Map`:return[5,L];case`Set`:return[6,L];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function rn([e,t]){return e===0&&(t===`function`||t===`symbol`)}function an(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=nn(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of tn(r))(e||!rn(nn(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(rn(nn(n))||rn(nn(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!rn(nn(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function on(e,t={}){let n=[];return an(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:sn,stringify:cn}=JSON,ln={json:!0,lossy:!0};function un(e){return $t(sn(e))}function dn(e){return cn(on(e,ln))}function fn(e){return $t(e)}function pn(e){return dn(e)}function mn(e){return un(e)}function hn(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function gn(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function _n(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function vn(e){if(e.error)throw re(e.error);return e.output}function yn(e){return e.some(e=>e!=null)}function bn(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function xn(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?fn(e):e}function a(e,t){return i(bn(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return _n(r)?vn(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(hn(r)){if(yn(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(gn(r)){let e=m(n),i=r.records[e];if(i)return vn(await s(i,r.serialization));if(r.fallback)return vn(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!yn(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Sn(e){let n=xn(await e.fetchJsonFromBases(t),e.fetchJsonFromBases);return{isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,ensureTrusted:async()=>!0,call:(...e)=>n.call(e[0],e.slice(1)),callEvent:(...e)=>n.callEvent(e[0],e.slice(1)),callOptional:(...e)=>n.callOptional(e[0],e.slice(1))}}var Cn=256,wn=class extends Error{name=`StreamClosedError`};function Tn(e={}){let t=e.id??Kt(),n=Math.max(0,e.replayWindow??0),r=fe(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new wn(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=Dn(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function En(e={}){let t=e.id??Kt(),n=Math.max(1,e.highWaterMark??Cn),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function Dn(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var On=``;function kn(e,t){return`${e}${On}${t}`}function An(e){let t=new Map,n=new Map;e.client.register({name:`devframe:streaming:chunk`,type:`event`,handler(e,n,r,i){t.get(kn(e,n))?._push(r,i)}}),e.client.register({name:`devframe:streaming:end`,type:`event`,handler(e,n,r){let i=kn(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:`devframe:streaming:upload-cancel`,type:`event`,handler(e,t){let r=kn(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(`rpc:is-trusted:updated`,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(On);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=kn(n,r),o=t.get(a);if(o)return o;let s=En({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(`rpc:is-trusted:updated`,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=kn(t,r),a=n.get(i);if(a)return a;let o=Tn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}var jn=`q`,Mn=`s`;function Nn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Pn=Math.random.bind(Math),Fn=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function In(e=21){let t=``,n=e;for(;n--;)t+=Fn[Pn()*64|0];return t}var Ln=6e4,Rn=e=>e,zn=Rn,{clearTimeout:Bn,setTimeout:Vn}=globalThis;function Hn(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=Rn,deserialize:s=zn,resolver:c,bind:l=`rpc`,timeout:u=Ln,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:jn};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=Nn(),_=In();s.i=_;let v;async function y(n=s){return u>=0&&(v=Vn(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{Bn(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.prototype.hasOwnProperty.call(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===jn){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:Mn,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:Mn,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Bn(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function Un(e,t){let{channel:n,rpcOptions:r={}}=t;return Hn(e,{...n,timeout:-1,...r,proxify:!1})}function Wn(){}var Gn=new Map;function Kn(e){let t=e.url;e.authToken&&(t=`${t}?${r}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:i=Wn,onError:a=Wn,onDisconnected:o=Wn,definitions:s=Gn}=e;n.addEventListener(`open`,e=>{i(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);a(t)}),n.addEventListener(`close`,e=>{o(e)});let c=new Map;return{on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}a(Error(`Devframe WebSocket is not open; message dropped`))},serialize:e=>{let t;return e.t===`q`?t=e.m:(t=c.get(e.i),c.delete(e.i)),!(e.t===`s`&&`e`in e)&&t&&s.get(t)?.jsonSerializable===!0?ue(e,t??``):`s:${pn(e)}`},deserialize:e=>{let t=e.startsWith(`s:`)?mn(e.slice(2)):JSON.parse(e);return t.t===`q`&&t.i&&t.m&&c.set(t.i,t.m),t}}}function qn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Jn=``,Yn=`?`,Xn=`major`,R=`model`,z=`name`,B=`type`,V=`vendor`,H=`version`,U=`architecture`,Zn=`console`,W=`mobile`,G=`tablet`,K=`smarttv`,q=`wearable`,Qn=`embedded`,$n=500,er=`Amazon`,tr=`Apple`,nr=`ASUS`,rr=`BlackBerry`,J=`Browser`,ir=`Chrome`,ar=`Edge`,or=`Firefox`,sr=`Google`,cr=`Huawei`,lr=`LG`,ur=`Microsoft`,dr=`Motorola`,fr=`Opera`,pr=`Samsung`,mr=`Sharp`,hr=`Sony`,gr=`Xiaomi`,_r=`Zebra`,vr=`Facebook`,yr=`Chromium OS`,br=`Mac OS`;function xr(e,t={}){let n={};for(let r of Object.keys(e)){let i=t[r];i&&i.length%2==0?n[r]=[...i,...e[r]]:n[r]=e[r]}return n}function Sr(e){let t={};for(let n=0;n<e.length;n++)t[e[n].toUpperCase()]=e[n];return t}function Cr(e){return e.toLowerCase()}function wr(e,t){return typeof e==`string`?Cr(t).includes(Cr(e)):!1}function Tr(e){return typeof e==`string`?e.replace(/[^\d.]/g,Jn).split(`.`)[0]:void 0}function Er(e,t){let n=e.replace(/^\s+/,Jn);return t===void 0?n:n.substring(0,t)}function Dr(e,t,n){let r=n??{};for(let n=0;n<t.length;n+=2){let i=t[n],a=t[n+1];for(let t=0;t<i.length;t++){let n=i[t];if(!n)break;let o=n.exec(e);if(o){for(let e=0;e<a.length;e++){let t=o[e+1],n=a[e];if(Array.isArray(n)){let e=n[0],i=n.length;if(i===2){let i=n[1];typeof i==`function`?r[e]=i(t,void 0,r):r[e]=i}else if(i===3){let i=n[1],a=n[2];typeof i==`function`&&!(`exec`in i)&&!(`test`in i)?r[e]=t?i(t,a,r):void 0:r[e]=t?t.replace(i,a):void 0}else i===4&&(r[e]=t?n[3](t.replace(n[1],n[2]),void 0,r):void 0)}else r[n]=t||void 0}return r}}}return r}function Or(e,t){for(let n in t){let r=t[n];if(Array.isArray(r)&&r.length>0){for(let t=0;t<r.length;t++)if(wr(r[t],e))return n===Yn?void 0:n}else if(wr(r,e))return n===Yn?void 0:n}return e}var kr={"1.0":`/8`,"1.2":`/1`,"1.3":`/3`,"2.0":`/412`,"2.0.2":`/416`,"2.0.3":`/417`,"2.0.4":`/419`,"?":`/`},Ar={ME:`4.90`,"NT 3.11":`NT3.51`,"NT 4.0":`NT4.0`,2e3:`NT 5.0`,XP:[`NT 5.1`,`NT 5.2`],Vista:`NT 6.0`,7:`NT 6.1`,8:`NT 6.2`,"8.1":`NT 6.3`,10:[`NT 6.4`,`NT 10.0`],RT:`ARM`},jr={browser:[[/\b(?:crmo|crios)\/([\w.]+)/i],[H,[z,`Chrome`]],[/edg(?:e|ios|a)?\/([\w.]+)/i],[H,[z,`Edge`]],[/(opera mini)\/([-\w.]+)/i,/(opera [mobileta]{3,6})\b.+version\/([-\w.]+)/i,/(opera)(?:.+version\/|[/ ]+)([\w.]+)/i],[z,H],[/opios[/ ]+([\w.]+)/i],[H,[z,`${fr} Mini`]],[/\bop(?:rg)?x\/([\w.]+)/i],[H,[z,`${fr} GX`]],[/\bopr\/([\w.]+)/i],[H,[z,fr]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[/ ]?([\w.]+)/i],[H,[z,`Baidu`]],[/(kindle)\/([\w.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[/ ]?([\w.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[/ ]?([\w.]*)/i,/(?:ms|\()(ie) ([\w.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w.]+)/i,/(heytap|ovi)browser\/([\d.]+)/i,/(weibo)__([\d.]+)/i],[z,H],[/\bddg\/([\w.]+)/i],[H,[z,`DuckDuckGo`]],[/(?:\buc? ?browser|juc.+ucweb)[/ ]?([\w.]+)/i],[H,[z,`UC${J}`]],[/microm.+\bqbcore\/([\w.]+)/i,/\bqbcore\/([\w.]+).+microm/i,/micromessenger\/([\w.]+)/i],[H,[z,`WeChat`]],[/konqueror\/([\w.]+)/i],[H,[z,`Konqueror`]],[/trident.+rv[: ]([\w.]{1,9})\b.+like gecko/i],[H,[z,`IE`]],[/ya(?:search)?browser\/([\w.]+)/i],[H,[z,`Yandex`]],[/slbrowser\/([\w.]+)/i],[H,[z,`Smart Lenovo ${J}`]],[/(avast|avg)\/([\w.]+)/i],[[z,/(.+)/,`$1 Secure ${J}`],H],[/\bfocus\/([\w.]+)/i],[H,[z,`${or} Focus`]],[/\bopt\/([\w.]+)/i],[H,[z,`${fr} Touch`]],[/coc_coc\w+\/([\w.]+)/i],[H,[z,`Coc Coc`]],[/dolfin\/([\w.]+)/i],[H,[z,`Dolphin`]],[/coast\/([\w.]+)/i],[H,[z,`${fr} Coast`]],[/miuibrowser\/([\w.]+)/i],[H,[z,`MIUI ${J}`]],[/fxios\/([-\w.]+)/i],[H,[z,or]],[/\bqihu|(qi?ho{0,2}|360)browser/i],[[z,`360 ${J}`]],[/(oculus|sailfish|huawei|vivo)browser\/([\w.]+)/i],[[z,/(.+)/,`$1 ${J}`],H],[/samsungbrowser\/([\w.]+)/i],[H,[z,`${pr} Internet`]],[/(comodo_dragon)\/([\w.]+)/i],[[z,/_/g,` `],H],[/metasr[/ ]?([\d.]+)/i],[H,[z,`Sogou Explorer`]],[/(sogou)mo\w+\/([\d.]+)/i],[[z,`Sogou Mobile`],H],[/(electron)\/([\w.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w.]+))/i,/m?(qqbrowser|2345Explorer)[/ ]?([\w.]+)/i],[z,H],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[z],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w.]+);)/i],[[z,vr],H],[/(Klarna)\/([\w.]+)/i,/(kakao(?:talk|story))[/ ]([\w.]+)/i,/(naver)\(.*?(\d+\.[\w.]+).*\)/i,/safari (line)\/([\w.]+)/i,/\b(line)\/([\w.]+)\/iab/i,/(alipay)client\/([\w.]+)/i,/(twitter)(?:and| f.+e\/([\w.]+))/i,/(chromium|instagram|snapchat)[/ ]([-\w.]+)/i],[z,H],[/\bgsa\/([\w.]+) .*safari\//i],[H,[z,`GSA`]],[/musical_ly(?:.+app_?version\/|_)([\w.]+)/i],[H,[z,`TikTok`]],[/headlesschrome(?:\/([\w.]+)| )/i],[H,[z,`${ir} Headless`]],[/ wv\).+(chrome)\/([\w.]+)/i],[[z,`${ir} WebView`],H],[/droid.+ version\/([\w.]+)\b.+(?:mobile safari|safari)/i],[H,[z,`Android ${J}`]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w.]+)/i],[z,H],[/version\/([\w.,]+) .*mobile\/\w+ (safari)/i],[H,[z,`Mobile Safari`]],[/version\/([\w(.|,)]+) .*(mobile ?safari|safari)/i],[H,z],[/webkit.+?(mobile ?safari|safari)(\/[\w.]+)/i],[z,[H,Or,kr]],[/(webkit|khtml)\/([\w.]+)/i],[z,H],[/(navigator|netscape\d?)\/([-\w.]+)/i],[[z,`Netscape`],H],[/mobile vr; rv:([\w.]+)\).+firefox/i],[H,[z,`${or} Reality`]],[/ekiohf.+(flow)\/([\w.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[/ ]?([\w.+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w.]+)$/i,/(firefox)\/([\w.]+)/i,/(mozilla)\/([\w.]+) .+rv:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[. ]?browser)[-/ ]?v?([\w.]+)/i,/(links) \(([\w.]+)/i,/panasonic;(viera)/i],[z,H],[/(cobalt)\/([\w.]+)/i],[z,[H,/master.|lts./,``]]],cpu:[[/(amd|x(?:(?:86|64)[-_])?|wow|win)64[;)]/i],[[U,`amd64`]],[/(ia32(?=;))/i],[[U,Cr]],[/((?:i[346]|x)86)[;)]/i],[[U,`ia32`]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[U,`arm64`]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[U,`armhf`]],[/windows (ce|mobile); ppc;/i],[[U,`arm`]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[U,/ower/,Jn,Cr]],[/(sun4\w)[;)]/i],[[U,`sparc`]],[/(avr32|ia64(?=;)|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[U,Cr]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[R,[V,pr],[B,G]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?\d+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[R,[V,pr],[B,W]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[R,[V,tr],[B,W]],[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[R,[V,tr],[B,G]],[/(macintosh);/i],[R,[V,tr]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[R,[V,mr],[B,W]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[R,[V,cr],[B,G]],[/(?:huawei|honor)([-\w ]+)[;)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][0-359c][adn]?)\b(?!.+d\/s)/i],[R,[V,cr],[B,W]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?[\w ]+)(?: bui|\))/i,/oid[^)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?\d?\w?[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[R,/_/g,` `],[V,gr],[B,W]],[/oid[^)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?pad[\w ]+)(?: bui|\))/i],[[R,/_/g,` `],[V,gr],[B,G]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[R,[V,`OPPO`],[B,W]],[/\b(opd2\d{3}a?) bui/i],[R,[V,`OPPO`],[B,G]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[R,[V,`Vivo`],[B,W]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[R,[V,`Realme`],[B,W]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w() ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[R,[V,dr],[B,W]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[R,[V,dr],[B,G]],[/((?=lg)?[vl]k-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[R,[V,lr],[B,G]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?(\w+) bui/i],[R,[V,lr],[B,W]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab[\w ]+|yt[-\w]{6}|tb[-\w]{6})/i],[R,[V,`Lenovo`],[B,G]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w.]*)/i],[[R,/_/g,` `],[V,`Nokia`],[B,W]],[/(pixel c)\b/i],[R,[V,sr],[B,G]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[R,[V,sr],[B,W]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]?\d\.))/i],[R,[V,hr],[B,W]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[R,`Xperia Tablet`],[V,hr],[B,G]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[R,[V,`OnePlus`],[B,W]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[R,[V,er],[B,G]],[/((?:sd|kf)[0349hijor-uw]+)( bui|\)).+silk\//i],[[R,/(.+)/g,`Fire Phone $1`],[V,er],[B,W]],[/(playbook);[-\w),; ]+(rim)/i],[R,V,[B,G]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[R,[V,rr],[B,W]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[R,[V,nr],[B,G]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[R,[V,nr],[B,W]],[/(nexus 9)/i],[R,[V,`HTC`],[B,G]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!;|\.)|sony(?!-bra))[-_ ]?([-\w]*)/i],[V,[R,/_/g,` `],[B,W]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[R,[V,`Acer`],[B,G]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[R,[V,`Meizu`],[B,W]],[/; ((?:power )?armor[\w ]{0,8})(?: bui|\))/i],[R,[V,`Ulefone`],[B,W]],[/(blackberry|benq|palm(?=-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[V,R,[B,W]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[V,R,[B,G]],[/(surface duo)/i],[R,[V,ur],[B,G]],[/droid [\d.]+; (fp\du?)(?: b|\))/i],[R,[V,`Fairphone`],[B,W]],[/(u304aa)/i],[R,[V,`AT&T`],[B,W]],[/\bsie-(\w*)/i],[R,[V,`Siemens`],[B,W]],[/\b(rct\w+) b/i],[R,[V,`RCA`],[B,G]],[/\b(venue[\d ]{2,7}) b/i],[R,[V,`Dell`],[B,G]],[/\b(q(?:mv|ta)\w+) b/i],[R,[V,`Verizon`],[B,G]],[/\b(?:barnes[& ]+noble |bn[rt])([\w+ ]*) b/i],[R,[V,`Barnes & Noble`],[B,G]],[/\b(tm\d{3}\w+) b/i],[R,[V,`NuVision`],[B,G]],[/\b(k88) b/i],[R,[V,`ZTE`],[B,G]],[/\b(nx\d{3}j) b/i],[R,[V,`ZTE`],[B,W]],[/\b(gen\d{3}) b.+49h/i],[R,[V,`Swiss`],[B,W]],[/\b(zur\d{3}) b/i],[R,[V,`Swiss`],[B,G]],[/\b((zeki)?tb.*\b) b/i],[R,[V,`Zeki`],[B,G]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[V,`Dragon Touch`],R,[B,G]],[/\b(ns-?\w{0,9}) b/i],[R,[V,`Insignia`],[B,G]],[/\b((nxa|next)-?\w{0,9}) b/i],[R,[V,`NextBook`],[B,G]],[/\b(xtreme_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[V,`Voice`],R,[B,W]],[/\b(lvtel-)?(v1[12]) b/i],[[V,`LvTel`],R,[B,W]],[/\b(ph-1) /i],[R,[V,`Essential`],[B,W]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[R,[V,`Envizen`],[B,G]],[/\b(trio[-\w. ]+) b/i],[R,[V,`MachSpeed`],[B,G]],[/\btu_(1491) b/i],[R,[V,`Rotor`],[B,G]],[/(shield[\w ]+) b/i],[R,[V,`Nvidia`],[B,G]],[/(sprint) (\w+)/i],[V,R,[B,W]],[/(kin\.[onetw]{3})/i],[[R,/\./g,` `],[V,ur],[B,W]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[R,[V,_r],[B,G]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[R,[V,_r],[B,W]],[/smart-tv.+(samsung)/i],[V,[B,K]],[/hbbtv.+maple;(\d+)/i],[[R,/^/,`SmartTV`],[V,pr],[B,K]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[V,lr],[B,K]],[/(apple) ?tv/i],[V,[R,`${tr} TV`],[B,K]],[/crkey/i],[[R,`${ir}cast`],[V,sr],[B,K]],[/droid.+aft(\w+)( bui|\))/i],[R,[V,er],[B,K]],[/\(dtv[);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[R,[V,mr],[B,K]],[/(bravia[\w ]+)( bui|\))/i],[R,[V,hr],[B,K]],[/(mitv-\w{5}) bui/i],[R,[V,gr],[B,K]],[/Hbbtv.*(technisat) (.*);/i],[V,R,[B,K]],[/\b(roku)[\dx]*[)/]((?:dvp-)?[\d.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w+ ]*; *(\w[^;]*);([^;]*)/i],[[V,Er],[R,Er],[B,K]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[B,K]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[V,R,[B,Zn]],[/droid.+; (shield) bui/i],[R,[V,`Nvidia`],[B,Zn]],[/(playstation [345portablevi]+)/i],[R,[V,hr],[B,Zn]],[/\b(xbox(?: one)?(?!; xbox))[); ]/i],[R,[V,ur],[B,Zn]],[/((pebble))app/i],[V,R,[B,q]],[/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i],[R,[V,tr],[B,q]],[/droid.+; (glass) \d/i],[R,[V,sr],[B,q]],[/droid.+; (wt63?0{2,3})\)/i],[R,[V,_r],[B,q]],[/(quest( \d| pro)?)/i],[R,[V,vr],[B,q]],[/(tesla)(?: qtcarbrowser|\/[-\w.]+)/i],[V,[B,Qn]],[/(aeobc)\b/i],[R,[V,er],[B,Qn]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[R,[B,W]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[R,[B,G]],[/\b((tablet|tab)[;/]|focus\/\d(?!.+mobile))/i],[[B,G]],[/(phone|mobile(?:[;/]| [ \w/.]*safari)|pda(?=.+windows ce))/i],[[B,W]],[/(android[-\w. ]{0,9});.+buil/i],[R,[V,`Generic`]]],engine:[[/windows.+ edge\/([\w.]+)/i],[H,[z,`${ar}HTML`]],[/webkit\/537\.36.+chrome\/(?!27)([\w.]+)/i],[H,[z,`Blink`]],[/(presto)\/([\w.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w.]+)/i,/ekioh(flow)\/([\w.]+)/i,/(khtml|tasman|links)[/ ]\(?([\w.]+)/i,/(icab)[/ ]([23]\.[\d.]+)/i,/\b(libweb)/i],[z,H],[/rv:([\w.]{1,9})\b.+(gecko)/i],[H,z]],os:[[/microsoft (windows) (vista|xp)/i],[z,H],[/(windows (?:phone(?: os)?|mobile))[/ ]?([.\w ]*)/i],[z,[H,Or,Ar]],[/windows nt 6\.2; (arm)/i,/windows[/ ]?([ntce\d. ]+\w)(?!.+xbox)/i,/(?:win(?=[39n])|win 9x )([nt\d.]+)/i],[[H,Or,Ar],[z,`Windows`]],[/ip[honead]{2,4}\b(?:.*os (\w+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[/ ])([\d.]+)/i,/cfnetwork\/.+darwin/i],[[H,/_/g,`.`],[z,`iOS`]],[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[z,br],[H,/_/g,`.`]],[/droid ([\w.]+)\b.+(android[- ]x86|harmonyos)/i],[H,z],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-/ ]?([\w.]*)/i,/(blackberry)\w*\/([\w.]*)/i,/(tizen|kaios)[/ ]([\w.]+)/i,/\((series40);/i],[z,H],[/\(bb(10);/i],[H,[z,rr]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-/ ]?([\w.]*)/i],[H,[z,`Symbian`]],[/mozilla\/[\d.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w.]+)/i],[H,[z,`${or} OS`]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w.]+)/i],[H,[z,`webOS`]],[/watch(?: ?os[,/]|\d,\d\/)([\d.]+)/i],[H,[z,`watchOS`]],[/crkey\/([\d.]+)/i],[H,[z,`${ir}cast`]],[/(cros) \w+(?:\)| ([\w.]+)\b)/i],[[z,yr],H],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w.]*)/i,/(mint)[/() ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-/ ]?(?!chrom|package)([-\w.]*)/i,/(hurd|linux) ?([\w.]*)/i,/(gnu) ?([\w.]*)/i,/\b([-e-hrntopcs]{0,5}bsd|dragonfly)[/ ]?(?!amd|[ix346]{1,2}86)([\w.]*)/i,/(haiku) (\w+)/i],[z,H],[/(sunos) ?([\w.]*)/i],[[z,`Solaris`],H],[/((?:open)?solaris)[-/ ]?([\w.]*)/i,/(aix) ((\d)(?=[.) ])[\w.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w.]*)/i],[z,H]]};function Mr(e){return typeof e==`object`&&!!e}Object.freeze(Sr([z,H,Xn])),Object.freeze(Sr([U])),Object.freeze(Sr([R,V,B,Zn,W,K,G,q,Qn])),Object.freeze(Sr([z,H])),Object.freeze(Sr([z,H]));function Nr(){if(!(typeof window>`u`||!window.navigator))return window.navigator}function Pr(e){return e.length>$n?Er(e,$n):e}function Fr(e){if(typeof e==`string`)return{ua:Pr(e),isSelfNavigator:!1,navigator:void 0,userAgentData:void 0,regexMap:jr};let t=Nr(),n=Pr(t&&t.userAgent?t.userAgent:Jn);return{ua:n,isSelfNavigator:!!(t&&t.userAgent===n),navigator:t,userAgentData:t?.userAgentData,regexMap:jr}}function Ir(e,t){if(!t&&!Mr(e))return Fr(e);let n=Nr(),r=Mr(e)?void 0:e,i=Mr(e)?e:t,a=Pr(r||(n&&n.userAgent?n.userAgent:Jn)),o=n?.userAgentData;return{ua:a,isSelfNavigator:!!(n&&n.userAgent===a),navigator:n,userAgentData:o,regexMap:i?xr(jr,i):jr}}function Lr(e){let t={name:void 0,version:void 0,major:void 0};return Dr(e.ua,e.regexMap.browser,t),t.major=Tr(t.version),e.isSelfNavigator&&e.navigator?.brave&&typeof e.navigator.brave.isBrave==`function`&&(t.name=`Brave`),t}function Rr(e){let t={architecture:void 0};return Dr(e.ua,e.regexMap.cpu,t),t}function zr(e){let t={vendor:void 0,model:void 0,type:void 0};return Dr(e.ua,e.regexMap.device,t),e.isSelfNavigator&&!t.type&&e.userAgentData?.mobile&&(t.type=W),e.isSelfNavigator&&t.model===`Macintosh`&&e.navigator&&e.navigator.standalone!==void 0&&e.navigator.maxTouchPoints&&e.navigator.maxTouchPoints>2&&(t.model=`iPad`,t.type=G),t}function Br(e){let t={name:void 0,version:void 0};return Dr(e.ua,e.regexMap.engine,t),t}function Vr(e){let t={name:void 0,version:void 0};return Dr(e.ua,e.regexMap.os,t),e.isSelfNavigator&&!t.name&&e.userAgentData?.platform&&e.userAgentData.platform!==`Unknown`&&(t.name=e.userAgentData.platform.replace(/chrome os/i,yr).replace(/macos/i,br)),t}function Hr(e,t){let n,r,i,a,o,s,c=()=>n||=Ir(e,t);return{get ua(){return c().ua},get browser(){return r||=Lr(c()),r},get engine(){return i||=Br(c()),i},get os(){return a||=Vr(c()),a},get device(){return o||=zr(c()),o},get cpu(){return s||=Rr(c()),s}}}var Y=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Ur(e,t,n){let r=n.protocol===`https:`?`wss:`:`ws:`,i=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${n.hostname}:${e.port}`,i=new URL(e.path??`/`,`${r}//${t}`);return i.protocol=r,i.href}let t=new URL(e.path??``,i);return t.protocol=r,t.href}if(typeof e==`number`)return`${r}//${n.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Ee(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,i);return o.protocol=r,o.href}function Wr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=!1,u=`connecting`,d=null,f=qn(),p=Ur(n.websocket,r??`./`,location);function m(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(`connection:status`,e,n)}let h=new Set;function g(e){for(let t of[...h])t.reject(e)}function _(){return u===`disconnected`||u===`error`?new Y(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new Y(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function v(e,t){return new Promise((n,r)=>{let a=!1,o,s={reject(e){a||(l(),i.emit(`rpc:error`,e,t),r(e))}};function l(){a=!0,h.delete(s),o&&clearTimeout(o)}h.add(s),c>0&&(o=setTimeout(()=>{s.reject(new Y(`timeout`,`[devframe] RPC call "${t}" timed out after ${c}ms`))},c)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(`rpc:error`,n,t),r(n)})})}let y=new Map;for(let e of n.jsonSerializableMethods??[])y.set(e,{jsonSerializable:!0});let b=Un(a.functions,{channel:Kn({url:p,authToken:t,definitions:y,...s,onConnected(e){s.onConnected?.(e)},onError(e){m(`error`,e),i.emit(`connection:error`,e),g(new Y(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e})),s.onError?.(e)},onDisconnected(e){u!==`error`&&m(`disconnected`),g(new Y(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0})),s.onDisconnected?.(e)}}),rpcOptions:o});a.register({name:`devframe:auth:revoked`,type:`event`,handler:()=>{l=!1;let e=new Y(`auth`,`[devframe] The devframe server revoked this client's trust`);m(`unauthorized`,e),i.emit(`connection:error`,e),g(e),i.emit(`rpc:is-trusted:updated`,!1)}});let x=t;function ee(){let e=Hr(navigator.userAgent);return[e.browser.name,e.browser.version,`|`,e.os.name,e.os.version,e.device.type].filter(e=>e).join(` `)}async function te(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:ee(),origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),m(`connected`);else{let e=new Y(`auth`,`[devframe] The devframe server refused this client's credentials`);m(`unauthorized`,e),i.emit(`connection:error`,e)}return i.emit(`rpc:is-trusted:updated`,l),t.isTrusted}async function ne(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:ee(),origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),m(`connected`),i.emit(`rpc:is-trusted:updated`,!0)),t}async function S(){return l?!0:te(x??``)}async function re(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t=()=>{};return await Promise.race([f.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),l}return{get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:S,requestTrustWithToken:te,requestTrustWithCode:ne,ensureTrusted:re,call:(...e)=>{let t=String(e[0]),n=_();return n?(i.emit(`rpc:error`,n,t),Promise.reject(n)):v(b.$call(...e),t)},callEvent:(...e)=>{let t=_();if(t){i.emit(`rpc:error`,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=_();return n?(i.emit(`rpc:error`,n,t),Promise.reject(n)):v(b.$callOptional(...e),t)}}}function Gr(e){return e.includes(`:`)}function X(e,t){return Gr(t)?t:`${e}:${t}`}function Kr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return{async get(e){return(await a()).value()[e]},async set(e,t){(await a()).mutate(n=>{n[e]=t})},async delete(e){(await a()).mutate(t=>{delete t[e]})},async all(){return(await a()).value()},async onChange(e){return(await a()).on(`updated`,t=>e(t))}}}function qr(e,t){return{global:Kr(e,t,`global`),project:Kr(e,t,`project`)}}function Jr(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Gr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(X(t,n),...r)),callEvent:((n,...r)=>e.callEvent(X(t,n),...r)),callOptional:((n,...r)=>e.callOptional(X(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(X(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(X(t,n),r,i),upload:(n,r)=>e.streaming.upload(X(t,n),r)}},settings:qr(e,t),scope:e.scope}}var Yr=`__DEVFRAME_CONNECTION_META__`,Z=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Xr(e){let t=[()=>e,()=>localStorage.getItem(Z)??void 0,()=>window?.[Z],()=>globalThis?.[Z],()=>parent.window?.[Z]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Zr(e){try{localStorage.setItem(Z,e)}catch{}globalThis[Z]=e}function Qr(){let e=[()=>window?.[Yr],()=>globalThis?.[Yr],()=>parent.window?.[Yr]];for(let t of e)try{let e=t();if(e)return e}catch{}}async function $r(t={}){let{baseURL:n=`./`,rpcOptions:r={},cacheOptions:i=!1}=t,a=fe(),o=Array.isArray(n)?n:[n],s=t.connectionMeta||Qr(),c=o[0]??`./`,l=t.connectionMeta?void 0:s?.baseUrl;function u(){if(l)return l;let t=Se(e,c);try{return new URL(t,globalThis.location?.href).href}catch{return t}}if(!s){let t=[];for(let n of o)try{s=await fetch(Se(e,n)).then(e=>e.json()),c=n,globalThis[Yr]={...s,baseUrl:u()};break}catch(e){t.push(e)}if(!s)throw Error(`Failed to get connection meta from ${o.join(`, `)}`,{cause:t})}let d=new se({functions:[],...typeof t.cacheOptions==`object`?t.cacheOptions:{}}),f={rpc:void 0},p=Xr(t.authToken);p&&Zr(p);let m=new ce(f);async function h(e){let t=[c,...o.filter(e=>e!==c)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Se(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let g=s.backend===`static`?await Sn({fetchJsonFromBases:h}):Wr({authToken:p,connectionMeta:s,metaBaseUrl:u(),events:a,clientRpc:m,callTimeout:t.callTimeout,rpcOptions:{...r,async onRequest(e,t,n){if(await r.onRequest?.call(this,e,t,n),i&&d?.validate(e.m)){if(d.has(e.m,e.a))return n(d.cached(e.m,e.a));let r=await t(e);d.apply(e,r)}else await t(e)}},wsOptions:t.wsOptions}),_;try{_=new BroadcastChannel(`devframe-auth`)}catch{}let v={events:a,get isTrusted(){return g.isTrusted},get status(){return g.status},get connectionError(){return g.connectionError},connectionMeta:s,ensureTrusted:g.ensureTrusted,requestTrust:g.requestTrust,requestTrustWithToken:async e=>(Zr(e),g.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await g.requestTrustWithCode(e);if(!t)return!1;Zr(t);try{_?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:g.call,callEvent:g.callEvent,callOptional:g.callOptional,client:m,sharedState:void 0,streaming:void 0,cacheManager:d,scope:void 0};v.sharedState=Xt(v),v.streaming=An(v);let y=new Map;v.scope=(e=>{if(!e)return v;let t=y.get(e);return t||(t=Jr(v,e),y.set(e,t)),t}),f.rpc=v,g.requestTrust();let b=t.otpParam??`devframe_otp`;return b&&Ae(v,{param:b}),_&&(_.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&v.requestTrustWithToken(e.data.authToken)}),v}var ei=$r,ti=`devframes-plugin-code-server:state`;function Q(...e){return e.filter(Boolean).join(` `)}function ni({variant:e=`primary`,size:t=`md`,class:n}={}){let r={primary:`btn-primary`,secondary:`btn-action`,outline:`btn-action`,ghost:`inline-flex items-center justify-center gap-1.5 rounded px2 py1 op75 hover:op100 hover:bg-active transition disabled:pointer-events-none disabled:op30!`,destructive:`btn-action text-error border-error/30!`,link:`inline-flex items-center gap-1.5 color-active hover:underline underline-offset-2`},i=t===`sm`?e===`primary`?`text-sm px-2.5! py-1!`:`text-sm`:t===`lg`?`text-base px-4! py-2!`:``;return Q(r[e],i,n)}function ri(e){return Q(`color-active hover:underline underline-offset-2`,e)}function ii(e){return Q(`inline-block size-4 rounded-full border-2 border-current border-t-transparent animate-spin`,e)}var ai={connecting:{icon:`i-ph-plugs-connected-duotone`,title:`Connecting…`,body:`Establishing a connection to the devframe server.`},disconnected:{icon:`i-ph-plugs-duotone`,title:`Disconnected`,body:`Lost the connection to the devframe server. Reload once it is back up.`},unauthorized:{icon:`i-ph-lock-key-duotone`,title:`Not authorized`,body:`Reopen the link printed by your dev server, then reload.`},error:{icon:`i-ph-warning-octagon-duotone`,title:`Connection failed`,body:`Could not reach the devframe server.`}};function oi(e){let t=document.createElement(`div`);t.className=`absolute inset-0 flex flex-col items-center justify-center gap-4 bg-base color-base p-8 text-center z-nav`,t.hidden=!0,e.append(t);function n(e,n){if(e===`connected`)return t.hidden=!0,t.replaceChildren(),!1;let r=ai[e];t.replaceChildren();let i=document.createElement(`div`);i.className=Q(r.icon,`text-4xl color-active`),t.append(i);let a=document.createElement(`div`);a.className=`flex flex-col gap-1`;let o=document.createElement(`p`);o.className=`text-lg font-medium`,o.textContent=r.title;let s=document.createElement(`p`);if(s.className=`text-sm color-muted max-w-sm`,s.textContent=r.body,a.append(o,s),n&&e===`error`){let e=document.createElement(`code`);e.className=`mt-1 max-w-sm break-words font-mono text-xs color-faint`,e.textContent=n,a.append(e)}if(t.append(a),e!==`connecting`){let e=document.createElement(`button`);e.type=`button`,e.className=ni({variant:`primary`,size:`sm`}),e.textContent=`Reload`,e.addEventListener(`click`,()=>location.reload()),t.append(e)}return t.hidden=!1,!0}return{update:n,dispose(){t.remove()}}}function si(e){let t=e.ownerDocument?.defaultView;return t?.HTMLIFrameElement?e instanceof t.HTMLIFrameElement:typeof HTMLIFrameElement<`u`?e instanceof HTMLIFrameElement:`src`in e}function ci(e={}){let t=new Map,n=new Map,r=e.maxPanes??1/0,i,a,o=0,s,c=!1,l=0;function u(){let t=e.document??globalThis.document;if(!t)throw Error("[iframe-pane] No document available. Provide `options.document` or run in a DOM environment.");return t}function d(){return u().defaultView}function f(){if(e.container){let t=e.container,n=t.ownerDocument.defaultView?.getComputedStyle(t).position;return(!n||n===`static`)&&(t.style.position=`relative`),t}if(!i){let t=u();i=t.createElement(`div`),i.setAttribute(`data-iframe-panes`,``),Object.assign(i.style,{position:`fixed`,inset:`0`,pointerEvents:`none`}),e.zIndex!=null&&(i.style.zIndex=String(e.zIndex)),t.body.appendChild(i)}return i}function p(){return!a&&typeof ResizeObserver<`u`&&(a=new ResizeObserver(e=>{for(let t of e)n.get(t.target)?.forEach(e=>e.update())})),a}function m(){if(s!=null)return;let e=d();if(!e){h();return}s=e.requestAnimationFrame(()=>{s=void 0,h()})}function h(){for(let e of n.values())for(let t of e)t.update()}let g=()=>m();function _(){let e=d();e&&(n.size>0?(e.addEventListener(`scroll`,g,{capture:!0,passive:!0}),e.addEventListener(`resize`,g,{passive:!0})):(e.removeEventListener(`scroll`,g,{capture:!0}),e.removeEventListener(`resize`,g),s!=null&&(e.cancelAnimationFrame(s),s=void 0)))}function v(e,t){let r=n.get(t);r||(r=new Set,n.set(t,r),p()?.observe(t)),r.add(e),_()}function y(e,t){let r=n.get(t);r&&(r.delete(e),r.size===0&&(n.delete(t),a?.unobserve(t)),_())}function b(e){e.element.style.pointerEvents=o>0?`none`:e.stateStyle.pointerEvents}function x(e){if(t.size<=r)return;let n=[...t.values()].filter(t=>!t.isMounted&&t!==e).sort((e,t)=>e.lastActiveAt-t.lastActiveAt);for(let e of n){if(t.size<=r)break;e.dispose()}}class ee{id;element;styleDefault;styleActive;styleHidden;stateKeys;target=null;isVisible=!1;isDisposed=!1;lastActiveAt=0;constructor(t,n){this.id=t,this.styleDefault={...e.styleDefault,...n.style},this.styleActive={opacity:`1`,pointerEvents:`auto`,...e.styleActive,...n.styleActive},this.styleHidden={opacity:`0.001`,pointerEvents:`none`,...e.styleHidden,...n.styleHidden},this.stateKeys=[...new Set([...Object.keys(this.styleActive),...Object.keys(this.styleHidden)])];let r=u(),i=this.element=n.element??r.createElement(n.tagName??`iframe`);if(i.setAttribute(`data-iframe-pane`,t),Object.assign(i.style,{display:`block`,position:`absolute`,left:`0px`,top:`0px`,border:`0`},this.styleDefault),n.attrs)for(let[e,t]of Object.entries(n.attrs))i.setAttribute(e,t);this.applyState(),n.onCreated?.(i),n.src!=null&&si(i)&&(i.src=n.src),f().appendChild(i)}get iframe(){return si(this.element)?this.element:void 0}get isMounted(){return this.target!=null}get stateStyle(){return this.isVisible?this.styleActive:this.styleHidden}applyState(){let e=this.stateStyle,t={};for(let n of this.stateKeys)n in e||(t[n]=this.styleDefault[n]??``);Object.assign(this.element.style,t,e),o>0&&(this.element.style.pointerEvents=`none`)}touch(){this.lastActiveAt=++l}mount(e){this.assertNotDisposed(),this.target!==e&&(this.target&&y(this,this.target),this.target=e,v(this,e)),this.show()}unmount(){this.target&&=(y(this,this.target),null),this.hide()}show(){this.assertNotDisposed(),this.touch(),this.isVisible=!0,this.applyState(),this.update()}hide(){this.isDisposed||(this.isVisible=!1,this.applyState())}update(){if(this.isDisposed||!this.target||!this.isVisible)return;let e=this.target.getBoundingClientRect(),t=f().getBoundingClientRect();Object.assign(this.element.style,{left:`${e.left-t.left}px`,top:`${e.top-t.top}px`,width:`${e.width}px`,height:`${e.height}px`})}dispose(){this.isDisposed||(this.unmount(),this.isDisposed=!0,this.element.remove(),t.delete(this.id),e.onPaneDisposed?.(this))}assertNotDisposed(){if(this.isDisposed)throw Error(`[iframe-pane] Pane "${this.id}" has been disposed`)}}return{list(){return[...t.values()]},get(e){return t.get(e)},has(e){return t.has(e)},ensure:((n,r={})=>{if(c)throw Error(`[iframe-pane] Manager has been disposed`);let i=t.get(n);return i?i.touch():(i=new ee(n,r),i.touch(),t.set(n,i),e.onPaneCreated?.(i),x(i)),i}),get maxPanes(){return r},set maxPanes(e){r=e,x()},get isPointerLocked(){return o>0},lockPointerEvents(){o++,t.forEach(b);let e=!1;return()=>{e||(e=!0,o--,t.forEach(b))}},updateAll:h,get container(){return e.container??i},get isDisposed(){return c},dispose(){if(!c){c=!0;for(let e of[...t.values()])e.dispose();a?.disconnect(),a=void 0,_(),i?.remove(),i=void 0}}}}var li=`https://coder.com/docs/code-server/latest/install`,ui=`https://github.com/coder/code-server`,di=ci(),fi=0,pi=[{label:`Install script (Linux / macOS)`,command:`curl -fsSL https://code-server.dev/install.sh | sh`},{label:`npm`,command:`npm install -g code-server`},{label:`Homebrew`,command:`brew install code-server`}];function mi(e){let{detection:t,server:n,auth:r,busy:i}=e;return n.status===`running`&&n.port!=null?r?`running`:`starting`:n.status===`starting`||i&&n.status!==`error`?`starting`:t.checked?t.installed?`launch`:`not-installed`:`connecting`}function $(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function hi(e,t=``){return $(`span`,Q(e,`shrink-0`,t))}function gi(){let e=$(`p`,`flex items-center gap-1.5 mb-2.5 text-xs tracking-wider uppercase color-muted`);return e.append(hi(`i-ph-code-duotone`,`text-sm`),document.createTextNode(`code-server`)),e}function _i(e){return`${location.protocol}//${location.hostname}:${e}/`}function vi(e){document.cookie=`${e.cookieName}=${e.cookieValue}; path=/; SameSite=Lax`}function yi(e,t={}){let n=t.resolveEditorUrl??_i,r=t.applyAuth??vi,i=()=>t.actions?.launch?.(),a=()=>t.actions?.recheck?.(),o=$(`div`,`absolute inset-0 flex flex-col of-hidden bg-base color-base font-sans`);e.append(o);let s=`code-server-editor-${++fi}`,c=$(`div`,`dcs-frame flex-1 w-full`),l=null;function u(...e){di.get(s)?.unmount(),l=null;let t=$(`div`,`flex-1 flex items-center justify-center p-6`),n=$(`div`,`w-full max-w-[560px]`);n.append(...e),t.append(n),o.replaceChildren(t)}function d(){let e=$(`div`,`flex items-center gap-2.5`);e.append($(`div`,ii(`color-muted`)),$(`span`,`text-sm color-muted`,`Connecting to devframe…`)),u(e)}function f(e){let t=[];t.push(gi()),t.push($(`h1`,`mb-2 text-[1.35rem] font-semibold`,`code-server is not installed`)),t.push($(`p`,`mb-5 text-sm leading-relaxed color-muted`,`Install code-server (VS Code in the browser) to open the editor here. Pick whichever fits your setup, then re-check.`));let n=$(`div`,`flex flex-col gap-3 mb-5`);for(let{label:e,command:t}of pi){let r=$(`div`);r.append($(`label`,`block mb-1 text-xs color-muted`,e));let i=$(`div`,`flex items-center gap-2 px-2.5 py-2 rounded-md border border-base bg-secondary`);i.append($(`code`,`flex-1 of-x-auto whitespace-nowrap font-mono text-xs color-base`,t));let a=$(`button`,ni({variant:`outline`,size:`sm`,class:`shrink-0 text-[11px]`}),`Copy`);a.onclick=()=>{navigator.clipboard?.writeText(t).then(()=>{a.textContent=`Copied`,setTimeout(()=>{a.textContent=`Copy`},1200)}).catch(()=>{})},i.append(a),r.append(i),n.append(r)}t.push(n);let r=$(`div`,`flex flex-wrap items-center gap-2.5`),i=$(`button`,ni({variant:`primary`}));i.append(hi(`i-ph-arrows-clockwise`,Q(`size-4`,e&&`animate-spin`)),document.createTextNode(e?`Checking…`:`Re-check`)),i.disabled=e,i.onclick=a,r.append(i),r.append(g(`Installation docs`,li)),r.append(g(`GitHub`,ui)),t.push(r),u(...t)}function p(e){let{detection:t,server:n,busy:r}=e,a=[];a.push(gi()),a.push($(`h1`,`mb-2 text-[1.35rem] font-semibold`,`Launch the editor`)),a.push($(`p`,`mb-5 text-sm leading-relaxed color-muted`,`Start a code-server instance scoped to this workspace and open VS Code right here. The server runs with a generated password and the editor is signed in automatically.`)),n.status===`error`&&n.error&&a.push($(`div`,`mb-4 px-3 py-2.5 rounded-md border border-error/35 bg-error/10 text-error text-sm whitespace-pre-wrap break-words`,n.error));let o=$(`div`,`flex flex-wrap gap-x-4 gap-y-1.5 mb-5 text-xs color-muted`);if(t.version){let e=$(`span`);e.append(document.createTextNode(`version `),$(`code`,`font-mono color-base`,t.version)),o.append(e)}let s=$(`span`);s.append(document.createTextNode(`binary `),$(`code`,`font-mono color-base`,t.bin)),o.append(s),a.push(o);let c=$(`div`,`flex flex-wrap items-center gap-2.5`),l=$(`button`,ni({variant:`primary`}));r?l.append($(`span`,ii()),document.createTextNode(`Starting…`)):l.append(hi(`i-ph-rocket-launch-duotone`,`size-4`),document.createTextNode(`Launch code-server`)),l.disabled=r??!1,l.onclick=i,c.append(l),a.push(c),u(...a)}function m(){let e=$(`div`,`flex items-center gap-2.5`);e.append($(`div`,ii(`color-muted`)),$(`span`,`text-sm color-muted`,`Starting code-server…`)),u(e)}function h(e){let t=n(e.server.port);l!==t&&(e.auth&&r(e.auth),l=t);let i=di.ensure(s,{src:t,attrs:{allow:`clipboard-read; clipboard-write; cross-origin-isolated`},style:{border:`0`}});i.iframe.src!==t&&(i.iframe.src=t),o.firstElementChild!==c&&o.replaceChildren(c),i.mount(c)}function g(e,t){let n=$(`a`,ri(`inline-flex items-center gap-1 text-sm`));return n.append(document.createTextNode(e),hi(`i-ph-arrow-square-out`,`size-3.5`)),n.href=t,n.target=`_blank`,n.rel=`noreferrer`,n}function _(e){switch(mi(e)){case`running`:h(e);break;case`starting`:m();break;case`connecting`:d();break;case`not-installed`:f(e.busy??!1);break;case`launch`:p(e);break}}return{update:_,dispose(){di.get(s)?.dispose(),o.remove()}}}async function bi(e,t={}){let n=t.rpc??await ei();n.connectionMeta.backend===`websocket`&&await n.ensureTrusted(5e3).catch(()=>{}),e.style.position||(e.style.position=`relative`);let r=oi(e),i=()=>{r.update(n.status,n.connectionError?.message)};i();let a=n.events.on(`connection:status`,i),o={checked:!1,installed:!1,bin:`code-server`},s={status:`stopped`},c,l=!1,u=!1,d=yi(e,{actions:{launch:h,recheck:_}});function f(){u||d.update({detection:o,server:s,auth:c,busy:l})}function p(e){o=e.detection,s=e.server,e.auth&&(c=e.auth)}async function m(e,...t){try{return await n.call(e,...t)}catch(e){s={status:`error`,error:e instanceof Error?e.message:String(e)};return}}async function h(){if(l)return;l=!0,f();let e=await m(`devframes-plugin-code-server:start`,{});e&&p(e),l=!1,f()}async function g(){if(l)return;l=!0,f();let e=await m(`devframes-plugin-code-server:stop`);e&&p(e),c=void 0,l=!1,f()}async function _(){l||(l=!0,f(),await m(`devframes-plugin-code-server:detect`),l=!1,f())}f();let v=await m(`devframes-plugin-code-server:status`);v&&p(v),f();let y=await n.sharedState.get(ti,{initialValue:{detection:o,server:s}}),b=y.value();o=b.detection??o,s=b.server??s;let x=y.on(`updated`,e=>{if(o=e.detection??o,s=e.server??s,s.status===`running`&&!c){m(`devframes-plugin-code-server:status`).then(e=>{e?.auth&&(c=e.auth),f()});return}f()});return f(),{rpc:n,stop:g,dispose(){u=!0,x?.(),a?.(),r.dispose(),d.dispose()}}}var xi=document.getElementById(`app`);if(!xi)throw Error(`#app mount node missing from index.html`);bi(xi).catch(e=>{xi.textContent=`Failed to connect: ${e instanceof Error?e.message:String(e)}`});
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <base href="./" />
7
7
  <title>Code Server</title>
8
- <script type="module" crossorigin src="./assets/index-DbI4Lf4T.js"></script>
8
+ <script type="module" crossorigin src="./assets/index-YDI4bJsV.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="./assets/index-_vTgH7K_.css">
10
10
  </head>
11
11
  <body>
@@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url";
4
4
  import { defineDevframe } from "devframe/types";
5
5
  //#region package.json
6
6
  var name = "@devframes/plugin-code-server";
7
- var version = "0.7.0";
7
+ var version = "0.7.3";
8
8
  var description = "Run code-server (VS Code in the browser) as a devframe panel — detect a local install, launch it on demand, and embed the editor in an auto-authenticated iframe.";
9
9
  var homepage = "https://github.com/devframes/devframe#readme";
10
10
  //#endregion
package/dist/vite.d.mts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { CodeServerOptions } from "./types.mjs";
2
2
  import { DevframeVitePlugin, ViteDevBridgeOptions } from "devframe/helpers/vite";
3
-
4
3
  //#region src/vite.d.ts
5
4
  interface CodeServerViteOptions extends CodeServerOptions {
6
5
  /** Forwarded to the underlying `viteDevBridge` (mount base, etc.). */
package/dist/vite.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as createCodeServerDevframe } from "./src-GS0U_BNx.mjs";
1
+ import { n as createCodeServerDevframe } from "./src-BEBmIz_T.mjs";
2
2
  import { viteDevBridge } from "devframe/helpers/vite";
3
3
  //#region src/vite.ts
4
4
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@devframes/plugin-code-server",
3
3
  "type": "module",
4
- "version": "0.7.0",
4
+ "version": "0.7.3",
5
5
  "description": "Run code-server (VS Code in the browser) as a devframe panel — detect a local install, launch it on demand, and embed the editor in an auto-authenticated iframe.",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  "peerDependencies": {
43
43
  "vite": "^8.0.0",
44
- "devframe": "0.7.0"
44
+ "devframe": "0.7.3"
45
45
  },
46
46
  "peerDependenciesMeta": {
47
47
  "vite": {
@@ -55,19 +55,19 @@
55
55
  "nostics": "^1.1.4"
56
56
  },
57
57
  "devDependencies": {
58
- "@antfu/design": "^0.2.1",
58
+ "@antfu/design": "^0.2.2",
59
59
  "@iconify-json/ph": "^1.2.2",
60
- "@storybook/html-vite": "^10.4.6",
61
- "@types/node": "^26.1.0",
62
- "colorjs.io": "^0.6.1",
60
+ "@storybook/html-vite": "^10.5.0",
61
+ "@types/node": "^26.1.1",
62
+ "colorjs.io": "^0.7.0",
63
63
  "h3": "2.0.1-rc.22",
64
- "storybook": "^10.4.6",
65
- "tsdown": "^0.22.3",
64
+ "storybook": "^10.5.0",
65
+ "tsdown": "^0.22.7",
66
66
  "unocss": "^66.7.5",
67
- "vite": "^8.1.3",
67
+ "vite": "^8.1.4",
68
68
  "vitest": "^4.1.10",
69
- "ws": "^8.21.0",
70
- "devframe": "0.7.0"
69
+ "ws": "^8.21.1",
70
+ "devframe": "0.7.3"
71
71
  },
72
72
  "scripts": {
73
73
  "build": "tsdown && vite build --config src/spa/vite.config.ts",