wire-mesh 3.6.9 → 3.6.11

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.
@@ -26,14 +26,14 @@ ${Vg.repeat(a.depth)}}`:a.close=`}`;break}case W.TAG:o+=String(c),o+=Wg(W.POS_IN
26
26
  `;let n=0;for(let i of e.children){if(Jg(i)){let a=String(n);e.mt===W.MAP?a=n%2?`val ${(n-1)/2}`:`key ${n/2}`:e.mt===W.TAG&&(a=``),r+=Zg(i,t,a)}n++}}}return r}var Qg={...Bg.defaultDecodeOptions,initialDepth:0,noPrefixHex:!1,minCol:0};function $g(e,t){let n={...Qg,...t,ParentType:qg,saveOriginal:!0},r=new Ig(e,n),i,a;for(let e of r){if(a=Bg.create(e,i,n,r),e[2]===Zm.BREAK){if(i?.isStreaming)i.left=1;else throw Error(`Unexpected BREAK`)}if(!Jg(a)){let t=new qg(e,0,i,n);t.leaf=!0,t.children.push(a),nh(t,r.toHere(e[3])),a=t}let t=(a.depth+1)*2,o=a.numBytes();for(o&&(t+=1,t+=o*2),n.minCol=Math.max(n.minCol,t),i&&i.push(a,r,e[3]),i=a;i?.done;)a=i,a.leaf||nh(a,r.toHere(a.offset)),{parent:i}=i}t&&(t.minCol=n.minCol);let o=n.noPrefixHex?``:`0x${uh(r.toHere(0))}
27
27
  `;return o+=Zg(a,n),o}var e_=!hh();function t_(e){if(typeof e==`object`&&e){if(e.constructor!==Number)throw Error(`Expected number: ${e}`)}else if(typeof e!=`number`)throw Error(`Expected number: ${e}`)}function n_(e){if(typeof e==`object`&&e){if(e.constructor!==String)throw Error(`Expected string: ${e}`)}else if(typeof e!=`string`)throw Error(`Expected string: ${e}`)}function r_(e){if(!(e instanceof Uint8Array))throw Error(`Expected Uint8Array: ${e}`)}function i_(e){if(!Array.isArray(e))throw Error(`Expected Array: ${e}`)}Dg(Map,(e,t,n)=>{let r=[...e.entries()].map(e=>[e[0],e[1],Mg(e[0],n)]);if(n.rejectDuplicateKeys){let e=new Set;for(let[t,n,i]of r){let t=uh(i);if(e.has(t))throw Error(`Duplicate map key: 0x${t}`);e.add(t)}}n.sortKeys&&r.sort(n.sortKeys),Og(e,e.size,W.MAP,t,n);for(let[e,i,a]of r)t.write(a),jg(i,t,n)});function a_(e){return n_(e.contents),new Date(e.contents)}a_.comment=e=>{n_(e.contents);let t=new Date(e.contents);return`(String ${e.tag===Jm.DATE_FULL?`Full `:``}Date) ${t.toISOString()}`},$m.registerDecoder(Jm.DATE_STRING,a_),$m.registerDecoder(Jm.DATE_FULL,a_);function o_(e){return t_(e.contents),new Date(e.contents*1e3)}o_.comment=e=>(t_(e.contents),`(Epoch Date) ${new Date(e.contents*1e3).toISOString()}`),$m.registerDecoder(Jm.DATE_EPOCH,o_);var s_=864e5;function c_(e){return t_(e.contents),new Date(e.contents*s_)}c_.comment=e=>(t_(e.contents),`(Epoch Date) ${new Date(e.contents*s_).toISOString()}`),$m.registerDecoder(Jm.DATE_EPOCH_DAYS,c_),Dg(Date,(e,t,n)=>{switch(n.dateTag){case Jm.DATE_EPOCH:return[n.dateTag,e.valueOf()/1e3];case Jm.DATE_STRING:return[n.dateTag,e.toISOString().replace(/\.000Z$/,`Z`)];case Jm.DATE_EPOCH_DAYS:return[n.dateTag,Math.floor(e.valueOf()/s_)];case Jm.DATE_FULL:return[n.dateTag,e.toISOString().split(`T`)[0]];default:throw Error(`Unsupported date tag: ${n.dateTag}`)}});function l_(e,t,n){if(r_(t.contents),n.rejectBigInts)throw Error(`Decoding unwanted big integer: ${t}(h'${uh(t.contents)}')`);if(n.requirePreferred&&t.contents[0]===0)throw Error(`Decoding overly-large bigint: ${t.tag}(h'${uh(t.contents)})`);let r=t.contents.reduce((e,t)=>e<<8n|BigInt(t),0n);e&&(r=-1n-r);let i=r>=-(2**53-1)&&r<=2**53-1;if(n.requirePreferred&&i)throw Error(`Decoding bigint that could have been int: ${r}n`);return n.collapseBigInts&&i&&(r=Number(r)),n.boxed?rh(r,t.contents):r}var u_=l_.bind(null,!1),d_=l_.bind(null,!0);u_.comment=(e,t)=>`(Positive BigInt) ${l_(!1,e,t)}n`,d_.comment=(e,t)=>`(Negative BigInt) ${l_(!0,e,t)}n`,$m.registerDecoder(Jm.POS_BIGINT,u_),$m.registerDecoder(Jm.NEG_BIGINT,d_);function f_(e,t){return r_(e.contents),e}f_.comment=(e,t,n)=>{r_(e.contents);let r={...t,initialDepth:n+2,noPrefixHex:!0},i=eh(e),a=2**((i[0]&31)-24)+1,o=i[a]&31,s=uh(i.subarray(a,++a));o>=24&&(s+=` `,s+=uh(i.subarray(a,a+2**(o-24)))),r.minCol=Math.max(r.minCol,(n+1)*2+s.length);let c=$g(e.contents,r),l=`Embedded CBOR
28
28
  `;return l+=`${``.padStart((n+1)*2,` `)}${s}`.padEnd(r.minCol+1,` `),l+=`-- Bytes (Length: ${e.contents.length})
29
- `,l+=c,l},f_.noChildren=!0,$m.registerDecoder(Jm.CBOR,f_),$m.registerDecoder(Jm.URI,e=>(n_(e.contents),new URL(e.contents)),`URI`),Dg(URL,e=>[Jm.URI,e.toString()]),$m.registerDecoder(Jm.BASE64URL,e=>(n_(e.contents),mh(e.contents)),`Base64url-encoded`),$m.registerDecoder(Jm.BASE64,e=>(n_(e.contents),fh(e.contents)),`Base64-encoded`),$m.registerDecoder(35,e=>(n_(e.contents),new RegExp(e.contents)),`RegExp`),$m.registerDecoder(21065,e=>{n_(e.contents);let t=`^(?:${e.contents})$`;return new RegExp(t,`u`)},`I-RegExp`),$m.registerDecoder(Jm.REGEXP,e=>{if(i_(e.contents),e.contents.length<1||e.contents.length>2)throw Error(`Invalid RegExp Array: ${e.contents}`);return new RegExp(e.contents[0],e.contents[1])},`RegExp`),Dg(RegExp,e=>[Jm.REGEXP,[e.source,e.flags]]),$m.registerDecoder(64,e=>(r_(e.contents),e.contents),`uint8 Typed Array`);function p_(e,t,n){r_(e.contents);let r=e.contents.length;if(r%t.BYTES_PER_ELEMENT!==0)throw Error(`Number of bytes must be divisible by ${t.BYTES_PER_ELEMENT}, got: ${r}`);r/=t.BYTES_PER_ELEMENT;let i=new t(r),a=new DataView(e.contents.buffer,e.contents.byteOffset,e.contents.byteLength),o=a[`get${t.name.replace(/Array/,``)}`].bind(a);for(let e=0;e<r;e++)i[e]=o(e*t.BYTES_PER_ELEMENT,n);return i}function m_(e,t,n,r,i){let a=i.forceEndian??e_;if(bg(a?t:n,e,i),yg(r.byteLength,e,W.BYTE_STRING),e_===a)e.write(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));else{let t=e[`write${r.constructor.name.replace(/Array/,``)}`].bind(e);for(let e of r)t(e,a)}}$m.registerDecoder(65,e=>p_(e,Uint16Array,!1),`uint16, big endian, Typed Array`),$m.registerDecoder(66,e=>p_(e,Uint32Array,!1),`uint32, big endian, Typed Array`),$m.registerDecoder(67,e=>p_(e,BigUint64Array,!1),`uint64, big endian, Typed Array`),$m.registerDecoder(68,e=>(r_(e.contents),new Uint8ClampedArray(e.contents)),`uint8 Typed Array, clamped arithmetic`),Dg(Uint8ClampedArray,e=>[68,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)]),$m.registerDecoder(69,e=>p_(e,Uint16Array,!0),`uint16, little endian, Typed Array`),Dg(Uint16Array,(e,t,n)=>m_(t,69,65,e,n)),$m.registerDecoder(70,e=>p_(e,Uint32Array,!0),`uint32, little endian, Typed Array`),Dg(Uint32Array,(e,t,n)=>m_(t,70,66,e,n)),$m.registerDecoder(71,e=>p_(e,BigUint64Array,!0),`uint64, little endian, Typed Array`),Dg(BigUint64Array,(e,t,n)=>m_(t,71,67,e,n)),$m.registerDecoder(72,e=>(r_(e.contents),new Int8Array(e.contents)),`sint8 Typed Array`),Dg(Int8Array,e=>[72,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)]),$m.registerDecoder(73,e=>p_(e,Int16Array,!1),`sint16, big endian, Typed Array`),$m.registerDecoder(74,e=>p_(e,Int32Array,!1),`sint32, big endian, Typed Array`),$m.registerDecoder(75,e=>p_(e,BigInt64Array,!1),`sint64, big endian, Typed Array`),$m.registerDecoder(77,e=>p_(e,Int16Array,!0),`sint16, little endian, Typed Array`),Dg(Int16Array,(e,t,n)=>m_(t,77,73,e,n)),$m.registerDecoder(78,e=>p_(e,Int32Array,!0),`sint32, little endian, Typed Array`),Dg(Int32Array,(e,t,n)=>m_(t,78,74,e,n)),$m.registerDecoder(79,e=>p_(e,BigInt64Array,!0),`sint64, little endian, Typed Array`),Dg(BigInt64Array,(e,t,n)=>m_(t,79,75,e,n)),$m.registerDecoder(81,e=>p_(e,Float32Array,!1),`IEEE 754 binary32, big endian, Typed Array`),$m.registerDecoder(82,e=>p_(e,Float64Array,!1),`IEEE 754 binary64, big endian, Typed Array`),$m.registerDecoder(85,e=>p_(e,Float32Array,!0),`IEEE 754 binary32, little endian, Typed Array`),Dg(Float32Array,(e,t,n)=>m_(t,85,81,e,n)),$m.registerDecoder(86,e=>p_(e,Float64Array,!0),`IEEE 754 binary64, big endian, Typed Array`),Dg(Float64Array,(e,t,n)=>m_(t,86,82,e,n)),$m.registerDecoder(Jm.SET,(e,t)=>{if(i_(e.contents),t.sortKeys){let n=Bg.decodeToEncodeOpts(t),r=null;for(let i of e.contents){let e=[i,void 0,Mg(i,n)];if(r&&t.sortKeys(r,e)>=0)throw Error(`Set items out of order in tag #${Jm.SET}`);r=e}}return new Set(e.contents)},`Set`),Dg(Set,(e,t,n)=>{let r=[...e];if(n.sortKeys){let e=r.map(e=>[e,void 0,Mg(e,n)]);e.sort(n.sortKeys),r=e.map(([e])=>e)}return[Jm.SET,r]}),$m.registerDecoder(Jm.JSON,e=>(n_(e.contents),JSON.parse(e.contents)),`JSON-encoded`);function h_(e){return r_(e.contents),new tg().decode(e.contents)}h_.comment=e=>{r_(e.contents);let t=new tg;return`(WTF8 string): ${JSON.stringify(t.decode(e.contents))}`},$m.registerDecoder(Jm.WTF8,h_),$m.registerDecoder(Jm.SELF_DESCRIBED,e=>e.contents,`Self-Described`),$m.registerDecoder(Jm.INVALID_16,()=>{throw Error(`Tag always invalid: ${Jm.INVALID_16}`)},`Invalid`),$m.registerDecoder(Jm.INVALID_32,()=>{throw Error(`Tag always invalid: ${Jm.INVALID_32}`)},`Invalid`),$m.registerDecoder(Jm.INVALID_64,()=>{throw Error(`Tag always invalid: ${Jm.INVALID_64}`)},`Invalid`),$m.registerDecoder(Jm.SYMBOL,e=>{let t=e.contents;if(Array.isArray(e.contents)){if(e.contents.length!==1)throw Error(`Expected Array of size 1: ${e.contents}`);[t]=e.contents}if(n_(t),!t.length)throw Error(`Expected non-empty string: ${e.contents}`);return Symbol.for(t)},`Symbol`);function g_(e){throw Error(`Encoding ${e.constructor.name} intentionally unimplmented. It is not concrete enough to interoperate. Convert to Uint8Array first.`)}Dg(ArrayBuffer,g_),Dg(DataView,g_),typeof SharedArrayBuffer<`u`&&Dg(SharedArrayBuffer,g_);function __(e){return[NaN,e.valueOf()]}Dg(Boolean,__),Dg(Number,__),Dg(String,__),Dg(BigInt,__);function v_(e){let t={...Bg.defaultDecodeOptions};if(e.dcbor?Object.assign(t,Bg.dcborDecodeOptions):e.cde&&Object.assign(t,Bg.cdeDecodeOptions),Object.assign(t,e),Object.hasOwn(t,`rejectLongNumbers`))throw TypeError(`rejectLongNumbers has changed to requirePreferred`);return t.boxed&&(t.saveOriginal=!0),t}var y_=class{parent=void 0;ret=void 0;step(e,t,n){if(this.ret=Bg.create(e,this.parent,t,n),e[2]===Zm.BREAK){if(this.parent?.isStreaming)this.parent.left=0;else throw Error(`Unexpected BREAK`)}else this.parent&&this.parent.push(this.ret,n,e[3]);for(this.ret instanceof Bg&&(this.parent=this.ret);this.parent?.done;){this.ret=this.parent.convert(n);let e=this.parent.parent;e?.replaceLast(this.ret,this.parent,n),this.parent=e}}};function b_(e,t={}){let n=v_(t),r=new Ig(e,n),i=new y_;for(let e of r)i.step(e,n,r);return i.ret}var{cdeDecodeOptions:x_,dcborDecodeOptions:S_,defaultDecodeOptions:C_}=Bg,w_=-7,T_=-8,E_=`web-console/identity/es256`;function D_(e){if(e===w_)return{name:`ECDSA`,hash:`SHA-256`};if(e===T_)return{name:`Ed25519`};throw Error(`unsupported identity-key alg ${String(e)}`)}function O_(e){return Uint8Array.from(e)}async function k_(e){if(e.alg===w_)return crypto.subtle.importKey(`raw`,O_(e[`public-key`]),{name:`ECDSA`,namedCurve:`P-256`},!1,[`verify`]);if(e.alg===T_)return crypto.subtle.importKey(`raw`,O_(e[`public-key`]),{name:`Ed25519`},!1,[`verify`]);throw Error(`unsupported identity-key alg ${String(e.alg)}`)}async function A_(e){return new Uint8Array(await crypto.subtle.digest(`SHA-256`,O_(e)))}async function j_(e,t,n){let r=await k_(e);return crypto.subtle.verify(D_(e.alg),r,O_(n),O_(t))}function M_(e){return typeof e!=`object`||!e||!(`privateJwk`in e)||!(`publicKeyRaw`in e)?!1:typeof e.privateJwk==`object`&&e.privateJwk!==null&&e.publicKeyRaw instanceof Uint8Array}async function N_(){let e=await crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},!0,[`sign`,`verify`]);return{privateJwk:await crypto.subtle.exportKey(`jwk`,e.privateKey),publicKeyRaw:new Uint8Array(await crypto.subtle.exportKey(`raw`,e.publicKey))}}async function P_(e){let t=await crypto.subtle.importKey(`jwk`,e.privateJwk,{name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`]),n={alg:w_,"public-key":e.publicKeyRaw},r=await A_(e.publicKeyRaw),i={...e.privateJwk,key_ops:[`deriveBits`]};delete i.alg;let a=await crypto.subtle.importKey(`jwk`,i,{name:`ECDH`,namedCurve:`P-256`},!1,[`deriveBits`]);return{deviceId:r,identityKey:n,async sign(e){let n=await crypto.subtle.sign(D_(w_),t,O_(e));return new Uint8Array(n)},verify:j_,deriveDeviceId:A_,async deriveSharedSecret(e){if(e.alg!==w_)throw Error(`ECDH is only defined for an ES256 peer identity-key, got alg ${String(e.alg)}`);let t=await crypto.subtle.importKey(`raw`,O_(e[`public-key`]),{name:`ECDH`,namedCurve:`P-256`},!1,[]),n=await crypto.subtle.deriveBits({name:`ECDH`,public:t},a,256);return new Uint8Array(n)}}}async function F_(e){let t=await e.get(E_);if(t!==void 0){let e=b_(t,x_);if(!M_(e))throw Error(`stored identity envelope is malformed`);return P_(e)}let n=await N_();return await e.set(E_,new Uint8Array(Mg(n,hg))),P_(n)}var I_=`#sha256=`,L_=`,`,R_=/^[0-9a-f]{64}$/,z_=16;function B_(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*2,n*2+2),16);return t}function V_(e,t){return`https://${e}${I_}${t.join(L_)}`}function H_(e){return e.startsWith(`https://`)&&e.includes(I_)}function U_(e){let t=new URL(e),n=t.hash.startsWith(I_)?t.hash.slice(8).split(L_):[];if(t.protocol!==`https:`||n.length===0||!n.every(e=>R_.test(e)))throw Error(`expected "https://host:port${I_}<64 hex digits>[${L_}<64 hex digits>...]", got "${e}"`);return t.hash=``,{url:t.toString(),sha256:n.map(B_)}}var W_=32;function G_(e){return Mg({sha256:e.map(B_)},hg)}function K_(e){let t=b_(e,x_);if(typeof t!=`object`||!t||!(`sha256`in t)||!Array.isArray(t.sha256))throw Error(`expected a map with a sha256 array`);let n=t.sha256;if(n.length===0||n.length>8)throw Error(`expected 1 to 8 hashes, got ${String(n.length)}`);let r=[];for(let e of n){if(!(e instanceof Uint8Array)||e.length!==W_)throw Error(`each hash must be ${String(W_)} bytes`);r.push(new Uint8Array(e))}return r}function q_(e,t){let n=new Set(e.map(J_)),r=[...e];for(let e of t)n.has(J_(e))||(n.add(J_(e)),r.push(e));return r}function J_(e){return Array.from(e,e=>e.toString(z_).padStart(2,`0`)).join(``)}function Y_(e,t){let{url:n}=U_(e);return V_(new URL(n).host,t.map(J_))}function X_(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Z_(e,t=`|`){return e.map(e=>_v(e)).join(t)}function Q_(e,t){return typeof t==`bigint`?t.toString():t}function $_(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function ev(e){return e==null}function tv(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function nv(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var rv=Symbol(`evaluating`);function iv(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==rv)return r===void 0&&(r=rv,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function av(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function ov(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function sv(e){return JSON.stringify(e)}function cv(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var lv=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function uv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var dv=$_(()=>{if(ny.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function fv(e){if(uv(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return uv(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function pv(e){return fv(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var mv=new Set([`string`,`number`,`symbol`]);function hv(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function gv(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function G(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function _v(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function vv(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var yv={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function bv(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return gv(e,ov(e._zod.def,{get shape(){let e={};for(let r of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,r))throw Error(`Unrecognized key: "${String(r)}"`);t[r]&&av(e,r,n.shape[r])}return av(this,`shape`,e),e},checks:[]}))}function xv(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return gv(e,ov(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,e))throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&delete r[e]}return av(this,`shape`,r),r},checks:[]}))}function Sv(e,t){if(!fv(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return gv(e,ov(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return av(this,`shape`,n),n}}))}function Cv(e,t){if(!fv(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return gv(e,ov(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return av(this,`shape`,n),n}}))}function wv(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return gv(e,ov(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return av(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Tv(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);return gv(t,ov(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(r,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t of Reflect.ownKeys(r))i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return av(this,`shape`,i),i},checks:[]}))}function Ev(e,t,n){return gv(t,ov(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(i,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t of Reflect.ownKeys(r))i[t]=new e({type:`nonoptional`,innerType:r[t]});return av(this,`shape`,i),i}}))}function Dv(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Ov(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function kv(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Av(e){return typeof e==`string`?e:e?.message}function jv(e,t,n){var r;for(let i=t;i<e.length;i++)(r=e[i]).schema??(r.schema=n)}function Mv(e,t,n){var r;let i=e.inst?._zod?.traits;i?.has(`$ZodType`)&&(i.has(`$ZodCheck`)?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);let a=e.schema===e.inst?void 0:e.schema?._zod.def?.error,o=e.message?e.message:Av(e.inst?._zod.def?.error?.(e))??Av(a?.(e))??Av(t?.error?.(e))??Av(n.customError?.(e))??Av(n.localeError?.(e))??`Invalid input`,{inst:s,schema:c,continue:l,input:u,...d}=e;return d.path??=[],d.message=o,t?.reportInput&&(d.input=u),d}var Nv=/[\uD800-\uDBFF]/;function Pv(e){let t=e.length;if(!Nv.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)==55296&&(e.charCodeAt(r+1)&64512)==56320&&(n--,r++);return n}function Fv(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Iv(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function Lv(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function Rv(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):Vv(e,n,r.value)}}function zv(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Bv(e,t,n){return zv(e,t,n,!1)}function Vv(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:zv(this,t,n.bind(this))},set(e){zv(this,t,e)}})}function Hv(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Uv,Wv=!1,Gv={configurable:!0,get(){Wv=!0}};function Kv(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Uv!==e._zod){Uv=void 0;return}Uv=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,Gv);let e=Wv;Wv=!1;try{let r=n(this);return Wv?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r}),Wv||=e,r}catch(n){throw delete this[t],Wv||=e,n}},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})}function qv(e,t,n,r){let i=Hv(e,t);i&&Object.defineProperty(i,t,{configurable:!0,get(){let e={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,e),e.value=n(this),Object.defineProperty(this,t,e),e.value},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:e})}})}var Jv=`~constantCatch`;function Yv(e){let t=()=>e;return t[Jv]=!0,t}var Xv,Zv={value:void 0,enumerable:!1},Qv=`captureStackTrace`in Error?Error:null;function $v(e){let t=Qv;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Qv=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function K(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){Zv.value=new a(r);try{Object.defineProperty(n,"_zod",Zv)}finally{Zv.value=void 0}}if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),Rv(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?$v(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var ey=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ty=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Xv=globalThis).__zod_globalConfig??(Xv.__zod_globalConfig={});var ny=globalThis.__zod_globalConfig;function ry(e){return e&&Object.assign(ny,e),ny}function iy(){let e=this._zod;return e.message??=JSON.stringify(e.def,Q_,2),e.message}function ay(e){this._zod.message=e}var oy={get:iy,set:ay,enumerable:!0,configurable:!0},sy={value:void 0,enumerable:!1},cy={value:void 0,enumerable:!1},ly=new WeakSet([Object.prototype,Error.prototype]),uy=(e,t)=>{e.name=`$ZodError`,sy.value=e._zod,Object.defineProperty(e,"_zod",sy),cy.value=t,Object.defineProperty(e,"issues",cy),sy.value=void 0,cy.value=void 0,Object.defineProperty(e,"message",oy);let n=Object.getPrototypeOf(e);ly.has(n)||(ly.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},dy=K(`$ZodError`,uy),fy=K(`$ZodError`,uy,void 0,{Parent:Error});function py(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function my(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?py(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function hy(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i],o=i===e.length-1;if(n===`_errors`){o&&r._errors.push(t(a)),i++;continue}Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let s=r[n];o&&s._errors.push(t(a)),r=s,i++}}}};return r(e),n}function gy(e,t){return{callee:t?.callee??e,Err:t?.Err}}var _y=e=>{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new ey;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Mv(e,o,ry())));throw lv(n,a?.callee??t),n}return s.value};return t},vy=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Mv(e,o,ry())));throw lv(n,a?.callee??t),n}return s.value};return t},yy=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new ey;return a.issues.length?{success:!1,error:new(e??dy)(a.issues.map(e=>Mv(e,i,ry())))}:{success:!0,data:a.value}},by=yy(fy),xy=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Mv(e,i,ry())))}:{success:!0,data:a.value}},Sy=xy(fy),Cy=e=>{let t=_y(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,gy(n,a))};return n},wy=e=>{let t=_y(e),n=(e,r,i,a)=>t(e,r,i,gy(n,a));return n},Ty=e=>{let t=vy(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,gy(n,a))};return n},Ey=e=>{let t=vy(e),n=async(e,r,i,a)=>await t(e,r,i,gy(n,a));return n},Dy=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return yy(e)(t,n,i)},Oy=e=>(t,n,r)=>yy(e)(t,n,r),ky=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return xy(e)(t,n,i)},Ay=e=>async(t,n,r)=>xy(e)(t,n,r),jy=/^[cC][0-9a-z]{6,}$/,My=/^[0-9a-z]+$/,Ny=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Py=/^[0-9a-vA-V]{20}$/,Fy=/^[A-Za-z0-9]{27}$/,Iy=/^[a-zA-Z0-9_-]{21}$/;function Ly(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Ry=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,zy=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,By=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Vy=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Hy=`^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function Uy(){return new RegExp(Hy,`u`)}var Wy=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Gy=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Ky=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,qy=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Jy=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Yy=/^[A-Za-z0-9_-]*$/,Xy=/^https?$/,Zy=/^\+[1-9]\d{6,14}$/,Qy=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function $y(e){return RegExp(`^${e}$`)}var eb=$y(Qy);function tb(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function nb(e){return RegExp(`^${tb(e)}$`)}function rb(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${tb({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${tb({precision:e.precision})}`:n;return RegExp(`^${Qy}T(?:${r})$`)}var ib=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},ab=/^-?\d+$/,ob=/^-?\d+(?:\.\d+)?$/,sb=/^(?:true|false)$/i,cb=/^null$/i,lb=/^[^A-Z]*$/,ub=/^[^a-z]*$/,db=K(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),fb=e=>{let t=e.value;return!ev(t)&&t.length!==void 0},pb={number:`number`,bigint:`bigint`,object:`date`},mb=K(`$ZodCheckLessThan`,(e,t)=>{db.init(e,t);let n=pb[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:pb[typeof r.value]??n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),hb=K(`$ZodCheckGreaterThan`,(e,t)=>{db.init(e,t);let n=pb[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:pb[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),gb=K(`$ZodCheckMultipleOf`,(e,t)=>{db.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):nv(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),_b=K(`$ZodCheckNumberFormat`,(e,t)=>{db.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=yv[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=ab)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),vb=K(`$ZodCheckMaxLength`,(e,t)=>{var n;db.init(e,t),(n=e._zod.def).when??(n.when=fb),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Pv(r):i)<=t.maximum)return;let a=Fv(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),yb=K(`$ZodCheckMinLength`,(e,t)=>{var n;db.init(e,t),(n=e._zod.def).when??(n.when=fb),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i<t.minimum*2?Pv(r):i)>=t.minimum)return;let a=Fv(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),bb=K(`$ZodCheckLengthEquals`,(e,t)=>{var n;db.init(e,t),(n=e._zod.def).when??(n.when=fb),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Pv(r):i;if(a===t.length)return;let o=Fv(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),xb=K(`$ZodCheckStringFormat`,(e,t)=>{var n,r;db.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Sb=K(`$ZodCheckRegex`,(e,t)=>{xb.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Cb=K(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=lb,xb.init(e,t)}),wb=K(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=ub,xb.init(e,t)}),Tb=K(`$ZodCheckIncludes`,(e,t)=>{db.init(e,t);let n=hv(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Eb=K(`$ZodCheckStartsWith`,(e,t)=>{db.init(e,t);let n=RegExp(`^${hv(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Db=K(`$ZodCheckEndsWith`,(e,t)=>{db.init(e,t);let n=RegExp(`.*${hv(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Ob=K(`$ZodCheckOverwrite`,(e,t)=>{db.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),kb=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
29
+ `,l+=c,l},f_.noChildren=!0,$m.registerDecoder(Jm.CBOR,f_),$m.registerDecoder(Jm.URI,e=>(n_(e.contents),new URL(e.contents)),`URI`),Dg(URL,e=>[Jm.URI,e.toString()]),$m.registerDecoder(Jm.BASE64URL,e=>(n_(e.contents),mh(e.contents)),`Base64url-encoded`),$m.registerDecoder(Jm.BASE64,e=>(n_(e.contents),fh(e.contents)),`Base64-encoded`),$m.registerDecoder(35,e=>(n_(e.contents),new RegExp(e.contents)),`RegExp`),$m.registerDecoder(21065,e=>{n_(e.contents);let t=`^(?:${e.contents})$`;return new RegExp(t,`u`)},`I-RegExp`),$m.registerDecoder(Jm.REGEXP,e=>{if(i_(e.contents),e.contents.length<1||e.contents.length>2)throw Error(`Invalid RegExp Array: ${e.contents}`);return new RegExp(e.contents[0],e.contents[1])},`RegExp`),Dg(RegExp,e=>[Jm.REGEXP,[e.source,e.flags]]),$m.registerDecoder(64,e=>(r_(e.contents),e.contents),`uint8 Typed Array`);function p_(e,t,n){r_(e.contents);let r=e.contents.length;if(r%t.BYTES_PER_ELEMENT!==0)throw Error(`Number of bytes must be divisible by ${t.BYTES_PER_ELEMENT}, got: ${r}`);r/=t.BYTES_PER_ELEMENT;let i=new t(r),a=new DataView(e.contents.buffer,e.contents.byteOffset,e.contents.byteLength),o=a[`get${t.name.replace(/Array/,``)}`].bind(a);for(let e=0;e<r;e++)i[e]=o(e*t.BYTES_PER_ELEMENT,n);return i}function m_(e,t,n,r,i){let a=i.forceEndian??e_;if(bg(a?t:n,e,i),yg(r.byteLength,e,W.BYTE_STRING),e_===a)e.write(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));else{let t=e[`write${r.constructor.name.replace(/Array/,``)}`].bind(e);for(let e of r)t(e,a)}}$m.registerDecoder(65,e=>p_(e,Uint16Array,!1),`uint16, big endian, Typed Array`),$m.registerDecoder(66,e=>p_(e,Uint32Array,!1),`uint32, big endian, Typed Array`),$m.registerDecoder(67,e=>p_(e,BigUint64Array,!1),`uint64, big endian, Typed Array`),$m.registerDecoder(68,e=>(r_(e.contents),new Uint8ClampedArray(e.contents)),`uint8 Typed Array, clamped arithmetic`),Dg(Uint8ClampedArray,e=>[68,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)]),$m.registerDecoder(69,e=>p_(e,Uint16Array,!0),`uint16, little endian, Typed Array`),Dg(Uint16Array,(e,t,n)=>m_(t,69,65,e,n)),$m.registerDecoder(70,e=>p_(e,Uint32Array,!0),`uint32, little endian, Typed Array`),Dg(Uint32Array,(e,t,n)=>m_(t,70,66,e,n)),$m.registerDecoder(71,e=>p_(e,BigUint64Array,!0),`uint64, little endian, Typed Array`),Dg(BigUint64Array,(e,t,n)=>m_(t,71,67,e,n)),$m.registerDecoder(72,e=>(r_(e.contents),new Int8Array(e.contents)),`sint8 Typed Array`),Dg(Int8Array,e=>[72,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)]),$m.registerDecoder(73,e=>p_(e,Int16Array,!1),`sint16, big endian, Typed Array`),$m.registerDecoder(74,e=>p_(e,Int32Array,!1),`sint32, big endian, Typed Array`),$m.registerDecoder(75,e=>p_(e,BigInt64Array,!1),`sint64, big endian, Typed Array`),$m.registerDecoder(77,e=>p_(e,Int16Array,!0),`sint16, little endian, Typed Array`),Dg(Int16Array,(e,t,n)=>m_(t,77,73,e,n)),$m.registerDecoder(78,e=>p_(e,Int32Array,!0),`sint32, little endian, Typed Array`),Dg(Int32Array,(e,t,n)=>m_(t,78,74,e,n)),$m.registerDecoder(79,e=>p_(e,BigInt64Array,!0),`sint64, little endian, Typed Array`),Dg(BigInt64Array,(e,t,n)=>m_(t,79,75,e,n)),$m.registerDecoder(81,e=>p_(e,Float32Array,!1),`IEEE 754 binary32, big endian, Typed Array`),$m.registerDecoder(82,e=>p_(e,Float64Array,!1),`IEEE 754 binary64, big endian, Typed Array`),$m.registerDecoder(85,e=>p_(e,Float32Array,!0),`IEEE 754 binary32, little endian, Typed Array`),Dg(Float32Array,(e,t,n)=>m_(t,85,81,e,n)),$m.registerDecoder(86,e=>p_(e,Float64Array,!0),`IEEE 754 binary64, big endian, Typed Array`),Dg(Float64Array,(e,t,n)=>m_(t,86,82,e,n)),$m.registerDecoder(Jm.SET,(e,t)=>{if(i_(e.contents),t.sortKeys){let n=Bg.decodeToEncodeOpts(t),r=null;for(let i of e.contents){let e=[i,void 0,Mg(i,n)];if(r&&t.sortKeys(r,e)>=0)throw Error(`Set items out of order in tag #${Jm.SET}`);r=e}}return new Set(e.contents)},`Set`),Dg(Set,(e,t,n)=>{let r=[...e];if(n.sortKeys){let e=r.map(e=>[e,void 0,Mg(e,n)]);e.sort(n.sortKeys),r=e.map(([e])=>e)}return[Jm.SET,r]}),$m.registerDecoder(Jm.JSON,e=>(n_(e.contents),JSON.parse(e.contents)),`JSON-encoded`);function h_(e){return r_(e.contents),new tg().decode(e.contents)}h_.comment=e=>{r_(e.contents);let t=new tg;return`(WTF8 string): ${JSON.stringify(t.decode(e.contents))}`},$m.registerDecoder(Jm.WTF8,h_),$m.registerDecoder(Jm.SELF_DESCRIBED,e=>e.contents,`Self-Described`),$m.registerDecoder(Jm.INVALID_16,()=>{throw Error(`Tag always invalid: ${Jm.INVALID_16}`)},`Invalid`),$m.registerDecoder(Jm.INVALID_32,()=>{throw Error(`Tag always invalid: ${Jm.INVALID_32}`)},`Invalid`),$m.registerDecoder(Jm.INVALID_64,()=>{throw Error(`Tag always invalid: ${Jm.INVALID_64}`)},`Invalid`),$m.registerDecoder(Jm.SYMBOL,e=>{let t=e.contents;if(Array.isArray(e.contents)){if(e.contents.length!==1)throw Error(`Expected Array of size 1: ${e.contents}`);[t]=e.contents}if(n_(t),!t.length)throw Error(`Expected non-empty string: ${e.contents}`);return Symbol.for(t)},`Symbol`);function g_(e){throw Error(`Encoding ${e.constructor.name} intentionally unimplmented. It is not concrete enough to interoperate. Convert to Uint8Array first.`)}Dg(ArrayBuffer,g_),Dg(DataView,g_),typeof SharedArrayBuffer<`u`&&Dg(SharedArrayBuffer,g_);function __(e){return[NaN,e.valueOf()]}Dg(Boolean,__),Dg(Number,__),Dg(String,__),Dg(BigInt,__);function v_(e){let t={...Bg.defaultDecodeOptions};if(e.dcbor?Object.assign(t,Bg.dcborDecodeOptions):e.cde&&Object.assign(t,Bg.cdeDecodeOptions),Object.assign(t,e),Object.hasOwn(t,`rejectLongNumbers`))throw TypeError(`rejectLongNumbers has changed to requirePreferred`);return t.boxed&&(t.saveOriginal=!0),t}var y_=class{parent=void 0;ret=void 0;step(e,t,n){if(this.ret=Bg.create(e,this.parent,t,n),e[2]===Zm.BREAK){if(this.parent?.isStreaming)this.parent.left=0;else throw Error(`Unexpected BREAK`)}else this.parent&&this.parent.push(this.ret,n,e[3]);for(this.ret instanceof Bg&&(this.parent=this.ret);this.parent?.done;){this.ret=this.parent.convert(n);let e=this.parent.parent;e?.replaceLast(this.ret,this.parent,n),this.parent=e}}};function b_(e,t={}){let n=v_(t),r=new Ig(e,n),i=new y_;for(let e of r)i.step(e,n,r);return i.ret}var{cdeDecodeOptions:x_,dcborDecodeOptions:S_,defaultDecodeOptions:C_}=Bg,w_=class extends Error{fault;constructor(e,t,n){super(t,n),this.name=`IdentityKeyError`,this.fault=e}},T_=-7,E_=-8,D_=`web-console/identity/es256`;function O_(e){if(e===T_)return{name:`ECDSA`,hash:`SHA-256`};if(e===E_)return{name:`Ed25519`};throw Error(`unsupported identity-key alg ${String(e)}`)}function k_(e){return Uint8Array.from(e)}async function A_(e){let t=e.alg===T_?{name:`ECDSA`,namedCurve:`P-256`}:e.alg===E_?{name:`Ed25519`}:void 0;if(t===void 0)throw new w_(`unsupported_alg`,`unsupported identity-key alg ${String(e.alg)}`);try{return await crypto.subtle.importKey(`raw`,k_(e[`public-key`]),t,!1,[`verify`])}catch(t){throw new w_(`invalid_key`,`identity-key public-key does not import as an alg ${String(e.alg)} key`,{cause:t})}}async function j_(e){return new Uint8Array(await crypto.subtle.digest(`SHA-256`,k_(e)))}async function M_(e,t,n){let r=await A_(e);return crypto.subtle.verify(O_(e.alg),r,k_(n),k_(t))}function N_(e){return typeof e!=`object`||!e||!(`privateJwk`in e)||!(`publicKeyRaw`in e)?!1:typeof e.privateJwk==`object`&&e.privateJwk!==null&&e.publicKeyRaw instanceof Uint8Array}async function P_(){let e=await crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},!0,[`sign`,`verify`]);return{privateJwk:await crypto.subtle.exportKey(`jwk`,e.privateKey),publicKeyRaw:new Uint8Array(await crypto.subtle.exportKey(`raw`,e.publicKey))}}async function F_(e){let t=await crypto.subtle.importKey(`jwk`,e.privateJwk,{name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`]),n={alg:T_,"public-key":e.publicKeyRaw},r=await j_(e.publicKeyRaw),i={...e.privateJwk,key_ops:[`deriveBits`]};delete i.alg;let a=await crypto.subtle.importKey(`jwk`,i,{name:`ECDH`,namedCurve:`P-256`},!1,[`deriveBits`]);return{deviceId:r,identityKey:n,async sign(e){let n=await crypto.subtle.sign(O_(T_),t,k_(e));return new Uint8Array(n)},verify:M_,deriveDeviceId:j_,async deriveSharedSecret(e){if(e.alg!==T_)throw Error(`ECDH is only defined for an ES256 peer identity-key, got alg ${String(e.alg)}`);let t=await crypto.subtle.importKey(`raw`,k_(e[`public-key`]),{name:`ECDH`,namedCurve:`P-256`},!1,[]),n=await crypto.subtle.deriveBits({name:`ECDH`,public:t},a,256);return new Uint8Array(n)}}}async function I_(e){let t=await e.get(D_);if(t!==void 0){let e=b_(t,x_);if(!N_(e))throw Error(`stored identity envelope is malformed`);return F_(e)}let n=await P_();return await e.set(D_,new Uint8Array(Mg(n,hg))),F_(n)}var L_=`#sha256=`,R_=`,`,z_=/^[0-9a-f]{64}$/,B_=16;function V_(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*2,n*2+2),16);return t}function H_(e,t){return`https://${e}${L_}${t.join(R_)}`}function U_(e){return e.startsWith(`https://`)&&e.includes(L_)}function W_(e){let t=new URL(e),n=t.hash.startsWith(L_)?t.hash.slice(8).split(R_):[];if(t.protocol!==`https:`||n.length===0||!n.every(e=>z_.test(e)))throw Error(`expected "https://host:port${L_}<64 hex digits>[${R_}<64 hex digits>...]", got "${e}"`);return t.hash=``,{url:t.toString(),sha256:n.map(V_)}}var G_=32;function K_(e){return Mg({sha256:e.map(V_)},hg)}function q_(e){let t=b_(e,x_);if(typeof t!=`object`||!t||!(`sha256`in t)||!Array.isArray(t.sha256))throw Error(`expected a map with a sha256 array`);let n=t.sha256;if(n.length===0||n.length>8)throw Error(`expected 1 to 8 hashes, got ${String(n.length)}`);let r=[];for(let e of n){if(!(e instanceof Uint8Array)||e.length!==G_)throw Error(`each hash must be ${String(G_)} bytes`);r.push(new Uint8Array(e))}return r}function J_(e,t){let n=new Set(e.map(Y_)),r=[...e];for(let e of t)n.has(Y_(e))||(n.add(Y_(e)),r.push(e));return r}function Y_(e){return Array.from(e,e=>e.toString(B_).padStart(2,`0`)).join(``)}function X_(e,t){let{url:n}=W_(e);return H_(new URL(n).host,t.map(Y_))}function Z_(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Q_(e,t=`|`){return e.map(e=>vv(e)).join(t)}function $_(e,t){return typeof t==`bigint`?t.toString():t}function ev(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function tv(e){return e==null}function nv(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function rv(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var iv=Symbol(`evaluating`);function av(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==iv)return r===void 0&&(r=iv,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function ov(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function sv(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function cv(e){return JSON.stringify(e)}function lv(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var uv=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function dv(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var fv=ev(()=>{if(ry.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function pv(e){if(dv(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return dv(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function mv(e){return pv(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var hv=new Set([`string`,`number`,`symbol`]);function gv(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function _v(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function G(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function vv(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function yv(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var bv={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function xv(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return _v(e,sv(e._zod.def,{get shape(){let e={};for(let r of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,r))throw Error(`Unrecognized key: "${String(r)}"`);t[r]&&ov(e,r,n.shape[r])}return ov(this,`shape`,e),e},checks:[]}))}function Sv(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return _v(e,sv(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,e))throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&delete r[e]}return ov(this,`shape`,r),r},checks:[]}))}function Cv(e,t){if(!pv(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return _v(e,sv(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return ov(this,`shape`,n),n}}))}function wv(e,t){if(!pv(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return _v(e,sv(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return ov(this,`shape`,n),n}}))}function Tv(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return _v(e,sv(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return ov(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Ev(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);return _v(t,sv(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(r,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t of Reflect.ownKeys(r))i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return ov(this,`shape`,i),i},checks:[]}))}function Dv(e,t,n){return _v(t,sv(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(i,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t of Reflect.ownKeys(r))i[t]=new e({type:`nonoptional`,innerType:r[t]});return ov(this,`shape`,i),i}}))}function Ov(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function kv(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Av(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function jv(e){return typeof e==`string`?e:e?.message}function Mv(e,t,n){var r;for(let i=t;i<e.length;i++)(r=e[i]).schema??(r.schema=n)}function Nv(e,t,n){var r;let i=e.inst?._zod?.traits;i?.has(`$ZodType`)&&(i.has(`$ZodCheck`)?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);let a=e.schema===e.inst?void 0:e.schema?._zod.def?.error,o=e.message?e.message:jv(e.inst?._zod.def?.error?.(e))??jv(a?.(e))??jv(t?.error?.(e))??jv(n.customError?.(e))??jv(n.localeError?.(e))??`Invalid input`,{inst:s,schema:c,continue:l,input:u,...d}=e;return d.path??=[],d.message=o,t?.reportInput&&(d.input=u),d}var Pv=/[\uD800-\uDBFF]/;function Fv(e){let t=e.length;if(!Pv.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)==55296&&(e.charCodeAt(r+1)&64512)==56320&&(n--,r++);return n}function Iv(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Lv(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function Rv(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function zv(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):Hv(e,n,r.value)}}function Bv(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Vv(e,t,n){return Bv(e,t,n,!1)}function Hv(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:Bv(this,t,n.bind(this))},set(e){Bv(this,t,e)}})}function Uv(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Wv,Gv=!1,Kv={configurable:!0,get(){Gv=!0}};function qv(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Wv!==e._zod){Wv=void 0;return}Wv=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,Kv);let e=Gv;Gv=!1;try{let r=n(this);return Gv?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r}),Gv||=e,r}catch(n){throw delete this[t],Gv||=e,n}},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})}function Jv(e,t,n,r){let i=Uv(e,t);i&&Object.defineProperty(i,t,{configurable:!0,get(){let e={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,e),e.value=n(this),Object.defineProperty(this,t,e),e.value},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:e})}})}var Yv=`~constantCatch`;function Xv(e){let t=()=>e;return t[Yv]=!0,t}var Zv,Qv={value:void 0,enumerable:!1},$v=`captureStackTrace`in Error?Error:null;function ey(e){let t=$v;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return $v=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function K(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){Qv.value=new a(r);try{Object.defineProperty(n,"_zod",Qv)}finally{Qv.value=void 0}}if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),zv(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?ey(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var ty=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ny=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Zv=globalThis).__zod_globalConfig??(Zv.__zod_globalConfig={});var ry=globalThis.__zod_globalConfig;function iy(e){return e&&Object.assign(ry,e),ry}function ay(){let e=this._zod;return e.message??=JSON.stringify(e.def,$_,2),e.message}function oy(e){this._zod.message=e}var sy={get:ay,set:oy,enumerable:!0,configurable:!0},cy={value:void 0,enumerable:!1},ly={value:void 0,enumerable:!1},uy=new WeakSet([Object.prototype,Error.prototype]),dy=(e,t)=>{e.name=`$ZodError`,cy.value=e._zod,Object.defineProperty(e,"_zod",cy),ly.value=t,Object.defineProperty(e,"issues",ly),cy.value=void 0,ly.value=void 0,Object.defineProperty(e,"message",sy);let n=Object.getPrototypeOf(e);uy.has(n)||(uy.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},fy=K(`$ZodError`,dy),py=K(`$ZodError`,dy,void 0,{Parent:Error});function my(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function hy(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?my(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function gy(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i],o=i===e.length-1;if(n===`_errors`){o&&r._errors.push(t(a)),i++;continue}Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let s=r[n];o&&s._errors.push(t(a)),r=s,i++}}}};return r(e),n}function _y(e,t){return{callee:t?.callee??e,Err:t?.Err}}var vy=e=>{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new ty;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Nv(e,o,iy())));throw uv(n,a?.callee??t),n}return s.value};return t},yy=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>Nv(e,o,iy())));throw uv(n,a?.callee??t),n}return s.value};return t},by=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new ty;return a.issues.length?{success:!1,error:new(e??fy)(a.issues.map(e=>Nv(e,i,iy())))}:{success:!0,data:a.value}},xy=by(py),Sy=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Nv(e,i,iy())))}:{success:!0,data:a.value}},Cy=Sy(py),wy=e=>{let t=vy(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,_y(n,a))};return n},Ty=e=>{let t=vy(e),n=(e,r,i,a)=>t(e,r,i,_y(n,a));return n},Ey=e=>{let t=yy(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,_y(n,a))};return n},Dy=e=>{let t=yy(e),n=async(e,r,i,a)=>await t(e,r,i,_y(n,a));return n},Oy=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return by(e)(t,n,i)},ky=e=>(t,n,r)=>by(e)(t,n,r),Ay=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Sy(e)(t,n,i)},jy=e=>async(t,n,r)=>Sy(e)(t,n,r),My=/^[cC][0-9a-z]{6,}$/,Ny=/^[0-9a-z]+$/,Py=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Fy=/^[0-9a-vA-V]{20}$/,Iy=/^[A-Za-z0-9]{27}$/,Ly=/^[a-zA-Z0-9_-]{21}$/;function Ry(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var zy=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,By=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Vy=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Hy=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Uy=`^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function Wy(){return new RegExp(Uy,`u`)}var Gy=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ky=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,qy=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Jy=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Yy=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Xy=/^[A-Za-z0-9_-]*$/,Zy=/^https?$/,Qy=/^\+[1-9]\d{6,14}$/,$y=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function eb(e){return RegExp(`^${e}$`)}var tb=eb($y);function nb(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function rb(e){return RegExp(`^${nb(e)}$`)}function ib(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${nb({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${nb({precision:e.precision})}`:n;return RegExp(`^${$y}T(?:${r})$`)}var ab=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},ob=/^-?\d+$/,sb=/^-?\d+(?:\.\d+)?$/,cb=/^(?:true|false)$/i,lb=/^null$/i,ub=/^[^A-Z]*$/,db=/^[^a-z]*$/,fb=K(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),pb=e=>{let t=e.value;return!tv(t)&&t.length!==void 0},mb={number:`number`,bigint:`bigint`,object:`date`},hb=K(`$ZodCheckLessThan`,(e,t)=>{fb.init(e,t);let n=mb[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:mb[typeof r.value]??n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),gb=K(`$ZodCheckGreaterThan`,(e,t)=>{fb.init(e,t);let n=mb[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:mb[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),_b=K(`$ZodCheckMultipleOf`,(e,t)=>{fb.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):rv(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),vb=K(`$ZodCheckNumberFormat`,(e,t)=>{fb.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=bv[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=ob)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),yb=K(`$ZodCheckMaxLength`,(e,t)=>{var n;fb.init(e,t),(n=e._zod.def).when??(n.when=pb),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Fv(r):i)<=t.maximum)return;let a=Iv(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),bb=K(`$ZodCheckMinLength`,(e,t)=>{var n;fb.init(e,t),(n=e._zod.def).when??(n.when=pb),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i<t.minimum*2?Fv(r):i)>=t.minimum)return;let a=Iv(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),xb=K(`$ZodCheckLengthEquals`,(e,t)=>{var n;fb.init(e,t),(n=e._zod.def).when??(n.when=pb),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Fv(r):i;if(a===t.length)return;let o=Iv(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Sb=K(`$ZodCheckStringFormat`,(e,t)=>{var n,r;fb.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Cb=K(`$ZodCheckRegex`,(e,t)=>{Sb.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),wb=K(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=ub,Sb.init(e,t)}),Tb=K(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=db,Sb.init(e,t)}),Eb=K(`$ZodCheckIncludes`,(e,t)=>{fb.init(e,t);let n=gv(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Db=K(`$ZodCheckStartsWith`,(e,t)=>{fb.init(e,t);let n=RegExp(`^${gv(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Ob=K(`$ZodCheckEndsWith`,(e,t)=>{fb.init(e,t);let n=RegExp(`.*${gv(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),kb=K(`$ZodCheckOverwrite`,(e,t)=>{fb.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Ab=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
30
30
  `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(`
31
- `)}\n};`)(...Object.values(this.closed))}},Ab={major:4,minor:5,patch:4},jb=K(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Ab;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=Dv(t),a;for(let o of n){if(o._zod.def.when){if(Ov(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new ey;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(jv(t.issues,n,e),i||=Dv(t,n))});else{if(t.issues.length===n)continue;jv(t.issues,n,e),i||=Dv(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(Dv(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new ey;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new ey;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Bv(this,`~standard`,Nb(this))},set"~standard"(e){zv(this,`~standard`,e)}}),Mb=e=>e.success?{value:e.data}:{issues:e.error?.issues};function Nb(e){return{validate:t=>{try{return Mb(by(e,t))}catch{return Sy(e,t).then(Mb)}},vendor:`zod`,version:1}}var Pb=K(`$ZodString`,(e,t)=>{jb.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??ib(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Fb=K(`$ZodStringFormat`,(e,t)=>{xb.init(e,t),Pb.init(e,t)}),Ib=K(`$ZodGUID`,(e,t)=>{t.pattern??=zy,Fb.init(e,t)}),Lb=K(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=By(e)}else t.pattern??=By();Fb.init(e,t)}),Rb=K(`$ZodEmail`,(e,t)=>{t.pattern??=Vy,Fb.init(e,t)});function zb(e,t){if(!t.normalize&&t.protocol?.source===Xy.source&&!/^https?:\/\//i.test(e))return 1;try{return new URL(e)}catch{return 2}}var Bb=/[\t\n\r]/g;function Vb(e){return e.replace(Bb,``)}function Hb(e,t){return t.lastIndex=0,t.test(e.hostname)}function Ub(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var Wb=K(`$ZodURL`,(e,t)=>{Fb.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=zb(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}t.hostname&&!Hb(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Ub(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:Vb(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Gb=K(`$ZodEmoji`,(e,t)=>{t.pattern??=Uy(),Fb.init(e,t)}),Kb=K(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Iy:Ly(t.length),Fb.init(e,t)}),qb=K(`$ZodCUID`,(e,t)=>{t.pattern??=jy,Fb.init(e,t)}),Jb=K(`$ZodCUID2`,(e,t)=>{t.pattern??=My,Fb.init(e,t)}),Yb=K(`$ZodULID`,(e,t)=>{t.pattern??=Ny,Fb.init(e,t)}),Xb=K(`$ZodXID`,(e,t)=>{t.pattern??=Py,Fb.init(e,t)}),Zb=K(`$ZodKSUID`,(e,t)=>{t.pattern??=Fy,Fb.init(e,t)}),Qb=K(`$ZodISODateTime`,(e,t)=>{t.pattern??=rb(t),Fb.init(e,t),(t.local||t.precision===-1)&&(e._zod.bag.laxFormat=!0,e._zod.onattach.push(e=>{e._zod.bag.laxFormat=!0}))}),$b=K(`$ZodISODate`,(e,t)=>{t.pattern??=eb,Fb.init(e,t)}),ex=K(`$ZodISOTime`,(e,t)=>{t.pattern??=nb(t),Fb.init(e,t)}),tx=K(`$ZodISODuration`,(e,t)=>{t.pattern??=Ry,Fb.init(e,t)}),nx=K(`$ZodIPv4`,(e,t)=>{t.pattern??=Wy,Fb.init(e,t),e._zod.bag.format=`ipv4`}),rx=/^[0-9a-fA-F:.]+$/;function ix(e){if(!rx.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var ax=K(`$ZodIPv6`,(e,t)=>{t.pattern??=Gy,Fb.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{ix(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),ox=K(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Ky,Fb.init(e,t)});function sx(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:ix(n)}var cx=K(`$ZodCIDRv6`,(e,t)=>{t.pattern??=qy,Fb.init(e,t),e._zod.check=n=>{sx(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function lx(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var ux=K(`$ZodBase64`,(e,t)=>{t.pattern??=Jy,Fb.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{lx(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function dx(e){if(!Yy.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return lx(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var fx=K(`$ZodBase64URL`,(e,t)=>{t.pattern??=Yy,Fb.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{dx(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),px=K(`$ZodE164`,(e,t)=>{t.pattern??=Zy,Fb.init(e,t)});function mx(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var hx=K(`$ZodJWT`,(e,t)=>{Fb.init(e,t),e._zod.check=n=>{mx(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),gx=K(`$ZodNumber`,(e,t)=>{jb.init(e,t),e._zod.pattern=e._zod.bag.pattern??ob,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),_x=K(`$ZodNumberFormat`,(e,t)=>{_b.init(e,t),gx.init(e,t)}),vx=K(`$ZodBoolean`,(e,t)=>{jb.init(e,t),e._zod.pattern=sb,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),yx=K(`$ZodNull`,(e,t)=>{jb.init(e,t),e._zod.pattern=cb,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),bx=K(`$ZodUnknown`,(e,t)=>{jb.init(e,t),e._zod.parse=e=>e}),xx=K(`$ZodNever`,(e,t)=>{jb.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Sx(e,t,n){e.issues.length&&t.issues.push(...kv(n,e.issues)),t.value[n]=e.value}var Cx=K(`$ZodArray`,(e,t)=>{jb.init(e,t);let n=ny.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[];for(let e=0;e<a.length;e++){let n=a[e],s=t.element._zod.run({value:n,issues:[]},i);s instanceof Promise?o.push(s.then(t=>Sx(t,r,e))):Sx(s,r,e)}return o.length?Promise.all(o).then(()=>r):r}});function wx(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...kv(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}}var Tx=[];function Ex(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:Tx,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=vv(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function Dx(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin,d=c.optout;for(let i in t){if(s.has(i))continue;if(i===`__proto__`){l===`never`&&o.push(i);continue}if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>wx(e,n,i,t,u,d))):wx(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var Ox=new WeakMap,kx=K(`$ZodObject`,(e,t)=>{if(jb.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Ox.set(t,e),Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),Ox.set(t,n),n}})}let n=$_(()=>Ex(t));Kv(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||av(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let r=uv,i=t.catchall,a,o=ny.memoizer;o?.attach(e),e._zod.parse=(t,s)=>{a??=n.value;let c=t.value;if(!r(c))return t.issues.push({expected:`object`,code:`invalid_type`,input:c,inst:e}),t;t.value=o?o.alloc(e,t,{},s):{};let l=[],u=a.shape;for(let e of a.allKeys){if(e===`__proto__`)continue;let n=u[e],r=n._zod.optin,i=n._zod.optout,a=n._zod.run({value:c[e],issues:[]},s);a instanceof Promise?l.push(a.then(n=>wx(n,t,e,c,r,i))):wx(a,t,e,c,r,i)}return i?Dx(l,c,t,s,n.value,e):l.length?Promise.all(l).then(()=>t):t}}),Ax=K(`$ZodObjectJIT`,(e,t)=>{kx.init(e,t);let n=e._zod.parse,r=$_(()=>Ex(t)),i=ny.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new kb([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>`
31
+ `)}\n};`)(...Object.values(this.closed))}},jb={major:4,minor:5,patch:4},Mb=K(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=jb;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=Ov(t),a;for(let o of n){if(o._zod.def.when){if(kv(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new ty;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(Mv(t.issues,n,e),i||=Ov(t,n))});else{if(t.issues.length===n)continue;Mv(t.issues,n,e),i||=Ov(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(Ov(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new ty;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new ty;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Vv(this,`~standard`,Pb(this))},set"~standard"(e){Bv(this,`~standard`,e)}}),Nb=e=>e.success?{value:e.data}:{issues:e.error?.issues};function Pb(e){return{validate:t=>{try{return Nb(xy(e,t))}catch{return Cy(e,t).then(Nb)}},vendor:`zod`,version:1}}var Fb=K(`$ZodString`,(e,t)=>{Mb.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??ab(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Ib=K(`$ZodStringFormat`,(e,t)=>{Sb.init(e,t),Fb.init(e,t)}),Lb=K(`$ZodGUID`,(e,t)=>{t.pattern??=By,Ib.init(e,t)}),Rb=K(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Vy(e)}else t.pattern??=Vy();Ib.init(e,t)}),zb=K(`$ZodEmail`,(e,t)=>{t.pattern??=Hy,Ib.init(e,t)});function Bb(e,t){if(!t.normalize&&t.protocol?.source===Zy.source&&!/^https?:\/\//i.test(e))return 1;try{return new URL(e)}catch{return 2}}var Vb=/[\t\n\r]/g;function Hb(e){return e.replace(Vb,``)}function Ub(e,t){return t.lastIndex=0,t.test(e.hostname)}function Wb(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var Gb=K(`$ZodURL`,(e,t)=>{Ib.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=Bb(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}t.hostname&&!Ub(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Wb(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:Hb(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Kb=K(`$ZodEmoji`,(e,t)=>{t.pattern??=Wy(),Ib.init(e,t)}),qb=K(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Ly:Ry(t.length),Ib.init(e,t)}),Jb=K(`$ZodCUID`,(e,t)=>{t.pattern??=My,Ib.init(e,t)}),Yb=K(`$ZodCUID2`,(e,t)=>{t.pattern??=Ny,Ib.init(e,t)}),Xb=K(`$ZodULID`,(e,t)=>{t.pattern??=Py,Ib.init(e,t)}),Zb=K(`$ZodXID`,(e,t)=>{t.pattern??=Fy,Ib.init(e,t)}),Qb=K(`$ZodKSUID`,(e,t)=>{t.pattern??=Iy,Ib.init(e,t)}),$b=K(`$ZodISODateTime`,(e,t)=>{t.pattern??=ib(t),Ib.init(e,t),(t.local||t.precision===-1)&&(e._zod.bag.laxFormat=!0,e._zod.onattach.push(e=>{e._zod.bag.laxFormat=!0}))}),ex=K(`$ZodISODate`,(e,t)=>{t.pattern??=tb,Ib.init(e,t)}),tx=K(`$ZodISOTime`,(e,t)=>{t.pattern??=rb(t),Ib.init(e,t)}),nx=K(`$ZodISODuration`,(e,t)=>{t.pattern??=zy,Ib.init(e,t)}),rx=K(`$ZodIPv4`,(e,t)=>{t.pattern??=Gy,Ib.init(e,t),e._zod.bag.format=`ipv4`}),ix=/^[0-9a-fA-F:.]+$/;function ax(e){if(!ix.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var ox=K(`$ZodIPv6`,(e,t)=>{t.pattern??=Ky,Ib.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{ax(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),sx=K(`$ZodCIDRv4`,(e,t)=>{t.pattern??=qy,Ib.init(e,t)});function cx(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:ax(n)}var lx=K(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Jy,Ib.init(e,t),e._zod.check=n=>{cx(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function ux(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var dx=K(`$ZodBase64`,(e,t)=>{t.pattern??=Yy,Ib.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{ux(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function fx(e){if(!Xy.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return ux(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var px=K(`$ZodBase64URL`,(e,t)=>{t.pattern??=Xy,Ib.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{fx(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),mx=K(`$ZodE164`,(e,t)=>{t.pattern??=Qy,Ib.init(e,t)});function hx(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var gx=K(`$ZodJWT`,(e,t)=>{Ib.init(e,t),e._zod.check=n=>{hx(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),_x=K(`$ZodNumber`,(e,t)=>{Mb.init(e,t),e._zod.pattern=e._zod.bag.pattern??sb,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),vx=K(`$ZodNumberFormat`,(e,t)=>{vb.init(e,t),_x.init(e,t)}),yx=K(`$ZodBoolean`,(e,t)=>{Mb.init(e,t),e._zod.pattern=cb,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),bx=K(`$ZodNull`,(e,t)=>{Mb.init(e,t),e._zod.pattern=lb,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),xx=K(`$ZodUnknown`,(e,t)=>{Mb.init(e,t),e._zod.parse=e=>e}),Sx=K(`$ZodNever`,(e,t)=>{Mb.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Cx(e,t,n){e.issues.length&&t.issues.push(...Av(n,e.issues)),t.value[n]=e.value}var wx=K(`$ZodArray`,(e,t)=>{Mb.init(e,t);let n=ry.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[];for(let e=0;e<a.length;e++){let n=a[e],s=t.element._zod.run({value:n,issues:[]},i);s instanceof Promise?o.push(s.then(t=>Cx(t,r,e))):Cx(s,r,e)}return o.length?Promise.all(o).then(()=>r):r}});function Tx(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...Av(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}}var Ex=[];function Dx(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:Ex,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=yv(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function Ox(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin,d=c.optout;for(let i in t){if(s.has(i))continue;if(i===`__proto__`){l===`never`&&o.push(i);continue}if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Tx(e,n,i,t,u,d))):Tx(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var kx=new WeakMap,Ax=K(`$ZodObject`,(e,t)=>{if(Mb.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;kx.set(t,e),Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),kx.set(t,n),n}})}let n=ev(()=>Dx(t));qv(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||ov(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let r=dv,i=t.catchall,a,o=ry.memoizer;o?.attach(e),e._zod.parse=(t,s)=>{a??=n.value;let c=t.value;if(!r(c))return t.issues.push({expected:`object`,code:`invalid_type`,input:c,inst:e}),t;t.value=o?o.alloc(e,t,{},s):{};let l=[],u=a.shape;for(let e of a.allKeys){if(e===`__proto__`)continue;let n=u[e],r=n._zod.optin,i=n._zod.optout,a=n._zod.run({value:c[e],issues:[]},s);a instanceof Promise?l.push(a.then(n=>Tx(n,t,e,c,r,i))):Tx(a,t,e,c,r,i)}return i?Ox(l,c,t,s,n.value,e):l.length?Promise.all(l).then(()=>t):t}}),jx=K(`$ZodObjectJIT`,(e,t)=>{Ax.init(e,t);let n=e._zod.parse,r=ev(()=>Dx(t)),i=ry.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new Ab([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>`
32
32
  for (let i = 0; i < ${e}.issues.length; i++) {
33
33
  const iss = ${e}.issues[i];
34
34
  iss.path = iss.path ? [${t}, ...iss.path] : [${t}];
35
35
  payload.issues.push(iss);
36
- }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:sv(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(`
36
+ }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:cv(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(`
37
37
  const ${n}_present = ${i};
38
38
  if (!${n}.issues.length || ${n}_present) {
39
39
  if (${n}.issues.length) {${c(n,r)}
@@ -73,8 +73,8 @@ ${Vg.repeat(a.depth)}}`:a.close=`}`;break}case W.TAG:o+=String(c),o+=Wg(W.POS_IN
73
73
  newResult[${r}] = ${n}.value;
74
74
  }
75
75
 
76
- `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=uv,c=!ny.jitless,l=c&&dv.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Dx([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function jx(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Dv(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>Mv(e,r,ry())))}),t)}var Mx=K(`$ZodUnion`,(e,t)=>{jb.init(e,t),Kv(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),Kv(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Kv(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),Kv(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>tv(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>jx(t,r,e,i)):jx(o,r,e,i)}}),Nx=K(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Mx.init(e,t);let n=e._zod.parse;Kv(e,`propValues`,e=>{let t={};for(let n of e.def.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(n)}"`);for(let[e,n]of Object.entries(r)){Object.prototype.hasOwnProperty.call(t,e)||av(t,e,new Set);for(let r of n)t[e].add(r)}}return t}),t.options.forEach((e,n)=>{let r=Ox.get(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=$_(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!uv(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),Px=K(`$ZodIntersection`,(e,t)=>{jb.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Ix(e,t,n)):Ix(e,i,a)}});function Fx(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(fv(e)&&fv(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=Fx(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Fx(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Ix(e,t,n){let r=new Map,i,a=new Map,o=(e,t)=>{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=Fx(t.value,n.value);if(!c.valid){if(Dv(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var Lx=K(`$ZodTuple`,(e,t)=>{jb.init(e,t);let n=t.items,r=ny.memoizer;r?.attach(e),e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=r?r.alloc(e,i,[],a):[];let s=[],c=Rx(n,`optin`),l=Rx(n,`optout`);if(!t.rest){if(o.length<c)return i.issues.push({code:`too_small`,minimum:c,inclusive:!0,input:o,inst:e,origin:`array`}),i;o.length>n.length&&i.issues.push({code:`too_big`,maximum:n.length,inclusive:!0,input:o,inst:e,origin:`array`})}let u=Array(n.length);for(let e=0;e<n.length;e++){let t=n[e]._zod.run({value:o[e],issues:[]},a);t instanceof Promise?s.push(t.then(t=>{u[e]=t})):u[e]=t}if(t.rest){let e=n.length-1,r=o.slice(n.length);for(let n of r){e++;let r=t.rest._zod.run({value:n,issues:[]},a);r instanceof Promise?s.push(r.then(t=>zx(t,i,e))):zx(r,i,e)}}return s.length?Promise.all(s).then(()=>Bx(u,i,n,o,l)):Bx(u,i,n,o,l)}});function Rx(e,t){for(let n=e.length-1;n>=0;n--)if(!(t===`optin`?e[n]._zod.optin!==void 0:e[n]._zod.optout===`optional`))return n+1;return 0}function zx(e,t,n){e.issues.length&&t.issues.push(...kv(n,e.issues)),t.value[n]=e.value}function Bx(e,t,n,r,i){for(let a=0;a<n.length;a++){let o=e[a],s=a<r.length;if(!s&&a>=i&&n[a]._zod.optin===`optional`){t.value.length=a;break}if(o.issues.length){if(!s&&a>=i){t.value.length=a;break}t.issues.push(...kv(a,o.issues))}t.value[a]=o.value}for(let e=t.value.length-1;e>=r.length&&n[e]._zod.optout===`optional`&&t.value[e]===void 0;e--)t.value.length=e;return t}var Vx=K(`$ZodRecord`,(e,t)=>{jb.init(e,t);let n=ny.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!fv(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>Mv(e,i,ry())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...kv(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...kv(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&ob.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>Mv(e,i,ry())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...kv(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...kv(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),Hx=K(`$ZodEnum`,(e,t)=>{jb.init(e,t);let n=X_(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>mv.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>hv(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Ux=K(`$ZodLiteral`,(e,t)=>{jb.init(e,t);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(t.values.length?`^(${t.values.map(e=>typeof e==`string`?hv(e):e?hv(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Wx=K(`$ZodTransform`,(e,t)=>{jb.init(e,t),e._zod.optin=`optional`,ny.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new ty(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new ey;return n.value=i,n}});function Gx(e,t){return e.value=t.issues.length?void 0:t.value,e}var Kx=K(`$ZodOptional`,(e,t)=>{jb.init(e,t),Kv(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,Kv(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),Kv(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${tv(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Gx(e,t)):Gx(e,r)}return t.innerType._zod.run(e,n)}}),qx=K(`$ZodExactOptional`,(e,t)=>{Kx.init(e,t),Kv(e,`values`,e=>e.def.innerType._zod.values),Kv(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Jx=K(`$ZodNullable`,(e,t)=>{jb.init(e,t),Kv(e,`optin`,e=>e.def.innerType._zod.optin),Kv(e,`optout`,e=>e.def.innerType._zod.optout),Kv(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${tv(t.source)}|null)$`):void 0}),Kv(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Yx=K(`$ZodDefault`,(e,t)=>{jb.init(e,t),e._zod.optin=`defaulted`,Kv(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Xx(e,t)):Xx(r,t)}});function Xx(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Zx=K(`$ZodPrefault`,(e,t)=>{jb.init(e,t),e._zod.optin=`defaulted`,Kv(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Qx=K(`$ZodNonOptional`,(e,t)=>{jb.init(e,t),Kv(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>$x(t,e)):$x(i,e)}});function $x(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function eS(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>Mv(e,r,ry()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var tS=K(`$ZodCatch`,(e,t)=>{jb.init(e,t),Kv(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),Kv(e,`optout`,e=>e.def.innerType._zod.optout),Kv(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>eS(e,r,t,n)):eS(e,r,t,n)}}),nS=K(`$ZodPipe`,(e,t)=>{jb.init(e,t),Kv(e,`values`,e=>e.def.in._zod.values),Kv(e,`optin`,e=>e.def.in._zod.optin),Kv(e,`optout`,e=>e.def.out._zod.optout),Kv(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>rS(e,t.in,n)):rS(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>rS(e,t.out,n)):rS(r,t.out,n)}});function rS(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var iS=K(`$ZodReadonly`,(e,t)=>{jb.init(e,t),Kv(e,`propValues`,e=>e.def.innerType._zod.propValues),Kv(e,`values`,e=>e.def.innerType._zod.values),Kv(e,`optin`,e=>e.def.innerType?._zod?.optin),Kv(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(aS):aS(r)}});function aS(e){return e.memo||(e.value=Object.freeze(e.value)),e}var oS=K(`$ZodLazy`,(e,t)=>{jb.init(e,t),iv(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),Kv(e,`pattern`,e=>e.innerType?._zod?.pattern),Kv(e,`propValues`,e=>e.innerType?._zod?.propValues),Kv(e,`optin`,e=>e.innerType?._zod?.optin??void 0),Kv(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),sS=K(`$ZodCustom`,(e,t)=>{db.init(e,t),jb.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>cS(t,n,r,e));cS(i,n,r,e)}});function cS(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(Lv(e))}}var lS=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},uS=`~memo`,dS=[];function fS(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var pS=new WeakMap;function mS(e,t){let n=pS.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&mS(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),pS.set(e,r),r}function hS(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var gS,_S=[],vS={alloc(e,t,n){let r=gS;if(!r)return n;gS=void 0;let i={value:n,issues:null};return r.set(t.value,i),_S.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&bS(n,e.value))throw new lS;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=mS(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[uS];l||(l={buckets:new Map,backEdges:void 0},s[uS]=l);let u;r===s?u=i:(u=hS(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...fS(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;gS=u;let f=_S.length,p=t(o,s);gS=void 0;let m=_S.length>f?_S.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?fS(e.issues):dS),e)):(m&&(m.issues=p.issues.length?fS(p.issues):dS),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function yS(){return vS}function bS(e,t){let n=e[uS]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var xS=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Iv(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${_v(e.values[0])}`:`Invalid option: expected one of ${Z_(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Z_(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function SS(){return{localeError:xS()}}var CS,wS=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function TS(){return new wS}(CS=globalThis).__zod_globalRegistry??(CS.__zod_globalRegistry=TS());var ES=globalThis.__zod_globalRegistry;function DS(e,t){return new e({type:`string`,...G(t)})}function OS(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...G(t)})}function kS(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...G(t)})}function AS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...G(t)})}function jS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...G(t)})}function MS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...G(t)})}function NS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...G(t)})}function PS(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...G(t)})}function FS(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...G(t)})}function IS(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...G(t)})}function LS(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...G(t)})}function RS(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...G(t)})}function zS(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...G(t)})}function BS(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...G(t)})}function VS(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...G(t)})}function HS(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...G(t)})}function US(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...G(t)})}function WS(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...G(t)})}function GS(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...G(t)})}function KS(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...G(t)})}function qS(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...G(t)})}function JS(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...G(t)})}function YS(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...G(t)})}function XS(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...G(t)})}function ZS(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...G(t)})}function QS(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...G(t)})}function $S(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...G(t)})}function eC(e,t){return new e({type:`number`,checks:[],...G(t)})}function tC(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...G(t)})}function nC(e,t){return new e({type:`boolean`,...G(t)})}function rC(e,t){return new e({type:`null`,...G(t)})}function iC(e){return new e({type:`unknown`})}function aC(e,t){return new e({type:`never`,...G(t)})}function oC(e,t){return new mb({check:`less_than`,...G(t),value:e,inclusive:!1})}function sC(e,t){return new mb({check:`less_than`,...G(t),value:e,inclusive:!0})}function cC(e,t){return new hb({check:`greater_than`,...G(t),value:e,inclusive:!1})}function lC(e,t){return new hb({check:`greater_than`,...G(t),value:e,inclusive:!0})}function uC(e,t){return new gb({check:`multiple_of`,...G(t),value:e})}function dC(e,t){return new vb({check:`max_length`,...G(t),maximum:e})}function fC(e,t){return new yb({check:`min_length`,...G(t),minimum:e})}function pC(e,t){return new bb({check:`length_equals`,...G(t),length:e})}function mC(e,t){return new Sb({check:`string_format`,format:`regex`,...G(t),pattern:e})}function hC(e){return new Cb({check:`string_format`,format:`lowercase`,...G(e)})}function gC(e){return new wb({check:`string_format`,format:`uppercase`,...G(e)})}function _C(e,t){return new Tb({check:`string_format`,format:`includes`,...G(t),includes:e})}function vC(e,t){return new Eb({check:`string_format`,format:`starts_with`,...G(t),prefix:e})}function yC(e,t){return new Db({check:`string_format`,format:`ends_with`,...G(t),suffix:e})}function bC(e){return new Ob({check:`overwrite`,tx:e})}function xC(e){return bC(t=>t.normalize(e))}function SC(){return bC(e=>e.trim())}function CC(){return bC(e=>e.toLowerCase())}function wC(){return bC(e=>e.toUpperCase())}function TC(){return bC(e=>cv(e))}function EC(e,t,n){return new e({type:`array`,element:t,...G(n)})}function DC(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...G(n)})}function OC(e,t){let n=kC(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Lv(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Lv(r))}},e(t.value,t)),t);return n}function kC(e,t){let n=new db({check:`custom`,...G(t)});return n._zod.check=e,n}function AC(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&av(e,t,n[t]);return e}function jC(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??ES,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function MC(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function NC(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,NC(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&AC(o.schema,c),t.io===`input`&&UC(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function PC(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function FC(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${PC(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+PC(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
76
+ `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=dv,c=!ry.jitless,l=c&&fv.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Ox([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Mx(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Ov(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>Nv(e,r,iy())))}),t)}var Nx=K(`$ZodUnion`,(e,t)=>{Mb.init(e,t),qv(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),qv(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),qv(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),qv(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>nv(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Mx(t,r,e,i)):Mx(o,r,e,i)}}),Px=K(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Nx.init(e,t);let n=e._zod.parse;qv(e,`propValues`,e=>{let t={};for(let n of e.def.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(n)}"`);for(let[e,n]of Object.entries(r)){Object.prototype.hasOwnProperty.call(t,e)||ov(t,e,new Set);for(let r of n)t[e].add(r)}}return t}),t.options.forEach((e,n)=>{let r=kx.get(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=ev(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!dv(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),Fx=K(`$ZodIntersection`,(e,t)=>{Mb.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Lx(e,t,n)):Lx(e,i,a)}});function Ix(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(pv(e)&&pv(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=Ix(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Ix(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Lx(e,t,n){let r=new Map,i,a=new Map,o=(e,t)=>{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=Ix(t.value,n.value);if(!c.valid){if(Ov(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var Rx=K(`$ZodTuple`,(e,t)=>{Mb.init(e,t);let n=t.items,r=ry.memoizer;r?.attach(e),e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=r?r.alloc(e,i,[],a):[];let s=[],c=zx(n,`optin`),l=zx(n,`optout`);if(!t.rest){if(o.length<c)return i.issues.push({code:`too_small`,minimum:c,inclusive:!0,input:o,inst:e,origin:`array`}),i;o.length>n.length&&i.issues.push({code:`too_big`,maximum:n.length,inclusive:!0,input:o,inst:e,origin:`array`})}let u=Array(n.length);for(let e=0;e<n.length;e++){let t=n[e]._zod.run({value:o[e],issues:[]},a);t instanceof Promise?s.push(t.then(t=>{u[e]=t})):u[e]=t}if(t.rest){let e=n.length-1,r=o.slice(n.length);for(let n of r){e++;let r=t.rest._zod.run({value:n,issues:[]},a);r instanceof Promise?s.push(r.then(t=>Bx(t,i,e))):Bx(r,i,e)}}return s.length?Promise.all(s).then(()=>Vx(u,i,n,o,l)):Vx(u,i,n,o,l)}});function zx(e,t){for(let n=e.length-1;n>=0;n--)if(!(t===`optin`?e[n]._zod.optin!==void 0:e[n]._zod.optout===`optional`))return n+1;return 0}function Bx(e,t,n){e.issues.length&&t.issues.push(...Av(n,e.issues)),t.value[n]=e.value}function Vx(e,t,n,r,i){for(let a=0;a<n.length;a++){let o=e[a],s=a<r.length;if(!s&&a>=i&&n[a]._zod.optin===`optional`){t.value.length=a;break}if(o.issues.length){if(!s&&a>=i){t.value.length=a;break}t.issues.push(...Av(a,o.issues))}t.value[a]=o.value}for(let e=t.value.length-1;e>=r.length&&n[e]._zod.optout===`optional`&&t.value[e]===void 0;e--)t.value.length=e;return t}var Hx=K(`$ZodRecord`,(e,t)=>{Mb.init(e,t);let n=ry.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!pv(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>Nv(e,i,iy())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...Av(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...Av(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&sb.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>Nv(e,i,iy())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...Av(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...Av(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),Ux=K(`$ZodEnum`,(e,t)=>{Mb.init(e,t);let n=Z_(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>hv.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>gv(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Wx=K(`$ZodLiteral`,(e,t)=>{Mb.init(e,t);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(t.values.length?`^(${t.values.map(e=>typeof e==`string`?gv(e):e?gv(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Gx=K(`$ZodTransform`,(e,t)=>{Mb.init(e,t),e._zod.optin=`optional`,ry.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new ny(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new ty;return n.value=i,n}});function Kx(e,t){return e.value=t.issues.length?void 0:t.value,e}var qx=K(`$ZodOptional`,(e,t)=>{Mb.init(e,t),qv(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,qv(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),qv(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${nv(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Kx(e,t)):Kx(e,r)}return t.innerType._zod.run(e,n)}}),Jx=K(`$ZodExactOptional`,(e,t)=>{qx.init(e,t),qv(e,`values`,e=>e.def.innerType._zod.values),qv(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Yx=K(`$ZodNullable`,(e,t)=>{Mb.init(e,t),qv(e,`optin`,e=>e.def.innerType._zod.optin),qv(e,`optout`,e=>e.def.innerType._zod.optout),qv(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${nv(t.source)}|null)$`):void 0}),qv(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Xx=K(`$ZodDefault`,(e,t)=>{Mb.init(e,t),e._zod.optin=`defaulted`,qv(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Zx(e,t)):Zx(r,t)}});function Zx(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Qx=K(`$ZodPrefault`,(e,t)=>{Mb.init(e,t),e._zod.optin=`defaulted`,qv(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),$x=K(`$ZodNonOptional`,(e,t)=>{Mb.init(e,t),qv(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>eS(t,e)):eS(i,e)}});function eS(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function tS(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>Nv(e,r,iy()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var nS=K(`$ZodCatch`,(e,t)=>{Mb.init(e,t),qv(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),qv(e,`optout`,e=>e.def.innerType._zod.optout),qv(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>tS(e,r,t,n)):tS(e,r,t,n)}}),rS=K(`$ZodPipe`,(e,t)=>{Mb.init(e,t),qv(e,`values`,e=>e.def.in._zod.values),qv(e,`optin`,e=>e.def.in._zod.optin),qv(e,`optout`,e=>e.def.out._zod.optout),qv(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>iS(e,t.in,n)):iS(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>iS(e,t.out,n)):iS(r,t.out,n)}});function iS(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var aS=K(`$ZodReadonly`,(e,t)=>{Mb.init(e,t),qv(e,`propValues`,e=>e.def.innerType._zod.propValues),qv(e,`values`,e=>e.def.innerType._zod.values),qv(e,`optin`,e=>e.def.innerType?._zod?.optin),qv(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(oS):oS(r)}});function oS(e){return e.memo||(e.value=Object.freeze(e.value)),e}var sS=K(`$ZodLazy`,(e,t)=>{Mb.init(e,t),av(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),qv(e,`pattern`,e=>e.innerType?._zod?.pattern),qv(e,`propValues`,e=>e.innerType?._zod?.propValues),qv(e,`optin`,e=>e.innerType?._zod?.optin??void 0),qv(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),cS=K(`$ZodCustom`,(e,t)=>{fb.init(e,t),Mb.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>lS(t,n,r,e));lS(i,n,r,e)}});function lS(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(Rv(e))}}var uS=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},dS=`~memo`,fS=[];function pS(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var mS=new WeakMap;function hS(e,t){let n=mS.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&hS(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),mS.set(e,r),r}function gS(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var _S,vS=[],yS={alloc(e,t,n){let r=_S;if(!r)return n;_S=void 0;let i={value:n,issues:null};return r.set(t.value,i),vS.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&xS(n,e.value))throw new uS;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=hS(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[dS];l||(l={buckets:new Map,backEdges:void 0},s[dS]=l);let u;r===s?u=i:(u=gS(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...pS(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;_S=u;let f=vS.length,p=t(o,s);_S=void 0;let m=vS.length>f?vS.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?pS(e.issues):fS),e)):(m&&(m.issues=p.issues.length?pS(p.issues):fS),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function bS(){return yS}function xS(e,t){let n=e[dS]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var SS=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Lv(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${vv(e.values[0])}`:`Invalid option: expected one of ${Q_(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Q_(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function CS(){return{localeError:SS()}}var wS,TS=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function ES(){return new TS}(wS=globalThis).__zod_globalRegistry??(wS.__zod_globalRegistry=ES());var DS=globalThis.__zod_globalRegistry;function OS(e,t){return new e({type:`string`,...G(t)})}function kS(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...G(t)})}function AS(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...G(t)})}function jS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...G(t)})}function MS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...G(t)})}function NS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...G(t)})}function PS(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...G(t)})}function FS(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...G(t)})}function IS(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...G(t)})}function LS(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...G(t)})}function RS(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...G(t)})}function zS(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...G(t)})}function BS(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...G(t)})}function VS(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...G(t)})}function HS(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...G(t)})}function US(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...G(t)})}function WS(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...G(t)})}function GS(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...G(t)})}function KS(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...G(t)})}function qS(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...G(t)})}function JS(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...G(t)})}function YS(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...G(t)})}function XS(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...G(t)})}function ZS(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...G(t)})}function QS(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...G(t)})}function $S(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...G(t)})}function eC(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...G(t)})}function tC(e,t){return new e({type:`number`,checks:[],...G(t)})}function nC(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...G(t)})}function rC(e,t){return new e({type:`boolean`,...G(t)})}function iC(e,t){return new e({type:`null`,...G(t)})}function aC(e){return new e({type:`unknown`})}function oC(e,t){return new e({type:`never`,...G(t)})}function sC(e,t){return new hb({check:`less_than`,...G(t),value:e,inclusive:!1})}function cC(e,t){return new hb({check:`less_than`,...G(t),value:e,inclusive:!0})}function lC(e,t){return new gb({check:`greater_than`,...G(t),value:e,inclusive:!1})}function uC(e,t){return new gb({check:`greater_than`,...G(t),value:e,inclusive:!0})}function dC(e,t){return new _b({check:`multiple_of`,...G(t),value:e})}function fC(e,t){return new yb({check:`max_length`,...G(t),maximum:e})}function pC(e,t){return new bb({check:`min_length`,...G(t),minimum:e})}function mC(e,t){return new xb({check:`length_equals`,...G(t),length:e})}function hC(e,t){return new Cb({check:`string_format`,format:`regex`,...G(t),pattern:e})}function gC(e){return new wb({check:`string_format`,format:`lowercase`,...G(e)})}function _C(e){return new Tb({check:`string_format`,format:`uppercase`,...G(e)})}function vC(e,t){return new Eb({check:`string_format`,format:`includes`,...G(t),includes:e})}function yC(e,t){return new Db({check:`string_format`,format:`starts_with`,...G(t),prefix:e})}function bC(e,t){return new Ob({check:`string_format`,format:`ends_with`,...G(t),suffix:e})}function xC(e){return new kb({check:`overwrite`,tx:e})}function SC(e){return xC(t=>t.normalize(e))}function CC(){return xC(e=>e.trim())}function wC(){return xC(e=>e.toLowerCase())}function TC(){return xC(e=>e.toUpperCase())}function EC(){return xC(e=>lv(e))}function DC(e,t,n){return new e({type:`array`,element:t,...G(n)})}function OC(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...G(n)})}function kC(e,t){let n=AC(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Rv(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Rv(r))}},e(t.value,t)),t);return n}function AC(e,t){let n=new fb({check:`custom`,...G(t)});return n._zod.check=e,n}function jC(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&ov(e,t,n[t]);return e}function MC(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??DS,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function NC(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function PC(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,PC(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&jC(o.schema,c),t.io===`input`&&WC(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function FC(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function IC(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${FC(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+FC(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
77
77
 
78
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function IC(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;IC(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var LC=new Set([`type`,`properties`,`required`,`additionalProperties`]),RC=[`oneOf`,`anyOf`];function zC(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function BC(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!LC.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??zC(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}av(n,r,e.length===1?e[0]:BC(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=zC(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function VC(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of LC)if(t in e)return;let n=t.filter(e=>RC.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=BC(t);else{let e=n[0],i=RC.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>BC([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,AC(e,r))}function HC(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):AC(i,s),AC(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())IC(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])VC(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}AC(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,av(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:GC(t,`input`,e.processors),output:GC(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function UC(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return UC(r.element,n);if(r.type===`set`)return UC(r.valueType,n);if(r.type===`lazy`)return UC(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return UC(r.innerType,n);if(r.type===`intersection`)return UC(r.left,n)||UC(r.right,n);if(r.type===`record`||r.type===`map`)return UC(r.keyType,n)||UC(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:UC(r.in,n)||UC(r.out,n);if(r.type===`object`){for(let e in r.shape)if(UC(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(UC(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(UC(e,n))return!0;return!!(r.rest&&UC(r.rest,n))}return!1}var WC=(e,t={})=>n=>{let r=jC({...n,processors:t});return NC(e,r),FC(r,e),HC(r,e)},GC=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=jC({...i??{},target:a,io:t,processors:n});return NC(e,o),FC(o,e),HC(o,e)},KC={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},qC=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=KC[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},JC=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):MC(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},YC=(e,t,n,r)=>{n.type=`boolean`},XC=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},ZC=(e,t,n,r)=>{n.not={}},QC=(e,t,n,r)=>{let i=e._zod.def,a=X_(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},$C=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(MC(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(MC(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},ew=(e,t,n,r)=>{MC(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},tw=(e,t,n,r)=>{MC(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},nw=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=NC(a.element,t,{...r,path:[...r.path,`items`]})};function rw(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?rw(t.out):t.type===`catch`?rw(t.innerType):e._zod.optin}var iw=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&MC(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)av(i.properties,e,NC(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?rw(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=NC(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},aw=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>NC(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},ow=(e,t,n,r)=>{let i=e._zod.def,a=NC(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=NC(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},sw=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>NC(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?NC(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?rw(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=e._zod.bag;typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function cw(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=cw(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>cw(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?ob:ab).source),p):p}var lw=new WeakMap;function uw(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of lw.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=cw(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var dw=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=NC(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)av(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=NC(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=lw.get(t);n||(n=[],lw.set(t,n),t.deferred.push(()=>uw(t))),n.push(e)}i.additionalProperties=NC(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&rw(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},fw=(e,t,n,r)=>{let i=e._zod.def,a=NC(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},pw=(e,t,n,r)=>{let i=e._zod.def;NC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},mw=Symbol();function hw(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(MC(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),mw):JSON.parse(o)}var gw=(e,t,n,r)=>{let i=e._zod.def;NC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=hw(i.defaultValue,e,t,n,r);o!==mw&&(n.default=o)},_w=(e,t,n,r)=>{let i=e._zod.def;NC(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=hw(i.defaultValue,e,t,n,r);o!==mw&&(n._prefault=o)},vw=(e,t,n,r)=>{let i=e._zod.def;NC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{MC(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},yw=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;NC(o,t,r);let s=t.seen.get(e);s.ref=o},bw=(e,t,n,r)=>{let i=e._zod.def;NC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},xw=(e,t,n,r)=>{let i=e._zod.def;NC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Sw=(e,t,n,r)=>{let i=e._zod.innerType;NC(i,t,r);let a=t.seen.get(e);a.ref=i},Cw=new WeakSet([Object.prototype,Error.prototype]);function ww(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Tw=K(`ZodError`,(e,t)=>{dy.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);Cw.has(n)||(Cw.add(n),ww(n,`format`,e=>t=>hy(e,t)),ww(n,`flatten`,e=>t=>my(e,t)),ww(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Q_,2)}),ww(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Q_,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Ew=_y(Tw),Dw=vy(Tw),Ow=yy(Tw),kw=xy(Tw),Aw=Cy(Tw),jw=wy(Tw),Mw=Ty(Tw),Nw=Ey(Tw),Pw=Dy(Tw),Fw=Oy(Tw),Iw=ky(Tw),Lw=Ay(Tw);function Rw(){ny.localeError||ry(SS())}function zw(){ny.memoizer||ry({memoizer:yS()})}var Bw=K(`ZodType`,(e,t)=>(Rw(),jb.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(ov(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return gv(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(lE(e,t))},superRefine(e,t){return this.check(uE(e,t))},overwrite(e){return this.check(bC(e))},optional(){return WT(this)},exactOptional(){return KT(this)},nullable(){return JT(this)},nullish(){return WT(JT(this))},nonoptional(e){return eE(this,e)},array(){return TT(this)},or(e){return kT([this,e])},and(e){return NT(this,e)},transform(e){return iE(this,HT(e))},default(e){return XT(this,e)},prefault(e){return QT(this,e)},catch(e){return nE(this,e)},pipe(e){return iE(this,e)},readonly(){return oE(this)},describe(e){let t=this.clone();return ES.add(t,{description:e}),t},meta(...e){if(e.length===0)return ES.get(this);let t=this.clone();return ES.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Bv(this,`~standard`,{...Nb(this),jsonSchema:{input:GC(this,`input`),output:GC(this,`output`)}})},set"~standard"(e){zv(this,`~standard`,e)},parse:function e(t,n){return Ew(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Dw(this,t,n,{callee:e})},safeParse(e,t){return Ow(this,e,t)},async safeParseAsync(e,t){return kw(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){zv(this,`spa`,e)},encode:function e(t,n){return Aw(this,t,n,{callee:e})},decode:function e(t,n){return jw(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Mw(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await Nw(this,t,n,{callee:e})},safeEncode(e,t){return Pw(this,e,t)},safeDecode(e,t){return Fw(this,e,t)},async safeEncodeAsync(e,t){return Iw(this,e,t)},async safeDecodeAsync(e,t){return Lw(this,e,t)},toJSONSchema(e){return WC(this,{})(e)},get description(){return ES.get(this)?.description},get _def(){return this._zod.def}}),Vw=K(`_ZodString`,(e,t)=>{Pb.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qC(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(mC(...e))},includes(...e){return this.check(_C(...e))},startsWith(...e){return this.check(vC(...e))},endsWith(...e){return this.check(yC(...e))},min(...e){return this.check(fC(...e))},max(...e){return this.check(dC(...e))},length(...e){return this.check(pC(...e))},nonempty(...e){return this.check(fC(1,...e))},lowercase(e){return this.check(hC(e))},uppercase(e){return this.check(gC(e))},trim(){return this.check(SC())},normalize(...e){return this.check(xC(...e))},toLowerCase(){return this.check(CC())},toUpperCase(){return this.check(wC())},slugify(){return this.check(TC())}}),Hw=K(`ZodString`,(e,t)=>{Pb.init(e,t),Vw.init(e,t)},{email(e){return this.check(OS(Jw,e))},url(e){return this.check(PS(Zw,e))},jwt(e){return this.check(YS(fT,e))},emoji(e){return this.check(FS(Qw,e))},guid(e){return this.check(kS(Yw,e))},uuid(e){return this.check(AS(Xw,e))},uuidv4(e){return this.check(jS(Xw,e))},uuidv6(e){return this.check(MS(Xw,e))},uuidv7(e){return this.check(NS(Xw,e))},nanoid(e){return this.check(IS($w,e))},cuid(e){return this.check(LS(eT,e))},cuid2(e){return this.check(RS(tT,e))},ulid(e){return this.check(zS(nT,e))},base64(e){return this.check(KS(lT,e))},base64url(e){return this.check(qS(uT,e))},xid(e){return this.check(BS(rT,e))},ksuid(e){return this.check(VS(iT,e))},ipv4(e){return this.check(HS(aT,e))},ipv6(e){return this.check(US(oT,e))},cidrv4(e){return this.check(WS(sT,e))},cidrv6(e){return this.check(GS(cT,e))},e164(e){return this.check(JS(dT,e))},datetime(e){return this.check(XS(Ww,e))},date(e){return this.check(ZS(Gw,e))},time(e){return this.check(QS(Kw,e))},duration(e){return this.check($S(qw,e))}});function q(e){return DS(Hw,e)}var Uw=K(`ZodStringFormat`,(e,t)=>{Fb.init(e,t),Vw.init(e,t)}),Ww=K(`ZodISODateTime`,(e,t)=>{Qb.init(e,t),Uw.init(e,t)}),Gw=K(`ZodISODate`,(e,t)=>{$b.init(e,t),Uw.init(e,t)}),Kw=K(`ZodISOTime`,(e,t)=>{ex.init(e,t),Uw.init(e,t)}),qw=K(`ZodISODuration`,(e,t)=>{tx.init(e,t),Uw.init(e,t)}),Jw=K(`ZodEmail`,(e,t)=>{Rb.init(e,t),Uw.init(e,t)}),Yw=K(`ZodGUID`,(e,t)=>{Ib.init(e,t),Uw.init(e,t)}),Xw=K(`ZodUUID`,(e,t)=>{Lb.init(e,t),Uw.init(e,t)}),Zw=K(`ZodURL`,(e,t)=>{Wb.init(e,t),Uw.init(e,t)}),Qw=K(`ZodEmoji`,(e,t)=>{Gb.init(e,t),Uw.init(e,t)}),$w=K(`ZodNanoID`,(e,t)=>{Kb.init(e,t),Uw.init(e,t)}),eT=K(`ZodCUID`,(e,t)=>{qb.init(e,t),Uw.init(e,t)}),tT=K(`ZodCUID2`,(e,t)=>{Jb.init(e,t),Uw.init(e,t)}),nT=K(`ZodULID`,(e,t)=>{Yb.init(e,t),Uw.init(e,t)}),rT=K(`ZodXID`,(e,t)=>{Xb.init(e,t),Uw.init(e,t)}),iT=K(`ZodKSUID`,(e,t)=>{Zb.init(e,t),Uw.init(e,t)}),aT=K(`ZodIPv4`,(e,t)=>{nx.init(e,t),Uw.init(e,t)}),oT=K(`ZodIPv6`,(e,t)=>{ax.init(e,t),Uw.init(e,t)}),sT=K(`ZodCIDRv4`,(e,t)=>{ox.init(e,t),Uw.init(e,t)}),cT=K(`ZodCIDRv6`,(e,t)=>{cx.init(e,t),Uw.init(e,t)}),lT=K(`ZodBase64`,(e,t)=>{ux.init(e,t),Uw.init(e,t)}),uT=K(`ZodBase64URL`,(e,t)=>{fx.init(e,t),Uw.init(e,t)}),dT=K(`ZodE164`,(e,t)=>{px.init(e,t),Uw.init(e,t)}),fT=K(`ZodJWT`,(e,t)=>{hx.init(e,t),Uw.init(e,t)}),pT=K(`ZodNumber`,(e,t)=>{gx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>JC(e,t,n,r);let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null},{gt(e,t){return this.check(cC(e,t))},gte(e,t){return this.check(lC(e,t))},min(e,t){return this.check(lC(e,t))},lt(e,t){return this.check(oC(e,t))},lte(e,t){return this.check(sC(e,t))},max(e,t){return this.check(sC(e,t))},int(e){return this.check(hT(e))},safe(e){return this.check(hT(e))},positive(e){return this.check(cC(0,e))},nonnegative(e){return this.check(lC(0,e))},negative(e){return this.check(oC(0,e))},nonpositive(e){return this.check(sC(0,e))},multipleOf(e,t){return this.check(uC(e,t))},step(e,t){return this.check(uC(e,t))},finite(){return this}});function J(e){return eC(pT,e)}var mT=K(`ZodNumberFormat`,(e,t)=>{_x.init(e,t),pT.init(e,t)});function hT(e){return tC(mT,e)}var gT=K(`ZodBoolean`,(e,t)=>{vx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>YC(e,t,n,r)});function _T(e){return nC(gT,e)}var vT=K(`ZodNull`,(e,t)=>{yx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>XC(e,t,n,r)});function yT(e){return rC(vT,e)}var bT=K(`ZodUnknown`,(e,t)=>{bx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function xT(){return iC(bT)}var ST=K(`ZodNever`,(e,t)=>{xx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ZC(e,t,n,r)});function CT(e){return aC(ST,e)}var wT=K(`ZodArray`,(e,t)=>{zw(),Cx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>nw(e,t,n,r),e.element=t.element},{min(e,t){return this.check(fC(e,t))},nonempty(e){return this.check(fC(1,e))},max(e,t){return this.check(dC(e,t))},length(e,t){return this.check(pC(e,t))},unwrap(){return this.element}});function TT(e,t){return EC(wT,e,t)}var ET=K(`ZodObject`,(e,t)=>{zw(),Ax.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>iw(e,t,n,r),qv(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return zT(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:xT()})},loose(){return this.clone({...this._zod.def,catchall:xT()})},strict(){return this.clone({...this._zod.def,catchall:CT()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return Sv(this,e)},safeExtend(e){return Cv(this,e)},merge(e){return wv(this,e)},pick(e){return bv(this,e)},omit(e){return xv(this,e)},partial(...e){return Tv(UT,this,e[0])},exactPartial(...e){return Tv(GT,this,e[0],`exactPartial`)},required(...e){return Ev($T,this,e[0])}});function Y(e,t){return new ET({type:`object`,shape:e??{},...G(t)})}function DT(e,t){return new ET({type:`object`,shape:e,catchall:CT(),...G(t)})}var OT=K(`ZodUnion`,(e,t)=>{Mx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>aw(e,t,n,r),e.options=t.options});function kT(e,t){return new OT({type:`union`,options:e,...G(t)})}var AT=K(`ZodDiscriminatedUnion`,(e,t)=>{OT.init(e,t),Nx.init(e,t)});function jT(e,t,n){return new AT({type:`union`,options:t,discriminator:e,...G(n)})}var MT=K(`ZodIntersection`,(e,t)=>{Px.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ow(e,t,n,r)});function NT(e,t){return new MT({type:`intersection`,left:e,right:t})}var PT=K(`ZodTuple`,(e,t)=>{zw(),Lx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sw(e,t,n,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw Error(`.partial() cannot be used on tuple schemas containing refinements`);return this.clone({...e,items:e.items.map(e=>new UT({type:`optional`,innerType:e}))})}});function FT(e,t,n){let r=t instanceof jb;return new PT({type:`tuple`,items:e,rest:r?t:null,...G(r?n:t)})}var IT=K(`ZodRecord`,(e,t)=>{zw(),Vx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>dw(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function LT(e,t,n){return!t||!t._zod?new IT({type:`record`,keyType:q(),valueType:e,...G(t)}):new IT({type:`record`,keyType:e,valueType:t,...G(n)})}var RT=K(`ZodEnum`,(e,t)=>{Hx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>QC(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new RT({...t,checks:[],...G(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new RT({...t,checks:[],...G(r),entries:i})}});function zT(e,t){return new RT({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...G(t)})}var BT=K(`ZodLiteral`,(e,t)=>{Ux.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$C(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function X(e,t){return new BT({type:`literal`,values:Array.isArray(e)?e:[e],...G(t)})}var VT=K(`ZodTransform`,(e,t)=>{zw(),Wx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>tw(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new ty(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Lv(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(Lv(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function HT(e){return new VT({type:`transform`,transform:e})}var UT=K(`ZodOptional`,(e,t)=>{Kx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function WT(e){return new UT({type:`optional`,innerType:e})}var GT=K(`ZodExactOptional`,(e,t)=>{qx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function KT(e){return new GT({type:`optional`,innerType:e})}var qT=K(`ZodNullable`,(e,t)=>{Jx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function JT(e){return new qT({type:`nullable`,innerType:e})}var YT=K(`ZodDefault`,(e,t)=>{Yx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function XT(e,t){return new YT({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():pv(t)}})}var ZT=K(`ZodPrefault`,(e,t)=>{Zx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_w(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function QT(e,t){return new ZT({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():pv(t)}})}var $T=K(`ZodNonOptional`,(e,t)=>{Qx.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function eE(e,t){return new $T({type:`nonoptional`,innerType:e,...G(t)})}var tE=K(`ZodCatch`,(e,t)=>{tS.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function nE(e,t){return new tE({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Yv(t)})}var rE=K(`ZodPipe`,(e,t)=>{nS.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yw(e,t,n,r),e.in=t.in,e.out=t.out});function iE(e,t){return new rE({type:`pipe`,in:e,out:t})}var aE=K(`ZodReadonly`,(e,t)=>{iS.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function oE(e){return new aE({type:`readonly`,innerType:e})}var sE=K(`ZodLazy`,(e,t)=>{oS.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sw(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function Z(e){return new sE({type:`lazy`,getter:e})}var cE=K(`ZodCustom`,(e,t)=>{sS.init(e,t),Bw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ew(e,t,n,r)});function lE(e,t={}){return DC(cE,e,t)}function uE(e,t){return OC(e,t)}function dE(e,t={}){let n=new cE({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...G(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var fE=Z(()=>dE(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),pE=Z(()=>Y({verb:X(`bulk.open`),"transfer-id":Z(()=>fE),"total-size":J().int().nonnegative().optional(),"content-type":q().optional()}).catchall(xT())),mE=Z(()=>Y({verb:X(`bulk.resume`),"transfer-id":Z(()=>fE),"ack-seq":J().int().nonnegative()}).catchall(xT())),hE=Z(()=>Y({verb:X(`bulk.cancel`),"transfer-id":Z(()=>fE),reason:q().optional()}).catchall(xT())),gE=Z(()=>kT([kT([Z(()=>pE),Z(()=>mE),Z(()=>hE)]),kT([Z(()=>CE),Z(()=>wE),Z(()=>TE),Z(()=>EE),Z(()=>DE),Z(()=>OE),Z(()=>kE),Z(()=>AE)]),Y({}).catchall(xT()),Z(()=>KE),Z(()=>JE),Z(()=>QE),Z(()=>$E),kT([Z(()=>rD),Z(()=>iD),Z(()=>aD),Z(()=>oD)]),kT([Z(()=>cD),Z(()=>lD)]),Z(()=>uD),kT([Z(()=>wD),Z(()=>TD),Z(()=>ED)]),kT([Z(()=>DD),Z(()=>OD),Z(()=>kD)]),Z(()=>eO),kT([Z(()=>rO),Z(()=>iO),Z(()=>aO),Z(()=>tO)])])),_E=Z(()=>Y({type:X(`bulk-data`),"transfer-id":Z(()=>fE),seq:J().int().nonnegative(),bytes:dE(Uint8Array)})),vE=Z(()=>Y({type:X(`bulk-ack`),"transfer-id":Z(()=>fE),"ack-seq":J().int().nonnegative(),window:J().int().nonnegative()})),yE=Z(()=>Y({type:X(`bulk-end`),"transfer-id":Z(()=>fE),digest:dE(Uint8Array)})),bE=Z(()=>Y({type:X(`data-have`),peer:Z(()=>BE),"head-seq":J().int().nonnegative()})),xE=Z(()=>Y({type:X(`data-request`),peer:Z(()=>BE),"from-seq":J().int().nonnegative()})),SE=Z(()=>Y({type:X(`data-entries`),peer:Z(()=>BE),"from-seq":J().int().nonnegative(),entries:TT(dE(Uint8Array))}));Z(()=>Y({handle:q(),"device-id":Z(()=>BE),"identity-key":Z(()=>zE),candidates:TT(Z(()=>GD)).optional(),mailboxes:TT(Z(()=>BE)).optional(),issued:J().int().nonnegative(),expires:J().int().nonnegative()})),Z(()=>Z(()=>ID));var CE=Z(()=>Y({verb:X(`pty.spawn`),shell:q().optional(),argv:TT(q()),cwd:q().optional(),env:Y({}).catchall(q()),cols:J().int().nonnegative(),rows:J().int().nonnegative()})),wE=Z(()=>Y({verb:X(`pty.write`),session:Z(()=>_D),bytes:dE(Uint8Array)})),TE=Z(()=>Y({verb:X(`pty.resize`),session:Z(()=>_D),cols:J().int().nonnegative(),rows:J().int().nonnegative()})),EE=Z(()=>Y({verb:X(`pty.kill`),session:Z(()=>_D),signal:J().int()})),DE=Z(()=>Y({verb:X(`proc.spawn`),argv:TT(q()),cwd:q().optional(),env:Y({}).catchall(q())})),OE=Z(()=>Y({verb:X(`proc.signal`),session:Z(()=>_D),signal:J().int()})),kE=Z(()=>Y({verb:X(`proc.kill`),session:Z(()=>_D)})),AE=Z(()=>Y({verb:X(`exec.list`)}));Z(()=>Y({session:Z(()=>_D),kind:kT([X(`pty`),X(`proc`)]),argv:TT(q()).optional(),cwd:q().optional()}));var jE=Z(()=>kT([Z(()=>RE),Z(()=>zD),Z(()=>BD),Z(()=>VD),Z(()=>UD),Z(()=>KD),Z(()=>qD),Z(()=>JD),Z(()=>YD),Z(()=>XD),Z(()=>ZD),Z(()=>QD),Z(()=>$D),Z(()=>HE),Z(()=>GE),Z(()=>ZE),Z(()=>vD),Z(()=>yD),Z(()=>bD),Z(()=>bE),Z(()=>xE),Z(()=>SE),Z(()=>_E),Z(()=>vE),Z(()=>yE),Z(()=>hD),Z(()=>gD)])),ME=Z(()=>Z(()=>jE)),NE=Z(()=>J().int().nonnegative()),PE=Z(()=>kT([Z(()=>FE),Z(()=>IE),Z(()=>LE)])),FE=Z(()=>kT([X(`core/management`),X(`core/exec`),X(`core/data`),X(`core/federation`),X(`core/webrtc`),X(`core/room`),X(`core/bulk`),X(`core/version`)])),IE=Z(()=>q().regex(RegExp(`[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+/[A-Za-z0-9_.-]+`))),LE=Z(()=>q().regex(RegExp(`x-[A-Za-z0-9_.-]+`))),RE=Z(()=>Y({type:X(`handshake`),version:Z(()=>NE),domains:TT(Z(()=>PE)),params:Y({}).catchall(xT()).optional()})),zE=Z(()=>Y({alg:J().int(),"public-key":dE(Uint8Array)})),BE=Z(()=>dE(Uint8Array).refine(e=>e.length===32,{message:`expected exactly 32 bytes`}));Z(()=>Y({"device-id":Z(()=>BE),"identity-key":Z(()=>zE),certificate:dE(Uint8Array).optional()}));var VE=Z(()=>Y({verb:Z(()=>AD),params:Z(()=>gE)})),HE=Z(()=>Y({type:X(`manage-request`),"request-id":J().int().nonnegative(),command:Z(()=>VE),scope:Z(()=>PD),token:Z(()=>LD).optional()})),UE=Z(()=>Y({result:X(`ok`)}).catchall(xT())),WE=Z(()=>Y({result:X(`error`),code:q(),message:q().optional()})),GE=Z(()=>Y({type:X(`manage-response`),"request-id":J().int().nonnegative(),outcome:kT([Z(()=>UE),Z(()=>WE)])})),KE=Z(()=>Y({verb:X(`capability.request`),capability:q(),"valid-until":J().int().nonnegative().optional()}).catchall(xT())),qE=Z(()=>Y({result:X(`ok`),"granted-token":Z(()=>LD)}).catchall(xT())),JE=Z(()=>Y({verb:X(`capability.grant`),"granted-token":Z(()=>LD)}).catchall(xT())),YE=Z(()=>Y({"token-id":dE(Uint8Array),issuer:Z(()=>BE),"issuer-key":Z(()=>zE),"revoked-at":J().int().nonnegative(),authorization:dE(Uint8Array).optional()})),XE=Z(()=>Z(()=>ID)),ZE=Z(()=>Y({type:X(`revocation-announce`),entries:TT(Z(()=>XE))})),QE=Z(()=>Y({verb:X(`path.trace`)}));Z(()=>Y({result:X(`ok`),relayed:_T(),"hub-address":q().optional()}).catchall(xT())),Z(()=>Y({direct:TT(Z(()=>BE)),relayed:TT(Y({device:Z(()=>BE),via:Z(()=>BE).optional()}))}));var $E=Z(()=>Y({verb:X(`topology.get`)})),eD=Z(()=>kT([Z(()=>tD),Z(()=>nD)]));Z(()=>q().regex(RegExp(`[0-9a-f]{64}`)));var tD=Z(()=>q().regex(RegExp(`[0-9a-f]{64}/[A-Za-z0-9_-]+`))),nD=Z(()=>q().regex(RegExp(`[0-9a-f]{64}\\+[0-9a-f]{64}`))),rD=Z(()=>Y({verb:X(`room.send`),"message-id":dE(Uint8Array),"sent-at":J().int().nonnegative(),text:q(),"content-type":q().optional(),refs:TT(Z(()=>sD)).optional()}).catchall(xT())),iD=Z(()=>Y({verb:X(`room.read`),messages:TT(dE(Uint8Array)),at:J().int().nonnegative()}).catchall(xT())),aD=Z(()=>Y({verb:X(`room.leave`)}).catchall(xT())),oD=Z(()=>Y({verb:X(`room.members`)}).catchall(xT())),sD=Z(()=>Y({id:dE(Uint8Array),relation:q()})),cD=Z(()=>Y({verb:X(`room.join`)}).catchall(xT())),lD=Z(()=>Y({verb:X(`room.invite`),invitee:Z(()=>BE),token:Z(()=>LD)}).catchall(xT())),uD=Z(()=>Y({verb:X(`room.rekey`),"key-epoch":J().int().nonnegative(),"wrapped-key":kT([dE(Uint8Array),TT(dE(Uint8Array))])}).catchall(xT())),dD=Z(()=>Y({device:Z(()=>BE)}).catchall(xT())),fD=Z(()=>Y({result:X(`ok`),"granted-token":Z(()=>LD),members:TT(Z(()=>dD))}).catchall(xT()));Z(()=>Y({result:X(`ok`),members:TT(Z(()=>dD))}).catchall(xT()));var pD=Z(()=>Z(()=>ID)),mD=Z(()=>Y({room:Z(()=>eD),poster:Z(()=>BE),"poster-key":Z(()=>zE),token:Z(()=>LD),"notice-id":dE(Uint8Array),"posted-at":J().int().nonnegative(),"content-type":q(),content:dE(Uint8Array),refs:TT(Z(()=>sD)).optional(),"valid-until":J().int().nonnegative().optional(),"key-epoch":J().int().nonnegative().optional()}).catchall(xT())),hD=Z(()=>Y({type:X(`secure-hello`),"ephemeral-key":dE(Uint8Array).refine(e=>e.length===65,{message:`expected exactly 65 bytes`}),nonce:dE(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`}),"identity-key":Z(()=>zE),"to-device":Z(()=>BE),signature:dE(Uint8Array)})),gD=Z(()=>Y({type:X(`secure-data`),counter:J().int().nonnegative(),ciphertext:dE(Uint8Array)})),_D=Z(()=>J().int().nonnegative()),vD=Z(()=>Y({type:X(`stream-data`),session:Z(()=>_D),seq:J().int().nonnegative(),channel:q(),bytes:dE(Uint8Array)})),yD=Z(()=>Y({type:X(`stream-ack`),session:Z(()=>_D),"ack-seq":J().int().nonnegative(),window:J().int().nonnegative()})),bD=Z(()=>Y({type:X(`stream-end`),session:Z(()=>_D),"exit-code":J().int().optional(),"exit-signal":J().int().optional()})),xD=Z(()=>J().int().nonnegative()),SD=Z(()=>Y({kind:kT([X(`capability-token`),X(`revocation-entry`),X(`handle-record`),X(`room-notice`),q()]),protected:dE(Uint8Array),payload:dE(Uint8Array)})),CD=Z(()=>Y({participant:Z(()=>BE),hiding:dE(Uint8Array),binding:dE(Uint8Array)})),wD=Z(()=>Y({verb:X(`threshold.commit`),"session-id":Z(()=>xD),group:Z(()=>BE),subject:Z(()=>SD),deadline:J().int().nonnegative()})),TD=Z(()=>Y({verb:X(`threshold.sign`),"session-id":Z(()=>xD),commitments:TT(Z(()=>CD))}));Z(()=>Y({"session-id":Z(()=>xD),group:Z(()=>BE),share:dE(Uint8Array),issuer:Z(()=>BE),"issuer-key":Z(()=>zE)})),Z(()=>Z(()=>ID));var ED=Z(()=>Y({verb:X(`threshold.abort`),"session-id":Z(()=>xD),reason:q().optional()})),DD=Z(()=>Y({verb:X(`threshold.keygen-round1`),"session-id":Z(()=>xD),threshold:J().int().nonnegative(),participants:TT(Z(()=>BE)),commitment:TT(dE(Uint8Array)),"proof-of-knowledge":dE(Uint8Array).optional(),"existing-group-key":dE(Uint8Array).optional()})),OD=Z(()=>Y({verb:X(`threshold.keygen-round2`),"session-id":Z(()=>xD),share:dE(Uint8Array)})),kD=Z(()=>Y({verb:X(`threshold.keygen-confirm`),"session-id":Z(()=>xD),"transcript-digest":dE(Uint8Array),"group-key":dE(Uint8Array)})),AD=Z(()=>kT([Z(()=>jD),Z(()=>MD),Z(()=>ND)])),jD=Z(()=>q().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),MD=Z(()=>q().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),ND=Z(()=>q().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),PD=Z(()=>Y({kind:q(),path:q().optional()}));Z(()=>X(1)),Z(()=>X(4)),Z(()=>kT([J().int(),q()]));var FD=Z(()=>Y({1:J().int().optional(),4:dE(Uint8Array).optional()}).catchall(xT())),ID=Z(()=>FT([dE(Uint8Array),Z(()=>FD),kT([dE(Uint8Array),yT()]),dE(Uint8Array)])),LD=Z(()=>Z(()=>ID)),RD=Z(()=>Y({"token-id":dE(Uint8Array),issuer:Z(()=>BE),"issuer-key":Z(()=>zE),bearer:Z(()=>BE),capability:Z(()=>AD),scope:Z(()=>PD),expires:J().int().nonnegative(),"not-before":J().int().nonnegative().optional(),parent:dE(Uint8Array).optional(),"authorised-by":dE(Uint8Array).optional(),"delegations-remaining":J().int().nonnegative().optional(),"valid-until":J().int().nonnegative().optional(),conditions:dE(Uint8Array).optional(),"grants-capability":Z(()=>AD).optional(),"requests-capability":Z(()=>AD).optional()}).catchall(xT())),zD=Z(()=>Y({type:X(`ping`)})),BD=Z(()=>Y({type:X(`pong`)})),VD=Z(()=>Y({type:X(`close`),reason:q().optional()})),HD=Z(()=>Y({device:Z(()=>BE),addresses:TT(q()),"snapshot-seconds":J().int(),"identity-key":Z(()=>zE),signature:dE(Uint8Array)}).catchall(xT())),UD=Z(()=>Y({type:X(`gossip`),peers:TT(Z(()=>HD))})),WD=Z(()=>kT([X(`host`),X(`server-reflexive`),X(`relayed`)])),GD=Z(()=>Y({address:q(),kind:Z(()=>WD),priority:J().int().nonnegative()})),KD=Z(()=>Y({type:X(`candidates`),candidates:TT(Z(()=>GD))})),qD=Z(()=>Y({type:X(`sync-punch`),nonce:J().int().nonnegative(),"deadline-unix-ms":J().int().nonnegative()})),JD=Z(()=>Y({type:X(`observed-address`),address:q()})),YD=Z(()=>Y({type:X(`relay-offer`),addresses:TT(q())})),XD=Z(()=>Y({type:X(`relay-connect`),"target-device":Z(()=>BE),"source-device":Z(()=>BE).optional()})),ZD=Z(()=>Y({type:X(`relay-data`),payload:dE(Uint8Array),"to-device":Z(()=>BE).optional(),"from-device":Z(()=>BE).optional()})),QD=Z(()=>Y({type:X(`relay-inbound`),"source-device":Z(()=>BE),"target-device":Z(()=>BE).optional()})),$D=Z(()=>Y({type:X(`coordinator`),term:J().int().nonnegative(),coordinator:Z(()=>BE),"capacity-hint":J().int().nonnegative().optional()})),eO=Z(()=>Y({verb:X(`version.get`)})),tO=Z(()=>Y({verb:X(`webrtc.sfu-track-map`),"negotiation-id":J().int().nonnegative(),tracks:TT(Z(()=>nO))})),nO=Z(()=>Y({mid:q(),member:Z(()=>BE),kind:kT([X(`audio`),X(`video`)])})),rO=Z(()=>Y({verb:X(`webrtc.offer`),"negotiation-id":J().int().nonnegative(),sdp:q()})),iO=Z(()=>Y({verb:X(`webrtc.answer`),"negotiation-id":J().int().nonnegative(),sdp:q()})),aO=Z(()=>Y({verb:X(`webrtc.ice-candidate`),"negotiation-id":J().int().nonnegative(),candidate:Z(()=>oO).optional()})),oO=Z(()=>Y({candidate:q(),"sdp-mid":q().optional(),"sdp-m-line-index":J().int().nonnegative().optional(),"username-fragment":q().optional()})),sO=16,cO=2,lO=64;function uO(e){let t=``;for(let n of e)t+=n.toString(sO).padStart(cO,`0`);return t}function dO(e){return uO(e)}function fO(e){if(!/^([0-9a-f]{2})*$/.test(e))throw Error(`expected an even-length, lowercase hex string, got ${JSON.stringify(e)}`);let t=new Uint8Array(e.length/cO);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*cO,(n+1)*cO),sO);return t}function pO(e){if(e.length!==lO)throw Error(`expected a 64-character lowercase hex string, got ${JSON.stringify(e)}`);return BE.parse(fO(e))}var mO=`pinned-certificates/`;function hO(e){return{recall:async t=>{let n=await e.get(mO+t);return n===void 0?[]:K_(n)},remember:async(t,n)=>{let r=G_(n.map(e=>uO(e)));await e.set(mO+t,new Uint8Array(r))}}}var gO=`wire-mesh-console-identity`,_O=`ES256`,vO=16,yO=2,bO=4;function xO(e){let t=new Uint8Array(e.length/yO);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*yO,(n+1)*yO),vO);return t}function SO(e){try{let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`));return Uint8Array.from(t,e=>e.charCodeAt(0))}catch{throw Error(`the backup's key is not valid base64url`)}}function CO(e){let{kty:t,crv:n,x:r,y:i,d:a}=e;if(t!==`EC`||n!==`P-256`||typeof r!=`string`||typeof i!=`string`||typeof a!=`string`)throw Error(`the backup does not hold a P-256 private key`);return{kty:t,crv:n,x:r,y:i,d:a}}function wO(e){return Uint8Array.from([bO,...SO(e.x),...SO(e.y)])}function TO(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var EO=new TextEncoder().encode(`wire-mesh console identity backup key-pair check`);async function DO(e,t){let n;try{n=await P_({privateJwk:e,publicKeyRaw:t})}catch(e){throw Error(`the backup's private key cannot be loaded: ${e instanceof Error?e.message:String(e)}`,{cause:e})}let r=await n.sign(EO);if(!await n.verify(n.identityKey,EO,r))throw Error(`the private key does not belong to the backup's public key`)}async function OO(e){let t;try{t=JSON.parse(e)}catch{throw Error(`the file is not JSON`)}if(!TO(t)||t.format!==`wire-mesh-console-identity`||t.version!==1||t.alg!==_O||typeof t.deviceId!=`string`||typeof t.publicKey!=`string`||!TO(t.privateJwk))throw Error(`the file is not a wire-mesh console identity backup`);let n=CO(t.privateJwk),r=wO(n);if(uO(r)!==t.publicKey)throw Error(`the private key does not match the backup's public key`);if(dO(await A_(r))!==t.deviceId)throw Error(`the backup's device-id does not match its public key`);return await DO(n,r),{format:gO,version:1,alg:_O,deviceId:t.deviceId,publicKey:t.publicKey,privateJwk:n}}function kO(e){return{async export(){let t=await e.get(E_);if(t===void 0)throw Error(`no identity is stored on this device`);let n=b_(t,x_);if(!M_(n))throw Error(`stored identity envelope is malformed`);return{format:gO,version:1,alg:_O,deviceId:dO(await A_(n.publicKeyRaw)),publicKey:uO(n.publicKeyRaw),privateJwk:n.privateJwk}},async restore(t){await e.set(E_,new Uint8Array(Mg({privateJwk:t.privateJwk,publicKeyRaw:xO(t.publicKey)},hg)))}}}async function AO(e,t){let[n,...r]=e;if(n!==void 0)return await t(n)?n:AO(r,t)}async function jO(e,t){await e.reduce(async(e,n,r)=>{await e,await t(n,r)},Promise.resolve())}function MO(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function NO(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function PO(e,t){return NO(e)||NO(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function FO(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&PO(t.path,e.path):!1}var IO=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),LO=LT(q(),J()),RO=zT([`ms`,`s`,`min`,`h`,`d`]);jT(`kind`,[Y({kind:X(`number`),value:J(),unit:LO.optional()}),Y({kind:X(`text`),value:q()}),Y({kind:X(`boolean`),value:_T()}),Y({kind:X(`instant`),value:q()}),Y({kind:X(`duration`),value:J(),unit:RO}),Y({kind:X(`complex`),re:J(),im:J(),unit:LO.optional()})]);function zO(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function BO(e,t){let n=zO(e),r=zO(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function VO(e,t){let n=zO(e),r=zO(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return zO(i)}function HO(e,t){let n=zO(e),r=zO(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return zO(i)}Y({code:zT([`not-found`,`wrong-type`,`domain-error`]),message:q()});function Q(e){return{status:`definite`,value:e}}function $(e,t){return{status:`indeterminate`,reason:{code:e,message:t}}}function UO(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var WO=Z(()=>kT([q(),J(),_T(),yT(),TT(WO),LT(q(),WO)])),GO=zT([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),KO=zT([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),qO=zT([`in`,`notIn`]),JO=zT([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),YO=zT([`first`,`unique`]),XO=Y({kind:X(`not`),get operand(){return ck}}),ZO=Y({kind:X(`and`),get left(){return ck},get right(){return ck}}),QO=Y({kind:X(`or`),get left(){return ck},get right(){return ck}}),$O=Y({kind:X(`allOf`),get operands(){return TT(ck)}}),ek=Y({kind:X(`anyOf`),get operands(){return TT(ck)}}),tk=Y({kind:X(`compare`),op:GO,get left(){return Ck},get right(){return Ck}}),nk=Y({kind:X(`textCompare`),op:KO,get left(){return Ck},get right(){return Ck}}),rk=Y({kind:X(`memberOf`),op:qO,get operand(){return Ck},get candidates(){return TT(Ck)}}),ik=Y({kind:X(`exists`),get operand(){return Ck}}),ak=Y({kind:X(`some`),collection:WO,get item(){return ck},get filter(){return ck.optional()}}),ok=Y({kind:X(`every`),collection:WO,get item(){return ck},get filter(){return ck.optional()}}),sk=Y({kind:X(`treeReference`),key:WO}),ck=jT(`kind`,[XO,ZO,QO,$O,ek,tk,nk,rk,ik,ak,ok,sk]),lk=Y({kind:X(`numberLiteral`),value:J(),unit:LO.optional()}),uk=Y({kind:X(`textLiteral`),value:q()}),dk=Y({kind:X(`booleanLiteral`),value:_T()}),fk=Y({kind:X(`instantLiteral`),value:q()}),pk=Y({kind:X(`durationLiteral`),value:J(),unit:RO}),mk=kT([DT({kind:X(`complexLiteral`),re:J(),im:J(),unit:LO.optional()}),DT({kind:X(`complexLiteral`),magnitude:J(),phase:J(),unit:LO.optional()})]),hk=Y({kind:X(`reference`),key:WO,unit:LO.optional()}),gk=Y({kind:X(`arithmetic`),op:JO,get left(){return Ck},get right(){return Ck}}),_k=Y({kind:X(`negate`),get operand(){return Ck}}),vk=Y({kind:X(`call`),fn:q(),get args(){return TT(Ck)}}),yk=Y({kind:X(`lookup`),table:WO,get keys(){return TT(Ck)}}),bk=Y({get when(){return ck},get then(){return Ck}}),xk=Y({kind:X(`conditional`),hitPolicy:YO.optional(),get cases(){return TT(bk)},get fallback(){return Ck}}),Sk=jT(`mode`,[Y({mode:X(`max`),get item(){return Ck}}),Y({mode:X(`min`),get item(){return Ck}}),Y({mode:X(`reduce`),get initial(){return Ck},get combine(){return Ck}})]),Ck=kT([jT(`kind`,[lk,uk,dk,fk,pk,hk,gk,_k,vk,yk,xk,Y({kind:X(`fold`),collection:WO,get filter(){return ck.optional()},combiner:Sk}),Y({kind:X(`accumulator`)}),Y({kind:X(`delegate`),system:q(),payload:WO}),sk]),mk]),wk={},Tk=1e4;function Ek(e,t){let n=0;return{checkNode(r){if(n+=1,n>e)return $(`domain-error`,`evaluation exceeded the maximum of ${e.toString()} nodes visited in a single call (resource exhausted)`);if(r>=t)return $(`domain-error`,`evaluation nesting depth exceeds the maximum of ${t.toString()} (resource exhausted)`)}}}async function Dk(e,t,n,r,i,a,o,s,c,l){let u=await i.resolveCollection(t,r);return Promise.all(u.map(async t=>{if(n===void 0)return{item:t,filterOutcome:`include`};let r=await e(n,t,i,void 0,a,o,s,c,l+1);return r.status===`indeterminate`?{item:t,filterOutcome:r}:{item:t,filterOutcome:r.value?`include`:`exclude`}}))}function Ok(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function kk(e,t){return t>=e.from&&t<=e.to}function Ak(e,t){let n=e.ranges.some(e=>kk(e,t));return e.negated?!n:n}var jk=class extends Error{pattern;index;constructor(e,t,n){super(`invalid pattern at index ${String(t)}: ${n}\n ${e}\n ${` `.repeat(t)}^`),this.name=`RegexParseError`,this.pattern=e,this.index=t}};function Mk(e){return e.charCodeAt(0)}function Nk(e,t){return{from:Mk(e),to:Mk(t)}}function Pk(e){let t=Mk(e);return{from:t,to:t}}var Fk=[Nk(`0`,`9`)],Ik=[Nk(`A`,`Z`),Nk(`a`,`z`),Nk(`0`,`9`),Pk(`_`)],Lk=[Pk(` `),Pk(` `),Pk(`
79
- `),Pk(`\r`),Pk(`\f`),Pk(`\v`)];function Rk(e){switch(e){case`d`:return{kind:`charClass`,negated:!1,ranges:Fk};case`D`:return{kind:`charClass`,negated:!0,ranges:Fk};case`w`:return{kind:`charClass`,negated:!1,ranges:Ik};case`W`:return{kind:`charClass`,negated:!0,ranges:Ik};case`s`:return{kind:`charClass`,negated:!1,ranges:Lk};case`S`:return{kind:`charClass`,negated:!0,ranges:Lk};default:throw Error(`unreachable shorthand class letter`)}}var zk=new Set([`|`,`)`]),Bk={".":`.`,"*":`*`,"+":`+`,"?":`?`,"(":`(`,")":`)`,"[":`[`,"]":`]`,"{":`{`,"}":`}`,"|":`|`,"^":`^`,$:`$`,"\\":`\\`,"/":`/`,n:`
80
- `,t:` `,r:`\r`,f:`\f`,v:`\v`},Vk=class{pattern;pos=0;constructor(e){this.pattern=e}get position(){return this.pos}atEnd(){return this.pos>=this.pattern.length}peek(e=0){return this.pattern[this.pos+e]}advance(){let e=this.pattern[this.pos];if(e===void 0)throw new jk(this.pattern,this.pos,`unexpected end of pattern`);return this.pos+=1,e}parseAlternation(){let e=this.parseSequence(),t=[];for(;this.peek()===`|`;)this.advance(),t.push(this.parseSequence());return t.length===0?e:{kind:`alternation`,branches:[e,...t]}}parseSequence(){if(this.atEnd()||zk.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!zk.has(this.peek()??``);)t.push(this.parseQuantified());return t.length===0?e:{kind:`concat`,operands:[e,...t]}}parseQuantified(){let e=this.pos,t=this.parseAtom();if(t.kind===`anchorStart`||t.kind===`anchorEnd`){if(this.peekIsQuantifierStart())throw new jk(this.pattern,e,`an anchor ('${t.kind===`anchorStart`?`^`:`$`}') cannot be quantified`);return t}let n=this.tryParseQuantifier();if(n===void 0)return t;if(this.peekIsQuantifierStart())throw new jk(this.pattern,this.pos,`a quantifier cannot itself be quantified -- this grammar has no lazy or possessive modifiers, since a pattern that only ever answers a yes/no match question has no notion for either to change`);switch(n.kind){case`star`:return{kind:`star`,operand:t};case`plus`:return{kind:`plus`,operand:t};case`optional`:return{kind:`optional`,operand:t};case`repeat`:return{kind:`repeat`,operand:t,min:n.min,max:n.max};default:throw Error(`unreachable quantifier kind`)}}peekIsQuantifierStart(){let e=this.peek();if(e===`*`||e===`+`||e===`?`)return!0;if(e===`{`){let e=this.pos,t=this.tryParseBound();return this.pos=e,t!==void 0}return!1}tryParseQuantifier(){let e=this.peek();if(e===`*`)return this.advance(),{kind:`star`};if(e===`+`)return this.advance(),{kind:`plus`};if(e===`?`)return this.advance(),{kind:`optional`};if(e===`{`){let e=this.tryParseBound();return e===void 0?void 0:{kind:`repeat`,min:e.min,max:e.max}}}tryParseBound(){let e=this.pos;this.pos+=1;let t=this.readDigits();if(t===``){this.pos=e;return}let n,r=!1;if(this.peek()===`,`&&(r=!0,this.pos+=1,n=this.readDigits()),this.peek()!==`}`){this.pos=e;return}this.pos+=1;let i=Number.parseInt(t,10),a=r?n===``?void 0:Number.parseInt(n??``,10):i;if(a!==void 0&&a<i)throw new jk(this.pattern,e,`quantifier range is backwards: {${t}${r?`,`+(n??``):``}} would require between ${String(i)} and ${String(a)} repetitions`);return{min:i,max:a}}readDigits(){let e=``;for(;;){let t=this.peek();if(t===void 0||t<`0`||t>`9`)break;e+=t,this.pos+=1}return e}parseAtom(){let e=this.peek();if(e===void 0)throw new jk(this.pattern,this.pos,`unexpected end of pattern`);if(e===`^`)return this.advance(),{kind:`anchorStart`};if(e===`$`)return this.advance(),{kind:`anchorEnd`};if(e===`.`)return this.advance(),{kind:`anyChar`};if(e===`(`)return this.parseGroup();if(e===`[`)return this.parseCharClass();if(e===`\\`)return this.parseEscapedAtom();if(e===`*`||e===`+`||e===`?`)throw new jk(this.pattern,this.pos,`quantifier '${e}' with nothing to repeat`);return this.advance(),{kind:`literal`,codeUnit:e.charCodeAt(0)}}parseGroup(){let e=this.pos;if(this.advance(),this.peek()===`?`&&this.peek(1)===`:`)this.advance(),this.advance();else throw new jk(this.pattern,e,`capturing groups are not supported in this grammar -- there is nothing to capture, since a pattern only ever answers whether it matches. Use '(?:...)' for grouping.`);let t=this.parseAlternation();if(this.peek()!==`)`)throw new jk(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new jk(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`D`||t===`w`||t===`W`||t===`s`||t===`S`)return Rk(t);let n=Bk[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new jk(this.pattern,e,`unknown escape sequence '\\${t}'`)}parseCharClass(){let e=this.pos;this.advance();let t=!1;this.peek()===`^`&&(this.advance(),t=!0);let n=[];for(;;){if(this.atEnd())throw new jk(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new jk(this.pattern,this.pos,`a character class must contain at least one item -- ']' immediately, or immediately after '[^', is not the empty class here (escape it as '\\]' to match a literal ']')`);this.advance();break}n.push(...this.parseClassItem())}return{kind:`charClass`,negated:t,ranges:n}}parseClassItem(){let e=this.peek();if(e===`\\`){let e=this.pos;if(this.advance(),this.atEnd())throw new jk(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return Rk(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new jk(this.pattern,e,`the negated shorthand class '\\${t}' cannot be embedded inside a character class, because its complement cannot be represented as a set of ranges to union with the class's other members -- use it as its own atom instead of embedding it here`);let n=Bk[t];if(n===void 0)throw new jk(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new jk(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),this.parseOptionalRangeFrom(e.charCodeAt(0))}parseOptionalRangeFrom(e){if(this.peek()===`-`&&this.peek(1)!==void 0&&this.peek(1)!==`]`){let t=this.pos;this.advance();let n=this.parseClassRangeEndpoint();if(n<e)throw new jk(this.pattern,t,`invalid range in character class: '${String.fromCharCode(e)}-${String.fromCharCode(n)}' is reversed`);return[{from:e,to:n}]}return[{from:e,to:e}]}parseClassRangeEndpoint(){let e=this.peek();if(e===`\\`){let e=this.pos;if(this.advance(),this.atEnd())throw new jk(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`D`||t===`w`||t===`W`||t===`s`||t===`S`)throw new jk(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=Bk[t];if(n===void 0)throw new jk(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new jk(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function Hk(e){let t=new Vk(e),n=t.parseAlternation();if(!t.atEnd())throw new jk(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var Uk=class{states=[];add(e){return this.states.push(e),this.states.length-1}patch(e,t){for(let n of e){let e=this.states[n.state];if(e!==void 0)switch(n.field){case`to`:(e.kind===`char`||e.kind===`anchorStart`||e.kind===`anchorEnd`)&&(e.to=t);break;case`to1`:e.kind===`split`&&(e.to1=t);break;case`to2`:e.kind===`split`&&(e.to2=t)}}}emptyFrag(){let e=this.add({kind:`split`,to1:-1,to2:-1});return{start:e,out:[{state:e,field:`to1`},{state:e,field:`to2`}]}}compileRepeat(e){let{operand:t,min:n,max:r}=e;if(r===void 0){if(n===0)return this.compileNode({kind:`star`,operand:t});let e=[];for(let r=0;r<n-1;r+=1)e.push(t);return e.push({kind:`plus`,operand:t}),this.compileNode({kind:`concat`,operands:e})}let i=[];for(let e=0;e<n;e+=1)i.push(t);for(let e=0;e<r-n;e+=1)i.push({kind:`optional`,operand:t});return i.length===0?this.emptyFrag():this.compileNode({kind:`concat`,operands:i})}compileNode(e){switch(e.kind){case`literal`:{let t=e.codeUnit,n=this.add({kind:`char`,test:e=>e===t,to:-1});return{start:n,out:[{state:n,field:`to`}]}}case`anyChar`:{let e=this.add({kind:`char`,test:()=>!0,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`charClass`:{let t=this.add({kind:`char`,test:t=>Ak(e,t),to:-1});return{start:t,out:[{state:t,field:`to`}]}}case`anchorStart`:{let e=this.add({kind:`anchorStart`,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`anchorEnd`:{let e=this.add({kind:`anchorEnd`,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`concat`:{if(e.operands.length===0)return this.emptyFrag();let[t,...n]=e.operands;if(t===void 0)throw Error(`unreachable: a non-empty operands array always has a first element`);let r=this.compileNode(t);for(let e of n){let t=this.compileNode(e);this.patch(r.out,t.start),r={start:r.start,out:t.out}}return r}case`alternation`:{let[t,...n]=e.branches;if(t===void 0)throw Error(`unreachable: AlternationNode always has at least two branches`);let r=this.compileNode(t);for(let e of n){let t=this.compileNode(e);r={start:this.add({kind:`split`,to1:r.start,to2:t.start}),out:[...r.out,...t.out]}}return r}case`star`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return this.patch(t.out,n),{start:n,out:[{state:n,field:`to2`}]}}case`plus`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return this.patch(t.out,n),{start:t.start,out:[{state:n,field:`to2`}]}}case`optional`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return{start:n,out:[...t.out,{state:n,field:`to2`}]}}case`repeat`:return this.compileRepeat(e);default:throw Error(`unreachable regex node kind`)}}build(e){let t=this.compileNode(e),n=this.add({kind:`match`});return this.patch(t.out,n),{states:this.states,start:t.start,matchState:n}}};function Wk(e){return new Uk().build(e)}function Gk(e,t,n,r){let i=new Set,a=new Set,o=[...t];for(;o.length>0;){let t=o.pop();if(t===void 0||a.has(t))continue;a.add(t);let s=e.states[t];if(s!==void 0)switch(s.kind){case`char`:case`match`:i.add(t);break;case`split`:o.push(s.to1,s.to2);break;case`anchorStart`:n===0&&o.push(s.to);break;case`anchorEnd`:n===r&&o.push(s.to)}}return i}function Kk(e,t,n){let r=new Set;for(let i of t){let t=e.states[i];t?.kind===`char`&&t.test(n)&&r.add(t.to)}return r}function qk(e,t){let n=t.length,r=Gk(e,[e.start],0,n);if(r.has(e.matchState))return!0;for(let i=0;i<n;i+=1){let a=t.charCodeAt(i),o=Kk(e,r,a);if(o.add(e.start),r=Gk(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function Jk(e){let t=Wk(Hk(e));return{test:e=>qk(t,e)}}function Yk(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=UO(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function Xk(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=UO(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function Zk(e,t,n){switch(e){case`gt`:return t>n;case`gte`:return t>=n;case`lt`:return t<n;case`lte`:return t<=n;case`eq`:return t===n;case`neq`:return t!==n;default:throw Error(`unreachable comparison operator`)}}var Qk={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function $k(e,t){return e*Qk[t]}function eA(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function tA(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function nA(e){let t=new Date(e);return Number.isNaN(t.getTime())?$(`domain-error`,`the resulting instant falls outside the representable timestamp range`):Q({kind:`instant`,value:t.toISOString()})}function rA(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?BO(t.unit,n.unit)?Q(Zk(e,t.value,n.value)):$(`wrong-type`,`cannot compare numbers with incompatible units`):$(`wrong-type`,`cannot compare a 'number' value with a '${n.kind}' value`);case`text`:return $(`wrong-type`,`text values are not comparable via 'compare'; use 'textCompare'`);case`boolean`:return n.kind===`boolean`?e!==`eq`&&e!==`neq`?$(`wrong-type`,`booleans have no natural ordering; '${e}' is only defined for 'eq'/'neq'`):Q(e===`eq`?t.value===n.value:t.value!==n.value):$(`wrong-type`,`cannot compare a 'boolean' value with a '${n.kind}' value`);case`instant`:{if(n.kind!==`instant`)return $(`wrong-type`,`cannot compare an 'instant' value with a '${n.kind}' value`);let r=eA(t.value);if(r===void 0)return tA(t.value);let i=eA(n.value);return i===void 0?tA(n.value):Q(Zk(e,r,i))}case`duration`:return n.kind===`duration`?Q(Zk(e,$k(t.value,t.unit),$k(n.value,n.unit))):$(`wrong-type`,`cannot compare a 'duration' value with a '${n.kind}' value`);case`complex`:return e!==`eq`&&e!==`neq`?$(`wrong-type`,`ordering operator '${e}' is not defined for complex values; the complex plane has no total order`):n.kind===`complex`?BO(t.unit,n.unit)?Q(e===`eq`?t.re===n.re&&t.im===n.im:t.re!==n.re||t.im!==n.im):$(`wrong-type`,`cannot compare complex values with incompatible units`):$(`wrong-type`,`cannot compare a 'complex' value with a '${n.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function iA(e,t,n){if(t.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the left operand is '${t.kind}'`);if(n.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the right operand is '${n.kind}'`);switch(e){case`equals`:return Q(t.value===n.value);case`notEquals`:return Q(t.value!==n.value);case`matches`:case`notMatches`:{let r;try{r=new RegExp(n.value)}catch{return $(`wrong-type`,`'${n.value}' is not a valid regular expression pattern`)}let i=r.test(t.value);return Q(e===`matches`?i:!i)}case`portableMatches`:case`portableNotMatches`:{let r;try{r=Jk(n.value)}catch(e){let t=e instanceof jk?e.message:String(e);return $(`wrong-type`,`'${n.value}' is not a valid trilean-regex pattern: ${t}`)}let i=r.test(t.value);return Q(e===`portableMatches`?i:!i)}default:throw Error(`unreachable text comparison operator`)}}function aA(e,t){switch(e.kind){case`number`:return t.kind===`number`?BO(e.unit,t.unit)?Q(e.value===t.value):$(`wrong-type`,`cannot compare numbers with incompatible units for membership`):$(`wrong-type`,`cannot compare a 'number' value with a '${t.kind}' value for membership`);case`text`:return t.kind===`text`?Q(e.value===t.value):$(`wrong-type`,`cannot compare a 'text' value with a '${t.kind}' value for membership`);case`boolean`:return t.kind===`boolean`?Q(e.value===t.value):$(`wrong-type`,`cannot compare a 'boolean' value with a '${t.kind}' value for membership`);case`instant`:{if(t.kind!==`instant`)return $(`wrong-type`,`cannot compare an 'instant' value with a '${t.kind}' value for membership`);let n=eA(e.value);if(n===void 0)return tA(e.value);let r=eA(t.value);return r===void 0?tA(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q($k(e.value,e.unit)===$k(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?BO(e.unit,t.unit)?Q(e.re===t.re&&e.im===t.im):$(`wrong-type`,`cannot compare complex values with incompatible units for membership`):$(`wrong-type`,`cannot compare a 'complex' value with a '${t.kind}' value for membership`);default:throw Error(`unreachable computed-value kind`)}}function oA(e){return BO(e,void 0)}function sA(e){switch(e.kind){case`number`:return Q({kind:`number`,value:-e.value,unit:e.unit});case`duration`:return Q({kind:`duration`,value:-e.value,unit:e.unit});case`complex`:return Q({kind:`complex`,re:-e.re,im:-e.im,unit:e.unit});case`text`:case`instant`:case`boolean`:return $(`wrong-type`,`cannot negate a '${e.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function cA(e,t,n){switch(e){case`add`:return BO(t.unit,n.unit)?Q({kind:`number`,value:t.value+n.value,unit:t.unit}):$(`wrong-type`,`cannot add numbers with incompatible units`);case`subtract`:return BO(t.unit,n.unit)?Q({kind:`number`,value:t.value-n.value,unit:t.unit}):$(`wrong-type`,`cannot subtract numbers with incompatible units`);case`multiply`:return Q({kind:`number`,value:t.value*n.value,unit:VO(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:HO(t.unit,n.unit)});case`power`:return!oA(t.unit)||!oA(n.unit)?$(`wrong-type`,`'power' requires dimensionless operands`):t.value<0&&!Number.isInteger(n.value)?$(`domain-error`,`a negative base raised to a non-integer power is not a real number`):t.value===0&&n.value<0?$(`domain-error`,`zero raised to a negative power is a division by zero`):Q({kind:`number`,value:t.value**n.value});case`modulo`:return!oA(t.unit)||!oA(n.unit)?$(`wrong-type`,`'modulo' requires dimensionless operands`):n.value===0?$(`domain-error`,`modulo by zero`):Q({kind:`number`,value:t.value%n.value});default:throw Error(`unreachable arithmetic operator`)}}function lA(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:$k(t.value,t.unit)+$k(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:$k(t.value,t.unit)-$k(n.value,n.unit),unit:`ms`});case`multiply`:case`divide`:case`power`:case`modulo`:return $(`wrong-type`,`arithmetic operator '${e}' is not defined between two 'duration' values`);default:throw Error(`unreachable arithmetic operator`)}}function uA(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function dA(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:VO(e.unit,t.unit)}}function fA(e,t,n){switch(e){case`add`:return BO(t.unit,n.unit)?Q({kind:`complex`,re:t.re+n.re,im:t.im+n.im,unit:t.unit}):$(`wrong-type`,`cannot add complex values with incompatible units`);case`subtract`:return BO(t.unit,n.unit)?Q({kind:`complex`,re:t.re-n.re,im:t.im-n.im,unit:t.unit}):$(`wrong-type`,`cannot subtract complex values with incompatible units`);case`multiply`:return Q(dA(t,n));case`divide`:{let e=n.re*n.re+n.im*n.im;return e===0?$(`domain-error`,`division by zero`):Q({kind:`complex`,re:(t.re*n.re+t.im*n.im)/e,im:(t.im*n.re-t.re*n.im)/e,unit:HO(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function pA(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!oA(e.unit)||!oA(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=uA(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=dA(i,r);return t.value>=0?Q(i):fA(`divide`,n,i)}function mA(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=eA(t.value);if(e===void 0)return tA(t.value);let r=eA(n.value);return r===void 0?tA(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=eA(t.value);return e===void 0?tA(t.value):nA(e+$k(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=eA(n.value);return e===void 0?tA(n.value):nA(e+$k(t.value,t.unit))}return t.kind===`instant`||n.kind===`instant`?$(`wrong-type`,`arithmetic operator '${e}' is not defined between a '${t.kind}' and a '${n.kind}' value`):t.kind===`duration`&&n.kind===`duration`?lA(e,t,n):t.kind===`duration`||n.kind===`duration`?$(`wrong-type`,`arithmetic operator '${e}' is not defined between a '${t.kind}' and a '${n.kind}' value`):t.kind!==`number`&&t.kind!==`complex`?$(`wrong-type`,`arithmetic requires numeric operands; got a '${t.kind}' value`):n.kind!==`number`&&n.kind!==`complex`?$(`wrong-type`,`arithmetic requires numeric operands; got a '${n.kind}' value`):t.kind===`complex`||n.kind===`complex`?e===`power`?pA(t,n):fA(e,uA(t),uA(n)):cA(e,t,n)}function hA(e,t){if(e!==void 0){if(t.kind!==`number`&&t.kind!==`complex`)return $(`wrong-type`,`a unit was expected on a reference that resolved to a non-numeric value`);if(!BO(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function gA(e,t,n){let r=Object.hasOwn(e,t)?e[t]:void 0;if(r===void 0)return $(`wrong-type`,`no function registered under the name '${t}'`);let i=r(n);return`domainError`in i?$(`domain-error`,i.domainError):Q(i)}async function _A(e,t,n,r,i,a,o,s,c){let l=s.checkNode(c);if(l!==void 0)return l;switch(e.kind){case`not`:{let l=await _A(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:Q(!l.value)}case`and`:{let[l,u]=await Promise.all([_A(e.left,t,n,r,i,a,o,s,c+1),_A(e.right,t,n,r,i,a,o,s,c+1)]);return Yk(l,u)}case`or`:{let[l,u]=await Promise.all([_A(e.left,t,n,r,i,a,o,s,c+1),_A(e.right,t,n,r,i,a,o,s,c+1)]);return Xk(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>_A(e,t,n,r,i,a,o,s,c+1)))).reduce(Yk,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>_A(e,t,n,r,i,a,o,s,c+1)))).reduce(Xk,Q(!1));case`compare`:{let[l,u]=await Promise.all([vA(e.left,t,n,r,i,a,o,s,c+1),vA(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:rA(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([vA(e.left,t,n,r,i,a,o,s,c+1),vA(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:iA(e.op,l.value,u.value)}case`memberOf`:{let l=await vA(e.operand,t,n,r,i,a,o,s,c+1);if(l.status===`indeterminate`)return l;let u=await Promise.all(e.candidates.map(async e=>{let u=await vA(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:aA(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=UO(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await vA(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`&&l.reason.code===`not-found`?Q(!1):Q(!0)}case`some`:case`every`:{let r=await Dk(_A,e.collection,e.filter,t,n,i,a,o,s,c+1),l=(await Promise.all(r.map(async({item:t,filterOutcome:r})=>{if(r!==`exclude`)return r===`include`?_A(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?Xk:Yk,d=e.kind===`some`?Q(!1):Q(!0);return l.reduce(u,d)}case`treeReference`:{if(n.resolveTree===void 0)return $(`wrong-type`,`no tree resolver registered for treeReference nodes`);let l=JSON.stringify(e.key);if(a.has(l))return $(`domain-error`,`circular treeReference detected`);if(o>=100)return $(`domain-error`,`treeReference chain exceeds the maximum depth of 100`);let u=await n.resolveTree(e.key,t);if(!u.found)return $(`not-found`,`treeReference key did not resolve to a tree`);let d=ck.safeParse(u.node);return d.success?_A(d.data,t,n,r,i,new Set([...a,l]),o+1,s,c+1):$(`wrong-type`,`the referenced tree is not a valid PredicateNode`)}default:throw Error(`unreachable predicate node kind`)}}async function vA(e,t,n,r,i,a,o,s,c){let l=s.checkNode(c);if(l!==void 0)return l;switch(e.kind){case`reference`:{let r=await n.resolveValue(e.key,t);if(!r.found)return $(`not-found`,`no value found for reference key ${JSON.stringify(e.key)}`);let i=hA(e.unit,r.value);return i===void 0?Q(r.value):i}case`accumulator`:return r===void 0?$(`wrong-type`,`accumulator used outside a reduce fold's combine expression`):Q(r);case`call`:{let l=await Promise.all(e.args.map(async e=>vA(e,t,n,r,i,a,o,s,c+1))),u=[];for(let e of l){if(e.status===`indeterminate`)return e;u.push(e.value)}return gA(i,e.fn,u)}case`numberLiteral`:return Q({kind:`number`,value:e.value,unit:e.unit});case`textLiteral`:return Q({kind:`text`,value:e.value});case`booleanLiteral`:return Q({kind:`boolean`,value:e.value});case`instantLiteral`:return Q({kind:`instant`,value:e.value});case`durationLiteral`:return Q({kind:`duration`,value:e.value,unit:e.unit});case`complexLiteral`:return`re`in e?Q({kind:`complex`,re:e.re,im:e.im,unit:e.unit}):Q(IO(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([vA(e.left,t,n,r,i,a,o,s,c+1),vA(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:mA(e.op,l.value,u.value)}case`negate`:{let l=await vA(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:sA(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>vA(e,t,n,r,i,a,o,s,c+1))),u=[];for(let e of l){if(e.status===`indeterminate`)return e;u.push(e.value)}let d=await n.resolveLookup(e.table,u,t);return d.found?Q(d.value):$(`not-found`,`no match found in lookup table ${JSON.stringify(e.table)}`)}case`conditional`:{if((e.hitPolicy??`first`)===`first`){for(let{when:l,then:u}of e.cases){let e=await _A(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return vA(u,t,n,r,i,a,o,s,c+1)}return vA(e.fallback,t,n,r,i,a,o,s,c+1)}let l=await Promise.all(e.cases.map(async({when:e,then:l})=>({then:l,whenResult:await _A(e,t,n,r,i,a,o,s,c+1)}))),u=l.filter(({whenResult:e})=>e.status===`definite`&&e.value);if(u.length>=2)return $(`domain-error`,`more than one case matched under the 'unique' hit policy`);let d=UO(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return vA(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await Dk(_A,e.collection,e.filter,t,n,i,a,o,s,c+1),l=Ok(r);if(l!==void 0)return{status:`indeterminate`,reason:l};let u=r.filter(({filterOutcome:e})=>e===`include`).map(({item:e})=>e);if(e.combiner.mode===`reduce`){let r=await vA(e.combiner.initial,t,n,void 0,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;let l=r.value;for(let t of u){let r=await vA(e.combiner.combine,t,n,l,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;l=r.value}return Q(l)}if(u.length===0)return $(`domain-error`,`'${e.combiner.mode}' has no participating items to seed a running result from`);let d=e.combiner.mode===`max`?`gt`:`lt`,f;for(let t of u){let r=await vA(e.combiner.item,t,n,void 0,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;if(f===void 0){f=r.value;continue}let l=rA(d,r.value,f);if(l.status===`indeterminate`)return l;l.value&&(f=r.value)}if(f===void 0)throw Error(`unreachable: max/min over a non-empty participating list produced no running result`);return Q(f)}case`delegate`:{if(n.resolveDelegate===void 0)return $(`wrong-type`,`no delegate handler registered for external system '${e.system}'`);let r=await n.resolveDelegate(e.system,e.payload,t);return r.found?Q(r.value):$(`not-found`,`delegate handler for external system '${e.system}' reported no value`)}case`treeReference`:{if(n.resolveTree===void 0)return $(`wrong-type`,`no tree resolver registered for treeReference nodes`);let l=JSON.stringify(e.key);if(a.has(l))return $(`domain-error`,`circular treeReference detected`);if(o>=100)return $(`domain-error`,`treeReference chain exceeds the maximum depth of 100`);let u=await n.resolveTree(e.key,t);if(!u.found)return $(`not-found`,`treeReference key did not resolve to a tree`);let d=Ck.safeParse(u.node);return d.success?vA(d.data,t,n,r,i,new Set([...a,l]),o+1,s,c+1):$(`wrong-type`,`the referenced tree is not a valid ExpressionNode`)}default:throw Error(`unreachable expression node kind`)}}function yA({functions:e=wk,maxNodes:t=Tk,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>_A(r,i,a,void 0,e,new Set,0,Ek(t,n),0),evaluateValue:async(r,i,a)=>vA(r,i,a,void 0,e,new Set,0,Ek(t,n),0)}}var{evaluatePredicate:bA,evaluateValue:xA}=yA({}),SA=TT(ck),CA=`bearer-is`,wA=`expires-at`,TA=`scope-narrows`,EA=`capability-is`,DA=`depth-remaining`,OA=[CA,wA,TA,EA,DA];function kA(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}var AA=`grantee-is`,jA=`granted-capability-is`;function MA(e){return e===`grantee-is`||e===`granted-capability-is`}var NA={[AA]:(e,t)=>t.subject===void 0||typeof e!=`string`?{found:!1}:FA(dO(t.subject.bearer)===e),[jA]:(e,t)=>t.subject===void 0||typeof e!=`string`?{found:!1}:FA(t.subject.capability===e)};function PA(e,t){return{kind:`not`,operand:{kind:`and`,left:LA(jA,e),right:LA(AA,dO(t))}}}function FA(e){return{found:!0,value:{kind:`boolean`,value:e}}}var IA={[CA]:(e,t)=>t.parentClaims===void 0?FA(!1):FA(MO(t.parentClaims.bearer,t.childIssuer)),[wA]:(e,t)=>t.parentClaims===void 0?FA(!1):FA(t.candidate.expires<=t.parentClaims.expires),[TA]:(e,t)=>t.parentClaims===void 0?FA(!1):FA(FO(t.parentClaims.scope,t.candidate.scope)),[EA]:(e,t)=>t.parentClaims===void 0?FA(!1):FA(t.parentClaims.capability===t.candidate.capability),[DA]:(e,t)=>{if(t.parentClaims===void 0)return FA(!1);let n=t.parentClaims[`delegations-remaining`];return FA(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function LA(e,t=null){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:t},right:{kind:`booleanLiteral`,value:!0}}}var RA=async()=>Promise.resolve({found:!1}),zA=async()=>Promise.resolve({found:!1}),BA=async()=>Promise.resolve([]);async function VA(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:RA,resolveLookup:zA,resolveCollection:BA,resolveDelegate:async(e,t)=>kA(e)?IA[e](t,r):{found:!1}};return AO(OA,async e=>{let t=await bA(LA(e),r,i);return t.status!==`definite`||!t.value})}async function HA(e,t,n,r={},i){let a=i===void 0?{clock:n,claims:t}:{clock:n,claims:t,subject:i},o={resolveValue:RA,resolveLookup:zA,resolveCollection:BA,resolveDelegate:async(e,t)=>{if(i!==void 0&&MA(e))try{return await NA[e](t,a)}catch{return{found:!1}}let n=Object.hasOwn(r,e)?r[e]:void 0;if(n===void 0)return{found:!1};try{return await n(t,a)}catch{return{found:!1}}}};return await AO(e,async e=>{let t=await bA(e,a,o);return t.status!==`definite`||!t.value})===void 0?{ok:!0}:{ok:!1,reason:`not_satisfied`}}var UA=`manage:grant`,WA=64;function GA(e,t){return Mg([`Signature1`,e,new Uint8Array,t],hg)}function KA(e){return Uint8Array.from(e)}function qA(e){return KA(Mg(e,hg))}function JA(e){return qA({1:e.identityKey.alg,4:e.deviceId})}function YA(e){let[,,t]=e;if(t===null)return;let n;try{n=b_(t,x_)}catch{return}let r=RD.safeParse(n);return r.success?r.data:void 0}async function XA(e,t){let n=await $A(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!MO(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function ZA(e,t,n){if(MO(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=b_(e.authorization,x_)}catch{return!1}let i=LD.safeParse(r);if(!i.success)return!1;let a=await XA(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&FO(a.claims.scope,t.scope)}var QA={depth:0,seen:new Set};async function $A(e,t,{subjectClaims:n,depth:r,seen:i}=QA){let[a,,o,s]=e;if(o===null)return{ok:!1,reason:`malformed`};if(r>=WA)return{ok:!1,reason:`chain_too_deep`};let c=uO(o);if(i.has(c))return{ok:!1,reason:`chain_cycle`};let l=new Set(i).add(c),u;try{u=b_(o,x_)}catch{return{ok:!1,reason:`malformed`}}let d=RD.safeParse(u);if(!d.success)return{ok:!1,reason:`malformed`};let f=d.data;if(!await t.identity.verify(f[`issuer-key`],GA(a,o),s))return{ok:!1,reason:`bad_signature`};if(!MO(await t.identity.deriveDeviceId(f[`issuer-key`][`public-key`]),f.issuer))return{ok:!1,reason:`wrong_issuer`};let p=t.clock.now();if(f.expires<=p)return{ok:!1,reason:`expired`};if(f[`not-before`]!==void 0&&f[`not-before`]>p)return{ok:!1,reason:`not_yet_valid`};let m=f[`valid-until`];if(m!==void 0&&m<=p)return{ok:!1,reason:`content_expired`};if(await AO(await t.revocation.entriesFor(f[`token-id`]),async e=>ZA(e,f,t))!==void 0)return{ok:!1,reason:`revoked`};if(f.conditions!==void 0){let e;try{e=b_(f.conditions,x_)}catch{return{ok:!1,reason:`conditions_invalid`}}let r=SA.safeParse(e);if(!r.success)return{ok:!1,reason:`conditions_invalid`};if(!(await HA(r.data,f,t.clock,t.extraPredicateResolvers,n)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}let h=f.parent,g=f[`authorised-by`];if(f.capability===`manage:grant`&&h!==void 0)return{ok:!1,reason:`authorisation_invalid`};if(h!==void 0&&g!==void 0)return{ok:!1,reason:`malformed`};if(h!==void 0){let e;try{e=b_(h,x_)}catch{return{ok:!1,reason:`parent_invalid`}}let n=LD.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let i=await $A(n.data,t,{depth:r+1,seen:l});if(!i.ok)return i.reason===`chain_too_deep`||i.reason===`chain_cycle`?{ok:!1,reason:i.reason}:{ok:!1,reason:`parent_invalid`};let a={capability:f.capability,scope:f.scope,expires:f.expires,...f[`delegations-remaining`]===void 0?{}:{delegationsRemaining:f[`delegations-remaining`]}};return await VA(i.claims,f.issuer,a)===void 0?{ok:!0,claims:f,rootIssuer:i.rootIssuer,rootIssuerKey:i.rootIssuerKey,depth:i.depth+1}:{ok:!1,reason:`delegation_exceeds_parent`}}if(g!==void 0){let e;try{e=b_(g,x_)}catch{return{ok:!1,reason:`authorisation_invalid`}}let n=LD.safeParse(e);if(!n.success)return{ok:!1,reason:`authorisation_invalid`};let i=await $A(n.data,t,{subjectClaims:f,depth:r+1,seen:l});if(!i.ok)return i.reason===`chain_too_deep`||i.reason===`chain_cycle`?{ok:!1,reason:i.reason}:{ok:!1,reason:`authorisation_invalid`};let a=i.claims,o=a[`grants-capability`];return MO(a.bearer,f.issuer)&&a.capability===`manage:grant`&&(o===void 0||o===f.capability)&&FO(a.scope,f.scope)&&f.expires<=a.expires&&(a[`delegations-remaining`]===void 0||f[`delegations-remaining`]!==void 0&&f[`delegations-remaining`]<a[`delegations-remaining`])?{ok:!0,claims:f,rootIssuer:i.rootIssuer,rootIssuerKey:i.rootIssuerKey,depth:i.depth+1}:{ok:!1,reason:`authorisation_invalid`}}return{ok:!0,claims:f,rootIssuer:f.issuer,rootIssuerKey:f[`issuer-key`],depth:0}}async function ej(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=b_(r,x_)}catch{return{ok:!1,reason:`malformed`}}let o=YE.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;return await t.identity.verify(s[`issuer-key`],GA(n,r),i)?MO(await t.identity.deriveDeviceId(s[`issuer-key`][`public-key`]),s.issuer)?{ok:!0,claims:s}:{ok:!1,reason:`wrong_issuer`}:{ok:!1,reason:`bad_signature`}}var tj={"bearer-is":`parent_bearer_mismatch`,"expires-at":`expires_exceeds_parent`,"scope-narrows":`scope_does_not_narrow`,"capability-is":`capability_mismatch`,"depth-remaining":`delegation_exceeds_parent`};async function nj(e,t,n){let r=await VA(e,t,n);return r===void 0?void 0:tj[r]}async function rj(e,t,n){if(e.parent!==void 0)return`authorisation_parent_forbidden`;if(!MO(e.bearer,t))return`authorisation_bearer_mismatch`;let r=e[`grants-capability`];if(e.capability!==`manage:grant`||r!==void 0&&r!==n.capability)return`authorisation_capability_mismatch`;if(!FO(e.scope,n.scope))return`authorisation_scope_does_not_narrow`;if(n.expires>e.expires)return`authorisation_exceeds_authoriser`;let i=e[`delegations-remaining`];if(i!==void 0&&(n.delegationsRemaining===void 0||n.delegationsRemaining>=i))return`authorisation_delegation_exceeds`;if(e.conditions!==void 0){let t;try{t=b_(e.conditions,x_)}catch{return`authorisation_malformed`}let r=SA.safeParse(t);if(!r.success)return`authorisation_malformed`;if(!(await HA(r.data,e,{now:()=>0},{},n)).ok)return`authorisation_conditions_not_satisfied`}}async function ij(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};if(e.parent!==void 0&&e.authorisedBy!==void 0)return{ok:!1,reason:`links_exclusive`};if(e.capability===`manage:grant`&&e.parent!==void 0)return{ok:!1,reason:`authorisation_parent_forbidden`};let t;if(e.parent!==void 0){let n=YA(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await nj(n,e.identity.deviceId,{capability:e.capability,scope:e.scope,expires:e.expires,...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining}});if(r!==void 0)return{ok:!1,reason:r};t=qA(e.parent)}let n;if(e.authorisedBy!==void 0){let t=YA(e.authorisedBy);if(t===void 0)return{ok:!1,reason:`authorisation_malformed`};let r=await rj(t,e.identity.deviceId,{capability:e.capability,scope:e.scope,bearer:e.bearer,expires:e.expires,...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining}});if(r!==void 0)return{ok:!1,reason:r};n=qA(e.authorisedBy)}let r=qA({"token-id":e.tokenId,issuer:e.identity.deviceId,"issuer-key":e.identity.identityKey,bearer:e.bearer,capability:e.capability,scope:e.scope,expires:e.expires,...e.notBefore===void 0?{}:{"not-before":e.notBefore},...t===void 0?{}:{parent:t},...e.delegationsRemaining===void 0?{}:{"delegations-remaining":e.delegationsRemaining},...e.conditions===void 0?{}:{conditions:qA(e.conditions)},...n===void 0?{}:{"authorised-by":n},...e.grantsCapability===void 0?{}:{"grants-capability":e.grantsCapability},...e.requestsCapability===void 0?{}:{"requests-capability":e.requestsCapability}}),i=JA(e.identity);return{ok:!0,token:[i,{},r,await e.identity.sign(GA(i,r))]}}async function aj(e){let t=qA({"token-id":e.tokenId,issuer:e.identity.deviceId,"issuer-key":e.identity.identityKey,"revoked-at":e.revokedAt}),n=JA(e.identity);return[n,{},t,await e.identity.sign(GA(n,t))]}var oj=`wm-grant1.`;function sj(e){let t=e[2];if(t===null)return;let n;try{n=b_(t,x_)}catch{return}let r=RD.safeParse(n);return r.success?r.data:void 0}function cj(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function lj(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function uj(e){return oj+cj(Mg(e,hg))}function dj(e){let t=e.trim();if(!t.startsWith(`wm-grant1.`))throw Error(`a grant code starts with "${oj}"`);let n;try{n=b_(lj(t.slice(10)),x_)}catch{throw Error(`the grant code is damaged: it does not decode`)}let r=LD.safeParse(n);if(!r.success||sj(r.data)===void 0)throw Error(`the grant code does not carry a capability token`);return r.data}async function fj(e,t){let n=await XA(e,t);return n.ok?{kind:`valid`}:{kind:`invalid`,reason:n.reason}}var pj={malformed:`malformed`,bad_signature:`signature does not verify`,wrong_issuer:`issuer does not match its key`,bearer_mismatch:`names another bearer`,expired:`expired`,not_yet_valid:`not valid yet`,content_expired:`content expired`,revoked:`revoked`,delegation_exceeds_parent:`exceeds what its parent allows`,parent_invalid:`its parent grant is no longer valid`,conditions_invalid:`its conditions are invalid`,conditions_not_satisfied:`its conditions are not met`,authorisation_invalid:`exceeds what its authorising grant allows`,chain_too_deep:`its chain is deeper than allowed`,chain_cycle:`its chain revisits a token`};function mj(e){return e.kind===`valid`?`valid`:pj[e.reason]}var hj=`grant/`;function gj(e,t){return`${hj}${e}/${t}`}function _j(e){let t=e.slice(6).split(`/`)[0];if(t===`held`||t===`issued`)return t;throw Error(`stored grant key ${e} names no direction`)}function vj(e){return typeof e==`object`&&!!e&&`token`in e&&`recordedAt`in e&&typeof e.recordedAt==`number`}function yj(e){let t=new Set;return{async record(n,r,i){let a=sj(r);if(a===void 0)throw Error(`a grant must carry readable token claims`);let o=gj(n,uO(a[`token-id`]));if(await e.get(o)===void 0){await e.set(o,new Uint8Array(Mg({token:r,recordedAt:i},hg)));for(let e of t)e()}},async list(){let t=[],n=await e.keys(hj),r=await Promise.all(n.map(async t=>({key:t,value:await e.get(t)})));for(let{key:e,value:n}of r){if(n===void 0)continue;let r=b_(n,x_);if(!vj(r))throw Error(`stored grant at ${e} is malformed`);let i=LD.safeParse(r.token);if(!i.success)throw Error(`stored grant at ${e} is malformed`);let a=sj(i.data);if(a===void 0)throw Error(`stored grant at ${e} has unreadable claims`);t.push({tokenId:uO(a[`token-id`]),direction:_j(e),token:i.data,claims:a,recordedAt:r.recordedAt})}return t.sort((e,t)=>t.recordedAt-e.recordedAt)},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}function bj(e){return uO(e)}function xj(){let e=new Map;return{async entriesFor(t){return Promise.resolve(e.get(bj(t))??[])},async record(t,n){let r=await ej(t,n);if(r.ok){let t=bj(r.claims[`token-id`]),n=e.get(t);n===void 0?e.set(t,[r.claims]):n.push(r.claims)}return r}}}var Sj=`revocation/`;async function Cj(e,t,n){let r;try{r=b_(n,x_)}catch{return`it is not valid CBOR`}let i=XE.safeParse(r);if(!i.success)return`it is not a revocation entry`;let a=await e.record(i.data,{identity:t});return a.ok?void 0:`it no longer verifies (${a.reason})`}async function wj(e){let{storage:t,identity:n,clock:r}=e,i=xj(),a=new Set;async function o(e){let r=await i.record(e,{identity:n});if(r.ok){let n=`${Sj}${uO(r.claims.issuer)}/${uO(r.claims[`token-id`])}`;await t.set(n,new Uint8Array(Mg(e,hg)));for(let e of a)e()}return r}let s=await t.keys(Sj),c=(await Promise.all(s.map(async e=>{let r=await t.get(e);if(r===void 0)return;let a=await Cj(i,n,r);return a===void 0?void 0:{key:e,reason:a}}))).filter(e=>e!==void 0);return{view:i,unreadable:()=>c,async discardUnreadable(e){await t.delete(e),c=c.filter(t=>t.key!==e);for(let e of a)e()},subscribe(e){return a.add(e),()=>{a.delete(e)}},ingest:o,async revoke(e){let t=await aj({identity:n,tokenId:e,revokedAt:r.now()}),i=await o(t);if(!i.ok)throw Error(`the revocation this device signed does not verify (${i.reason})`);return t}}}var Tj=`preferences/intro-dismissed`,Ej=new Uint8Array([1]);function Dj(e){return{async introDismissed(){return await e.get(Tj)!==void 0},async setIntroDismissed(t){t?await e.set(Tj,new Uint8Array(Ej)):await e.delete(Tj)}}}var Oj=`agent/self`,kj=`wire-mesh-console`;function Aj(e){return e.slice(0,12)}var jj=/[\p{Cc}\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu;function Mj(e){let t=e.replace(jj,``).trim();if(t!==``)return Array.from(t).slice(0,64).join(``).trimEnd()}function Nj(e){let t=e[Oj];if(typeof t==`object`&&t&&`name`in t&&typeof t.name==`string`)return Mj(t.name)}function Pj(e){return{[Oj]:{name:e,harness:kj}}}function Fj(e,t,n,r){return t===void 0?n===void 0?{primary:Aj(e),secondary:void 0,source:`id`,matchesPetname:!1}:{primary:n,secondary:Aj(e),source:`self`,matchesPetname:r.has(n)}:{primary:t,secondary:n!==void 0&&n!==t?n:void 0,source:`petname`,matchesPetname:!1}}function Ij(e){return e.source===`self`&&e.secondary!==void 0?`${e.primary} (${e.secondary})`:e.primary}var Lj=`petname/`,Rj=`self-name`,zj=new TextEncoder,Bj=new TextDecoder;function Vj(e){async function t(t,n){let r=Mj(n);if(r===void 0){await e.delete(t);return}await e.set(t,new Uint8Array(zj.encode(r)))}return{async petnames(){let t=new Map,n=await e.keys(Lj),r=await Promise.all(n.map(async t=>({key:t,value:await e.get(t)})));for(let{key:e,value:n}of r)n!==void 0&&t.set(e.slice(8),Bj.decode(n));return t},async setPetname(e,n){await t(Lj+e,n)},async selfName(){let t=await e.get(Rj);return t===void 0?void 0:Bj.decode(t)},async setSelfName(e){await t(Rj,e)}}}var Hj=String(2**53-1).length,Uj=`message`;function Wj(e,t){return`${Uj}/${e}/${String(t.sentAt).padStart(Hj,`0`)}-${uO(t.messageId)}`}function Gj(e){let t=e.slice(`${Uj}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function Kj(e){return e===`sent`||e===`received`}function qj(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:Kj(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Jj(e){return{async append(t,n){await e.set(Wj(t,n),new Uint8Array(Mg(n,hg)))},async roomPaths(){let t=await e.keys(`${Uj}/`);return[...new Set(t.map(Gj))]},async list(t){let n=(await e.keys(`${Uj}/${t}/`)).sort(),r=[],i=await Promise.all(n.map(async t=>({key:t,value:await e.get(t)})));for(let{key:e,value:t}of i){if(t===void 0)continue;let n=b_(t,x_);if(!qj(n))throw Error(`stored message at ${e} is malformed`);r.push(n)}return r}}}function Yj(e){return new Uint8Array(Mg(e,hg))}function Xj(e,t){return{type:`relay-data`,payload:Yj(e),...t===void 0?{}:{"to-device":t}}}var Zj=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function Qj(e){let t=b_(new Uint8Array(e),x_),n=ME.safeParse(t);if(!n.success)throw new Zj(n.error.message);return n.data}function $j(e){let t;try{t=b_(e,x_)}catch{return null}let n=ME.safeParse(t);return n.success?n.data:null}var eM=16,tM=4096;function nM(e){let t=0;for(let n of e)t+=String(n.length).length+1+n.length;return t}function rM(...e){let t=``;for(let n of e){t+=`${String(n.length)}:`;for(let e=0;e<n.length;e+=tM)t+=String.fromCharCode(...n.subarray(e,e+tM))}return t}async function iM(e){return await e()??!1}function aM(e){let t=new Map,n=0,r=0,i=e=>{let r=t.get(e);r!==void 0&&(t.delete(e),n-=r.cost)};return{async verdict(a,o){let s=nM(a)+eM;if(s>e||r+s>e)return iM(o);let c=rM(...a),l=t.get(c);if(l!==void 0)return t.delete(c),t.set(c,l),l.settled;r+=s;let u=o().then(e=>e===void 0?(i(c),!1):e).finally(()=>{r-=s});t.set(c,{settled:u,cost:s}),n+=s;for(let r of t.keys()){if(n<=e)break;i(r)}return u}}}var oM=1024,sM=oM*oM*8,cM=new WeakMap;function lM(e){let t=cM.get(e);if(t!==void 0)return t;let n=aM(sM);return cM.set(e,n),n}var uM=`signature`,dM=`identity-key`,fM=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function pM(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=Mg(t,hg),r=new Uint8Array(fM.length+n.length);return r.set(fM,0),r.set(n,fM.length),r}async function mM(e,t){let n=await e.sign(pM(t));return{...t,[uM]:n}}async function hM(e,t){let n;try{n=pM(t)}catch{return!1}return lM(e).verdict([t[uM],n],async()=>gM(e,t,n))}async function gM(e,t,n){let r=t[dM];try{return MO(await e.deriveDeviceId(r[`public-key`]),t.device)?await e.verify(r,n,t[uM]):!1}catch{return}}var _M={name:`wire-mesh-core`,version:`4.0.6`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`3.0.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/byte-stream-connection":{import:`./dist/adapters/byte-stream-connection.mjs`,require:`./dist/adapters/byte-stream-connection.cjs`},"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/coordinator-election":{import:`./dist/domain/coordinator-election.mjs`,require:`./dist/domain/coordinator-election.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/hub-mailbox":{import:`./dist/domain/hub-mailbox.mjs`,require:`./dist/domain/hub-mailbox.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/pinned-address":{import:`./dist/domain/pinned-address.mjs`,require:`./dist/domain/pinned-address.cjs`},"./domain/relay-advert":{import:`./dist/domain/relay-advert.mjs`,require:`./dist/domain/relay-advert.cjs`},"./domain/relay-hub":{import:`./dist/domain/relay-hub.mjs`,require:`./dist/domain/relay-hub.cjs`},"./domain/relay-use-gate":{import:`./dist/domain/relay-use-gate.mjs`,require:`./dist/domain/relay-use-gate.cjs`},"./domain/revocation-view":{import:`./dist/domain/revocation-view.mjs`,require:`./dist/domain/revocation-view.cjs`},"./domain/room":{import:`./dist/domain/room.mjs`,require:`./dist/domain/room.cjs`},"./domain/room-path":{import:`./dist/domain/room-path.mjs`,require:`./dist/domain/room-path.cjs`},"./domain/room-rekey":{import:`./dist/domain/room-rekey.mjs`,require:`./dist/domain/room-rekey.cjs`},"./domain/room-token-verification":{import:`./dist/domain/room-token-verification.mjs`,require:`./dist/domain/room-token-verification.cjs`},"./domain/shard-manifest":{import:`./dist/domain/shard-manifest.mjs`,require:`./dist/domain/shard-manifest.cjs`},"./domain/threshold-subject":{import:`./dist/domain/threshold-subject.mjs`,require:`./dist/domain/threshold-subject.cjs`},"./domain/token-predicates":{import:`./dist/domain/token-predicates.mjs`,require:`./dist/domain/token-predicates.cjs`},"./domain/token-scope":{import:`./dist/domain/token-scope.mjs`,require:`./dist/domain/token-scope.cjs`},"./domain/tokens":{import:`./dist/domain/tokens.mjs`,require:`./dist/domain/tokens.cjs`},"./domain/topology":{import:`./dist/domain/topology.mjs`,require:`./dist/domain/topology.cjs`},"./domain/topology-snapshot":{import:`./dist/domain/topology-snapshot.mjs`,require:`./dist/domain/topology-snapshot.cjs`},"./domain/verdict-cache":{import:`./dist/domain/verdict-cache.mjs`,require:`./dist/domain/verdict-cache.cjs`},"./domain/webrtc-signaling":{import:`./dist/domain/webrtc-signaling.mjs`,require:`./dist/domain/webrtc-signaling.cjs`},"./generated/protocol":{import:`./dist/generated/protocol.mjs`,require:`./dist/generated/protocol.cjs`},"./generated/runtime":{import:`./dist/generated/runtime.mjs`,require:`./dist/generated/runtime.cjs`},"./ports/clock":{import:`./dist/ports/clock.mjs`,require:`./dist/ports/clock.cjs`},"./ports/identity":{import:`./dist/ports/identity.mjs`,require:`./dist/ports/identity.cjs`},"./ports/storage":{import:`./dist/ports/storage.mjs`,require:`./dist/ports/storage.cjs`},"./ports/transport":{import:`./dist/ports/transport.mjs`,require:`./dist/ports/transport.cjs`},"./package.json":`./package.json`},files:[`dist`,`wasm-dist`],license:`MIT`,packageManager:`pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c`,publishConfig:{provenance:!0,access:`public`},repository:{type:`git`,url:`https://github.com/ExaDev/wire-mesh.git`,directory:`ts/packages/core`},scripts:{_build:`tsdown`,"_build-wasm":`./scripts/build-threshold-wasm.sh`,"_conformance-check":`vitest run test/conformance.unit.test.ts`,_generate:`node generate.ts`,_lint:`eslint . --fix --cache --max-warnings 0`,_mutation:`stryker run stryker.config.ts`,_test:`vitest run`,_typecheck:`tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit`,build:`turbo run _build`,"build-wasm":`turbo run _build-wasm`,"conformance-check":`turbo run _conformance-check`,generate:`turbo run _generate`,lint:`turbo run _lint`,mutation:`turbo run _mutation`,prepack:`node scripts/assert-wasm-dist.ts`,test:`turbo run _test`,typecheck:`turbo run _typecheck`},type:`module`}.version,vM=`wire-mesh/version`,yM=`version.get`;function bM(e){return`verb`in e&&e.verb===yM}function xM(){return{result:`ok`,version:_M}}var SM=new Set([`device`,`addresses`,`snapshot-seconds`,dM,uM]),CM=`topology/peers`,wM=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function TM(e){for(let t of Object.keys(e)){if(SM.has(t))throw Error(`sendGossipUpdate extension key "${t}" collides with a mandatory peer-advert field`);if(t===`topology/peers`)throw Error(`sendGossipUpdate extension key "${t}" collides with a session-managed gossip field`);if(t===`wire-mesh/version`)throw Error(`sendGossipUpdate extension key "${t}" is reserved for wire-mesh-core's own self-reported version`);if(!wM.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}function EM(){let e=[],t=[];return{push(n){let r=e.shift();r===void 0?t.push(n):r(n)},stream:{[Symbol.asyncIterator](){return{next:async()=>new Promise(n=>{let r=t.shift();r===void 0?e.push(e=>{n({value:e,done:!1})}):n({value:r,done:!1})})}}}}}var DM=[`core/federation`];function OM(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!DM.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function kM(e){return`data/${dO(e)}/head`}function AM(e,t){return`data/${dO(e)}/entry/${String(t)}`}async function jM(e,t){let n=await e.get(kM(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function MM(e,t,n){await e.set(kM(t),new TextEncoder().encode(String(n)))}async function NM(e,t){return jM(e,t)}async function PM(e,t){let n=await jM(e.storage,e.identity.deviceId)+1;return await e.storage.set(AM(e.identity.deviceId,n),t),await MM(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function FM(e,t,n,r){let i=[],a=async n=>{if(n>r)return;let o=await e.get(AM(t,n));o!==void 0&&(i.push(o),await a(n+1))};return await a(n),i}async function IM(e,t,n){let r=await jM(e,t.peer);if(r<=t[`from-seq`])return null;let i=Math.min(r,t[`from-seq`]+n),a=await FM(e,t.peer,t[`from-seq`]+1,i);return a.length===0?null:{type:`data-entries`,peer:t.peer,"from-seq":t[`from-seq`],entries:a}}async function LM(e,t){let n=await jM(e,t.peer);return t[`from-seq`]===n?(await jO(t.entries,async(n,r)=>{await e.set(AM(t.peer,t[`from-seq`]+1+r),n)}),await MM(e,t.peer,t[`from-seq`]+t.entries.length),{ok:!0}):{ok:!1,reason:`gap`}}async function RM(e,t,n){let r=await jM(e,t);return FM(e,t,n+1,r)}function zM(e){return e.type===`data-have`||e.type===`data-request`||e.type===`data-entries`}var BM=class extends Error{constructor(){super(`timed out waiting for pong`),this.name=`PingTimeoutError`}};function VM(){let e=[];function t(t){let n=e.findIndex(e=>e.sentAt===t);return n!==-1&&(e.splice(n,1),!0)}return{resolveOldest(t){let n=e.shift();n!==void 0&&n.resolve(t-n.sentAt)},rejectAll(t){for(let n of e.splice(0))n.reject(Error(t))},async sendAndAwait(n,r,i){let a=new Promise((t,r)=>{e.push({sentAt:n,resolve:t,reject:r})});return await r(),i===void 0?a:Promise.race([a,new Promise((e,r)=>{setTimeout(()=>{t(n)&&r(new BM)},i)})])}}}function HM(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function UM(e){let t=HM(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function WM(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return UM({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function GM(){let e=new Map;return{has:t=>e.has(dO(t)),add:t=>{e.set(dO(t),t)},remove:t=>{e.delete(dO(t))},clear:()=>{e.clear()},list:()=>[...e.values()]}}var KM=16,qM=256,JM=256,YM=12,XM=4,ZM=8,QM=new TextEncoder,$M=QM.encode(`wire-mesh/secure-hello/v1\0`),eN=QM.encode(`wire-mesh/secure-channel/v1\0`),tN=QM.encode(`wire-mesh/secure-data/v1\0`),nN=QM.encode(`lo-to-hi`),rN=QM.encode(`hi-to-lo`),iN={name:`ECDH`,namedCurve:`P-256`};function aN(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function oN(e,t){for(let n=0;n<Math.min(e.length,t.length);n+=1){let r=(e[n]??0)-(t[n]??0);if(r!==0)return r}return e.length-t.length}function sN(e){let t=new Uint8Array(ZM);return new DataView(t.buffer).setBigUint64(0,BigInt(e),!1),t}function cN(e,t,n,r){return aN($M,e,t,n,r)}async function lN(e,t){let n=await crypto.subtle.generateKey(iN,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.exportKey(`raw`,n.publicKey)),i=crypto.getRandomValues(new Uint8Array(KM)),a=await e.sign(cN(r,i,e.deviceId,t));return{peer:t,privateKey:n.privateKey,hello:{type:`secure-hello`,"ephemeral-key":r,nonce:i,"identity-key":e.identityKey,"to-device":t,signature:a}}}async function uN(e,t){let n=t[`identity-key`];try{let r=await e.deriveDeviceId(n[`public-key`]);return MO(t[`to-device`],e.deviceId)?await e.verify(n,cN(t[`ephemeral-key`],t.nonce,r,e.deviceId),t.signature)?{ok:!0,peer:{deviceId:r,identityKey:n}}:{ok:!1,reason:`bad_signature`}:{ok:!1,reason:`wrong_recipient`}}catch{return{ok:!1,reason:`identity_mismatch`}}}function dN(e){let t=new Uint8Array(YM);return t.set(sN(e),XM),t}function fN(e,t,n){return aN(tN,e,t,sN(n))}async function pN({secret:e,salt:t,low:n,high:r,label:i}){let a=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(t),info:aN(eN,n,r,i)},a,{name:`AES-GCM`,length:qM},!1,[`encrypt`,`decrypt`])}async function mN(e,t,n,r){let i;try{let e=await crypto.subtle.importKey(`raw`,Uint8Array.from(n[`ephemeral-key`]),iN,!1,[]);i=new Uint8Array(await crypto.subtle.deriveBits({name:`ECDH`,public:e},t.privateKey,JM))}catch{return}let a=oN(e.deviceId,r.deviceId)<0,o=a?e.deviceId:r.deviceId,s=a?r.deviceId:e.deviceId,c=aN(a?t.hello.nonce:n.nonce,a?n.nonce:t.hello.nonce),l=await pN({secret:i,salt:c,low:o,high:s,label:nN}),u=await pN({secret:i,salt:c,low:o,high:s,label:rN}),d=a?l:u,f=a?u:l,p=0,m=-1,h=Promise.resolve(),g=Promise.resolve();async function _(t,n){return{type:`secure-data`,counter:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:dN(n),additionalData:fN(e.deviceId,r.deviceId,n)},d,Yj(t)))}}async function v(t){if(t.counter<=m)return;let n;try{n=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:dN(t.counter),additionalData:fN(r.deviceId,e.deviceId,t.counter)},f,Uint8Array.from(t.ciphertext)))}catch{return}return m=Math.max(m,t.counter),$j(n)??void 0}return{peer:r,seal:async e=>{let t=p;p+=1;let n=h.then(async()=>_(e,t));return h=n.catch(()=>void 0),n},open:async e=>{let t=g.then(async()=>v(e));return g=t.catch(()=>void 0),t}}}function hN(e,t){let n=new Map;function r(r){let i=dO(r),a=Promise.withResolvers(),o=lN(e,r),s={status:`awaiting`,pending:o,settle:a};return n.set(i,s),o.then(async({hello:e})=>t(r,e)).catch(e=>{a.reject(e instanceof Error?e:Error(String(e))),n.get(i)===s&&n.delete(i)}),s}return{ensure:async e=>{let t=n.get(dO(e));return t?.status===`established`?t.channel:(t??r(e)).settle.promise},applyHello:async t=>{let i=await uN(e,t);if(!i.ok)return;let a=dO(i.peer.deviceId),o=n.get(a),s=o?.status===`awaiting`?o:r(i.peer.deviceId),c=await mN(e,await s.pending,t,i.peer);if(c===void 0){s.settle.reject(Error(`the peer sent an unusable ephemeral key`)),n.get(a)===s&&n.delete(a);return}n.set(a,{status:`established`,channel:c}),s.settle.resolve(c)},open:async(e,t)=>{if(t===void 0)return;let r=n.get(dO(t));if(r?.status!==`established`)return;let i=await r.channel.open(e);return i===void 0?void 0:{frame:i,from:r.channel.peer.deviceId}},reset:e=>{for(let t of n.values())t.status===`awaiting`&&t.settle.reject(Error(e));n.clear()},forget:e=>{let t=dO(e),r=n.get(t);r?.status===`awaiting`&&r.settle.reject(Error(`the relay pairing was lost`)),n.delete(t)}}}var gN=1e3,_N=3e3;function vN(e){return{type:`handshake`,version:1,domains:[...e]}}function yN(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[];function p(e){f.push(e),f.length>256&&f.splice(0,f.length-256)}let m=!1,h=EM(),g=null,_=null,v=0,y=null,b=0,x=GM(),S=WM({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>x.list()}),C=new Map,w=hN(e,async(e,t)=>{if(c===null)throw Error(`not connected`);p({direction:`sent`,frame:t}),await c.send(Xj(t,e)),j()}),T=EM(),E=EM(),D=EM(),O=EM(),k=VM();function A(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function j(){h.push(A())}function M(e){for(let t of C.values())t.reject(Error(e));C.clear()}function N(e,t,n){let r=b;b+=1;let i=n??y;return{type:`manage-request`,"request-id":r,command:e,scope:t,...i===null?{}:{token:i}}}function ee(){if(c===null||l.status!==`connected`)throw Error(`not connected`);return c}async function P(e,t,n){if(c===null)throw Error(`not connected`);if(!t){await c.send(e);return}if(n===void 0)throw Error(`a relayed frame needs the device it is for`);let r=await(await w.ensure(n)).seal(e);await c.send(Xj(r,n))}function F(e,t){let n=e[`request-id`],r=C.get(n);if(r===void 0)return;let i=r.expectedFrom;(i===void 0?t===void 0:t!==void 0&&dO(t)===dO(i))&&(C.delete(n),r.resolve(e.outcome))}function I(e,t){let n=e[`request-id`],r=t?.fromDevice,i=t?.toDevice,a={requestId:n,command:e.command,scope:e.scope,...e.token===void 0?{}:{token:e.token},...r===void 0?{}:{fromDevice:r},...i===void 0?{}:{toDevice:i},respond:async e=>{let i={type:`manage-response`,"request-id":n,outcome:e};p({direction:`sent`,frame:i}),await P(i,t!==void 0,r),j()}};if(bM(e.command.params)){a.respond(xM());return}T.push(a)}async function te(n){if(n.type===`relay-data`){let e=$j(n.payload);if(e?.type===`secure-hello`){p({direction:`received`,frame:e}),await w.applyHello(e);return}if(e?.type===`secure-data`){let t=await w.open(e,n[`from-device`]);t?.frame.type===`manage-response`?(p({direction:`received`,frame:t.frame}),F(t.frame,t.from)):t!==void 0&&zM(t.frame)?(p({direction:`received`,frame:t.frame}),O.push({frame:t.frame,fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}})):t?.frame.type===`manage-request`&&(p({direction:`received`,frame:t.frame}),I(t.frame,{fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}}));return}p({direction:`received`,frame:n});return}if(p({direction:`received`,frame:n}),n.type===`handshake`)ie(n);else if(n.type===`gossip`){let t=await Promise.all(n.peers.map(async t=>hM(e,t)));for(let e of n.peers.filter((e,n)=>t[n]===!0)){let t=dO(e.device),n=d.get(t)?.advert[`snapshot-seconds`];n!==void 0&&e[`snapshot-seconds`]<n||(d.set(t,{device:e.device,advert:e}),S.recordAdvert(e.device),i?.(e))}}else if(n.type===`relay-inbound`)x.add(n[`source-device`]);else if(n.type===`manage-response`)F(n);else if(n.type===`manage-request`)I(n);else if(n.type===`pong`)k.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)E.push(e);else zM(n)?O.push({frame:n}):n.type===`coordinator`&&D.push(n)}async function ne(e){if(c===null)throw Error(`not connected`);if(x.has(e))return;let t={type:`relay-connect`,"target-device":e};p({direction:`sent`,frame:t}),await c.send(t),x.add(e),j()}let re=vN([]);function ie(e){if(u.status!==`pending`)return;g!==null&&(clearTimeout(g),g=null);let t=OM(re,e);u=t.ok?{status:`negotiated`,version:t.version,sharedDomains:t.sharedDomains}:{status:`rejected`,reason:`no shared domains or version`},l.status===`connected`&&(l={...l,handshake:u})}function L(e,t){return e.redialAddress?.()??t}function R(e,t,r){if(!m){if(M(`disconnected before a response arrived`),k.rejectAll(`disconnected before a pong arrived`),n!==null&&v<n.maxAttempts){v+=1;let i=v;l={status:`reconnecting`,address:t,attempt:i,reason:e},j(),_=setTimeout(()=>{_=null,ce(t,r).catch(e=>{R(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},j()}}async function ae(e,t,n){let r=!1;for await(let t of e.receive()){if(m)return;r||(r=!0,v=0),await te(t),await o?.(e,t),j()}s?.(e),l.status===`connected`&&R(`node closed the connection`,L(e,t),n)}async function oe(n){return n!==void 0&&TM(n),{type:`gossip`,peers:[await mM(e,{...n,[vM]:_M,[CM]:S.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/gN),"identity-key":e.identityKey})]}}async function se(e,t,n){c=e,w.reset(`the connection changed before the channel was ready`),x.clear(),re=vN(n),u={status:`pending`},l={status:`connected`,address:t,handshake:u},p({direction:`sent`,frame:re}),await c.send(re),j();let r=await oe();p({direction:`sent`,frame:r}),await c.send(r),j(),g=setTimeout(()=>{g=null,u.status===`pending`&&(u={status:`unanswered`},l.status===`connected`&&(l={...l,handshake:u}),j())},_N),ae(c,t,n).catch(r=>{l.status===`connected`&&R(r instanceof Error?r.message:String(r),L(e,t),n)})}async function ce(e,t){if(r===null)throw Error(`this session is already connected; there is nothing to dial`);g!==null&&(clearTimeout(g),g=null),l={status:`connecting`,address:e},j();let n=await r(e);if(m){await n.close();return}await se(n,e,t)}return{wireUpConnection:se,session:{events:h.stream,incomingManageRequests:T.stream,revocationAnnouncements:E.stream,coordinatorFrames:D.stream,incomingDataFrames:O.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);v=0,await ce(e,t).catch(n=>{throw R(n instanceof Error?n.message:String(n),e,t),n})},async sendPing(){let e=ee(),t={type:`ping`};p({direction:`sent`,frame:t}),await e.send(t),j()},async sendPingMeasureRtt(e){let n=ee();return k.sendAndAwait(t.now(),async()=>{let e={type:`ping`};p({direction:`sent`,frame:e}),await n.send(e),j()},e)},setToken(e){y=e},async sendManageRequest(e,t,n,r,i){ee(),n!==void 0&&await ne(n);let a=N(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{C.set(o,{resolve:e,reject:t,expectedFrom:n})});p({direction:`sent`,frame:a});let c=(async()=>{try{await P(a,n!==void 0,n)}catch(e){throw C.delete(o),s.catch(()=>void 0),e}return j(),s})();return i===void 0?c:Promise.race([c,new Promise(e=>{setTimeout(()=>{C.delete(o)&&(n!==void 0&&(x.remove(n),w.forget(n)),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){ee();let t={type:`revocation-announce`,entries:[...e]};p({direction:`sent`,frame:t}),await P(t,!1),j()},async sendCoordinatorClaim(e){ee();let t={...e};p({direction:`sent`,frame:t}),await P(t,!1),j()},async sendGossipUpdate(e){ee();let t=await oe(e);p({direction:`sent`,frame:t}),await P(t,!1),j()},getTopologyPeers(){return S.compute()},async sendDataFrame(e,t){ee(),t!==void 0&&await ne(t),p({direction:`sent`,frame:e}),await P(e,t!==void 0,t),j()},async close(){m=!0,g!==null&&(clearTimeout(g),g=null),_!==null&&(clearTimeout(_),_=null),M(`connection closed before a response arrived`),w.reset(`the session closed before the channel was ready`),k.rejectAll(`connection closed before a pong arrived`),c!==null&&await c.close(),(l.status===`connected`||l.status===`connecting`||l.status===`reconnecting`)&&(l={status:`closed`,address:l.address,reason:`closed by you`}),j()}}}}function bN(e,t,n={now:()=>Date.now()},r=null,i=[],a,o){let{session:s}=yN(t,n,r,async t=>e.connect(t),a,i,o);return s}async function xN(e,t,n,r={}){let i=r.clock??{now:()=>Date.now()},a=null,o=new Promise(e=>{a=e}),s=!1,{session:c,wireUpConnection:l}=yN(t,i,null,null,e=>{s||(s=!0,a?.(e.device)),r.onPeerAdvert?.(e)},r.addresses,r.onFrame,r.onSessionEnd);return await l(e,r.label??`accepted`,n),{...c,peerDeviceId:o}}function SN(e){return e instanceof Error?e:Error(String(e))}function CN(e){let t=dO(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[SN(n)]);return}if(!n){e.onExpansionDeclined?.(t);return}await i(t,t.addresses,[])}async function i(t,n,r){let[a,...o]=n;if(a===void 0){e.onExpansionFailed?.(t,r);return}try{let n=await e.dial(a);e.onExpanded(t,a,n)}catch(e){await i(t,o,[...r,SN(e)])}}return{considerAdvert(e){let i=dO(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var wN=/^[0-9a-f]{64}$/,TN=/^[A-Za-z0-9_-]+$/;function EN(e,t){if(!wN.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function DN(e,t){if(EN(e,`a`),EN(t,`b`),e===t)throw Error(`a DM room path cannot name the same device twice (${e})`);return e<t?`${e}+${t}`:`${t}+${e}`}function ON(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(wN.test(n)&&TN.test(r))return{kind:`owner-named`,owner:n,localName:r}}let n=e.indexOf(`+`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1);if(wN.test(t)&&wN.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var kN=5,AN=1e3,jN=3e4,MN=2,NN={maxAttempts:kN,delayMs:e=>Math.min(AN*MN**(e-1),jN)},PN=4,FN=1024,IN=FN*FN*100,LN=new Uint8Array(PN);function RN(e){let t=Mg(e,hg),n=new Uint8Array(PN+t.length);return new DataView(n.buffer).setUint32(0,t.length),n.set(t,PN),n}function zN(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function BN(e){return{[Symbol.asyncIterator]:()=>({next:async()=>{let t=await e.read();return t.done?{done:!0,value:void 0}:{done:!1,value:t.value}}})}}async function*VN(e){let t=new Uint8Array;try{for await(let n of BN(e))for(t=zN(t,n);t.length>=PN;){let e=new DataView(t.buffer,t.byteOffset).getUint32(0);if(e>104857600)throw Error(`frame of ${String(e)} bytes exceeds the ${String(IN)}-byte limit`);if(t.length<PN+e)break;if(e===0){t=t.slice(PN);continue}let n=t.slice(PN,PN+e);t=t.slice(PN+e);let r=ME.safeParse(b_(n,x_));r.success&&(yield r.data)}}catch(t){throw await e.cancel(t),t}}function HN(e,t={opened:!1}){let n=e.writable.getWriter(),r=e.readable.getReader(),i=VN(r),a=t.opened?n.write(LN):Promise.resolve();return a.catch(()=>void 0),{send:async e=>{await a,await n.write(RN(e))},receive:()=>i,close:async()=>{await Promise.allSettled([n.close(),r.cancel()])}}}var UN=`/wire-mesh`,WN=8e3,GN=`the web console is a client only: it cannot listen`;async function KN(e){let t=[],n=async()=>{let r=await e.read();if(!r.done){if(!(r.value instanceof Uint8Array))throw Error(`the announcement carried something other than bytes`);t.push(r.value),await n()}};return await n(),t}async function qN(e){let t=e.incomingUnidirectionalStreams.getReader(),n=await t.read();if(t.releaseLock(),n.done)throw Error(`the node opened no announcement stream`);let r=n.value;if(!(r instanceof ReadableStream))throw Error(`the announcement stream is not a readable stream`);let i=await KN(r.getReader()),a=new Uint8Array(i.reduce((e,t)=>e+t.length,0)),o=0;for(let e of i)a.set(e,o),o+=e.length;return K_(a)}async function JN(e){let t,n=new Promise(e=>{t=setTimeout(()=>{e(`timed out`)},WN)});try{let t=await Promise.race([e.createBidirectionalStream(),n]);if(t===`timed out`)throw e.close(),Error(`this browser cannot open a stream to this node: it is waiting for flow-control credit the node never grants, which is how Safari behaves with the node's HTTP/3 library (fails-components/webtransport#490); reach the node over wss:// instead`);return t}finally{clearTimeout(t)}}function YN(e){return{async connect(t){if(typeof WebTransport>`u`)throw Error(`this browser does not support WebTransport`);let{url:n,sha256:r}=U_(t),i=new URL(n).host,a=q_(r,await e.recall(i)),o=new WebTransport(new URL(UN,n).toString(),{serverCertificateHashes:a.map(e=>({algorithm:`sha-256`,value:e}))});await o.ready;let s=HN(await JN(o),{opened:!0});o.closed.catch(()=>void 0).then(async()=>s.close());let c;return qN(o).then(async t=>{c=t,await e.remember(i,t)}).catch(()=>void 0),{...s,redialAddress:()=>c===void 0?t:Y_(t,c)}},async listen(){return Promise.reject(Error(GN))}}}var XN=1e3,ZN=1002,QN=`the web console is a client only: it cannot listen`;function $N(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary WebSocket message`)),e.close(ZN,`protocol error`);return}let i;try{i=Qj(r.data)}catch(t){if(t instanceof Zj)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close(ZN,`protocol error`);return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return r?Promise.reject(Error(`connection is closed`)):(e.send(Yj(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(XN),Promise.resolve()}}}function eP(){return{async connect(e){let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return Promise.reject(Error(`not a WebSocket address: ${e}`));let n=new WebSocket(t);return n.binaryType=`arraybuffer`,new Promise((e,r)=>{n.addEventListener(`open`,()=>{e()}),n.addEventListener(`error`,()=>{r(Error(`connect to ${t.toString()} failed`))})}).then(()=>$N(n))},async listen(){return Promise.reject(Error(QN))}}}function tP(e){let t=eP(),n=YN(e);return{connect:async e=>H_(e)?n.connect(e):t.connect(e),listen:async(e,n)=>t.listen(e,n)}}var nP=[{urls:`stun:stun.cloudflare.com:3478`}],rP=`webrtc:signal`,iP={kind:`node`};function aP(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function oP(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function sP(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function cP(e,t){return{verb:rP,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function lP(e,t){return{verb:rP,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function uP(e,t){return{verb:rP,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function dP(e){return{candidate:e.candidate,...e.sdpMid===null?{}:{"sdp-mid":e.sdpMid},...e.sdpMLineIndex===null?{}:{"sdp-m-line-index":e.sdpMLineIndex},...e.usernameFragment===null?{}:{"username-fragment":e.usernameFragment}}}function fP(e){return{candidate:e.candidate,...e[`sdp-mid`]===void 0?{}:{sdpMid:e[`sdp-mid`]},...e[`sdp-m-line-index`]===void 0?{}:{sdpMLineIndex:e[`sdp-m-line-index`]},...e[`username-fragment`]===void 0?{}:{usernameFragment:e[`username-fragment`]}}}function pP(){let e=0;return()=>{let t=e;return e+=1,t}}async function mP(e,t){if(e.token===void 0)return!1;let n=await XA(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===iP.kind:!1}function hP(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary data channel message`)),e.close();return}let i;try{i=Qj(r.data)}catch(t){if(t instanceof Zj)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close();return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return e.readyState===`open`?(e.send(Yj(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var gP=`wire-mesh`;function _P(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function vP(e,t){e.addEventListener(`open`,()=>{t(hP(e))},{once:!0})}var yP=16,bP=36e5;async function xP(e,t){let n=new Uint8Array(yP);crypto.getRandomValues(n);let r=await ij({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:rP,scope:iP,expires:t.now()+bP});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function SP(e,t){let n={identity:t.identity,clock:t.clock,revocation:t.revocation},r=new Map,i=new Map,a=pP();async function o(t,n){let r=uP(t,n===null?void 0:dP(n));await e.sendManageRequest(r,iP,i.get(t))}async function s(a,s){if(!await mP(a,n)){await a.respond({result:`error`,code:`unauthorized`});return}let c=s[`negotiation-id`];i.set(c,a.fromDevice);let l=new RTCPeerConnection({iceServers:[...t.iceServers]});r.set(c,l),_P(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{let{channel:n}=e;n.binaryType=`arraybuffer`,vP(n,t.onIncomingConnection)}),await l.setRemoteDescription({type:`offer`,sdp:s.sdp});let u=await l.createAnswer();await l.setLocalDescription(u),await a.respond({result:`ok`}),await e.sendManageRequest(lP(c,u.sdp??``),iP,a.fromDevice)}async function c(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.setRemoteDescription({type:`answer`,sdp:t.sdp}),await e.respond({result:`ok`})}async function l(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.addIceCandidate(t.candidate===void 0?null:fP(t.candidate)),await e.respond({result:`ok`})}async function u(){for await(let t of e.incomingManageRequests){if(t.command.verb!==`webrtc:signal`)continue;let e=t.command.params;aP(e)?await s(t,e):oP(e)?await c(t,e):sP(e)&&await l(t,e)}}return u(),{async initiate(n){let s=a();i.set(s,n);let c=new RTCPeerConnection({iceServers:[...t.iceServers]});r.set(s,c),_P(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(gP);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{vP(l,e),l.addEventListener(`error`,()=>{t(Error(`data channel failed to open`))},{once:!0})}),d=await c.createOffer();await c.setLocalDescription(d);let f=await e.sendManageRequest(cP(s,d.sdp??``),iP,n,await xP(t.identity,t.clock));if(f.result===`error`)throw r.delete(s),i.delete(s),c.close(),Error(`webrtc offer rejected: ${f.code}`);return u}}}var CP={frames:0,stage:void 0,handshake:void 0,issued:0,seen:new Set};function wP(e){return dO(e)}function TP(e,t){if(t.type===`gossip`)return e===`received`?t.peers.map(e=>({kind:`peer`,summary:`Peer seen:`,peer:wP(e.device)})):[{kind:`peer`,summary:`Advertised this console to the node`,peer:void 0}];if(t.type===`relay-connect`)return[{kind:`pairing`,summary:`Asked the node to pair this console with`,peer:wP(t[`target-device`])}];if(t.type===`relay-inbound`)return[{kind:`pairing`,summary:`Pairing established with`,peer:wP(t[`source-device`])}];if(t.type===`relay-data`){let n=e===`sent`?t[`to-device`]:t[`from-device`];return[{kind:`relay`,summary:e===`sent`?`Relayed a message to`:`Relayed message received from`,peer:n===void 0?void 0:wP(n)}]}return t.type===`close`?[{kind:`connection`,summary:`The node closed the connection`,peer:void 0}]:[]}function EP(e){return e.status===`reconnecting`?`reconnecting:${String(e.attempt)}`:e.status}function DP(e,t,n){let r=[],i=e=>{r.push({kind:`connection`,summary:e,peer:void 0})};if(EP(t)!==e.stage)switch(t.status){case`connecting`:i(`Connecting to ${t.address}`);break;case`connected`:i(`Connected to ${t.address}`);break;case`reconnecting`:i(`${e.stage?.startsWith(`reconnecting`)===!0?`Retry failed`:`Connection lost`} (${t.reason}); retrying, attempt ${String(t.attempt)}`);break;case`closed`:i(`Closed (${t.reason})`)}return t.status===`connected`&&n!==e.handshake&&(t.handshake.status===`negotiated`?i(`Handshake negotiated: ${t.handshake.sharedDomains.join(`, `)}`):t.handshake.status===`unanswered`?i(`The node does not answer handshakes (a relay-only node)`):t.handshake.status===`rejected`&&i(`Handshake rejected (${t.handshake.reason})`)),r}function OP(e){return e.status===`connected`?e.handshake.status:void 0}function kP(e,t,n){let r=OP(t.state),i=new Set(e.seen),a=[...DP(e,t.state,r),...t.frameLog.slice(e.frames).flatMap(e=>TP(e.direction,e.frame)).filter(e=>e.kind!==`peer`||e.peer===void 0||!i.has(e.peer)&&(i.add(e.peer),!0))].map((t,r)=>({...t,key:`activity-${String(e.issued+r)}`,at:n}));return{tracker:{frames:t.frameLog.length,stage:EP(t.state),handshake:r,issued:e.issued+a.length,seen:i},entries:a}}function AP(e){return e.map(e=>({key:`certificate-${e.key}`,at:e.at,kind:`certificate`,summary:`Certificate changed: ${e.node} announced certificates unlike the remembered ones`,peer:void 0}))}function jP(e,t){let[n,r]=(0,k.useState)({event:void 0,activity:[],statusSince:void 0});return(0,k.useEffect)(()=>{let n={cancelled:!1};return(async()=>{let i=CP;for await(let a of e.events){if(n.cancelled)return;let e=t.now(),o=kP(i,a,e),s=o.tracker.stage!==i.stage;i=o.tracker,r(t=>({event:a,activity:[...t.activity,...o.entries].slice(-500),statusSince:s?e:t.statusSince}))}})(),()=>{n.cancelled=!0}},[e,t]),n}var MP=`local-network-access`,NP=4,PP=255,FP=8,IP=32,LP=[`10.0.0.0/8`,`127.0.0.0/8`,`172.16.0.0/12`,`192.168.0.0/16`,`169.254.0.0/16`,`100.64.0.0/10`];function RP(e){let t=e.split(`.`);if(t.length!==NP)return;let n=0;for(let e of t){let t=/^\d{1,3}$/.test(e)?Number(e):NaN;if(!(t<=PP))return;n=n*2**FP+t}return n}function zP(e,t){let[n,r]=t.split(`/`),i=RP(n??``),a=Number(r);if(i===void 0)return!1;let o=2**(IP-a);return Math.floor(e/o)===Math.floor(i/o)}function BP(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase(),n=RP(t);return n===void 0?t.includes(`:`)?t===`::1`||/^f[cd]/.test(t)||/^fe[89ab]/.test(t):t===`localhost`||t.endsWith(`.local`)||!t.includes(`.`):LP.some(e=>zP(n,e))}function VP(e){try{return new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`ws://${e}`).hostname}catch{return}}function HP(e){return typeof e==`object`&&!!e&&`name`in e&&typeof e.name==`string`}function UP(){if(`permissions`in navigator)return{query:async e=>{if(!HP(e))throw TypeError(`not a permission descriptor`);return navigator.permissions.query(e)}}}async function WP(e,t,n){let r=VP(e);if(r!==void 0&&BP(r)&&!BP(t)&&n!==void 0)try{let{state:e}=await n.query({name:MP});return e===`denied`?`Your browser blocked this page from reaching ${r}, a device on your local network. Allow "Local network access" for this site in the browser's site settings (the icon left of the address), then connect again.`:void 0}catch{return}}var GP=(0,k.createContext)(void 0);function KP(){let e=(0,k.useContext)(GP);if(e===void 0)throw Error(`usePeerNames must be used inside PeerNamesProvider`);return e}var qP={pongTimeoutMs:5e3,intervalMs:15e3};function JP(e,t,n=qP){let[r,i]=(0,k.useState)([]),[a,o]=(0,k.useState)(!1),s=(0,k.useRef)(!1),c=(0,k.useCallback)(()=>{e.sendPingMeasureRtt(n.pongTimeoutMs).then(e=>{s.current=!0,o(!1),i(t=>[...t,e].slice(-40))},e=>{e instanceof BM&&(o(!s.current),i(e=>[...e,void 0].slice(-40)))})},[e,n.pongTimeoutMs]);return(0,k.useEffect)(()=>{if(!t||a)return;c();let e=setInterval(c,n.intervalMs);return()=>{clearInterval(e)}},[t,a,c,n.intervalMs]),{samples:r,unresponsive:a,probe:c}}function YP(e,t,n){let[r,i]=(0,k.useState)(()=>e.now());return(0,k.useEffect)(()=>{if(!t)return;let r=setInterval(()=>{i(e.now())},n);return()=>{clearInterval(r)}},[e,t,n]),r}var XP=1e3,ZP=60,QP=60,$P=24;function eF(e){let t=Math.floor(e/XP);if(t<1)return;if(t<ZP)return`${String(t)} s`;let n=Math.floor(t/ZP);if(n<QP)return`${String(n)} min`;let r=Math.floor(n/QP);return r<$P?`${String(r)} h`:`${String(Math.floor(r/$P))} d`}function tF(e){let t=eF(e);return t===void 0?`just now`:`${t} ago`}function nF(e){let t=eF(e);return t===void 0?`in under a second`:`in ${t}`}function rF(e){return`${String(Math.max(0,Math.ceil(e/XP)))} s`}function iF(e,t,n){if(n.length===0)return{kind:`first-use`,node:e,presented:t};let r=new Set(n),i=t.filter(e=>r.has(e));return i.length>0?{kind:`known`,node:e,trusted:i}:{kind:`changed`,node:e,remembered:n,presented:t}}function aF(e){if(H_(e))try{let{url:t,sha256:n}=U_(e);return{node:new URL(t).host,sha256:[...n]}}catch{return}}function oF(e,t){return{recall:e.recall,remember:async(n,r)=>{let i=iF(n,r.map(e=>uO(e)),(await e.recall(n)).map(e=>uO(e)));await e.remember(n,r),i.kind===`changed`&&t({node:n,remembered:i.remembered,presented:i.presented})}}}var sF=2;function cF(e){let t=[];for(let n=0;n<e.length;n+=sF)t.push(e.slice(n,n+sF).toUpperCase());return t.join(`:`)}var lF=/^([a-z][a-z0-9+.-]*):\/\//i,uF={ws:`ws:`,wss:`wss:`,http:`ws:`,https:`wss:`};function dF(e){if(H_(e))return e;let t=lF.exec(e);if(t===null)return`ws://${e}`;let n=uF[t[1]?.toLowerCase()??``];if(n===void 0)return e;let r=new URL(e);return r.protocol=n,r.hash=``,r.toString()}function fF({deviceHex:e}){return(0,z.jsx)(z.Fragment,{children:Ij(KP().labelOf(e))})}function pF(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function mF({activity:e,frameLog:t}){let[n,r]=(0,k.useState)(!1);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(um,{mt:`md`,label:`Show raw frames`,checked:n,onChange:e=>{r(e.currentTarget.checked)}}),n?(0,z.jsx)(km.ScrollContainer,{minWidth:0,h:384,"data-testid":`frame-log`,children:(0,z.jsxs)(km,{children:[(0,z.jsx)(km.Thead,{children:(0,z.jsxs)(km.Tr,{children:[(0,z.jsx)(km.Th,{children:`direction`}),(0,z.jsx)(km.Th,{children:`frame`})]})}),(0,z.jsx)(km.Tbody,{children:t.map((e,t)=>(0,z.jsxs)(km.Tr,{children:[(0,z.jsx)(km.Td,{children:e.direction}),(0,z.jsx)(km.Td,{children:pF(e.frame)})]},t))})]})}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`md`,children:`Activity`}),e.length===0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Nothing has happened yet.`}):(0,z.jsx)(km.ScrollContainer,{minWidth:0,h:384,"data-testid":`activity-log`,children:(0,z.jsx)(km,{children:(0,z.jsx)(km.Tbody,{children:[...e].reverse().map(e=>(0,z.jsxs)(km.Tr,{children:[(0,z.jsx)(km.Td,{children:new Date(e.at).toLocaleTimeString()}),(0,z.jsxs)(km.Td,{children:[e.summary,e.peer!==void 0&&(0,z.jsxs)(z.Fragment,{children:[` `,(0,z.jsx)(fF,{deviceHex:e.peer})]})]})]},e.key))})})})]})]})}var hF=160,gF=32,_F=3,vF=2,yF=26;function bF(e){let t=e.at(-1);return t===void 0?e.length===0?`No round trips measured yet`:`Last ping got no pong`:`Round trip ${String(Math.round(t))} ms`}function xF({samples:e}){let t=e.filter(e=>e!==void 0),n=Math.max(1,...t),r=hF/39,i=(40-e.length)*r,a=e.map((e,t)=>({x:i+t*r,y:e===void 0?void 0:_F+yF*(1-e/n)})),o=a.filter(e=>e.y!==void 0).map(e=>`${e.x.toFixed(1)},${String(e.y)}`).join(` `);return(0,z.jsxs)(`div`,{"data-testid":`rtt-sparkline`,children:[(0,z.jsxs)(`svg`,{role:`img`,"aria-label":bF(e),width:hF,height:gF,viewBox:`0 0 ${String(hF)} ${String(gF)}`,children:[(0,z.jsx)(`polyline`,{points:o,fill:`none`,stroke:`currentColor`,strokeWidth:1.5}),a.map(e=>e.y===void 0?null:(0,z.jsx)(`circle`,{cx:e.x,cy:e.y,r:vF,fill:`currentColor`},e.x)),a.filter(e=>e.y===void 0).map(e=>(0,z.jsx)(`line`,{x1:e.x,x2:e.x,y1:21,y2:29,stroke:`var(--mantine-color-red-6)`,strokeWidth:2},e.x))]}),(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:bF(e)})]})}function SF({state:e,statusSince:t,now:n,policy:r}){let i=t===void 0?void 0:t+r.delayMs(e.attempt),a=i===void 0?0:i-n;return(0,z.jsxs)(U,{size:`sm`,c:`orange`,"data-testid":`reconnect-status`,children:[a>0?`Retrying in ${rF(a)}`:`Retrying now`,` `,`(attempt `,e.attempt,` of `,r.maxAttempts,`). Last failure:`,` `,e.reason]})}function CF({state:e,statusSince:t,now:n,policy:r,health:i}){return e.status===`reconnecting`?(0,z.jsx)(SF,{state:e,statusSince:t,now:n,policy:r}):e.status===`connected`?(0,z.jsxs)(pl,{align:`flex-end`,gap:`md`,mb:`sm`,children:[(0,z.jsx)(xF,{samples:i.samples}),i.unresponsive&&(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:`This node does not answer pings, so round trips are not measured automatically.`})]}):null}function wF(e){e?.focus()}function TF({deviceHex:e}){let t=KP(),n=t.labelOf(e),[r,i]=(0,k.useState)(void 0);return r===void 0?(0,z.jsxs)(pl,{gap:`xs`,wrap:`nowrap`,children:[(0,z.jsxs)(`div`,{children:[n.source===`self`&&(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:`calls itself`}),(0,z.jsx)(U,{size:`sm`,fw:n.source===`petname`?`bold`:`normal`,fs:n.source===`self`?`italic`:`normal`,ff:n.source===`id`?`monospace`:`text`,children:n.primary}),n.matchesPetname&&(0,z.jsx)(_d,{size:`xs`,color:`orange`,variant:`light`,children:`same as a name you set`}),n.secondary!==void 0&&(0,z.jsx)(U,{size:`xs`,c:`dimmed`,ff:n.source===`self`?`monospace`:`text`,children:n.secondary})]}),(0,z.jsx)(zd,{value:e,children:({copied:e,copy:t})=>(0,z.jsx)(Zp,{label:e?`Copied`:`Copy device id`,children:(0,z.jsx)(rl,{size:`sm`,variant:`subtle`,"aria-label":`Copy device id of ${n.primary}`,onClick:t,children:`⧉`})})}),(0,z.jsx)(rl,{size:`sm`,variant:`subtle`,"aria-label":`Rename ${n.primary}`,onClick:()=>{i(t.petnameOf(e)??``)},children:`✎`})]}):(0,z.jsx)(`form`,{onSubmit:n=>{n.preventDefault(),t.rename(e,r).then(()=>{i(void 0)})},children:(0,z.jsxs)(pl,{gap:`xs`,wrap:`nowrap`,children:[(0,z.jsx)(Am,{size:`xs`,"aria-label":`Petname for ${n.primary}`,value:r,ref:wF,onChange:e=>{i(e.currentTarget.value)}}),(0,z.jsx)(rl,{type:`submit`,size:`sm`,"aria-label":`Save petname`,children:`✓`}),(0,z.jsx)(rl,{size:`sm`,variant:`subtle`,"aria-label":`Cancel rename`,onClick:()=>{i(void 0)},children:`×`})]})})}var EF=`q7ltm10`,DF=`q7ltm11`;function OF({columns:e,rows:t}){return(0,z.jsxs)(km,{striped:!0,className:DF,children:[(0,z.jsx)(km.Thead,{role:`rowgroup`,children:(0,z.jsx)(km.Tr,{role:`row`,children:e.map(e=>(0,z.jsx)(km.Th,{role:`columnheader`,children:e.headerless===!0?null:e.label},e.label))})}),(0,z.jsx)(km.Tbody,{role:`rowgroup`,children:t.map(t=>(0,z.jsx)(km.Tr,{role:`row`,children:e.map((e,n)=>(0,z.jsx)(km.Td,{role:`cell`,"data-label":e.label,children:t.cells[n]},e.label))},t.key))})]})}var kF=16,AF=1e3;function jF(e){let t=``;for(let n of e)t+=n.toString(kF).padStart(2,`0`);return t}function MF(e){if(e.state.status!==`connected`)return``;switch(e.state.handshake.status){case`pending`:return` · handshake pending`;case`negotiated`:return` · v${String(e.state.handshake.version)} · ${e.state.handshake.sharedDomains.join(`, `)}`;case`unanswered`:return` · handshake unanswered (relay-only node?)`;case`rejected`:return` · handshake rejected (${e.state.handshake.reason})`}return``}function NF(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${MF(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}var PF=1e3,FF=[{label:`device`},{label:`addresses`},{label:`advertised`},{label:`actions`,headerless:!0}];function IF({address:e,session:t,clock:n,reconnectPolicy:r,certificateChanges:i,onClose:a,onMessagePeer:o,pageHost:s=window.location.hostname,permissions:c=UP()}){let{event:l,activity:u,statusSince:d}=jP(t,n),f=l?.state.status===`reconnecting`||l?.state.status===`closed`,[p,m]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{let t={value:!0};return f&&WP(e,s,c).then(n=>{t.value&&m({address:e,message:n})}),()=>{t.value=!1}},[f,e,s,c]);let h=f&&p?.address===e?p.message:void 0,{observeDirectory:g,selfName:_}=KP(),v=l?.state.status===`connected`;(0,k.useEffect)(()=>{l!==void 0&&g(l.directory)},[l,g]);let y=(0,k.useRef)(!1),[b,x]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{v&&(_!==void 0||y.current)&&(y.current=_!==void 0,t.sendGossipUpdate(_===void 0?void 0:Pj(_)).then(()=>{x(void 0)},e=>{x(e instanceof Error?e.message:String(e))}))},[v,_,t]);let S=l===void 0?`idle`:NF(l),C=l?.directory??[],w=l?.frameLog??[],T=JP(t,v),E=YP(n,l?.state.status===`reconnecting`||C.length>0,PF),D=aF(dF(e))?.node,O=(0,k.useMemo)(()=>[...u,...AP(i.filter(e=>e.node===D))].sort((e,t)=>e.at-t.at),[u,i,D]);return(0,z.jsxs)(Nd,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,z.jsxs)(pl,{justify:`space-between`,mb:`xs`,children:[(0,z.jsx)(U,{fw:600,children:e}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,disabled:!v,onClick:T.probe,children:`Send ping`}),(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:`light`,onClick:a,children:`Disconnect`})]})]}),(0,z.jsx)(U,{fw:600,size:`sm`,mb:`sm`,children:S}),h===void 0?null:(0,z.jsx)(eu,{color:`yellow`,mb:`sm`,children:h}),b!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`Could not publish your display name`,mb:`sm`,children:b}),l!==void 0&&(0,z.jsx)(CF,{state:l.state,statusSince:d,now:E,policy:r,health:T}),(0,z.jsx)(U,{fw:600,size:`sm`,children:`Peer directory`}),C.length===0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,z.jsx)(OF,{columns:FF,rows:C.map(e=>({key:jF(e.device),cells:[(0,z.jsx)(TF,{deviceHex:jF(e.device)},`device`),e.advert.addresses.join(`, `),(0,z.jsx)(Zp,{label:`As the peer advertised it, by its own clock`,children:(0,z.jsx)(`span`,{children:tF(E-e.advert[`snapshot-seconds`]*AF)})},`advertised`),(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{o(e.device)},children:`Message`},`actions`)]}))}),(0,z.jsx)(mF,{activity:O,frameLog:w})]})}var LF=[{label:`device`},{label:`addresses`},{label:`gossiped by`},{label:`actions`,headerless:!0}];function RF({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,z.jsxs)(Nd,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,z.jsx)(U,{size:`sm`,c:`dimmed`,mb:`xs`,children:`Each node below was listed in the directory of a node you are connected to, which is the only thing vouching for it: the address it lists may not be a wire-mesh node at all. Nothing is dialled until you connect.`}),(0,z.jsx)(OF,{columns:LF,rows:e.map(e=>({key:e.key,cells:[(0,z.jsx)(TF,{deviceHex:jF(e.device)},`device`),e.addresses.join(`, `),(0,z.jsxs)(k.Fragment,{children:[e.via.claimedDevice!==void 0&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:`claimed to be`}),(0,z.jsx)(TF,{deviceHex:e.via.claimedDevice})]}),(0,z.jsxs)(U,{size:`xs`,c:`dimmed`,children:[`over `,e.via.address]})]},`via`),(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]},`actions`)]}))})]})}function zF({label:e,hashes:t}){return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(U,{size:`sm`,fw:600,children:e}),t.map(e=>(0,z.jsx)(Ld,{block:!0,children:cF(e)},e))]})}function BF({prompt:e}){let{assessment:t,decide:n}=e,r=t.kind===`changed`;return(0,z.jsx)(eu,{color:r?`red`:`blue`,title:r?`Certificate changed for ${t.node}`:`First connection to ${t.node}`,"data-testid":`certificate-prompt`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:r?`This address presents a certificate that shares nothing with the one remembered for this node. The node may have replaced its certificate, or something else may be answering at this address. Only continue if you expected the change.`:`This console has not connected to this node before. Connecting pins the certificate below as the one to expect from it from now on. Compare it with what the node's operator reports before you trust it.`}),r&&(0,z.jsx)(zF,{label:`Remembered`,hashes:t.remembered}),(0,z.jsx)(zF,{label:r?`Presented now`:`Certificate (SHA-256)`,hashes:t.presented}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,color:r?`red`:`blue`,onClick:()=>{n(!0)},children:r?`Trust the new certificate`:`Trust and connect`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{n(!1)},children:`Cancel`})]})]})})}function VF({prompts:e,changes:t,onDismissChange:n}){let r=t.filter(e=>!e.dismissed);return e.length===0&&r.length===0?null:(0,z.jsxs)(rm,{gap:`sm`,"data-testid":`certificate-trust`,children:[e.map(e=>(0,z.jsx)(BF,{prompt:e},e.key)),r.map(e=>(0,z.jsx)(eu,{color:`red`,title:`${e.node} announced different certificates`,withCloseButton:!0,closeButtonLabel:`Dismiss`,onClose:()=>{n(e.key)},children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`The node is still reachable through the certificate you pinned, but it now announces certificates that share nothing with the ones remembered for it, and the announced set is what this console will pin from now on.`}),(0,z.jsx)(zF,{label:`Remembered`,hashes:e.remembered}),(0,z.jsx)(zF,{label:`Announced`,hashes:e.presented})]})},e.key))]})}function HF(e,t){let[n,r]=(0,k.useState)([]),[i,a]=(0,k.useState)([]),o=(0,k.useMemo)(()=>oF(e,e=>{a(n=>[...n,{...e,key:crypto.randomUUID(),at:t.now(),dismissed:!1}])}),[e,t]),s=(0,k.useRef)(new Map),c=(0,k.useRef)(new Map);(0,k.useEffect)(()=>{let e=c.current;return()=>{for(let{refuse:t}of[...e.values()])t()}},[]);let l=(0,k.useCallback)(async e=>{let t=`${e.node} ${[...e.presented].sort().join(`,`)}`,n=s.current.get(t);if(n!==void 0)return n.decision;let i=crypto.randomUUID(),a=new Promise(n=>{let a=!1,o=e=>{a||(a=!0,c.current.get(t)?.promptKey===i&&c.current.delete(t),s.current.get(t)?.promptKey===i&&s.current.delete(t),r(e=>e.filter(e=>e.key!==i)),n(e))};c.current.set(t,{promptKey:i,refuse:()=>{o(!1)}}),r(t=>[...t,{key:i,assessment:e,decide:o}])});return s.current.set(t,{promptKey:i,decision:a}),a},[]);return{prompts:n,changes:i,memory:o,confirmAddress:(0,k.useCallback)(async t=>{let n=aF(t);if(n===void 0)return t;let r=iF(n.node,n.sha256.map(e=>uO(e)),(await e.recall(n.node)).map(e=>uO(e)));if(r.kind===`known`)return Y_(t,n.sha256.filter(e=>r.trusted.includes(uO(e))));if(await l(r))return await e.remember(n.node,n.sha256),t},[e,l]),dismissChange:(0,k.useCallback)(e=>{a(t=>t.map(t=>t.key===e?{...t,dismissed:!0}:t))},[])}}function UF({store:e,children:t}){let[n,r]=(0,k.useState)(new Map),[i,a]=(0,k.useState)(new Map),[o,s]=(0,k.useState)(void 0),[c,l]=(0,k.useState)(void 0),u=(0,k.useRef)(Promise.resolve()),d=(0,k.useCallback)(async e=>{u.current=u.current.then(async()=>{try{await e(),l(void 0)}catch(e){l(e instanceof Error?e.message:String(e))}}),await u.current},[]);(0,k.useEffect)(()=>{Promise.all([e.petnames(),e.selfName()]).then(([e,t])=>{r(e),s(t)},e=>{l(e instanceof Error?e.message:String(e))})},[e]);let f=(0,k.useCallback)(async(t,n)=>d(async()=>{await e.setPetname(t,n),r(await e.petnames())}),[e,d]),p=(0,k.useCallback)(async t=>d(async()=>{await e.setSelfName(t),s(await e.selfName())}),[e,d]),m=(0,k.useCallback)(e=>{a(t=>{let n;for(let r of e){let e=Nj(r.advert),i=dO(r.device);t.get(i)!==e&&(n??=new Map(t),e===void 0?n.delete(i):n.set(i,e))}return n??t})},[]),h=(0,k.useMemo)(()=>new Set(n.values()),[n]),g=(0,k.useMemo)(()=>({labelOf:e=>Fj(e,n.get(e),i.get(e),h),petnameOf:e=>n.get(e),rename:f,selfName:o,setSelfName:p,observeDirectory:m}),[n,h,i,o,f,p,m]);return(0,z.jsxs)(GP.Provider,{value:g,children:[c!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`Saved names are unavailable`,mb:`md`,children:c}),t]})}function WF(){let{selfName:e,setSelfName:t}=KP(),[n,r]=(0,k.useState)(void 0),i=n??e??``;return(0,z.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),t(i).then(()=>{r(void 0)})},children:(0,z.jsxs)(pl,{align:`flex-end`,wrap:`wrap`,children:[(0,z.jsx)(Am,{label:`Your display name`,description:`Shown to the peers you connect to, signed by this device's key. Leave empty to show only your short id.`,value:i,maxLength:64,onChange:e=>{r(e.currentTarget.value)},style:{flex:1,minWidth:`16rem`}}),(0,z.jsx)(Ed,{type:`submit`,variant:`light`,disabled:(Mj(i)??``)===(e??``),children:`Save name`})]})})}function GF({onDismiss:e}){return(0,z.jsxs)(Nd,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`onboarding-intro`,children:[(0,z.jsx)(Lm,{order:2,size:`h4`,mb:`xs`,children:`Welcome to the wire-mesh console`}),(0,z.jsxs)(vf,{type:`ordered`,spacing:`xs`,size:`sm`,children:[(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`Connect.`}),` `,`Enter a node's address in the Node field and press Connect. A console served by a node starts with that node's address filled in, so there is usually nothing to type. The status line shows the connection coming up.`]}),(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`See who is here.`}),` `,`Once connected, the node's peer directory lists the devices it knows. Message opens a conversation with one. Devices appear under the name they chose for themselves, or a short id; use the pencil beside a device to give it a name of your own, which only this console keeps.`]}),(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`Discovered peers wait for you.`}),` `,`A node you are connected to can tell you about other nodes. Nothing vouches for those addresses except the node that listed them, and one may not be a wire-mesh node at all, so the console never dials one by itself. Each waits in the Discovered peers list until you press Connect or dismiss it.`]}),(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`Offline.`}),` `,`The console itself loads without a network, and conversations are kept on this device, so history stays readable. Sending needs a route to the peer, through a node or directly; a message that could not be sent stays with its reason until you retry or dismiss it.`]})]}),(0,z.jsx)(Ed,{mt:`md`,size:`xs`,onClick:e,children:`Got it`})]})}function KF(e,t){return e.sentAt===t.sentAt?uO(e.messageId).localeCompare(uO(t.messageId)):e.sentAt-t.sentAt}function qF(e,t){let n=new Set(e.map(e=>uO(e.messageId))),r=t.filter(e=>!n.has(uO(e.messageId)));return r.length===0?e:[...e,...r].sort(KF)}function JF(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function YF(e,t){return{roomPath:e,participants:t,direct:void 0,relay:void 0,via:void 0,token:void 0,status:`closed`,messages:[],notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}}function XF(e,t,n){let r=t===void 0?n===void 0?void 0:`hub`:`direct`;return{...e,direct:t,relay:n,via:r,status:r===void 0?`closed`:`connected`}}function ZF(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??YF(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...XF(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??YF(t.roomPath,t.participants);return new Map(e).set(t.roomPath,XF(n,n.direct,t.route))}case`direct-closed`:return JF(e,t.roomPath,e=>XF(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=JF(n,r.roomPath,e=>XF(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...YF(t.roomPath,t.participants),messages:qF([],t.messages)}):JF(e,t.roomPath,e=>({...e,messages:qF(e.messages,t.messages)}));case`notices`:return JF(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return JF(e,t.roomPath,e=>{let n=qF(e.messages,[t.message]),r=n!==e.messages;return{...e,messages:n,unread:r&&t.message.direction===`received`?e.unread+1:e.unread}});case`read`:return JF(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return JF(e,t.roomPath,e=>({...e,outgoing:e.outgoing.some(e=>e.localId===t.entry.localId)?e.outgoing.map(e=>e.localId===t.entry.localId?t.entry:e):[...e.outgoing,t.entry]}));case`outgoing-removed`:return JF(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return JF(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return JF(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return JF(e,t.roomPath,e=>({...e,token:t.token}))}return e}function QF(e,t){let n=ON(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}function $F(e,t){return e.participants.length===0?e.roomPath:e.participants.map(e=>Ij(t.labelOf(e))).join(`, `)}function eI(e){return e.toLowerCase().split(/\s+/).filter(e=>e!==``)}function tI(e,t){let n=e.toLowerCase();return t.every(e=>n.includes(e))}function nI(e,t){let n=eI(t);if(n.length===0)return[];let r=new TextDecoder,i=[];for(let t of e)t.messages.forEach((e,r)=>{tI(e.text,n)&&i.push({key:`${t.roomPath}/message/${String(r)}`,roomPath:t.roomPath,kind:`message`,text:e.text,at:e.sentAt,direction:e.direction})}),t.notices.forEach((e,a)=>{if(e.plaintext===void 0||e.claims===void 0)return;let o=r.decode(e.plaintext);tI(o,n)&&i.push({key:`${t.roomPath}/notice/${String(a)}`,roomPath:t.roomPath,kind:`notice`,text:o,at:e.claims[`posted-at`],direction:void 0})});return i.sort((e,t)=>t.at-e.at).slice(0,50)}function rI({conversations:e,onSelect:t}){let n=KP(),[r,i]=(0,k.useState)(``);if(e.length===0)return null;let a=nI(e,r),o=eI(r).length>0,s=new Map(e.map(e=>[e.roomPath,e]));return(0,z.jsxs)(rm,{gap:`xs`,"data-testid":`search-panel`,children:[(0,z.jsx)(Am,{type:`search`,label:`Search conversations and notices`,value:r,onChange:e=>{i(e.currentTarget.value)}}),o&&a.length===0&&(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Nothing matches.`}),a.map(e=>{let i=s.get(e.roomPath);return(0,z.jsx)(Sf,{label:(0,z.jsx)(nf,{highlight:eI(r),size:`sm`,children:e.text}),description:(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(_d,{size:`xs`,variant:`light`,children:e.kind}),(0,z.jsxs)(U,{size:`xs`,c:`dimmed`,children:[i===void 0?e.roomPath:$F(i,n),` · `,new Date(e.at).toLocaleString()]})]}),onClick:()=>{t(e.roomPath)}},e.key)})]})}var iI=16;function aI(){let e=new Uint8Array(iI);return crypto.getRandomValues(e),e}function oI(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function sI(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}var cI=class extends Error{capability;code;constructor(e,t){super(`capability request for "${e}" was refused (${t})`),this.name=`CapabilityRequestRefusedError`,this.capability=e,this.code=t}};async function lI(e,t,n,r,i,a,o){let s=await e.sendManageRequest(sI(t,a),n,r,o,i);if(s.result!==`ok`)throw new cI(t,s.code);let c=qE.safeParse(s);if(!c.success)throw Error(`capability request for "${t}" response was malformed`);return c.data}var uI=`manage:request`;async function dI(e,t){if(e.token===void 0)return{ok:!1,code:`token_required`};if(t.revocation===void 0)throw Error(`requireRequestToken needs a revocation view on the handler options`);let n=await XA(e.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.bearerDevice,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});if(!n.ok)return{ok:!1,code:n.reason};if(n.claims.capability!==`manage:request`)return{ok:!1,code:`capability_mismatch`};let r=n.claims[`requests-capability`];return r!==void 0&&r!==t.capability?{ok:!1,code:`capability_mismatch`}:FO(n.claims.scope,e.scope)?{ok:!0}:{ok:!1,code:`scope_mismatch`}}function fI(e){return async function(t){let n=KE.safeParse(t.command.params);if(!n.success||n.data.capability!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let r=n.data;if(e.requireRequestToken===!0){let n=await dI(t,e);if(!n.ok){await t.respond({result:`error`,code:n.code});return}}let i=r[`valid-until`];if(i!==void 0&&i<=e.clock.now()){await t.respond({result:`error`,code:`expired`});return}let a=!1,o=setTimeout(()=>{a||(a=!0,t.respond({result:`error`,code:`timeout`,message:`no decision within the capability-request timeout`}).catch(()=>void 0))},e.timeoutMs);oI(o),e.onRequest({scope:t.scope,requesterDevice:e.bearerDevice,async decide(n){if(a)return;if(a=!0,clearTimeout(o),n.kind===`reject`){await t.respond({result:`error`,code:`denied`,...n.reason===void 0?{}:{message:n.reason}});return}let r=await ij({identity:e.identity,clock:e.clock,tokenId:aI(),bearer:e.bearerDevice,capability:n.capability,scope:t.scope,expires:n.expires,...n.delegationsRemaining===void 0?{}:{delegationsRemaining:n.delegationsRemaining}});if(!r.ok){await t.respond({result:`error`,code:`mint_failed`});return}let i=r.token;await t.respond({result:`ok`,"granted-token":i,...n.extensions??{}})}})}}var pI=16,mI=36e5,hI=[{verb:`room:member`,scopeKind:`room`},{verb:`room:join`,scopeKind:`room`},{verb:`room:invite`,scopeKind:`room`},{verb:`webrtc:signal`,scopeKind:`node`},{verb:`relay:use`,scopeKind:`node`},{verb:`pin:write`,scopeKind:`folder`},{verb:`exec:pty`,scopeKind:`folder`},{verb:`exec:proc`,scopeKind:`folder`},{verb:`group:member`,scopeKind:`group`},{verb:UA,scopeKind:`folder`},{verb:uI,scopeKind:`room`}],gI={[UA]:`grantsCapability`,[uI]:`requestsCapability`},_I={already_expired:`the grant would already have expired`,parent_malformed:`the grant it delegates from is malformed`,parent_bearer_mismatch:`the grant it delegates from is not held by this device`,expires_exceeds_parent:`it would outlast the grant it delegates from`,scope_does_not_narrow:`its scope is wider than the grant it delegates from`,capability_mismatch:`its capability differs from the grant it delegates from`,delegation_exceeds_parent:`it permits more delegation than its parent does`,links_exclusive:`it would carry both a parent grant and an authorising grant`,authorisation_malformed:`the grant authorising it is malformed`,authorisation_parent_forbidden:`a grant permission cannot be delegated from a parent grant`,authorisation_bearer_mismatch:`the grant authorising it is not held by this device`,authorisation_capability_mismatch:`the grant authorising it names a different capability`,authorisation_scope_does_not_narrow:`its scope is wider than the grant authorising it`,authorisation_exceeds_authoriser:`it would outlast the grant authorising it`,authorisation_delegation_exceeds:`it permits more delegation than the grant authorising it does`,authorisation_conditions_not_satisfied:`the grant authorising it does not allow this mint`};function vI(e,t){let n=(t??``).trim();if(n===``)return{ok:!0};let r=gI[e];if(r===void 0)return{ok:!1,error:`only ${UA} and ${uI} name a verb they cover`};let i=AD.safeParse(n);return i.success?{ok:!0,claim:r,verb:i.data}:{ok:!1,error:`the covered verb must look like subsystem:action, for example room:member`}}function yI(){let e=new Uint8Array(pI);return crypto.getRandomValues(e),e}async function bI(e,t){let n;try{n=pO(e.bearerHex.trim().toLowerCase())}catch{return{ok:!1,error:`the bearer must be a 64-character hex device-id`}}let r=AD.safeParse(e.capability.trim());if(!r.success)return{ok:!1,error:`the capability must look like subsystem:action, for example room:member`};if(e.scopeKind.trim()===``)return{ok:!1,error:`the scope needs a kind, for example room`};if(!Number.isFinite(e.lifetimeHours)||e.lifetimeHours<=0)return{ok:!1,error:`the lifetime must be more than zero hours`};if(e.delegationsRemaining!==void 0&&!(Number.isSafeInteger(e.delegationsRemaining)&&e.delegationsRemaining>=0))return{ok:!1,error:`further delegations must be a whole number, zero or more`};let i=vI(r.data,e.targetVerb);if(!i.ok)return i;let a=e.selfGrantBars??[];if(a.length>0&&r.data!==`manage:grant`)return{ok:!1,error:`only a ${UA} can bar its holder from granting to itself`};let o=[];for(let e of a){let t=AD.safeParse(e.trim());if(!t.success)return{ok:!1,error:`the barred verb "${e}" must look like subsystem:action`};o.push(PA(t.data,n))}let s=e.scopePath.trim(),c=await ij({identity:t.identity,clock:t.clock,tokenId:yI(),bearer:n,capability:r.data,scope:{kind:e.scopeKind.trim(),...s===``?{}:{path:s}},expires:Math.round(t.clock.now()+e.lifetimeHours*mI),...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining},...e.parent===void 0?{}:{parent:e.parent},...e.authorisedBy===void 0?{}:{authorisedBy:e.authorisedBy},...i.claim===void 0||i.verb===void 0?{}:{[i.claim]:i.verb},...o.length===0?{}:{conditions:o}});return c.ok?{ok:!0,token:c.token}:{ok:!1,error:`refused: ${_I[c.reason]}`}}var xI=3e4;function SI(e){let{identity:t,clock:n,grants:r,revocations:i,announce:a}=e,[o,s]=(0,k.useState)([]),[c,l]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{let e={cancelled:!1,latestLoad:0},a=async()=>{e.latestLoad+=1;let a=e.latestLoad,o=await r.list(),c=await Promise.all(o.map(async e=>({...e,status:await fj(e.token,{identity:t,clock:n,revocation:i.view,...e.direction===`held`?{expectedBearer:t.deviceId}:{}})})));!e.cancelled&&a===e.latestLoad&&(s(c),l(void 0))},o=()=>{a().catch(t=>{e.cancelled||l(t instanceof Error?t.message:String(t))})};o();let c=[r.subscribe(o),i.subscribe(o)],u=setInterval(o,xI);return()=>{e.cancelled=!0,clearInterval(u);for(let e of c)e()}},[t,n,r,i]);let u=(0,k.useCallback)(async e=>{let i=await bI(e,{identity:t,clock:n});return i.ok?(await r.record(`issued`,i.token,n.now()),{ok:!0,code:uj(i.token)}):i},[t,n,r]),d=(0,k.useCallback)(async e=>{let a;try{a=dj(e)}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}let o=await fj(a,{identity:t,clock:n,revocation:i.view,expectedBearer:t.deviceId});return o.kind===`invalid`?{ok:!1,error:`this device cannot hold that grant: ${mj(o)}`}:(await r.record(`held`,a,n.now()),{ok:!0})},[t,n,r,i]),f=(0,k.useCallback)(async e=>{try{let t=await i.revoke(e.claims[`token-id`]);return{ok:!0,announced:await a(t)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},[i,a]);return(0,k.useMemo)(()=>({rows:o,loadError:c,mint:u,importCode:d,revoke:f}),[o,c,u,d,f])}function CI({label:e,children:t}){return(0,z.jsxs)(U,{size:`sm`,children:[(0,z.jsxs)(U,{span:!0,fw:600,children:[e,`:`]}),` `,t]})}function wI({row:e}){let{claims:t}=e,n=uj(e.token);return(0,z.jsxs)(rm,{gap:4,"data-testid":`grant-details`,children:[(0,z.jsx)(CI,{label:`Token id`,children:(0,z.jsx)(Ld,{children:e.tokenId})}),(0,z.jsx)(CI,{label:`Issuer`,children:(0,z.jsx)(fF,{deviceHex:dO(t.issuer)})}),(0,z.jsx)(CI,{label:`Bearer`,children:(0,z.jsx)(fF,{deviceHex:dO(t.bearer)})}),(0,z.jsxs)(CI,{label:`Allows`,children:[t.capability,` over `,t.scope.kind,t.scope.path===void 0?``:` ${t.scope.path}`]}),(0,z.jsx)(CI,{label:`Expires`,children:new Date(t.expires).toISOString()}),t[`not-before`]!==void 0&&(0,z.jsx)(CI,{label:`Not before`,children:new Date(t[`not-before`]).toISOString()}),t[`delegations-remaining`]!==void 0&&(0,z.jsx)(CI,{label:`Further delegations`,children:t[`delegations-remaining`]}),t.parent!==void 0&&(0,z.jsx)(CI,{label:`Delegated from`,children:`another grant (its parent rides inside this one)`}),(0,z.jsx)(CI,{label:`Status`,children:mj(e.status)}),(0,z.jsx)(df,{readOnly:!0,label:`Grant code`,description:`Paste this into the other device's grant import to give it this grant.`,value:n,autosize:!0,minRows:2,maxRows:4}),(0,z.jsx)(zd,{value:n,children:({copied:e,copy:t})=>(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:t,w:`fit-content`,children:e?`Copied`:`Copy grant code`})})]})}function TI(e,t){return e>t?nF(e-t):tF(t-e)}function EI({title:e,rows:t,other:n,now:r,onRevoke:i}){let[a,o]=(0,k.useState)(void 0),[s,c]=(0,k.useState)(void 0);return(0,z.jsxs)(`div`,{"data-testid":`grants-${e.toLowerCase()}`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`sm`,children:e}),t.length===0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`None.`}):(0,z.jsx)(OF,{columns:[{label:`capability`},{label:`over`},{label:n===`issuer`?`from`:`to`},{label:`expires`},{label:`status`},{label:`actions`,headerless:!0}],rows:t.map(e=>({key:`${e.direction}/${e.tokenId}`,cells:[e.claims.capability,`${e.claims.scope.kind}${e.claims.scope.path===void 0?``:` ${e.claims.scope.path}`}`,(0,z.jsx)(TF,{deviceHex:dO(e.claims[n])},`other`),TI(e.claims.expires,r),(0,z.jsx)(_d,{color:e.status.kind===`valid`?`green`:`red`,variant:`light`,children:mj(e.status)},`status`),(0,z.jsxs)(k.Fragment,{children:[(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{o(a===e.tokenId?void 0:e.tokenId)},children:a===e.tokenId?`Hide`:`Inspect`}),i!==void 0&&e.status.kind===`valid`&&(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:s===e.tokenId?`filled`:`light`,onClick:()=>{s===e.tokenId?(c(void 0),i(e)):c(e.tokenId)},children:s===e.tokenId?`Confirm: revoke for good`:`Revoke`})]}),a===e.tokenId&&(0,z.jsx)(wI,{row:e})]},`actions`)]}))})]})}function DI({onImport:e}){let[t,n]=(0,k.useState)(``),[r,i]=(0,k.useState)(void 0);return(0,z.jsx)(`form`,{onSubmit:r=>{r.preventDefault(),e(t).then(e=>{i(e),e.ok&&n(``)})},children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`md`,children:`Add a grant you were given`}),(0,z.jsx)(df,{label:`Grant code`,value:t,onChange:e=>{n(e.currentTarget.value)},autosize:!0,minRows:2,maxRows:4,required:!0}),(0,z.jsx)(Ed,{type:`submit`,size:`xs`,w:`fit-content`,children:`Add grant`}),r?.ok===!1&&(0,z.jsx)(eu,{color:`red`,title:`Not added`,children:r.error}),r?.ok===!0&&(0,z.jsx)(eu,{color:`green`,title:`Grant added`,children:`It is listed under Held.`})]})})}var OI=24,kI=`root`,AI=`none`;function jI(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e!==``)}function MI({delegable:e,onMint:t}){let[n,r]=(0,k.useState)(``),[i,a]=(0,k.useState)(``),[o,s]=(0,k.useState)(``),[c,l]=(0,k.useState)(``),[u,d]=(0,k.useState)(OI),[f,p]=(0,k.useState)(``),[m,h]=(0,k.useState)(kI),[g,_]=(0,k.useState)(AI),[v,y]=(0,k.useState)(``),[b,x]=(0,k.useState)(``),[S,C]=(0,k.useState)(void 0),w=e.find(e=>e.tokenId===m),T=e.find(e=>e.tokenId===g),E=e.filter(e=>e.claims.capability===UA),D=i===`manage:grant`||i===`manage:request`;function O(){if(m!==kI&&w===void 0){C({ok:!1,error:`the grant you chose to delegate from is no longer valid; choose another, or choose Root grant to mint without one`});return}if(g!==AI&&T===void 0){C({ok:!1,error:`the grant you chose to authorise this is no longer valid; choose another, or choose None to mint without one`});return}t({bearerHex:n,capability:i,scopeKind:o,scopePath:c,lifetimeHours:u,delegationsRemaining:f===``?void 0:f,parent:w?.token,authorisedBy:T?.token,targetVerb:D?v:``,selfGrantBars:i===`manage:grant`?jI(b):[]}).then(C,e=>{C({ok:!1,error:e instanceof Error?e.message:String(e)})})}return(0,z.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),O()},children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`md`,children:`Mint a grant`}),(0,z.jsx)(Am,{label:`Bearer device-id`,description:`The device the grant is for: 64 hex characters, copied from a peer's directory row.`,value:n,onChange:e=>{r(e.currentTarget.value)},required:!0}),(0,z.jsx)(md,{label:`Capability`,description:`What it allows, as subsystem:action.`,data:hI.map(e=>e.verb),value:i,onChange:e=>{a(e);let t=hI.find(t=>t.verb===e);t!==void 0&&s(t.scopeKind)},required:!0}),(0,z.jsx)(Am,{label:`Scope kind`,value:o,onChange:e=>{s(e.currentTarget.value)},required:!0}),(0,z.jsx)(Am,{label:`Scope path`,description:`Leave empty for a scope with no path.`,value:c,onChange:e=>{l(e.currentTarget.value)}}),D&&(0,z.jsx)(Am,{label:`Covered verb`,description:i===`manage:grant`?`The one verb the holder may grant, as subsystem:action. Empty means any verb within the scope.`:`The one verb the holder may request, as subsystem:action. Empty means any verb within the scope.`,value:v,onChange:e=>{y(e.currentTarget.value)}}),i===`manage:grant`&&(0,z.jsx)(Am,{label:`Barred from granting to itself`,description:`Comma-separated verbs the holder may not grant to its own device, for example manage:grant to stop it passing on the right to grant.`,value:b,onChange:e=>{x(e.currentTarget.value)}}),(0,z.jsx)(Lp,{label:`Lasts (hours)`,min:0,value:u,onChange:e=>{d(typeof e==`number`?e:0)}}),(0,z.jsx)(Lp,{label:`Further delegations`,description:`How many times the bearer may pass it on. Empty leaves it unset.`,min:0,allowDecimal:!1,value:f,onChange:e=>{p(typeof e==`number`?e:``)}}),(0,z.jsx)($p,{label:`Delegate from`,description:`A grant you hold, which the new grant may only narrow. Root means none.`,allowDeselect:!1,data:[{value:kI,label:`Root grant (none)`},...e.map(e=>({value:e.tokenId,label:`${e.claims.capability} from ${Aj(dO(e.claims.issuer))}`}))],value:m,onChange:e=>{h(e??kI)}}),(0,z.jsx)($p,{label:`Authorised by`,description:`A manage:grant you hold that permits this mint; it may bar what you can grant. None means this grant is minted on your own authority.`,allowDeselect:!1,data:[{value:AI,label:`None`},...E.map(e=>({value:e.tokenId,label:`manage:grant from ${Aj(dO(e.claims.issuer))}`}))],value:g,onChange:e=>{_(e??AI)}}),(0,z.jsx)(Ed,{type:`submit`,size:`xs`,w:`fit-content`,children:`Mint grant`}),S?.ok===!1&&(0,z.jsx)(eu,{color:`red`,title:`Not minted`,children:S.error}),S?.ok===!0&&(0,z.jsx)(eu,{color:`green`,title:`Grant minted`,children:`It is listed under Issued, where Inspect shows its grant code.`})]})})}var NI=1e3;function PI(e){if(!e.ok)return{color:`red`,title:`Not revoked`,text:e.error};let{attempted:t,reached:n}=e.announced;return t===0?{color:`yellow`,title:`Revoked here only`,text:`No connection was open, so no node was told. This console no longer honours the grant.`}:n<t?{color:`yellow`,title:`Revoked, but not every node was told`,text:`Sent to ${String(n)} of ${String(t)} connected nodes. This console no longer honours the grant.`}:{color:`green`,title:`Revoked`,text:`Sent to ${String(n)} connected ${n===1?`node`:`nodes`}. This console no longer honours the grant.`}}function FI({grants:e,clock:t}){let n=YP(t,!0,NI),[r,i]=(0,k.useState)(void 0),a=r===void 0?void 0:PI(r),o=e.rows.filter(e=>e.direction===`held`),s=e.rows.filter(e=>e.direction===`issued`);return(0,z.jsxs)(rm,{gap:`xs`,"data-testid":`grants-panel`,children:[(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`A grant is a signed statement that one device may do something over something until a time. Revoking one you issued is recorded here, where this console stops honouring it at once, and sent to the nodes you are connected to. A node only passes it on if it relays revocations, which the hub does not.`}),e.loadError!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`Grants could not be read`,children:e.loadError}),(0,z.jsx)(EI,{title:`Held`,rows:o,other:`issuer`,now:n}),(0,z.jsx)(EI,{title:`Issued`,rows:s,other:`bearer`,now:n,onRevoke:t=>{e.revoke(t).then(i,e=>{i({ok:!1,error:e instanceof Error?e.message:String(e)})})}}),a!==void 0&&(0,z.jsx)(eu,{color:a.color,title:a.title,"data-testid":`revocation-report`,children:a.text}),(0,z.jsx)(MI,{delegable:o.filter(e=>e.status.kind===`valid`),onMint:e.mint}),(0,z.jsx)(DI,{onImport:e.importCode})]})}var II=6e4;function LI(e,t){let n=URL.createObjectURL(new Blob([t],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=e,r.hidden=!0,document.body.append(r),r.click(),r.remove(),setTimeout(()=>{URL.revokeObjectURL(n)},II)}var RI=`wire-mesh-console-identity.json`,zI=2;function BI(){location.reload()}function VI({identity:e,backup:t,save:n=LI,reload:r=BI}){let i=dO(e.deviceId),[a,o]=(0,k.useState)({kind:`idle`}),[s,c]=(0,k.useState)(!1);async function l(){try{n(RI,JSON.stringify(await t.export(),void 0,zI)),o({kind:`exported`})}catch(e){o({kind:`error`,message:e instanceof Error?e.message:String(e)})}}async function u(e){try{await t.restore(e),o({kind:`restored`})}catch(e){o({kind:`error`,message:e instanceof Error?e.message:String(e)})}}async function d(e){if(e!==null)try{o({kind:`confirm-restore`,backup:await OO(await e.text())})}catch(e){o({kind:`error`,message:e instanceof Error?e.message:String(e)})}}return(0,z.jsxs)(rm,{gap:`xs`,"data-testid":`identity-panel`,children:[(0,z.jsxs)(U,{size:`sm`,children:[`This device is `,(0,z.jsx)(Ld,{"data-testid":`own-device-id`,children:i}),` `,(0,z.jsx)(zd,{value:i,children:({copied:e,copy:t})=>(0,z.jsx)(Ed,{size:`compact-xs`,variant:`subtle`,onClick:t,children:e?`Copied`:`Copy device id`})})]}),(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Its key is ES256 (P-256) and lives in this browser. If this browser's storage is cleared or the device is lost, the identity is gone, along with every grant made to it. A backup file lets you keep it.`}),a.kind===`confirm-export`&&(0,z.jsx)(eu,{color:`orange`,title:`This file holds your private key`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`Anyone who has it can act as this device. Save it somewhere private, and do not send it to anyone. The console does not show the key or keep a copy of the file.`}),(0,z.jsx)(od,{label:`I understand, and I want a backup file`,checked:s,onChange:e=>{c(e.currentTarget.checked)}}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,color:`orange`,disabled:!s,onClick:()=>{l()},children:`Save backup file`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{o({kind:`idle`})},children:`Cancel`})]})]})}),a.kind===`exported`&&(0,z.jsxs)(eu,{color:`green`,title:`Backup file handed to your browser`,children:[(0,z.jsx)(U,{size:`sm`,children:`The browser was asked to save it, and may have asked where. Check that the file is there before you rely on it.`}),(0,z.jsx)(U,{size:`sm`,children:`Keep it private. Restoring it on another browser makes that browser this device.`})]}),a.kind===`confirm-restore`&&(0,z.jsx)(eu,{color:`red`,title:`Replace this device's identity?`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsxs)(U,{size:`sm`,children:[`This device is now `,(0,z.jsx)(Ld,{children:i}),`. The backup is`,` `,(0,z.jsx)(Ld,{children:a.backup.deviceId}),`. Restoring makes this browser the backup's device the next time the console loads, and this identity, with the grants made to it, is gone unless you have a backup of it.`]}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,color:`red`,onClick:()=>{u(a.backup)},children:`Replace this identity`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{o({kind:`idle`})},children:`Cancel`})]})]})}),a.kind===`restored`&&(0,z.jsx)(eu,{color:`green`,title:`Identity restored`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`Reload the console to run as the restored identity.`}),(0,z.jsx)(Ed,{size:`xs`,w:`fit-content`,onClick:r,children:`Reload now`})]})}),a.kind===`error`&&(0,z.jsx)(eu,{color:`red`,title:`That did not work`,children:a.message}),(a.kind===`idle`||a.kind===`exported`||a.kind===`error`)&&(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{c(!1),o({kind:`confirm-export`})},children:`Back up this identity`}),(0,z.jsx)(Wd,{accept:`application/json,.json`,onChange:e=>{d(e)},children:e=>(0,z.jsx)(Ed,{size:`xs`,variant:`light`,color:`red`,...e,children:`Restore from a backup file`})})]})]})}function HI({identity:e,clock:t,grants:n,revocations:r,identityBackup:i,announceRevocation:a}){let o=SI({identity:e,clock:t,grants:n,revocations:r,announce:a});return(0,z.jsxs)(Zl,{multiple:!0,variant:`contained`,"data-testid":`identity-section`,children:[(0,z.jsxs)(Zl.Item,{value:`identity`,children:[(0,z.jsx)(Zl.Control,{children:`Identity`}),(0,z.jsx)(Zl.Panel,{children:(0,z.jsx)(VI,{identity:e,backup:i})})]}),(0,z.jsxs)(Zl.Item,{value:`grants`,children:[(0,z.jsx)(Zl.Control,{children:`Grants`}),(0,z.jsx)(Zl.Panel,{children:(0,z.jsx)(FI,{grants:o,clock:t})})]})]})}function UI({revocations:e,onFailure:t}){let n=(0,k.useSyncExternalStore)(e.subscribe,e.unreadable);return n.length===0?null:(0,z.jsx)(eu,{color:`red`,title:`Some stored revocations could not be loaded`,"data-testid":`unreadable-revocations`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`A grant that one of these revoked may read as valid until it is dealt with. Discarding an entry deletes it from this console's storage.`}),n.map(n=>(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsxs)(U,{size:`sm`,children:[n.key,`: `,n.reason]}),(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.discardUnreadable(n.key).catch(e=>{t(e instanceof Error?e.message:String(e))})},children:`Discard`})]},n.key))]})})}function WI(e){return e instanceof Error?e.message:String(e)}function GI(e){let[t,n]=(0,k.useState)(void 0),[r,i]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{e.introDismissed().then(n,e=>{n(!1),i(WI(e))})},[e]);let a=(0,k.useCallback)(t=>{n(t),e.setIntroDismissed(t).then(()=>{i(void 0)},e=>{i(WI(e))})},[e]),o=(0,k.useCallback)(()=>{a(!0)},[a]),s=(0,k.useCallback)(()=>{a(!1)},[a]);return{visible:t===!1,ready:t!==void 0,error:r,dismiss:o,show:s}}function KI({conversations:e,selected:t,onSelect:n}){let r=KP();return e.length===0?null:(0,z.jsxs)(rm,{gap:0,"data-testid":`conversation-list`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,z.jsx)(Sf,{active:e.roomPath===t,label:$F(e,r),description:e.status===`connected`?void 0:`offline`,rightSection:(0,z.jsxs)(pl,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,z.jsx)(_d,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,z.jsx)(_d,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function qI({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,k.useState)(``),[l,u]=(0,k.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(pl,{gap:`xs`,flex:1,children:[(0,z.jsx)(Am,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,z.jsx)(Ed,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,z.jsx)(U,{size:`sm`,c:`red`,children:l})]})}var JI=`You`,YI=256,XI=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function ZI({sentAt:e}){return(0,z.jsx)(U,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:XI.format(e)})}function QI({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,k.useRef)(null);return(0,k.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,z.jsx)(Gs,{h:YI,viewportRef:a,children:(0,z.jsxs)(rm,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,z.jsxs)(rm,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,z.jsx)(U,{size:`xs`,fw:600,c:`dimmed`,children:i?JI:n}),(0,z.jsx)(U,{size:`sm`,children:t.text}),(0,z.jsx)(ZI,{sentAt:t.sentAt})]},uO(t.messageId))}),t.map(e=>(0,z.jsxs)(rm,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,z.jsx)(U,{size:`xs`,fw:600,c:`dimmed`,children:JI}),(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`failed`?(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(U,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,z.jsx)(Ed,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,z.jsx)(Ed,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]}):(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:e.status===`awaiting-approval`?`Waiting for ${n} to allow messages`:`Sending`})]},e.localId))]})})}function $I(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function eL({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=$I(e);return(0,z.jsx)(H,{children:n===void 0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,z.jsx)(U,{size:`sm`,children:n})},t)});return(0,z.jsxs)(rm,{gap:4,children:[t,(0,z.jsxs)(_d,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var tL=864e5;function nL(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function rL({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){let a=KP();return(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsx)(U,{fw:600,"data-testid":`conversation-header`,children:$F(e,a)}),(0,z.jsx)(U,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:nL(e.via)})]}),e.pendingJoinRequest&&(0,z.jsx)(eu,{color:`blue`,title:`Message request`,children:(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsxs)(U,{size:`sm`,children:[(0,z.jsx)(fF,{deviceHex:e.pendingJoinRequest.requesterHex}),` `,`wants to message you`]}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+tL})},children:`Allow`}),(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,z.jsx)(QI,{messages:e.messages,outgoing:e.outgoing,peerLabel:$F(e,a),onRetry:r,onDiscard:i}),(0,z.jsx)(pl,{children:(0,z.jsx)(qI,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,z.jsx)(Ud,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,z.jsx)(eL,{notices:e.notices}),e.via===void 0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Durable notices can be posted while the conversation is connected.`}):(0,z.jsx)(pl,{children:(0,z.jsx)(qI,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})})]})}var iL=`room:member`;async function aL(e,t){let n=await XA(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.expectedBearer});if(!n.ok)return n;if(n.claims.scope.kind!==`room`)return{ok:!1,reason:`wrong_scope_kind`};if(n.claims.scope.path!==t.roomPath)return{ok:!1,reason:`wrong_scope_path`};let r=ON(t.roomPath),i=dO(n.rootIssuer);if(r.kind===`owner-named`){if(i!==r.owner)return{ok:!1,reason:`wrong_chain_root`}}else if(t.dmRootPolicy===`either-participant`){if(i!==r.participants[0]&&i!==r.participants[1])return{ok:!1,reason:`wrong_chain_root`}}else if(i!==dO(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}async function oL(e,t,n,r){let i=(await e.list()).filter(e=>{let t=e.claims;if(e.direction!==`held`||t.capability!==`manage:request`)return!1;let i=t[`requests-capability`];return i!==void 0&&i!==n?!1:FO(t.scope,r)}),a=async e=>{let[n,...r]=e;if(n!==void 0)return(await fj(n.token,t)).kind===`valid`?n.token:a(r)};return a(i)}function sL(e){if(e instanceof cI)switch(e.code){case`denied`:return`the other side denied the request`;case`token_required`:return`the other side only accepts requests that present a request permission, and this device holds none that covers this one`;case`capability_mismatch`:return`the request permission presented does not cover this capability`;case`scope_mismatch`:return`the request permission presented does not cover this conversation`;default:return`the request permission presented was refused (${e.code})`}}function cL(e){return async function(t){if(t.command.verb!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let n=JE.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}let r=n.data[`granted-token`],i=await XA(r,{identity:e.identity,clock:e.clock,revocation:e.revocation,expectedBearer:e.identity.deviceId});if(!i.ok){await t.respond({result:`error`,code:i.reason});return}if(i.claims.capability!==e.capability){await t.respond({result:`error`,code:`capability_mismatch`});return}if(!FO(i.claims.scope,t.scope)){await t.respond({result:`error`,code:`scope_mismatch`});return}await t.respond({result:`ok`}),e.onGrant({capability:e.capability,grantedToken:r,scope:t.scope,granterDevice:e.granterDevice})}}var lL=16;function uL(){let e=new Uint8Array(lL);return crypto.getRandomValues(e),e}var dL=3e5;function fL(e,t,n){return{verb:iL,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function pL(e,t,n,{token:r,targetDevice:i}){let a=fL(n,uL(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function mL(e,t,{targetDevice:n,requestToken:r}={}){let i;try{i=await lI(e,iL,{kind:`room`,path:t},n,void 0,void 0,r)}catch(e){let t=sL(e);throw t===void 0?e:Error(t)}let a=fD.safeParse(i);if(!a.success)throw Error(`room.join response for ${t} was malformed`);return{token:a.data[`granted-token`],members:a.data.members.map(e=>e.device)}}function hL(e,t,n){async function r(e,r){let i=e.scope.path;if(i===void 0||e.token===void 0){await e.respond({result:`error`,code:`unauthorized`});return}if(!(await aL(e.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.peerDevice,roomPath:i})).ok){await e.respond({result:`error`,code:`unauthorized`});return}await e.respond({result:`ok`});let a=r[`message-id`],o=r[`sent-at`],s=r.text;a instanceof Uint8Array&&typeof o==`number`&&typeof s==`string`&&n.onMessage?.({roomPath:i,text:s,messageId:a,sentAt:o})}function i(e){return async n=>{if(n.kind===`reject`){let t={kind:`reject`,...n.reason===void 0?{}:{reason:n.reason}};await e.decide(t);return}let r=[...t.currentMembers?.()??[],t.peerDevice].map(e=>({device:e})),i={kind:`accept`,capability:n.capability,expires:n.expires,...n.delegationsRemaining===void 0?{}:{delegationsRemaining:n.delegationsRemaining},extensions:{members:r}};await e.decide(i)}}let a=fI({capability:iL,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??dL,onRequest(e){let t=e.scope.path,r=n.onJoinRequest;if(t===void 0||r===void 0){e.decide({kind:`reject`,reason:`unsupported verb`});return}r({roomPath:t,requesterDevice:e.requesterDevice,decide:i(e)})}});async function o(e){if(e.scope.path===void 0){await e.respond({result:`error`,code:`missing_scope_path`});return}if(n.onJoinRequest===void 0){await e.respond({result:`error`,code:`unsupported_verb`});return}await a({...e,respond:async t=>{if(t.result===`ok`){let e=LD.safeParse(t[`granted-token`]);e.success&&n.onGrantIssued?.(e.data)}await e.respond(t)}})}let s=cL({capability:iL,identity:t.identity,clock:t.clock,revocation:t.revocation,granterDevice:t.peerDevice,onGrant(e){let t=e.scope.path,r=n.onRoomInvite;t!==void 0&&r!==void 0&&r({roomPath:t,granterDevice:e.granterDevice,token:e.grantedToken})}});async function c(e){if(e.scope.path===void 0){await e.respond({result:`error`,code:`missing_scope_path`});return}if(n.onRoomInvite===void 0){await e.respond({result:`error`,code:`unsupported_verb`});return}await s(e)}(async()=>{for await(let t of e.incomingManageRequests){if(t.command.verb!==`room:member`)continue;let e=t.command.params;typeof e==`object`&&`verb`in e&&(e.verb===`room.send`?await r(t,e):e.verb===`capability.request`?await o(t):e.verb===`capability.grant`?await c(t):e.verb===`room.rekey`&&n.onRekey!==void 0&&await n.onRekey(t))}})()}var gL=`room-key/`,_L=`room-token/`,vL=`room-key-delivered/`,yL=String(2**53-1).length;function bL(e,t){return`${gL}${e}/${String(t).padStart(yL,`0`)}`}function xL(e){return{get:async(t,n)=>e.get(bL(t,n)),set:async(t,n,r)=>{await e.set(bL(t,n),new Uint8Array(r))},currentEpoch:async t=>{let n=(await e.keys(`${gL}${t}/`)).sort().at(-1);return n===void 0?void 0:Number(n.slice(n.lastIndexOf(`/`)+1))}}}function SL(e,t,n,r){return{get:async i=>{let a=_L+i,o=await e.get(a);if(o===void 0)return;let s=LD.safeParse(b_(o,x_));if(s.success&&(await XA(s.data,{identity:t,clock:n,revocation:r,expectedBearer:t.deviceId})).ok)return s.data;await e.delete(a)},set:async(t,n)=>{await e.set(_L+t,new Uint8Array(Mg(n,hg)))},rooms:async()=>(await e.keys(_L)).map(e=>e.slice(11))}}function CL(e){return{isDelivered:async t=>await e.get(vL+t)!==void 0,markDelivered:async t=>{await e.set(vL+t,new Uint8Array([1]))}}}var wL=32,TL=256,EL=12,DL=4,OL=8,kL=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function AL(){return crypto.getRandomValues(new Uint8Array(wL))}function jL(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(DL);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(OL);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(kL.length+n.length+t.length+r.length),a=0;return i.set(kL,a),a+=kL.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function ML(e,t){let n=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(new Uint8Array),info:Uint8Array.from(jL(t))},n,{name:`AES-GCM`,length:TL},!1,[`encrypt`,`decrypt`])}async function NL(e,t){let n=crypto.getRandomValues(new Uint8Array(EL)),r=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:n},e,Uint8Array.from(t))),i=new Uint8Array(n.length+r.length);return i.set(n,0),i.set(r,n.length),i}async function PL(e,t){if(t.length<EL)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,EL),r=t.slice(EL);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function FL(e,t){return NL(e,t)}async function IL(e,t){return PL(e,t)}async function LL(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function RL(e,t){return NL(await LL(e),t)}async function zL(e,t){return PL(await LL(e),t)}var BL=`+aes256gcm`;function VL(e){return UL(e)?e:`${e}${BL}`}function HL(e){return UL(e)?e.slice(0,e.length-10):e}function UL(e){return e.endsWith(BL)}var WL=`store_failed`;function GL(e,t){return{verb:iL,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function KL(e,t,n,r,i,a){return e.sendManageRequest(GL(n,r),{kind:`room`,path:t},i,a)}function qL(e){return async function(t){if(t.command.verb!==`room:member`){await t.respond({result:`error`,code:`malformed`});return}let n=uD.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}if(t.scope.kind!==`room`||t.scope.path===void 0){await t.respond({result:`error`,code:`scope_mismatch`});return}let r=t.scope.path,i=await aL(e.ownRoomMemberToken,{identity:e.identity,clock:e.clock,revocation:e.revocation,expectedBearer:e.identity.deviceId,roomPath:r,dmRootPolicy:`either-participant`});if(!i.ok){await t.respond({result:`error`,code:i.reason});return}let a=e.identity.deriveSharedSecret;if(a===void 0){await t.respond({result:`error`,code:`ecdh_unsupported`});return}let o=n.data[`key-epoch`],s=Array.isArray(n.data[`wrapped-key`])?n.data[`wrapped-key`]:[n.data[`wrapped-key`]],c=o-s.length+1,l;try{let e=await a(i.rootIssuerKey);l=await Promise.all(s.map(async(t,n)=>IL(await ML(e,{room:r,keyEpoch:c+n}),t)))}catch{await t.respond({result:`error`,code:`unwrap_failed`});return}try{await e.onRekey({room:r,keyEpoch:o,contentKeys:l})}catch(e){throw await t.respond({result:`error`,code:WL}),e}await t.respond({result:`ok`})}}async function JL(e,t){await e.reduce(async(e,n,r)=>{await e,await t(n,r)},Promise.resolve())}function YL(e){return Uint8Array.from(e)}function XL(e){return YL(Mg(e,hg))}function ZL(e){return XL({1:e.identityKey.alg,4:e.deviceId})}function QL(e,t){return Mg([`Signature1`,e,new Uint8Array,t],hg)}function $L(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}async function eR(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=b_(r,x_)}catch{return{ok:!1,reason:`malformed`}}let o=mD.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(t.expectedRoom!==void 0&&s.room!==t.expectedRoom)return{ok:!1,reason:`wrong_room`};if(!await t.identity.verify(s[`poster-key`],QL(n,r),i))return{ok:!1,reason:`bad_signature`};if(!$L(await t.identity.deriveDeviceId(s[`poster-key`][`public-key`]),s.poster))return{ok:!1,reason:`wrong_poster`};let c=s[`valid-until`];if(c!==void 0&&c<=t.clock.now())return{ok:!1,reason:`content_expired`};let l=s[`key-epoch`];if(UL(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await aL(s.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:s.poster,roomPath:s.room,...t.dmRootPolicy===void 0?{}:{dmRootPolicy:t.dmRootPolicy}});return u.ok?{ok:!0,claims:s}:{ok:!1,reason:u.reason}}async function tR(e){let t=XL({room:e.room,poster:e.identity.deviceId,"poster-key":e.identity.identityKey,token:e.token,"notice-id":e.noticeId,"posted-at":e.clock.now(),"content-type":e.contentType,content:e.content,...e.refs===void 0?{}:{refs:[...e.refs]},...e.validUntil===void 0?{}:{"valid-until":e.validUntil},...e.keyEpoch===void 0?{}:{"key-epoch":e.keyEpoch}}),n=ZL(e.identity);return[n,{},t,await e.identity.sign(QL(n,t))]}var nR=16;function rR(e){return new Uint8Array(Mg(e,hg))}function iR(e){let{identity:t,storage:n,clock:r,revocation:i,roomKeys:a}=e;async function o(e){let i=await a.currentEpoch(e.room);if(i===void 0)throw Error(`no content key held for room ${e.room}: room.rekey this room before posting encrypted notices`);let o=await a.get(e.room,i);if(o===void 0)throw Error(`content key store is inconsistent: epoch ${String(i)} is current for room ${e.room} but holds no key`);let s=e.noticeId??crypto.getRandomValues(new Uint8Array(nR)),c=await RL(o,e.plaintext),l=await tR({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:VL(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await PM({identity:t,storage:n},rR(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await NM(n,e);if(!(await LM(n,{type:`data-entries`,peer:e,"from-seq":r,entries:[t]})).ok)throw Error(`gap rejecting entry for peer log (head ${String(r)})`)}async function c(e,t,r){let i=await RM(n,e,0),a=[];return await jO(i,async e=>{a.push(await l(e,t,r))}),a}async function l(e,n,o){let s=u(e);if(s===void 0)return{verified:!1,reason:`malformed`};let c=await eR(s,{identity:t,clock:r,revocation:i,expectedRoom:n,dmRootPolicy:o});if(!c.ok)return{verified:!1,reason:c.reason};let l=c.claims;if(!UL(l[`content-type`]))return{verified:!0,contentType:l[`content-type`],plaintext:l.content,claims:l};let d=l[`key-epoch`];if(d===void 0)return{verified:!1,reason:`key_epoch_mismatch`};let f=await a.get(l.room,d),p={verified:!0,contentType:HL(l[`content-type`]),claims:l};if(f===void 0)return p;try{let e=await zL(f,l.content);return{...p,plaintext:e}}catch{return p}}function u(e){try{let t=b_(e,x_),n=pD.safeParse(t);return n.success?n.data:void 0}catch{return}}return{postEncryptedNotice:o,ingestPeerEntry:s,readOwnNotices:async e=>c(t.deviceId,e,`either-participant`),readPeerNotices:async(e,t)=>c(e,t,`self`)}}var aR=32;function oR(e){let{senders:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=iR({identity:r,storage:n,clock:i,revocation:a,roomKeys:o});async function l(e,t){let r=await NM(n,t);await e.sendDataFrame({type:`data-request`,peer:t,"from-seq":r})}async function u(e){let t=await NM(n,r.deviceId);t!==0&&await e.sendDataFrame({type:`data-have`,peer:r.deviceId,"head-seq":t})}function d(e,t){if(e.type===`data-have`){l(t,e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await LM(n,e)).ok&&(e.entries.length>=aR&&await l(t,e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await IM(n,e,aR);r!==null&&await t.sendDataFrame(r)})().catch(()=>void 0)}return{handleFrame:d,async post(e){let{dataHave:n}=await c.postEncryptedNotice(e);await Promise.allSettled(t().map(async e=>e.sendDataFrame(n))),s()},async readRoom(e,t){let n=await c.readOwnNotices(e),r=await Promise.all(t.map(async t=>c.readPeerNotices(t,e)));return[...n,...r.flat()]},async sync(e,t){await u(e),await Promise.all(t.map(async t=>l(e,t)))},async pull(e){await Promise.allSettled(t().flatMap(t=>e.map(async e=>l(t,e))))},roomKeys:o}}async function sR(e){let{session:t,target:n,identity:r,clock:i,revocation:a,ownRoomMemberToken:o,roomPath:s,roomKeys:c,delivery:l}=e,u=s.split(`+`)[0]??``;if(u===``||dO(r.deviceId)!==u)return;let d=await c.currentEpoch(s);if(d!==void 0&&d!==1||await l.isDelivered(s))return;let f=await aL(o,{identity:r,clock:i,revocation:a,expectedBearer:r.deviceId,roomPath:s,dmRootPolicy:`either-participant`});if(!f.ok)throw Error(`own room token failed verification: ${f.reason}`);let p=r.deriveSharedSecret;if(p===void 0)throw Error(`this identity cannot derive ECDH shared secrets`);let m=d===void 0?AL():await c.get(s,1);if(m===void 0)throw Error(`room ${s} lost its epoch 1 key`);let h=await FL(await ML(await p(f.rootIssuerKey),{room:s,keyEpoch:1}),m);d===void 0&&await c.set(s,1,m);let g=await KL(t,s,1,h,n,o);if(g.result!==`ok`)throw Error(`room.rekey was refused: ${g.code}`);await l.markDelivered(s)}var cR=[`core/management`,`core/room`],lR=16;function uR(){let e=new Uint8Array(lR);return crypto.getRandomValues(e),e}function dR(e){if(e?.direct!==void 0)return{session:e.direct,target:void 0};if(e?.relay!==void 0)return{session:e.relay.hub,target:e.relay.peer};throw Error(`conversation is not connected`)}function fR({identity:e,clock:t,messageStore:n,roomStorage:r,capabilities:i}){let{revocation:a,grants:o}=i,[s,c]=(0,k.useReducer)(ZF,new Map),l=dO(e.deviceId),[u,d]=(0,k.useState)(void 0),f=(0,k.useCallback)(e=>{e.then(void 0,e=>{d(e instanceof Error?e.message:String(e))})},[]),p=(0,k.useRef)(s);(0,k.useEffect)(()=>{p.current=s},[s]);let m=(0,k.useRef)(new Set),h=(0,k.useRef)(new WeakSet),g=(0,k.useMemo)(()=>xL(r),[r]);function _(){return[...p.current.values()].flatMap(e=>e.participants.map(e=>pO(e)))}let v=(0,k.useRef)(()=>void 0),y=(0,k.useMemo)(()=>oR({senders:()=>[...new Set([...[...p.current.values()].flatMap(e=>[...e.direct===void 0?[]:[e.direct],...e.relay===void 0?[]:[e.relay.hub]]),...m.current])],storage:r,identity:e,clock:t,revocation:a,roomKeys:g,onChange:()=>{v.current()}}),[e,t,r,g,a]);function b(e){let t=p.current.get(e)?.participants;t!==void 0&&y.readRoom(e,t.map(e=>pO(e))).then(t=>{c({type:`notices`,roomPath:e,notices:[...t]})})}(0,k.useEffect)(()=>{v.current=()=>{for(let e of p.current.keys())b(e)}});let x=(0,k.useRef)(new Map),S=(0,k.useMemo)(()=>CL(r),[r]),C=(0,k.useMemo)(()=>SL(r,e,t,a),[r,e,t,a]);async function w(e,t){x.current.set(e,t),await C.set(e,t)}async function T(e){let t=x.current.get(e);if(t!==void 0)return t;let n=await C.get(e);return n!==void 0&&x.current.set(e,n),n}(0,k.useEffect)(()=>{let e=new AbortController,t=()=>e.signal.aborted;return(async()=>{await JL([...new Set([...await n.roomPaths(),...await C.rooms()])],async e=>{if(t())return;let r=await n.list(e);if(t())return;let i=QF(e,l);c({type:`restored`,roomPath:e,participants:i,messages:r}),y.readRoom(e,i.map(e=>pO(e))).then(t=>{c({type:`notices`,roomPath:e,notices:[...t]})})})})(),()=>{e.abort()}},[n,C,y,l]);let E=(0,k.useRef)(new Map);async function D(n,r,i){let o=E.current.get(n);if(o!==void 0)return o;let s=sR({session:i.session,target:i.target,identity:e,clock:t,revocation:a,ownRoomMemberToken:r,roomPath:n,roomKeys:g,delivery:S}).finally(()=>{E.current.delete(n)});return E.current.set(n,s),s}function O(r){return{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};f(n.append(r,t)),c({type:`message`,roomPath:r,message:t}),y.pull((p.current.get(r)?.participants??[]).map(e=>pO(e)))},onGrantIssued:e=>{f(o.record(`issued`,e,t.now()))},onJoinRequest:e=>{c({type:`join-request`,roomPath:r,request:{requesterHex:dO(e.requesterDevice),async decide(t){c({type:`join-request-settled`,roomPath:r}),await e.decide(t),(async()=>{let e=await T(r),t=p.current.get(r);e!==void 0&&t!==void 0&&await D(r,e,dR(t))})().catch(()=>void 0)}}})},onRekey:async n=>{let i=await T(r);if(i===void 0){await n.respond({result:`error`,code:`no_token`});return}await qL({identity:e,clock:t,revocation:a,ownRoomMemberToken:i,onRekey:async e=>{await JL(e.contentKeys,async(t,n)=>{await g.set(r,e.keyEpoch-e.contentKeys.length+1+n,t)}),b(r)}})(n)}}}let A=(0,k.useCallback)(async(r,i)=>{let o={},u=await xN(r,e,cR,{clock:t,onFrame:(e,t)=>{o.current?.(t)}}),d=i??await u.peerDeviceId,f=dO(d),p=DN(l,f);if(s.get(p)?.direct!==void 0){await u.close();return}o.current=e=>{y.handleFrame(e,u)},c({type:`direct-opened`,roomPath:p,participants:[f],session:u}),c({type:`restored`,roomPath:p,participants:[f],messages:await n.list(p)}),y.sync(u,[d]).catch(()=>void 0),hL(u,{identity:e,clock:t,revocation:a,peerDevice:d,currentMembers:()=>[e.deviceId,d]},O(p)),(async()=>{for await(let e of u.events)e.state.status===`closed`&&c({type:`direct-closed`,roomPath:p})})()},[e,t,l,s,n,y]),j=(0,k.useCallback)(async n=>oL(o,{identity:e,clock:t,revocation:a,expectedBearer:e.deviceId},iL,{kind:`room`,path:n}),[o,e,t,a]),M=(0,k.useCallback)(async(e,r,i)=>{let a=s.get(e),{session:l,target:u}=dR(a),d=a?.token;if(d===void 0){i(`awaiting-approval`);let n=await mL(l,e,{targetDevice:u,requestToken:await j(e)});i(`sending`),d=n.token,await w(e,d),f(o.record(`held`,d,t.now())),c({type:`token`,roomPath:e,token:d}),await D(e,d,{session:l,target:u}).catch(()=>void 0)}let p=await pL(l,e,r,{token:d,targetDevice:u});if(p.result!==`ok`)throw Error(`send failed: ${p.code}`);let m={direction:`sent`,text:r,messageId:uR(),sentAt:t.now()};return await n.append(e,m),m},[s,t,n,e,g,j]),N=(0,k.useCallback)(async(e,t,n)=>{c({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await M(e,n,r=>{c({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:r}})});c({type:`message`,roomPath:e,message:r}),c({type:`outgoing-removed`,roomPath:e,localId:t})}catch(r){c({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`failed`,error:r instanceof Error?r.message:String(r)}})}},[M]),ee=(0,k.useCallback)(async(e,t)=>N(e,crypto.randomUUID(),t),[N]),P=(0,k.useCallback)(async(e,t)=>{let n=s.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await N(e,t,n.text)},[s,N]),F=(0,k.useCallback)((e,t)=>{c({type:`outgoing-removed`,roomPath:e,localId:t})},[]),I=(0,k.useCallback)(async(e,n)=>{let r=s.get(e),{session:i,target:a}=dR(r),l=r?.token??await T(e);l===void 0&&(l=(await mL(i,e,{targetDevice:a,requestToken:await j(e)})).token,await w(e,l),f(o.record(`held`,l,t.now())),c({type:`token`,roomPath:e,token:l})),await D(e,l,{session:i,target:a}),await y.post({room:e,token:l,contentType:`text/plain`,plaintext:new TextEncoder().encode(n)}),b(e)},[s,e,t,g,y,j]),te=(0,k.useCallback)(e=>{c({type:`read`,roomPath:e})},[]),ne=(0,k.useCallback)((e,t)=>{let r=DN(l,dO(t)),i=[dO(t)];c({type:`relay-opened`,roomPath:r,participants:i,route:{hub:e,peer:t}}),n.list(r).then(e=>{c({type:`restored`,roomPath:r,participants:i,messages:e})}),y.sync(e,[t]).catch(()=>void 0)},[l,n,y]),re=(0,k.useCallback)(n=>{let r=new Map;m.current.add(n),(async()=>{for await(let i of n.incomingManageRequests){let o=i.fromDevice;if(o===void 0)continue;let s=dO(o),c=r.get(s);if(c===void 0){c=EM(),r.set(s,c);let i=DN(l,s);ne(n,o),hL({incomingManageRequests:c.stream},{identity:e,clock:t,revocation:a,peerDevice:o,currentMembers:()=>[e.deviceId,o]},O(i))}c.push(i)}})()},[e,t,l,ne]),ie=(0,k.useCallback)(e=>{m.current.delete(e),c({type:`hub-closed`,hub:e})},[]),L=(0,k.useCallback)((e,t,n)=>{h.current.has(t)||(h.current.add(t),y.sync(e,_()).catch(()=>void 0)),y.handleFrame(n,e)},[y]);return{conversations:[...s.values()],persistenceFailure:u,openRelay:ne,watchHub:re,dropHub:ie,onHubFrame:L,attach:A,send:ee,retry:P,discard:F,postNotice:I,markRead:te}}function pR(e,t){let n=new Map(t.map(e=>[e,EM()]));return(async()=>{for await(let t of e)n.get(t.command.verb)?.push(t)})(),{stream:e=>{let t=n.get(e);if(t===void 0)throw Error(`the demux was not built to carry verb ${e}`);return t.stream}}}var mR=8787,hR=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function gR(e){return hR.test(e)}async function _R(e=mR){try{return await fetch(`http://127.0.0.1:${String(e)}/`,{mode:`no-cors`}),`ws://127.0.0.1:${String(e)}`}catch{return}}async function vR(e=typeof location>`u`?``:location.host){return gR(e)?Promise.resolve(void 0):_R()}var yR=`ws://localhost:8787`,bR=[`core/management`,`core/exec`,`core/data`],xR=[`core/management`,`core/data`],SR=[rP,iL];function CR({identity:e,clock:t,messageStore:n,roomStorage:r,certificateMemory:i,nameStore:a,preferences:o,grants:s,revocations:c,identityBackup:l,discoverLocalNode:u=vR,defaultAddress:d=yR}){let[f,p]=(0,k.useState)(d),[m,h]=(0,k.useState)(xR),[g,_]=(0,k.useState)([]),[v,y]=(0,k.useState)([]),[b,x]=(0,k.useState)([]),[S,C]=(0,k.useState)(void 0),w=GI(o),T=HF(i,t),E=(0,k.useMemo)(()=>({revocation:c.view,grants:s}),[c,s]),D=fR({identity:e,clock:t,messageStore:n,roomStorage:r,capabilities:E}),[O,A]=(0,k.useState)(),j=D.conversations.find(e=>e.roomPath===O)??D.conversations[0],{markRead:M}=D,N=j?.roomPath,ee=j?.unread??0;(0,k.useEffect)(()=>{N!==void 0&&ee>0&&M(N)},[N,ee,M]);let P=(0,k.useRef)(new Map),F=(0,k.useRef)(D.onHubFrame);(0,k.useEffect)(()=>{F.current=D.onHubFrame},[D.onHubFrame]);let I=(0,k.useRef)(D.watchHub);(0,k.useEffect)(()=>{I.current=D.watchHub},[D.watchHub]);let te=(0,k.useRef)(D.attach);(0,k.useEffect)(()=>{te.current=D.attach},[D.attach]);let ne=(0,k.useRef)(g);(0,k.useEffect)(()=>{ne.current=g},[g]);let re=(0,k.useRef)(new Set),ie=(0,k.useRef)(new Map),L=(0,k.useRef)(!1),R=()=>L.current;(0,k.useEffect)(()=>(L.current=!1,()=>{L.current=!0;for(let e of ne.current)e.session.close()}),[]);let ae=(0,k.useRef)(m);(0,k.useEffect)(()=>{ae.current=m},[m]);function oe(n,r){let i=pR(r.incomingManageRequests,SR),a=SP({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(rP)},{identity:e,clock:t,revocation:E.revocation,iceServers:nP,onIncomingConnection:e=>{te.current(e)}});(async()=>{for await(let e of r.revocationAnnouncements)try{await c.ingest(e)}catch(e){C(e instanceof Error?e.message:String(e))}})();let o={sendManageRequest:async(...e)=>r.sendManageRequest(...e),sendDataFrame:async e=>r.sendDataFrame(e),incomingManageRequests:i.stream(iL)};P.current.set(r,o),I.current(o),_(e=>[...e,{address:n,session:r,hub:o,negotiator:a}])}async function se(e,t){let n=jF(e.device);for(let t of e.addresses){let e=ie.current.get(t)??new Set;e.add(n),ie.current.set(t,e)}return new Promise(r=>{y(i=>[...i,{key:n,device:e.device,addresses:e.addresses,via:t,resolve:r}])})}function ce(e,t){y(n=>(n.find(t=>t.key===e)?.resolve(t),n.filter(t=>t.key!==e)))}function le(n){let r={current:null},i={current:null},a=bN(tP(T.memory),e,t,NN,[],e=>{r.current?.considerAdvert(e)},(e,t)=>{let n=i.current===null?void 0:P.current.get(i.current);n!==void 0&&F.current(n,e,t)});return i.current=a,r.current=CN({selfDeviceId:e.deviceId,shouldExpand:async e=>se(e,n),dial:de,onExpanded:(e,t,n)=>{oe(t,n),ue(e)},onExpansionDeclined:ue,onExpansionFailed:ue}),a}function ue(e){let t=jF(e.device);for(let n of e.addresses){let e=ie.current.get(n);e?.delete(t),e?.size===0&&ie.current.delete(n)}}async function de(e){let t=await T.confirmAddress(dF(e));if(t===void 0)throw Error(`the certificate of ${e} was not trusted`);if(R())throw Error(`the console was closed before the dial began`);let n=ie.current.get(e),[r]=n??[],i=le({address:e,claimedDevice:n?.size===1?r:void 0});if(await i.connect(t,ae.current),R())throw await i.close(),Error(`the console was closed while the dial was connecting`);return i}function fe(e){ne.current.some(t=>t.address===e)||re.current.has(e)||(re.current.add(e),T.confirmAddress(dF(e)).then(t=>{if(t===void 0||R())return;let n=le({address:e,claimedDevice:void 0});oe(e,n),n.connect(t,m).catch(()=>{})}).finally(()=>{re.current.delete(e)}))}let pe=(0,k.useRef)(fe);(0,k.useEffect)(()=>{pe.current=fe});let me=(0,k.useRef)(u);(0,k.useEffect)(()=>{me.current=u},[u]);let he=(0,k.useRef)(!1);(0,k.useEffect)(()=>{he.current||(he.current=!0,me.current().then(e=>{e!==void 0&&pe.current(e)}))},[]);function ge(e){e.preventDefault(),fe(f)}async function _e(e){let t=await Promise.allSettled(ne.current.map(async t=>t.session.sendRevocationAnnounce([e])));return{attempted:t.length,reached:t.filter(e=>e.status===`fulfilled`).length}}function ve(e){D.dropHub(e.hub),e.session.close(),_(t=>t.filter(t=>t.session!==e.session))}function ye(t,n){D.openRelay(t.hub,n),A(DN(dO(e.deviceId),dO(n))),t.negotiator.initiate(n).then(async e=>D.attach(e,n)).catch(e=>{x(t=>[...t,{key:crypto.randomUUID(),peer:jF(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,z.jsx)(UF,{store:a,children:(0,z.jsxs)(rm,{className:EF,p:`md`,gap:`lg`,children:[(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsx)(Lm,{order:1,children:`wire-mesh console`}),w.ready&&!w.visible&&(0,z.jsx)(Ed,{size:`xs`,variant:`subtle`,onClick:w.show,children:`How this works`})]}),w.error!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`The first-run intro's setting is unavailable`,children:w.error}),w.visible&&(0,z.jsx)(GF,{onDismiss:w.dismiss}),(0,z.jsx)(WF,{}),(0,z.jsxs)(`form`,{onSubmit:ge,children:[(0,z.jsxs)(pl,{align:`flex-end`,wrap:`wrap`,children:[(0,z.jsx)(Am,{label:`Node`,value:f,onChange:e=>{p(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,z.jsx)(Ed,{type:`submit`,children:`Connect`})]}),(0,z.jsx)(od.Group,{label:`Domains offered`,value:m,onChange:h,children:(0,z.jsx)(pl,{mt:`xs`,children:bR.map(e=>(0,z.jsx)(od,{value:e,label:e},e))})})]}),(0,z.jsx)(VF,{prompts:T.prompts,changes:T.changes,onDismissChange:T.dismissChange}),(0,z.jsx)(RF,{peers:v,onConnect:e=>{ce(e,!0)},onDismiss:e=>{ce(e,!1)}}),g.map(e=>(0,z.jsx)(IF,{address:e.address,session:e.session,clock:t,reconnectPolicy:NN,certificateChanges:T.changes,onClose:()=>{ve(e)},onMessagePeer:t=>{ye(e,t)}},e.address)),b.map(e=>(0,z.jsxs)(eu,{color:`yellow`,title:(0,z.jsxs)(z.Fragment,{children:[`No direct connection to `,(0,z.jsx)(fF,{deviceHex:e.peer})]}),withCloseButton:!0,onClose:()=>{x(t=>t.filter(t=>t.key!==e.key))},children:[e.reason,`. Messages go through the hub instead.`]},e.key)),D.persistenceFailure!==void 0&&(0,z.jsxs)(eu,{color:`red`,title:`Could not save to this console's storage`,children:[D.persistenceFailure,`. The conversation carries on, but what failed to save will be missing after a reload.`]}),S!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`A revocation could not be stored`,children:S}),(0,z.jsx)(UI,{revocations:c,onFailure:C}),(0,z.jsx)(rI,{conversations:D.conversations,onSelect:A}),(0,z.jsx)(HI,{identity:e,clock:t,grants:s,revocations:c,identityBackup:l,announceRevocation:_e}),(0,z.jsx)(KI,{conversations:D.conversations,selected:j?.roomPath,onSelect:A}),j!==void 0&&(0,z.jsx)(rL,{view:j,onSend:async e=>D.send(j.roomPath,e),onPostNotice:async e=>D.postNotice(j.roomPath,e),onRetry:e=>{D.retry(j.roomPath,e)},onDiscard:e=>{D.discard(j.roomPath,e)}},j.roomPath)]})})}var wR=`modulepreload`,TR=function(e){return`/`+e},ER={},DR=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=TR(t,n),t=s(t),t in ER)return;ER[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:wR,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},OR=`false`,kR=`false`,AR=OR===`true`,jR=kR===`true`;function MR(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,c,l,u,d=async(e=!0)=>{await l,AR||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await DR(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[]).then(({Workbox:e})=>new e(`/sw.js`,{scope:`/`,type:`classic`})).catch(e=>{s?.(e)}),!c)return;if(u=()=>{c?.messageSkipWaiting()},!jR){if(AR)c.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),c.addEventListener(`installed`,e=>{e.isUpdate||i?.()});else{let e=!1,t=()=>{e=!0,c?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),r?.()};c.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&i?.():n.isExternal?t():!e&&i?.():n.isUpdate||i?.()}),c.addEventListener(`waiting`,t)}}c.register({immediate:t}).then(e=>{o?o(`/sw.js`,e):a?.(e)}).catch(e=>{s?.(e)})}}return l=f(),d}function NR(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,k.useState)(!1),[u,d]=(0,k.useState)(!1),[f]=(0,k.useState)(()=>MR({immediate:t,onNeedReload:n,onOfflineReady(){d(!0),i?.()},onNeedRefresh(){l(!0),r?.()},onRegistered:a,onRegisteredSW:o,onRegisterError:s}));return{needRefresh:[c,l],offlineReady:[u,d],updateServiceWorker:f}}function PR(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=NR();function a(){t(!1),r(!1)}return!e&&!n?null:(0,z.jsx)(Ef,{onClose:a,closeButtonProps:{"aria-label":`Dismiss`},title:n?`Update available`:`Ready to work offline`,pos:`fixed`,bottom:`1rem`,right:`1rem`,style:{zIndex:1e3},children:(0,z.jsx)(pl,{gap:`xs`,children:n?(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var FR=`ws://localhost:8787`;function IR(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function LR(e,t){return e?FR:IR(t)}var RR=await qm(),zR=await F_(RR),BR={now:()=>Date.now()},VR=yj(await qm()),HR=await wj({storage:await qm(),identity:zR,clock:BR}),UR=kO(RR),WR=Jj(await qm()),GR=await qm(),KR=hO(await qm()),qR=Vj(await qm()),JR=Dj(await qm()),YR=LR(!1,window.location),XR=document.getElementById(`root`);if(XR===null)throw Error(`missing #root element`);(0,Rm.createRoot)(XR).render((0,z.jsx)(k.StrictMode,{children:(0,z.jsxs)(xn,{children:[(0,z.jsx)(CR,{identity:zR,clock:BR,messageStore:WR,roomStorage:GR,certificateMemory:KR,nameStore:qR,preferences:JR,grants:VR,revocations:HR,identityBackup:UR,defaultAddress:YR}),(0,z.jsx)(PR,{})]})}));
78
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function LC(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;LC(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var RC=new Set([`type`,`properties`,`required`,`additionalProperties`]),zC=[`oneOf`,`anyOf`];function BC(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function VC(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!RC.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??BC(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}ov(n,r,e.length===1?e[0]:VC(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=BC(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function HC(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of RC)if(t in e)return;let n=t.filter(e=>zC.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=VC(t);else{let e=n[0],i=zC.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>VC([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,jC(e,r))}function UC(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):jC(i,s),jC(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())LC(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])HC(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}jC(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,ov(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:KC(t,`input`,e.processors),output:KC(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function WC(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return WC(r.element,n);if(r.type===`set`)return WC(r.valueType,n);if(r.type===`lazy`)return WC(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return WC(r.innerType,n);if(r.type===`intersection`)return WC(r.left,n)||WC(r.right,n);if(r.type===`record`||r.type===`map`)return WC(r.keyType,n)||WC(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:WC(r.in,n)||WC(r.out,n);if(r.type===`object`){for(let e in r.shape)if(WC(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(WC(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(WC(e,n))return!0;return!!(r.rest&&WC(r.rest,n))}return!1}var GC=(e,t={})=>n=>{let r=MC({...n,processors:t});return PC(e,r),IC(r,e),UC(r,e)},KC=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=MC({...i??{},target:a,io:t,processors:n});return PC(e,o),IC(o,e),UC(o,e)},qC={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},JC=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=qC[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},YC=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):NC(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},XC=(e,t,n,r)=>{n.type=`boolean`},ZC=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},QC=(e,t,n,r)=>{n.not={}},$C=(e,t,n,r)=>{let i=e._zod.def,a=Z_(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},ew=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(NC(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(NC(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},tw=(e,t,n,r)=>{NC(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},nw=(e,t,n,r)=>{NC(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},rw=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=PC(a.element,t,{...r,path:[...r.path,`items`]})};function iw(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?iw(t.out):t.type===`catch`?iw(t.innerType):e._zod.optin}var aw=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&NC(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)ov(i.properties,e,PC(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?iw(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=PC(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},ow=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>PC(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},sw=(e,t,n,r)=>{let i=e._zod.def,a=PC(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=PC(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},cw=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>PC(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?PC(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?iw(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=e._zod.bag;typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function lw(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=lw(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>lw(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?sb:ob).source),p):p}var uw=new WeakMap;function dw(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of uw.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=lw(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var fw=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=PC(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)ov(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=PC(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=uw.get(t);n||(n=[],uw.set(t,n),t.deferred.push(()=>dw(t))),n.push(e)}i.additionalProperties=PC(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&iw(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},pw=(e,t,n,r)=>{let i=e._zod.def,a=PC(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},mw=(e,t,n,r)=>{let i=e._zod.def;PC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},hw=Symbol();function gw(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(NC(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),hw):JSON.parse(o)}var _w=(e,t,n,r)=>{let i=e._zod.def;PC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=gw(i.defaultValue,e,t,n,r);o!==hw&&(n.default=o)},vw=(e,t,n,r)=>{let i=e._zod.def;PC(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=gw(i.defaultValue,e,t,n,r);o!==hw&&(n._prefault=o)},yw=(e,t,n,r)=>{let i=e._zod.def;PC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{NC(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},bw=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;PC(o,t,r);let s=t.seen.get(e);s.ref=o},xw=(e,t,n,r)=>{let i=e._zod.def;PC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Sw=(e,t,n,r)=>{let i=e._zod.def;PC(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Cw=(e,t,n,r)=>{let i=e._zod.innerType;PC(i,t,r);let a=t.seen.get(e);a.ref=i},ww=new WeakSet([Object.prototype,Error.prototype]);function Tw(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Ew=K(`ZodError`,(e,t)=>{fy.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);ww.has(n)||(ww.add(n),Tw(n,`format`,e=>t=>gy(e,t)),Tw(n,`flatten`,e=>t=>hy(e,t)),Tw(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,$_,2)}),Tw(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,$_,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Dw=vy(Ew),Ow=yy(Ew),kw=by(Ew),Aw=Sy(Ew),jw=wy(Ew),Mw=Ty(Ew),Nw=Ey(Ew),Pw=Dy(Ew),Fw=Oy(Ew),Iw=ky(Ew),Lw=Ay(Ew),Rw=jy(Ew);function zw(){ry.localeError||iy(CS())}function Bw(){ry.memoizer||iy({memoizer:bS()})}var Vw=K(`ZodType`,(e,t)=>(zw(),Mb.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(sv(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return _v(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(uE(e,t))},superRefine(e,t){return this.check(dE(e,t))},overwrite(e){return this.check(xC(e))},optional(){return GT(this)},exactOptional(){return qT(this)},nullable(){return YT(this)},nullish(){return GT(YT(this))},nonoptional(e){return tE(this,e)},array(){return ET(this)},or(e){return AT([this,e])},and(e){return PT(this,e)},transform(e){return aE(this,UT(e))},default(e){return ZT(this,e)},prefault(e){return $T(this,e)},catch(e){return rE(this,e)},pipe(e){return aE(this,e)},readonly(){return sE(this)},describe(e){let t=this.clone();return DS.add(t,{description:e}),t},meta(...e){if(e.length===0)return DS.get(this);let t=this.clone();return DS.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Vv(this,`~standard`,{...Pb(this),jsonSchema:{input:KC(this,`input`),output:KC(this,`output`)}})},set"~standard"(e){Bv(this,`~standard`,e)},parse:function e(t,n){return Dw(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Ow(this,t,n,{callee:e})},safeParse(e,t){return kw(this,e,t)},async safeParseAsync(e,t){return Aw(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Bv(this,`spa`,e)},encode:function e(t,n){return jw(this,t,n,{callee:e})},decode:function e(t,n){return Mw(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Nw(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await Pw(this,t,n,{callee:e})},safeEncode(e,t){return Fw(this,e,t)},safeDecode(e,t){return Iw(this,e,t)},async safeEncodeAsync(e,t){return Lw(this,e,t)},async safeDecodeAsync(e,t){return Rw(this,e,t)},toJSONSchema(e){return GC(this,{})(e)},get description(){return DS.get(this)?.description},get _def(){return this._zod.def}}),Hw=K(`_ZodString`,(e,t)=>{Fb.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>JC(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(hC(...e))},includes(...e){return this.check(vC(...e))},startsWith(...e){return this.check(yC(...e))},endsWith(...e){return this.check(bC(...e))},min(...e){return this.check(pC(...e))},max(...e){return this.check(fC(...e))},length(...e){return this.check(mC(...e))},nonempty(...e){return this.check(pC(1,...e))},lowercase(e){return this.check(gC(e))},uppercase(e){return this.check(_C(e))},trim(){return this.check(CC())},normalize(...e){return this.check(SC(...e))},toLowerCase(){return this.check(wC())},toUpperCase(){return this.check(TC())},slugify(){return this.check(EC())}}),Uw=K(`ZodString`,(e,t)=>{Fb.init(e,t),Hw.init(e,t)},{email(e){return this.check(kS(Yw,e))},url(e){return this.check(FS(Qw,e))},jwt(e){return this.check(XS(pT,e))},emoji(e){return this.check(IS($w,e))},guid(e){return this.check(AS(Xw,e))},uuid(e){return this.check(jS(Zw,e))},uuidv4(e){return this.check(MS(Zw,e))},uuidv6(e){return this.check(NS(Zw,e))},uuidv7(e){return this.check(PS(Zw,e))},nanoid(e){return this.check(LS(eT,e))},cuid(e){return this.check(RS(tT,e))},cuid2(e){return this.check(zS(nT,e))},ulid(e){return this.check(BS(rT,e))},base64(e){return this.check(qS(uT,e))},base64url(e){return this.check(JS(dT,e))},xid(e){return this.check(VS(iT,e))},ksuid(e){return this.check(HS(aT,e))},ipv4(e){return this.check(US(oT,e))},ipv6(e){return this.check(WS(sT,e))},cidrv4(e){return this.check(GS(cT,e))},cidrv6(e){return this.check(KS(lT,e))},e164(e){return this.check(YS(fT,e))},datetime(e){return this.check(ZS(Gw,e))},date(e){return this.check(QS(Kw,e))},time(e){return this.check($S(qw,e))},duration(e){return this.check(eC(Jw,e))}});function q(e){return OS(Uw,e)}var Ww=K(`ZodStringFormat`,(e,t)=>{Ib.init(e,t),Hw.init(e,t)}),Gw=K(`ZodISODateTime`,(e,t)=>{$b.init(e,t),Ww.init(e,t)}),Kw=K(`ZodISODate`,(e,t)=>{ex.init(e,t),Ww.init(e,t)}),qw=K(`ZodISOTime`,(e,t)=>{tx.init(e,t),Ww.init(e,t)}),Jw=K(`ZodISODuration`,(e,t)=>{nx.init(e,t),Ww.init(e,t)}),Yw=K(`ZodEmail`,(e,t)=>{zb.init(e,t),Ww.init(e,t)}),Xw=K(`ZodGUID`,(e,t)=>{Lb.init(e,t),Ww.init(e,t)}),Zw=K(`ZodUUID`,(e,t)=>{Rb.init(e,t),Ww.init(e,t)}),Qw=K(`ZodURL`,(e,t)=>{Gb.init(e,t),Ww.init(e,t)}),$w=K(`ZodEmoji`,(e,t)=>{Kb.init(e,t),Ww.init(e,t)}),eT=K(`ZodNanoID`,(e,t)=>{qb.init(e,t),Ww.init(e,t)}),tT=K(`ZodCUID`,(e,t)=>{Jb.init(e,t),Ww.init(e,t)}),nT=K(`ZodCUID2`,(e,t)=>{Yb.init(e,t),Ww.init(e,t)}),rT=K(`ZodULID`,(e,t)=>{Xb.init(e,t),Ww.init(e,t)}),iT=K(`ZodXID`,(e,t)=>{Zb.init(e,t),Ww.init(e,t)}),aT=K(`ZodKSUID`,(e,t)=>{Qb.init(e,t),Ww.init(e,t)}),oT=K(`ZodIPv4`,(e,t)=>{rx.init(e,t),Ww.init(e,t)}),sT=K(`ZodIPv6`,(e,t)=>{ox.init(e,t),Ww.init(e,t)}),cT=K(`ZodCIDRv4`,(e,t)=>{sx.init(e,t),Ww.init(e,t)}),lT=K(`ZodCIDRv6`,(e,t)=>{lx.init(e,t),Ww.init(e,t)}),uT=K(`ZodBase64`,(e,t)=>{dx.init(e,t),Ww.init(e,t)}),dT=K(`ZodBase64URL`,(e,t)=>{px.init(e,t),Ww.init(e,t)}),fT=K(`ZodE164`,(e,t)=>{mx.init(e,t),Ww.init(e,t)}),pT=K(`ZodJWT`,(e,t)=>{gx.init(e,t),Ww.init(e,t)}),mT=K(`ZodNumber`,(e,t)=>{_x.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>YC(e,t,n,r);let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null},{gt(e,t){return this.check(lC(e,t))},gte(e,t){return this.check(uC(e,t))},min(e,t){return this.check(uC(e,t))},lt(e,t){return this.check(sC(e,t))},lte(e,t){return this.check(cC(e,t))},max(e,t){return this.check(cC(e,t))},int(e){return this.check(gT(e))},safe(e){return this.check(gT(e))},positive(e){return this.check(lC(0,e))},nonnegative(e){return this.check(uC(0,e))},negative(e){return this.check(sC(0,e))},nonpositive(e){return this.check(cC(0,e))},multipleOf(e,t){return this.check(dC(e,t))},step(e,t){return this.check(dC(e,t))},finite(){return this}});function J(e){return tC(mT,e)}var hT=K(`ZodNumberFormat`,(e,t)=>{vx.init(e,t),mT.init(e,t)});function gT(e){return nC(hT,e)}var _T=K(`ZodBoolean`,(e,t)=>{yx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>XC(e,t,n,r)});function vT(e){return rC(_T,e)}var yT=K(`ZodNull`,(e,t)=>{bx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ZC(e,t,n,r)});function bT(e){return iC(yT,e)}var xT=K(`ZodUnknown`,(e,t)=>{xx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function ST(){return aC(xT)}var CT=K(`ZodNever`,(e,t)=>{Sx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>QC(e,t,n,r)});function wT(e){return oC(CT,e)}var TT=K(`ZodArray`,(e,t)=>{Bw(),wx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>rw(e,t,n,r),e.element=t.element},{min(e,t){return this.check(pC(e,t))},nonempty(e){return this.check(pC(1,e))},max(e,t){return this.check(fC(e,t))},length(e,t){return this.check(mC(e,t))},unwrap(){return this.element}});function ET(e,t){return DC(TT,e,t)}var DT=K(`ZodObject`,(e,t)=>{Bw(),jx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>aw(e,t,n,r),Jv(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return BT(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:ST()})},loose(){return this.clone({...this._zod.def,catchall:ST()})},strict(){return this.clone({...this._zod.def,catchall:wT()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return Cv(this,e)},safeExtend(e){return wv(this,e)},merge(e){return Tv(this,e)},pick(e){return xv(this,e)},omit(e){return Sv(this,e)},partial(...e){return Ev(WT,this,e[0])},exactPartial(...e){return Ev(KT,this,e[0],`exactPartial`)},required(...e){return Dv(eE,this,e[0])}});function Y(e,t){return new DT({type:`object`,shape:e??{},...G(t)})}function OT(e,t){return new DT({type:`object`,shape:e,catchall:wT(),...G(t)})}var kT=K(`ZodUnion`,(e,t)=>{Nx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ow(e,t,n,r),e.options=t.options});function AT(e,t){return new kT({type:`union`,options:e,...G(t)})}var jT=K(`ZodDiscriminatedUnion`,(e,t)=>{kT.init(e,t),Px.init(e,t)});function MT(e,t,n){return new jT({type:`union`,options:t,discriminator:e,...G(n)})}var NT=K(`ZodIntersection`,(e,t)=>{Fx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sw(e,t,n,r)});function PT(e,t){return new NT({type:`intersection`,left:e,right:t})}var FT=K(`ZodTuple`,(e,t)=>{Bw(),Rx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cw(e,t,n,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw Error(`.partial() cannot be used on tuple schemas containing refinements`);return this.clone({...e,items:e.items.map(e=>new WT({type:`optional`,innerType:e}))})}});function IT(e,t,n){let r=t instanceof Mb;return new FT({type:`tuple`,items:e,rest:r?t:null,...G(r?n:t)})}var LT=K(`ZodRecord`,(e,t)=>{Bw(),Hx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fw(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function RT(e,t,n){return!t||!t._zod?new LT({type:`record`,keyType:q(),valueType:e,...G(t)}):new LT({type:`record`,keyType:e,valueType:t,...G(n)})}var zT=K(`ZodEnum`,(e,t)=>{Ux.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$C(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new zT({...t,checks:[],...G(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new zT({...t,checks:[],...G(r),entries:i})}});function BT(e,t){return new zT({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...G(t)})}var VT=K(`ZodLiteral`,(e,t)=>{Wx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ew(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function X(e,t){return new VT({type:`literal`,values:Array.isArray(e)?e:[e],...G(t)})}var HT=K(`ZodTransform`,(e,t)=>{Bw(),Gx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>nw(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new ny(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Rv(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(Rv(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function UT(e){return new HT({type:`transform`,transform:e})}var WT=K(`ZodOptional`,(e,t)=>{qx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function GT(e){return new WT({type:`optional`,innerType:e})}var KT=K(`ZodExactOptional`,(e,t)=>{Jx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function qT(e){return new KT({type:`optional`,innerType:e})}var JT=K(`ZodNullable`,(e,t)=>{Yx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function YT(e){return new JT({type:`nullable`,innerType:e})}var XT=K(`ZodDefault`,(e,t)=>{Xx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_w(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ZT(e,t){return new XT({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():mv(t)}})}var QT=K(`ZodPrefault`,(e,t)=>{Qx.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function $T(e,t){return new QT({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():mv(t)}})}var eE=K(`ZodNonOptional`,(e,t)=>{$x.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function tE(e,t){return new eE({type:`nonoptional`,innerType:e,...G(t)})}var nE=K(`ZodCatch`,(e,t)=>{nS.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function rE(e,t){return new nE({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Xv(t)})}var iE=K(`ZodPipe`,(e,t)=>{rS.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bw(e,t,n,r),e.in=t.in,e.out=t.out});function aE(e,t){return new iE({type:`pipe`,in:e,out:t})}var oE=K(`ZodReadonly`,(e,t)=>{aS.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xw(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function sE(e){return new oE({type:`readonly`,innerType:e})}var cE=K(`ZodLazy`,(e,t)=>{sS.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Cw(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function Z(e){return new cE({type:`lazy`,getter:e})}var lE=K(`ZodCustom`,(e,t)=>{cS.init(e,t),Vw.init(e,t),e._zod.processJSONSchema=(t,n,r)=>tw(e,t,n,r)});function uE(e,t={}){return OC(lE,e,t)}function dE(e,t){return kC(e,t)}function fE(e,t={}){let n=new lE({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...G(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var pE=Z(()=>fE(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),mE=Z(()=>Y({verb:X(`bulk.open`),"transfer-id":Z(()=>pE),"total-size":J().int().nonnegative().optional(),"content-type":q().optional()}).catchall(ST())),hE=Z(()=>Y({verb:X(`bulk.resume`),"transfer-id":Z(()=>pE),"ack-seq":J().int().nonnegative()}).catchall(ST())),gE=Z(()=>Y({verb:X(`bulk.cancel`),"transfer-id":Z(()=>pE),reason:q().optional()}).catchall(ST())),_E=Z(()=>AT([AT([Z(()=>mE),Z(()=>hE),Z(()=>gE)]),AT([Z(()=>wE),Z(()=>TE),Z(()=>EE),Z(()=>DE),Z(()=>OE),Z(()=>kE),Z(()=>AE),Z(()=>jE)]),Y({}).catchall(ST()),Z(()=>qE),Z(()=>YE),Z(()=>$E),Z(()=>eD),AT([Z(()=>iD),Z(()=>aD),Z(()=>oD),Z(()=>sD)]),AT([Z(()=>lD),Z(()=>uD)]),Z(()=>dD),AT([Z(()=>TD),Z(()=>ED),Z(()=>DD)]),AT([Z(()=>OD),Z(()=>kD),Z(()=>AD)]),Z(()=>tO),AT([Z(()=>iO),Z(()=>aO),Z(()=>oO),Z(()=>nO)])])),vE=Z(()=>Y({type:X(`bulk-data`),"transfer-id":Z(()=>pE),seq:J().int().nonnegative(),bytes:fE(Uint8Array)})),yE=Z(()=>Y({type:X(`bulk-ack`),"transfer-id":Z(()=>pE),"ack-seq":J().int().nonnegative(),window:J().int().nonnegative()})),bE=Z(()=>Y({type:X(`bulk-end`),"transfer-id":Z(()=>pE),digest:fE(Uint8Array)})),xE=Z(()=>Y({type:X(`data-have`),peer:Z(()=>VE),"head-seq":J().int().nonnegative()})),SE=Z(()=>Y({type:X(`data-request`),peer:Z(()=>VE),"from-seq":J().int().nonnegative()})),CE=Z(()=>Y({type:X(`data-entries`),peer:Z(()=>VE),"from-seq":J().int().nonnegative(),entries:ET(fE(Uint8Array))}));Z(()=>Y({handle:q(),"device-id":Z(()=>VE),"identity-key":Z(()=>BE),candidates:ET(Z(()=>KD)).optional(),mailboxes:ET(Z(()=>VE)).optional(),issued:J().int().nonnegative(),expires:J().int().nonnegative()})),Z(()=>Z(()=>LD));var wE=Z(()=>Y({verb:X(`pty.spawn`),shell:q().optional(),argv:ET(q()),cwd:q().optional(),env:Y({}).catchall(q()),cols:J().int().nonnegative(),rows:J().int().nonnegative()})),TE=Z(()=>Y({verb:X(`pty.write`),session:Z(()=>vD),bytes:fE(Uint8Array)})),EE=Z(()=>Y({verb:X(`pty.resize`),session:Z(()=>vD),cols:J().int().nonnegative(),rows:J().int().nonnegative()})),DE=Z(()=>Y({verb:X(`pty.kill`),session:Z(()=>vD),signal:J().int()})),OE=Z(()=>Y({verb:X(`proc.spawn`),argv:ET(q()),cwd:q().optional(),env:Y({}).catchall(q())})),kE=Z(()=>Y({verb:X(`proc.signal`),session:Z(()=>vD),signal:J().int()})),AE=Z(()=>Y({verb:X(`proc.kill`),session:Z(()=>vD)})),jE=Z(()=>Y({verb:X(`exec.list`)}));Z(()=>Y({session:Z(()=>vD),kind:AT([X(`pty`),X(`proc`)]),argv:ET(q()).optional(),cwd:q().optional()}));var ME=Z(()=>AT([Z(()=>zE),Z(()=>BD),Z(()=>VD),Z(()=>HD),Z(()=>WD),Z(()=>qD),Z(()=>JD),Z(()=>YD),Z(()=>XD),Z(()=>ZD),Z(()=>QD),Z(()=>$D),Z(()=>eO),Z(()=>UE),Z(()=>KE),Z(()=>QE),Z(()=>yD),Z(()=>bD),Z(()=>xD),Z(()=>xE),Z(()=>SE),Z(()=>CE),Z(()=>vE),Z(()=>yE),Z(()=>bE),Z(()=>gD),Z(()=>_D)])),NE=Z(()=>Z(()=>ME)),PE=Z(()=>J().int().nonnegative()),FE=Z(()=>AT([Z(()=>IE),Z(()=>LE),Z(()=>RE)])),IE=Z(()=>AT([X(`core/management`),X(`core/exec`),X(`core/data`),X(`core/federation`),X(`core/webrtc`),X(`core/room`),X(`core/bulk`),X(`core/version`)])),LE=Z(()=>q().regex(RegExp(`[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+/[A-Za-z0-9_.-]+`))),RE=Z(()=>q().regex(RegExp(`x-[A-Za-z0-9_.-]+`))),zE=Z(()=>Y({type:X(`handshake`),version:Z(()=>PE),domains:ET(Z(()=>FE)),params:Y({}).catchall(ST()).optional()})),BE=Z(()=>Y({alg:J().int(),"public-key":fE(Uint8Array)})),VE=Z(()=>fE(Uint8Array).refine(e=>e.length===32,{message:`expected exactly 32 bytes`}));Z(()=>Y({"device-id":Z(()=>VE),"identity-key":Z(()=>BE),certificate:fE(Uint8Array).optional()}));var HE=Z(()=>Y({verb:Z(()=>jD),params:Z(()=>_E)})),UE=Z(()=>Y({type:X(`manage-request`),"request-id":J().int().nonnegative(),command:Z(()=>HE),scope:Z(()=>FD),token:Z(()=>RD).optional()})),WE=Z(()=>Y({result:X(`ok`)}).catchall(ST())),GE=Z(()=>Y({result:X(`error`),code:q(),message:q().optional()})),KE=Z(()=>Y({type:X(`manage-response`),"request-id":J().int().nonnegative(),outcome:AT([Z(()=>WE),Z(()=>GE)])})),qE=Z(()=>Y({verb:X(`capability.request`),capability:q(),"valid-until":J().int().nonnegative().optional()}).catchall(ST())),JE=Z(()=>Y({result:X(`ok`),"granted-token":Z(()=>RD)}).catchall(ST())),YE=Z(()=>Y({verb:X(`capability.grant`),"granted-token":Z(()=>RD)}).catchall(ST())),XE=Z(()=>Y({"token-id":fE(Uint8Array),issuer:Z(()=>VE),"issuer-key":Z(()=>BE),"revoked-at":J().int().nonnegative(),authorization:fE(Uint8Array).optional()})),ZE=Z(()=>Z(()=>LD)),QE=Z(()=>Y({type:X(`revocation-announce`),entries:ET(Z(()=>ZE))})),$E=Z(()=>Y({verb:X(`path.trace`)}));Z(()=>Y({result:X(`ok`),relayed:vT(),"hub-address":q().optional()}).catchall(ST())),Z(()=>Y({direct:ET(Z(()=>VE)),relayed:ET(Y({device:Z(()=>VE),via:Z(()=>VE).optional()}))}));var eD=Z(()=>Y({verb:X(`topology.get`)})),tD=Z(()=>AT([Z(()=>nD),Z(()=>rD)]));Z(()=>q().regex(RegExp(`[0-9a-f]{64}`)));var nD=Z(()=>q().regex(RegExp(`[0-9a-f]{64}/[A-Za-z0-9_-]+`))),rD=Z(()=>q().regex(RegExp(`[0-9a-f]{64}\\+[0-9a-f]{64}`))),iD=Z(()=>Y({verb:X(`room.send`),"message-id":fE(Uint8Array),"sent-at":J().int().nonnegative(),text:q(),"content-type":q().optional(),refs:ET(Z(()=>cD)).optional()}).catchall(ST())),aD=Z(()=>Y({verb:X(`room.read`),messages:ET(fE(Uint8Array)),at:J().int().nonnegative()}).catchall(ST())),oD=Z(()=>Y({verb:X(`room.leave`)}).catchall(ST())),sD=Z(()=>Y({verb:X(`room.members`)}).catchall(ST())),cD=Z(()=>Y({id:fE(Uint8Array),relation:q()})),lD=Z(()=>Y({verb:X(`room.join`)}).catchall(ST())),uD=Z(()=>Y({verb:X(`room.invite`),invitee:Z(()=>VE),token:Z(()=>RD)}).catchall(ST())),dD=Z(()=>Y({verb:X(`room.rekey`),"key-epoch":J().int().nonnegative(),"wrapped-key":AT([fE(Uint8Array),ET(fE(Uint8Array))])}).catchall(ST())),fD=Z(()=>Y({device:Z(()=>VE)}).catchall(ST())),pD=Z(()=>Y({result:X(`ok`),"granted-token":Z(()=>RD),members:ET(Z(()=>fD))}).catchall(ST()));Z(()=>Y({result:X(`ok`),members:ET(Z(()=>fD))}).catchall(ST()));var mD=Z(()=>Z(()=>LD)),hD=Z(()=>Y({room:Z(()=>tD),poster:Z(()=>VE),"poster-key":Z(()=>BE),token:Z(()=>RD),"notice-id":fE(Uint8Array),"posted-at":J().int().nonnegative(),"content-type":q(),content:fE(Uint8Array),refs:ET(Z(()=>cD)).optional(),"valid-until":J().int().nonnegative().optional(),"key-epoch":J().int().nonnegative().optional()}).catchall(ST())),gD=Z(()=>Y({type:X(`secure-hello`),"ephemeral-key":fE(Uint8Array).refine(e=>e.length===65,{message:`expected exactly 65 bytes`}),nonce:fE(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`}),"identity-key":Z(()=>BE),"to-device":Z(()=>VE),signature:fE(Uint8Array)})),_D=Z(()=>Y({type:X(`secure-data`),counter:J().int().nonnegative(),ciphertext:fE(Uint8Array)})),vD=Z(()=>J().int().nonnegative()),yD=Z(()=>Y({type:X(`stream-data`),session:Z(()=>vD),seq:J().int().nonnegative(),channel:q(),bytes:fE(Uint8Array)})),bD=Z(()=>Y({type:X(`stream-ack`),session:Z(()=>vD),"ack-seq":J().int().nonnegative(),window:J().int().nonnegative()})),xD=Z(()=>Y({type:X(`stream-end`),session:Z(()=>vD),"exit-code":J().int().optional(),"exit-signal":J().int().optional()})),SD=Z(()=>J().int().nonnegative()),CD=Z(()=>Y({kind:AT([X(`capability-token`),X(`revocation-entry`),X(`handle-record`),X(`room-notice`),q()]),protected:fE(Uint8Array),payload:fE(Uint8Array)})),wD=Z(()=>Y({participant:Z(()=>VE),hiding:fE(Uint8Array),binding:fE(Uint8Array)})),TD=Z(()=>Y({verb:X(`threshold.commit`),"session-id":Z(()=>SD),group:Z(()=>VE),subject:Z(()=>CD),deadline:J().int().nonnegative()})),ED=Z(()=>Y({verb:X(`threshold.sign`),"session-id":Z(()=>SD),commitments:ET(Z(()=>wD))}));Z(()=>Y({"session-id":Z(()=>SD),group:Z(()=>VE),share:fE(Uint8Array),issuer:Z(()=>VE),"issuer-key":Z(()=>BE)})),Z(()=>Z(()=>LD));var DD=Z(()=>Y({verb:X(`threshold.abort`),"session-id":Z(()=>SD),reason:q().optional()})),OD=Z(()=>Y({verb:X(`threshold.keygen-round1`),"session-id":Z(()=>SD),threshold:J().int().nonnegative(),participants:ET(Z(()=>VE)),commitment:ET(fE(Uint8Array)),"proof-of-knowledge":fE(Uint8Array).optional(),"existing-group-key":fE(Uint8Array).optional()})),kD=Z(()=>Y({verb:X(`threshold.keygen-round2`),"session-id":Z(()=>SD),share:fE(Uint8Array)})),AD=Z(()=>Y({verb:X(`threshold.keygen-confirm`),"session-id":Z(()=>SD),"transcript-digest":fE(Uint8Array),"group-key":fE(Uint8Array)})),jD=Z(()=>AT([Z(()=>MD),Z(()=>ND),Z(()=>PD)])),MD=Z(()=>q().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),ND=Z(()=>q().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),PD=Z(()=>q().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),FD=Z(()=>Y({kind:q(),path:q().optional()}));Z(()=>X(1)),Z(()=>X(4)),Z(()=>AT([J().int(),q()]));var ID=Z(()=>Y({1:J().int().optional(),4:fE(Uint8Array).optional()}).catchall(ST())),LD=Z(()=>IT([fE(Uint8Array),Z(()=>ID),AT([fE(Uint8Array),bT()]),fE(Uint8Array)])),RD=Z(()=>Z(()=>LD)),zD=Z(()=>Y({"token-id":fE(Uint8Array),issuer:Z(()=>VE),"issuer-key":Z(()=>BE),bearer:Z(()=>VE),capability:Z(()=>jD),scope:Z(()=>FD),expires:J().int().nonnegative(),"not-before":J().int().nonnegative().optional(),parent:fE(Uint8Array).optional(),"authorised-by":fE(Uint8Array).optional(),"delegations-remaining":J().int().nonnegative().optional(),"valid-until":J().int().nonnegative().optional(),conditions:fE(Uint8Array).optional(),"grants-capability":Z(()=>jD).optional(),"requests-capability":Z(()=>jD).optional()}).catchall(ST())),BD=Z(()=>Y({type:X(`ping`)})),VD=Z(()=>Y({type:X(`pong`)})),HD=Z(()=>Y({type:X(`close`),reason:q().optional()})),UD=Z(()=>Y({device:Z(()=>VE),addresses:ET(q()),"snapshot-seconds":J().int(),"identity-key":Z(()=>BE),signature:fE(Uint8Array)}).catchall(ST())),WD=Z(()=>Y({type:X(`gossip`),peers:ET(Z(()=>UD))})),GD=Z(()=>AT([X(`host`),X(`server-reflexive`),X(`relayed`)])),KD=Z(()=>Y({address:q(),kind:Z(()=>GD),priority:J().int().nonnegative()})),qD=Z(()=>Y({type:X(`candidates`),candidates:ET(Z(()=>KD))})),JD=Z(()=>Y({type:X(`sync-punch`),nonce:J().int().nonnegative(),"deadline-unix-ms":J().int().nonnegative()})),YD=Z(()=>Y({type:X(`observed-address`),address:q()})),XD=Z(()=>Y({type:X(`relay-offer`),addresses:ET(q())})),ZD=Z(()=>Y({type:X(`relay-connect`),"target-device":Z(()=>VE),"source-device":Z(()=>VE).optional()})),QD=Z(()=>Y({type:X(`relay-data`),payload:fE(Uint8Array),"to-device":Z(()=>VE).optional(),"from-device":Z(()=>VE).optional()})),$D=Z(()=>Y({type:X(`relay-inbound`),"source-device":Z(()=>VE),"target-device":Z(()=>VE).optional()})),eO=Z(()=>Y({type:X(`coordinator`),term:J().int().nonnegative(),coordinator:Z(()=>VE),"capacity-hint":J().int().nonnegative().optional()})),tO=Z(()=>Y({verb:X(`version.get`)})),nO=Z(()=>Y({verb:X(`webrtc.sfu-track-map`),"negotiation-id":J().int().nonnegative(),tracks:ET(Z(()=>rO))})),rO=Z(()=>Y({mid:q(),member:Z(()=>VE),kind:AT([X(`audio`),X(`video`)])})),iO=Z(()=>Y({verb:X(`webrtc.offer`),"negotiation-id":J().int().nonnegative(),sdp:q()})),aO=Z(()=>Y({verb:X(`webrtc.answer`),"negotiation-id":J().int().nonnegative(),sdp:q()})),oO=Z(()=>Y({verb:X(`webrtc.ice-candidate`),"negotiation-id":J().int().nonnegative(),candidate:Z(()=>sO).optional()})),sO=Z(()=>Y({candidate:q(),"sdp-mid":q().optional(),"sdp-m-line-index":J().int().nonnegative().optional(),"username-fragment":q().optional()})),cO=16,lO=2,uO=64;function dO(e){let t=``;for(let n of e)t+=n.toString(cO).padStart(lO,`0`);return t}function fO(e){return dO(e)}function pO(e){if(!/^([0-9a-f]{2})*$/.test(e))throw Error(`expected an even-length, lowercase hex string, got ${JSON.stringify(e)}`);let t=new Uint8Array(e.length/lO);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*lO,(n+1)*lO),cO);return t}function mO(e){if(e.length!==uO)throw Error(`expected a 64-character lowercase hex string, got ${JSON.stringify(e)}`);return VE.parse(pO(e))}var hO=`pinned-certificates/`;function gO(e){return{recall:async t=>{let n=await e.get(hO+t);return n===void 0?[]:q_(n)},remember:async(t,n)=>{let r=K_(n.map(e=>dO(e)));await e.set(hO+t,new Uint8Array(r))}}}var _O=`wire-mesh-console-identity`,vO=`ES256`,yO=16,bO=2,xO=4;function SO(e){let t=new Uint8Array(e.length/bO);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*bO,(n+1)*bO),yO);return t}function CO(e){try{let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`));return Uint8Array.from(t,e=>e.charCodeAt(0))}catch{throw Error(`the backup's key is not valid base64url`)}}function wO(e){let{kty:t,crv:n,x:r,y:i,d:a}=e;if(t!==`EC`||n!==`P-256`||typeof r!=`string`||typeof i!=`string`||typeof a!=`string`)throw Error(`the backup does not hold a P-256 private key`);return{kty:t,crv:n,x:r,y:i,d:a}}function TO(e){return Uint8Array.from([xO,...CO(e.x),...CO(e.y)])}function EO(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var DO=new TextEncoder().encode(`wire-mesh console identity backup key-pair check`);async function OO(e,t){let n;try{n=await F_({privateJwk:e,publicKeyRaw:t})}catch(e){throw Error(`the backup's private key cannot be loaded: ${e instanceof Error?e.message:String(e)}`,{cause:e})}let r=await n.sign(DO);if(!await n.verify(n.identityKey,DO,r))throw Error(`the private key does not belong to the backup's public key`)}async function kO(e){let t;try{t=JSON.parse(e)}catch{throw Error(`the file is not JSON`)}if(!EO(t)||t.format!==`wire-mesh-console-identity`||t.version!==1||t.alg!==vO||typeof t.deviceId!=`string`||typeof t.publicKey!=`string`||!EO(t.privateJwk))throw Error(`the file is not a wire-mesh console identity backup`);let n=wO(t.privateJwk),r=TO(n);if(dO(r)!==t.publicKey)throw Error(`the private key does not match the backup's public key`);if(fO(await j_(r))!==t.deviceId)throw Error(`the backup's device-id does not match its public key`);return await OO(n,r),{format:_O,version:1,alg:vO,deviceId:t.deviceId,publicKey:t.publicKey,privateJwk:n}}function AO(e){return{async export(){let t=await e.get(D_);if(t===void 0)throw Error(`no identity is stored on this device`);let n=b_(t,x_);if(!N_(n))throw Error(`stored identity envelope is malformed`);return{format:_O,version:1,alg:vO,deviceId:fO(await j_(n.publicKeyRaw)),publicKey:dO(n.publicKeyRaw),privateJwk:n.privateJwk}},async restore(t){await e.set(D_,new Uint8Array(Mg({privateJwk:t.privateJwk,publicKeyRaw:SO(t.publicKey)},hg)))}}}async function jO(e,t){let[n,...r]=e;if(n!==void 0)return await t(n)?n:jO(r,t)}async function MO(e,t){await e.reduce(async(e,n,r)=>{await e,await t(n,r)},Promise.resolve())}function NO(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function PO(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function FO(e,t){return PO(e)||PO(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function IO(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&FO(t.path,e.path):!1}var LO=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),RO=RT(q(),J()),zO=BT([`ms`,`s`,`min`,`h`,`d`]);MT(`kind`,[Y({kind:X(`number`),value:J(),unit:RO.optional()}),Y({kind:X(`text`),value:q()}),Y({kind:X(`boolean`),value:vT()}),Y({kind:X(`instant`),value:q()}),Y({kind:X(`duration`),value:J(),unit:zO}),Y({kind:X(`complex`),re:J(),im:J(),unit:RO.optional()})]);function BO(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function VO(e,t){let n=BO(e),r=BO(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function HO(e,t){let n=BO(e),r=BO(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return BO(i)}function UO(e,t){let n=BO(e),r=BO(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return BO(i)}Y({code:BT([`not-found`,`wrong-type`,`domain-error`]),message:q()});function Q(e){return{status:`definite`,value:e}}function $(e,t){return{status:`indeterminate`,reason:{code:e,message:t}}}function WO(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var GO=Z(()=>AT([q(),J(),vT(),bT(),ET(GO),RT(q(),GO)])),KO=BT([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),qO=BT([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),JO=BT([`in`,`notIn`]),YO=BT([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),XO=BT([`first`,`unique`]),ZO=Y({kind:X(`not`),get operand(){return lk}}),QO=Y({kind:X(`and`),get left(){return lk},get right(){return lk}}),$O=Y({kind:X(`or`),get left(){return lk},get right(){return lk}}),ek=Y({kind:X(`allOf`),get operands(){return ET(lk)}}),tk=Y({kind:X(`anyOf`),get operands(){return ET(lk)}}),nk=Y({kind:X(`compare`),op:KO,get left(){return wk},get right(){return wk}}),rk=Y({kind:X(`textCompare`),op:qO,get left(){return wk},get right(){return wk}}),ik=Y({kind:X(`memberOf`),op:JO,get operand(){return wk},get candidates(){return ET(wk)}}),ak=Y({kind:X(`exists`),get operand(){return wk}}),ok=Y({kind:X(`some`),collection:GO,get item(){return lk},get filter(){return lk.optional()}}),sk=Y({kind:X(`every`),collection:GO,get item(){return lk},get filter(){return lk.optional()}}),ck=Y({kind:X(`treeReference`),key:GO}),lk=MT(`kind`,[ZO,QO,$O,ek,tk,nk,rk,ik,ak,ok,sk,ck]),uk=Y({kind:X(`numberLiteral`),value:J(),unit:RO.optional()}),dk=Y({kind:X(`textLiteral`),value:q()}),fk=Y({kind:X(`booleanLiteral`),value:vT()}),pk=Y({kind:X(`instantLiteral`),value:q()}),mk=Y({kind:X(`durationLiteral`),value:J(),unit:zO}),hk=AT([OT({kind:X(`complexLiteral`),re:J(),im:J(),unit:RO.optional()}),OT({kind:X(`complexLiteral`),magnitude:J(),phase:J(),unit:RO.optional()})]),gk=Y({kind:X(`reference`),key:GO,unit:RO.optional()}),_k=Y({kind:X(`arithmetic`),op:YO,get left(){return wk},get right(){return wk}}),vk=Y({kind:X(`negate`),get operand(){return wk}}),yk=Y({kind:X(`call`),fn:q(),get args(){return ET(wk)}}),bk=Y({kind:X(`lookup`),table:GO,get keys(){return ET(wk)}}),xk=Y({get when(){return lk},get then(){return wk}}),Sk=Y({kind:X(`conditional`),hitPolicy:XO.optional(),get cases(){return ET(xk)},get fallback(){return wk}}),Ck=MT(`mode`,[Y({mode:X(`max`),get item(){return wk}}),Y({mode:X(`min`),get item(){return wk}}),Y({mode:X(`reduce`),get initial(){return wk},get combine(){return wk}})]),wk=AT([MT(`kind`,[uk,dk,fk,pk,mk,gk,_k,vk,yk,bk,Sk,Y({kind:X(`fold`),collection:GO,get filter(){return lk.optional()},combiner:Ck}),Y({kind:X(`accumulator`)}),Y({kind:X(`delegate`),system:q(),payload:GO}),ck]),hk]),Tk={},Ek=1e4;function Dk(e,t){let n=0;return{checkNode(r){if(n+=1,n>e)return $(`domain-error`,`evaluation exceeded the maximum of ${e.toString()} nodes visited in a single call (resource exhausted)`);if(r>=t)return $(`domain-error`,`evaluation nesting depth exceeds the maximum of ${t.toString()} (resource exhausted)`)}}}async function Ok(e,t,n,r,i,a,o,s,c,l){let u=await i.resolveCollection(t,r);return Promise.all(u.map(async t=>{if(n===void 0)return{item:t,filterOutcome:`include`};let r=await e(n,t,i,void 0,a,o,s,c,l+1);return r.status===`indeterminate`?{item:t,filterOutcome:r}:{item:t,filterOutcome:r.value?`include`:`exclude`}}))}function kk(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function Ak(e,t){return t>=e.from&&t<=e.to}function jk(e,t){let n=e.ranges.some(e=>Ak(e,t));return e.negated?!n:n}var Mk=class extends Error{pattern;index;constructor(e,t,n){super(`invalid pattern at index ${String(t)}: ${n}\n ${e}\n ${` `.repeat(t)}^`),this.name=`RegexParseError`,this.pattern=e,this.index=t}};function Nk(e){return e.charCodeAt(0)}function Pk(e,t){return{from:Nk(e),to:Nk(t)}}function Fk(e){let t=Nk(e);return{from:t,to:t}}var Ik=[Pk(`0`,`9`)],Lk=[Pk(`A`,`Z`),Pk(`a`,`z`),Pk(`0`,`9`),Fk(`_`)],Rk=[Fk(` `),Fk(` `),Fk(`
79
+ `),Fk(`\r`),Fk(`\f`),Fk(`\v`)];function zk(e){switch(e){case`d`:return{kind:`charClass`,negated:!1,ranges:Ik};case`D`:return{kind:`charClass`,negated:!0,ranges:Ik};case`w`:return{kind:`charClass`,negated:!1,ranges:Lk};case`W`:return{kind:`charClass`,negated:!0,ranges:Lk};case`s`:return{kind:`charClass`,negated:!1,ranges:Rk};case`S`:return{kind:`charClass`,negated:!0,ranges:Rk};default:throw Error(`unreachable shorthand class letter`)}}var Bk=new Set([`|`,`)`]),Vk={".":`.`,"*":`*`,"+":`+`,"?":`?`,"(":`(`,")":`)`,"[":`[`,"]":`]`,"{":`{`,"}":`}`,"|":`|`,"^":`^`,$:`$`,"\\":`\\`,"/":`/`,n:`
80
+ `,t:` `,r:`\r`,f:`\f`,v:`\v`},Hk=class{pattern;pos=0;constructor(e){this.pattern=e}get position(){return this.pos}atEnd(){return this.pos>=this.pattern.length}peek(e=0){return this.pattern[this.pos+e]}advance(){let e=this.pattern[this.pos];if(e===void 0)throw new Mk(this.pattern,this.pos,`unexpected end of pattern`);return this.pos+=1,e}parseAlternation(){let e=this.parseSequence(),t=[];for(;this.peek()===`|`;)this.advance(),t.push(this.parseSequence());return t.length===0?e:{kind:`alternation`,branches:[e,...t]}}parseSequence(){if(this.atEnd()||Bk.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!Bk.has(this.peek()??``);)t.push(this.parseQuantified());return t.length===0?e:{kind:`concat`,operands:[e,...t]}}parseQuantified(){let e=this.pos,t=this.parseAtom();if(t.kind===`anchorStart`||t.kind===`anchorEnd`){if(this.peekIsQuantifierStart())throw new Mk(this.pattern,e,`an anchor ('${t.kind===`anchorStart`?`^`:`$`}') cannot be quantified`);return t}let n=this.tryParseQuantifier();if(n===void 0)return t;if(this.peekIsQuantifierStart())throw new Mk(this.pattern,this.pos,`a quantifier cannot itself be quantified -- this grammar has no lazy or possessive modifiers, since a pattern that only ever answers a yes/no match question has no notion for either to change`);switch(n.kind){case`star`:return{kind:`star`,operand:t};case`plus`:return{kind:`plus`,operand:t};case`optional`:return{kind:`optional`,operand:t};case`repeat`:return{kind:`repeat`,operand:t,min:n.min,max:n.max};default:throw Error(`unreachable quantifier kind`)}}peekIsQuantifierStart(){let e=this.peek();if(e===`*`||e===`+`||e===`?`)return!0;if(e===`{`){let e=this.pos,t=this.tryParseBound();return this.pos=e,t!==void 0}return!1}tryParseQuantifier(){let e=this.peek();if(e===`*`)return this.advance(),{kind:`star`};if(e===`+`)return this.advance(),{kind:`plus`};if(e===`?`)return this.advance(),{kind:`optional`};if(e===`{`){let e=this.tryParseBound();return e===void 0?void 0:{kind:`repeat`,min:e.min,max:e.max}}}tryParseBound(){let e=this.pos;this.pos+=1;let t=this.readDigits();if(t===``){this.pos=e;return}let n,r=!1;if(this.peek()===`,`&&(r=!0,this.pos+=1,n=this.readDigits()),this.peek()!==`}`){this.pos=e;return}this.pos+=1;let i=Number.parseInt(t,10),a=r?n===``?void 0:Number.parseInt(n??``,10):i;if(a!==void 0&&a<i)throw new Mk(this.pattern,e,`quantifier range is backwards: {${t}${r?`,`+(n??``):``}} would require between ${String(i)} and ${String(a)} repetitions`);return{min:i,max:a}}readDigits(){let e=``;for(;;){let t=this.peek();if(t===void 0||t<`0`||t>`9`)break;e+=t,this.pos+=1}return e}parseAtom(){let e=this.peek();if(e===void 0)throw new Mk(this.pattern,this.pos,`unexpected end of pattern`);if(e===`^`)return this.advance(),{kind:`anchorStart`};if(e===`$`)return this.advance(),{kind:`anchorEnd`};if(e===`.`)return this.advance(),{kind:`anyChar`};if(e===`(`)return this.parseGroup();if(e===`[`)return this.parseCharClass();if(e===`\\`)return this.parseEscapedAtom();if(e===`*`||e===`+`||e===`?`)throw new Mk(this.pattern,this.pos,`quantifier '${e}' with nothing to repeat`);return this.advance(),{kind:`literal`,codeUnit:e.charCodeAt(0)}}parseGroup(){let e=this.pos;if(this.advance(),this.peek()===`?`&&this.peek(1)===`:`)this.advance(),this.advance();else throw new Mk(this.pattern,e,`capturing groups are not supported in this grammar -- there is nothing to capture, since a pattern only ever answers whether it matches. Use '(?:...)' for grouping.`);let t=this.parseAlternation();if(this.peek()!==`)`)throw new Mk(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new Mk(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`D`||t===`w`||t===`W`||t===`s`||t===`S`)return zk(t);let n=Vk[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new Mk(this.pattern,e,`unknown escape sequence '\\${t}'`)}parseCharClass(){let e=this.pos;this.advance();let t=!1;this.peek()===`^`&&(this.advance(),t=!0);let n=[];for(;;){if(this.atEnd())throw new Mk(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new Mk(this.pattern,this.pos,`a character class must contain at least one item -- ']' immediately, or immediately after '[^', is not the empty class here (escape it as '\\]' to match a literal ']')`);this.advance();break}n.push(...this.parseClassItem())}return{kind:`charClass`,negated:t,ranges:n}}parseClassItem(){let e=this.peek();if(e===`\\`){let e=this.pos;if(this.advance(),this.atEnd())throw new Mk(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return zk(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new Mk(this.pattern,e,`the negated shorthand class '\\${t}' cannot be embedded inside a character class, because its complement cannot be represented as a set of ranges to union with the class's other members -- use it as its own atom instead of embedding it here`);let n=Vk[t];if(n===void 0)throw new Mk(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new Mk(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),this.parseOptionalRangeFrom(e.charCodeAt(0))}parseOptionalRangeFrom(e){if(this.peek()===`-`&&this.peek(1)!==void 0&&this.peek(1)!==`]`){let t=this.pos;this.advance();let n=this.parseClassRangeEndpoint();if(n<e)throw new Mk(this.pattern,t,`invalid range in character class: '${String.fromCharCode(e)}-${String.fromCharCode(n)}' is reversed`);return[{from:e,to:n}]}return[{from:e,to:e}]}parseClassRangeEndpoint(){let e=this.peek();if(e===`\\`){let e=this.pos;if(this.advance(),this.atEnd())throw new Mk(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`D`||t===`w`||t===`W`||t===`s`||t===`S`)throw new Mk(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=Vk[t];if(n===void 0)throw new Mk(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new Mk(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function Uk(e){let t=new Hk(e),n=t.parseAlternation();if(!t.atEnd())throw new Mk(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var Wk=class{states=[];add(e){return this.states.push(e),this.states.length-1}patch(e,t){for(let n of e){let e=this.states[n.state];if(e!==void 0)switch(n.field){case`to`:(e.kind===`char`||e.kind===`anchorStart`||e.kind===`anchorEnd`)&&(e.to=t);break;case`to1`:e.kind===`split`&&(e.to1=t);break;case`to2`:e.kind===`split`&&(e.to2=t)}}}emptyFrag(){let e=this.add({kind:`split`,to1:-1,to2:-1});return{start:e,out:[{state:e,field:`to1`},{state:e,field:`to2`}]}}compileRepeat(e){let{operand:t,min:n,max:r}=e;if(r===void 0){if(n===0)return this.compileNode({kind:`star`,operand:t});let e=[];for(let r=0;r<n-1;r+=1)e.push(t);return e.push({kind:`plus`,operand:t}),this.compileNode({kind:`concat`,operands:e})}let i=[];for(let e=0;e<n;e+=1)i.push(t);for(let e=0;e<r-n;e+=1)i.push({kind:`optional`,operand:t});return i.length===0?this.emptyFrag():this.compileNode({kind:`concat`,operands:i})}compileNode(e){switch(e.kind){case`literal`:{let t=e.codeUnit,n=this.add({kind:`char`,test:e=>e===t,to:-1});return{start:n,out:[{state:n,field:`to`}]}}case`anyChar`:{let e=this.add({kind:`char`,test:()=>!0,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`charClass`:{let t=this.add({kind:`char`,test:t=>jk(e,t),to:-1});return{start:t,out:[{state:t,field:`to`}]}}case`anchorStart`:{let e=this.add({kind:`anchorStart`,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`anchorEnd`:{let e=this.add({kind:`anchorEnd`,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`concat`:{if(e.operands.length===0)return this.emptyFrag();let[t,...n]=e.operands;if(t===void 0)throw Error(`unreachable: a non-empty operands array always has a first element`);let r=this.compileNode(t);for(let e of n){let t=this.compileNode(e);this.patch(r.out,t.start),r={start:r.start,out:t.out}}return r}case`alternation`:{let[t,...n]=e.branches;if(t===void 0)throw Error(`unreachable: AlternationNode always has at least two branches`);let r=this.compileNode(t);for(let e of n){let t=this.compileNode(e);r={start:this.add({kind:`split`,to1:r.start,to2:t.start}),out:[...r.out,...t.out]}}return r}case`star`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return this.patch(t.out,n),{start:n,out:[{state:n,field:`to2`}]}}case`plus`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return this.patch(t.out,n),{start:t.start,out:[{state:n,field:`to2`}]}}case`optional`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return{start:n,out:[...t.out,{state:n,field:`to2`}]}}case`repeat`:return this.compileRepeat(e);default:throw Error(`unreachable regex node kind`)}}build(e){let t=this.compileNode(e),n=this.add({kind:`match`});return this.patch(t.out,n),{states:this.states,start:t.start,matchState:n}}};function Gk(e){return new Wk().build(e)}function Kk(e,t,n,r){let i=new Set,a=new Set,o=[...t];for(;o.length>0;){let t=o.pop();if(t===void 0||a.has(t))continue;a.add(t);let s=e.states[t];if(s!==void 0)switch(s.kind){case`char`:case`match`:i.add(t);break;case`split`:o.push(s.to1,s.to2);break;case`anchorStart`:n===0&&o.push(s.to);break;case`anchorEnd`:n===r&&o.push(s.to)}}return i}function qk(e,t,n){let r=new Set;for(let i of t){let t=e.states[i];t?.kind===`char`&&t.test(n)&&r.add(t.to)}return r}function Jk(e,t){let n=t.length,r=Kk(e,[e.start],0,n);if(r.has(e.matchState))return!0;for(let i=0;i<n;i+=1){let a=t.charCodeAt(i),o=qk(e,r,a);if(o.add(e.start),r=Kk(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function Yk(e){let t=Gk(Uk(e));return{test:e=>Jk(t,e)}}function Xk(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=WO(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function Zk(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=WO(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function Qk(e,t,n){switch(e){case`gt`:return t>n;case`gte`:return t>=n;case`lt`:return t<n;case`lte`:return t<=n;case`eq`:return t===n;case`neq`:return t!==n;default:throw Error(`unreachable comparison operator`)}}var $k={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function eA(e,t){return e*$k[t]}function tA(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function nA(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function rA(e){let t=new Date(e);return Number.isNaN(t.getTime())?$(`domain-error`,`the resulting instant falls outside the representable timestamp range`):Q({kind:`instant`,value:t.toISOString()})}function iA(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?VO(t.unit,n.unit)?Q(Qk(e,t.value,n.value)):$(`wrong-type`,`cannot compare numbers with incompatible units`):$(`wrong-type`,`cannot compare a 'number' value with a '${n.kind}' value`);case`text`:return $(`wrong-type`,`text values are not comparable via 'compare'; use 'textCompare'`);case`boolean`:return n.kind===`boolean`?e!==`eq`&&e!==`neq`?$(`wrong-type`,`booleans have no natural ordering; '${e}' is only defined for 'eq'/'neq'`):Q(e===`eq`?t.value===n.value:t.value!==n.value):$(`wrong-type`,`cannot compare a 'boolean' value with a '${n.kind}' value`);case`instant`:{if(n.kind!==`instant`)return $(`wrong-type`,`cannot compare an 'instant' value with a '${n.kind}' value`);let r=tA(t.value);if(r===void 0)return nA(t.value);let i=tA(n.value);return i===void 0?nA(n.value):Q(Qk(e,r,i))}case`duration`:return n.kind===`duration`?Q(Qk(e,eA(t.value,t.unit),eA(n.value,n.unit))):$(`wrong-type`,`cannot compare a 'duration' value with a '${n.kind}' value`);case`complex`:return e!==`eq`&&e!==`neq`?$(`wrong-type`,`ordering operator '${e}' is not defined for complex values; the complex plane has no total order`):n.kind===`complex`?VO(t.unit,n.unit)?Q(e===`eq`?t.re===n.re&&t.im===n.im:t.re!==n.re||t.im!==n.im):$(`wrong-type`,`cannot compare complex values with incompatible units`):$(`wrong-type`,`cannot compare a 'complex' value with a '${n.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function aA(e,t,n){if(t.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the left operand is '${t.kind}'`);if(n.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the right operand is '${n.kind}'`);switch(e){case`equals`:return Q(t.value===n.value);case`notEquals`:return Q(t.value!==n.value);case`matches`:case`notMatches`:{let r;try{r=new RegExp(n.value)}catch{return $(`wrong-type`,`'${n.value}' is not a valid regular expression pattern`)}let i=r.test(t.value);return Q(e===`matches`?i:!i)}case`portableMatches`:case`portableNotMatches`:{let r;try{r=Yk(n.value)}catch(e){let t=e instanceof Mk?e.message:String(e);return $(`wrong-type`,`'${n.value}' is not a valid trilean-regex pattern: ${t}`)}let i=r.test(t.value);return Q(e===`portableMatches`?i:!i)}default:throw Error(`unreachable text comparison operator`)}}function oA(e,t){switch(e.kind){case`number`:return t.kind===`number`?VO(e.unit,t.unit)?Q(e.value===t.value):$(`wrong-type`,`cannot compare numbers with incompatible units for membership`):$(`wrong-type`,`cannot compare a 'number' value with a '${t.kind}' value for membership`);case`text`:return t.kind===`text`?Q(e.value===t.value):$(`wrong-type`,`cannot compare a 'text' value with a '${t.kind}' value for membership`);case`boolean`:return t.kind===`boolean`?Q(e.value===t.value):$(`wrong-type`,`cannot compare a 'boolean' value with a '${t.kind}' value for membership`);case`instant`:{if(t.kind!==`instant`)return $(`wrong-type`,`cannot compare an 'instant' value with a '${t.kind}' value for membership`);let n=tA(e.value);if(n===void 0)return nA(e.value);let r=tA(t.value);return r===void 0?nA(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(eA(e.value,e.unit)===eA(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?VO(e.unit,t.unit)?Q(e.re===t.re&&e.im===t.im):$(`wrong-type`,`cannot compare complex values with incompatible units for membership`):$(`wrong-type`,`cannot compare a 'complex' value with a '${t.kind}' value for membership`);default:throw Error(`unreachable computed-value kind`)}}function sA(e){return VO(e,void 0)}function cA(e){switch(e.kind){case`number`:return Q({kind:`number`,value:-e.value,unit:e.unit});case`duration`:return Q({kind:`duration`,value:-e.value,unit:e.unit});case`complex`:return Q({kind:`complex`,re:-e.re,im:-e.im,unit:e.unit});case`text`:case`instant`:case`boolean`:return $(`wrong-type`,`cannot negate a '${e.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function lA(e,t,n){switch(e){case`add`:return VO(t.unit,n.unit)?Q({kind:`number`,value:t.value+n.value,unit:t.unit}):$(`wrong-type`,`cannot add numbers with incompatible units`);case`subtract`:return VO(t.unit,n.unit)?Q({kind:`number`,value:t.value-n.value,unit:t.unit}):$(`wrong-type`,`cannot subtract numbers with incompatible units`);case`multiply`:return Q({kind:`number`,value:t.value*n.value,unit:HO(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:UO(t.unit,n.unit)});case`power`:return!sA(t.unit)||!sA(n.unit)?$(`wrong-type`,`'power' requires dimensionless operands`):t.value<0&&!Number.isInteger(n.value)?$(`domain-error`,`a negative base raised to a non-integer power is not a real number`):t.value===0&&n.value<0?$(`domain-error`,`zero raised to a negative power is a division by zero`):Q({kind:`number`,value:t.value**n.value});case`modulo`:return!sA(t.unit)||!sA(n.unit)?$(`wrong-type`,`'modulo' requires dimensionless operands`):n.value===0?$(`domain-error`,`modulo by zero`):Q({kind:`number`,value:t.value%n.value});default:throw Error(`unreachable arithmetic operator`)}}function uA(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:eA(t.value,t.unit)+eA(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:eA(t.value,t.unit)-eA(n.value,n.unit),unit:`ms`});case`multiply`:case`divide`:case`power`:case`modulo`:return $(`wrong-type`,`arithmetic operator '${e}' is not defined between two 'duration' values`);default:throw Error(`unreachable arithmetic operator`)}}function dA(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function fA(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:HO(e.unit,t.unit)}}function pA(e,t,n){switch(e){case`add`:return VO(t.unit,n.unit)?Q({kind:`complex`,re:t.re+n.re,im:t.im+n.im,unit:t.unit}):$(`wrong-type`,`cannot add complex values with incompatible units`);case`subtract`:return VO(t.unit,n.unit)?Q({kind:`complex`,re:t.re-n.re,im:t.im-n.im,unit:t.unit}):$(`wrong-type`,`cannot subtract complex values with incompatible units`);case`multiply`:return Q(fA(t,n));case`divide`:{let e=n.re*n.re+n.im*n.im;return e===0?$(`domain-error`,`division by zero`):Q({kind:`complex`,re:(t.re*n.re+t.im*n.im)/e,im:(t.im*n.re-t.re*n.im)/e,unit:UO(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function mA(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!sA(e.unit)||!sA(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=dA(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=fA(i,r);return t.value>=0?Q(i):pA(`divide`,n,i)}function hA(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=tA(t.value);if(e===void 0)return nA(t.value);let r=tA(n.value);return r===void 0?nA(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=tA(t.value);return e===void 0?nA(t.value):rA(e+eA(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=tA(n.value);return e===void 0?nA(n.value):rA(e+eA(t.value,t.unit))}return t.kind===`instant`||n.kind===`instant`?$(`wrong-type`,`arithmetic operator '${e}' is not defined between a '${t.kind}' and a '${n.kind}' value`):t.kind===`duration`&&n.kind===`duration`?uA(e,t,n):t.kind===`duration`||n.kind===`duration`?$(`wrong-type`,`arithmetic operator '${e}' is not defined between a '${t.kind}' and a '${n.kind}' value`):t.kind!==`number`&&t.kind!==`complex`?$(`wrong-type`,`arithmetic requires numeric operands; got a '${t.kind}' value`):n.kind!==`number`&&n.kind!==`complex`?$(`wrong-type`,`arithmetic requires numeric operands; got a '${n.kind}' value`):t.kind===`complex`||n.kind===`complex`?e===`power`?mA(t,n):pA(e,dA(t),dA(n)):lA(e,t,n)}function gA(e,t){if(e!==void 0){if(t.kind!==`number`&&t.kind!==`complex`)return $(`wrong-type`,`a unit was expected on a reference that resolved to a non-numeric value`);if(!VO(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function _A(e,t,n){let r=Object.hasOwn(e,t)?e[t]:void 0;if(r===void 0)return $(`wrong-type`,`no function registered under the name '${t}'`);let i=r(n);return`domainError`in i?$(`domain-error`,i.domainError):Q(i)}async function vA(e,t,n,r,i,a,o,s,c){let l=s.checkNode(c);if(l!==void 0)return l;switch(e.kind){case`not`:{let l=await vA(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:Q(!l.value)}case`and`:{let[l,u]=await Promise.all([vA(e.left,t,n,r,i,a,o,s,c+1),vA(e.right,t,n,r,i,a,o,s,c+1)]);return Xk(l,u)}case`or`:{let[l,u]=await Promise.all([vA(e.left,t,n,r,i,a,o,s,c+1),vA(e.right,t,n,r,i,a,o,s,c+1)]);return Zk(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>vA(e,t,n,r,i,a,o,s,c+1)))).reduce(Xk,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>vA(e,t,n,r,i,a,o,s,c+1)))).reduce(Zk,Q(!1));case`compare`:{let[l,u]=await Promise.all([yA(e.left,t,n,r,i,a,o,s,c+1),yA(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:iA(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([yA(e.left,t,n,r,i,a,o,s,c+1),yA(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:aA(e.op,l.value,u.value)}case`memberOf`:{let l=await yA(e.operand,t,n,r,i,a,o,s,c+1);if(l.status===`indeterminate`)return l;let u=await Promise.all(e.candidates.map(async e=>{let u=await yA(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:oA(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=WO(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await yA(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`&&l.reason.code===`not-found`?Q(!1):Q(!0)}case`some`:case`every`:{let r=await Ok(vA,e.collection,e.filter,t,n,i,a,o,s,c+1),l=(await Promise.all(r.map(async({item:t,filterOutcome:r})=>{if(r!==`exclude`)return r===`include`?vA(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?Zk:Xk,d=e.kind===`some`?Q(!1):Q(!0);return l.reduce(u,d)}case`treeReference`:{if(n.resolveTree===void 0)return $(`wrong-type`,`no tree resolver registered for treeReference nodes`);let l=JSON.stringify(e.key);if(a.has(l))return $(`domain-error`,`circular treeReference detected`);if(o>=100)return $(`domain-error`,`treeReference chain exceeds the maximum depth of 100`);let u=await n.resolveTree(e.key,t);if(!u.found)return $(`not-found`,`treeReference key did not resolve to a tree`);let d=lk.safeParse(u.node);return d.success?vA(d.data,t,n,r,i,new Set([...a,l]),o+1,s,c+1):$(`wrong-type`,`the referenced tree is not a valid PredicateNode`)}default:throw Error(`unreachable predicate node kind`)}}async function yA(e,t,n,r,i,a,o,s,c){let l=s.checkNode(c);if(l!==void 0)return l;switch(e.kind){case`reference`:{let r=await n.resolveValue(e.key,t);if(!r.found)return $(`not-found`,`no value found for reference key ${JSON.stringify(e.key)}`);let i=gA(e.unit,r.value);return i===void 0?Q(r.value):i}case`accumulator`:return r===void 0?$(`wrong-type`,`accumulator used outside a reduce fold's combine expression`):Q(r);case`call`:{let l=await Promise.all(e.args.map(async e=>yA(e,t,n,r,i,a,o,s,c+1))),u=[];for(let e of l){if(e.status===`indeterminate`)return e;u.push(e.value)}return _A(i,e.fn,u)}case`numberLiteral`:return Q({kind:`number`,value:e.value,unit:e.unit});case`textLiteral`:return Q({kind:`text`,value:e.value});case`booleanLiteral`:return Q({kind:`boolean`,value:e.value});case`instantLiteral`:return Q({kind:`instant`,value:e.value});case`durationLiteral`:return Q({kind:`duration`,value:e.value,unit:e.unit});case`complexLiteral`:return`re`in e?Q({kind:`complex`,re:e.re,im:e.im,unit:e.unit}):Q(LO(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([yA(e.left,t,n,r,i,a,o,s,c+1),yA(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:hA(e.op,l.value,u.value)}case`negate`:{let l=await yA(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:cA(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>yA(e,t,n,r,i,a,o,s,c+1))),u=[];for(let e of l){if(e.status===`indeterminate`)return e;u.push(e.value)}let d=await n.resolveLookup(e.table,u,t);return d.found?Q(d.value):$(`not-found`,`no match found in lookup table ${JSON.stringify(e.table)}`)}case`conditional`:{if((e.hitPolicy??`first`)===`first`){for(let{when:l,then:u}of e.cases){let e=await vA(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return yA(u,t,n,r,i,a,o,s,c+1)}return yA(e.fallback,t,n,r,i,a,o,s,c+1)}let l=await Promise.all(e.cases.map(async({when:e,then:l})=>({then:l,whenResult:await vA(e,t,n,r,i,a,o,s,c+1)}))),u=l.filter(({whenResult:e})=>e.status===`definite`&&e.value);if(u.length>=2)return $(`domain-error`,`more than one case matched under the 'unique' hit policy`);let d=WO(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return yA(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await Ok(vA,e.collection,e.filter,t,n,i,a,o,s,c+1),l=kk(r);if(l!==void 0)return{status:`indeterminate`,reason:l};let u=r.filter(({filterOutcome:e})=>e===`include`).map(({item:e})=>e);if(e.combiner.mode===`reduce`){let r=await yA(e.combiner.initial,t,n,void 0,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;let l=r.value;for(let t of u){let r=await yA(e.combiner.combine,t,n,l,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;l=r.value}return Q(l)}if(u.length===0)return $(`domain-error`,`'${e.combiner.mode}' has no participating items to seed a running result from`);let d=e.combiner.mode===`max`?`gt`:`lt`,f;for(let t of u){let r=await yA(e.combiner.item,t,n,void 0,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;if(f===void 0){f=r.value;continue}let l=iA(d,r.value,f);if(l.status===`indeterminate`)return l;l.value&&(f=r.value)}if(f===void 0)throw Error(`unreachable: max/min over a non-empty participating list produced no running result`);return Q(f)}case`delegate`:{if(n.resolveDelegate===void 0)return $(`wrong-type`,`no delegate handler registered for external system '${e.system}'`);let r=await n.resolveDelegate(e.system,e.payload,t);return r.found?Q(r.value):$(`not-found`,`delegate handler for external system '${e.system}' reported no value`)}case`treeReference`:{if(n.resolveTree===void 0)return $(`wrong-type`,`no tree resolver registered for treeReference nodes`);let l=JSON.stringify(e.key);if(a.has(l))return $(`domain-error`,`circular treeReference detected`);if(o>=100)return $(`domain-error`,`treeReference chain exceeds the maximum depth of 100`);let u=await n.resolveTree(e.key,t);if(!u.found)return $(`not-found`,`treeReference key did not resolve to a tree`);let d=wk.safeParse(u.node);return d.success?yA(d.data,t,n,r,i,new Set([...a,l]),o+1,s,c+1):$(`wrong-type`,`the referenced tree is not a valid ExpressionNode`)}default:throw Error(`unreachable expression node kind`)}}function bA({functions:e=Tk,maxNodes:t=Ek,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>vA(r,i,a,void 0,e,new Set,0,Dk(t,n),0),evaluateValue:async(r,i,a)=>yA(r,i,a,void 0,e,new Set,0,Dk(t,n),0)}}var{evaluatePredicate:xA,evaluateValue:SA}=bA({}),CA=ET(lk),wA=`bearer-is`,TA=`expires-at`,EA=`scope-narrows`,DA=`capability-is`,OA=`depth-remaining`,kA=[wA,TA,EA,DA,OA];function AA(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}var jA=`grantee-is`,MA=`granted-capability-is`;function NA(e){return e===`grantee-is`||e===`granted-capability-is`}var PA={[jA]:(e,t)=>t.subject===void 0||typeof e!=`string`?{found:!1}:IA(fO(t.subject.bearer)===e),[MA]:(e,t)=>t.subject===void 0||typeof e!=`string`?{found:!1}:IA(t.subject.capability===e)};function FA(e,t){return{kind:`not`,operand:{kind:`and`,left:RA(MA,e),right:RA(jA,fO(t))}}}function IA(e){return{found:!0,value:{kind:`boolean`,value:e}}}var LA={[wA]:(e,t)=>t.parentClaims===void 0?IA(!1):IA(NO(t.parentClaims.bearer,t.childIssuer)),[TA]:(e,t)=>t.parentClaims===void 0?IA(!1):IA(t.candidate.expires<=t.parentClaims.expires),[EA]:(e,t)=>t.parentClaims===void 0?IA(!1):IA(IO(t.parentClaims.scope,t.candidate.scope)),[DA]:(e,t)=>t.parentClaims===void 0?IA(!1):IA(t.parentClaims.capability===t.candidate.capability),[OA]:(e,t)=>{if(t.parentClaims===void 0)return IA(!1);let n=t.parentClaims[`delegations-remaining`];return IA(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function RA(e,t=null){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:t},right:{kind:`booleanLiteral`,value:!0}}}var zA=async()=>Promise.resolve({found:!1}),BA=async()=>Promise.resolve({found:!1}),VA=async()=>Promise.resolve([]);async function HA(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:zA,resolveLookup:BA,resolveCollection:VA,resolveDelegate:async(e,t)=>AA(e)?LA[e](t,r):{found:!1}};return jO(kA,async e=>{let t=await xA(RA(e),r,i);return t.status!==`definite`||!t.value})}async function UA(e,t,n,r={},i){let a=i===void 0?{clock:n,claims:t}:{clock:n,claims:t,subject:i},o={resolveValue:zA,resolveLookup:BA,resolveCollection:VA,resolveDelegate:async(e,t)=>{if(i!==void 0&&NA(e))try{return await PA[e](t,a)}catch{return{found:!1}}let n=Object.hasOwn(r,e)?r[e]:void 0;if(n===void 0)return{found:!1};try{return await n(t,a)}catch{return{found:!1}}}};return await jO(e,async e=>{let t=await xA(e,a,o);return t.status!==`definite`||!t.value})===void 0?{ok:!0}:{ok:!1,reason:`not_satisfied`}}var WA=`manage:grant`,GA=64;function KA(e,t){return Mg([`Signature1`,e,new Uint8Array,t],hg)}function qA(e){return Uint8Array.from(e)}function JA(e){return qA(Mg(e,hg))}function YA(e){return JA({1:e.identityKey.alg,4:e.deviceId})}function XA(e){let[,,t]=e;if(t===null)return;let n;try{n=b_(t,x_)}catch{return}let r=zD.safeParse(n);return r.success?r.data:void 0}async function ZA(e,t){let n=await ej(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!NO(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function QA(e,t,n){if(NO(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=b_(e.authorization,x_)}catch{return!1}let i=RD.safeParse(r);if(!i.success)return!1;let a=await ZA(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&IO(a.claims.scope,t.scope)}var $A={depth:0,seen:new Set};async function ej(e,t,{subjectClaims:n,depth:r,seen:i}=$A){let[a,,o,s]=e;if(o===null)return{ok:!1,reason:`malformed`};if(r>=GA)return{ok:!1,reason:`chain_too_deep`};let c=dO(o);if(i.has(c))return{ok:!1,reason:`chain_cycle`};let l=new Set(i).add(c),u;try{u=b_(o,x_)}catch{return{ok:!1,reason:`malformed`}}let d=zD.safeParse(u);if(!d.success)return{ok:!1,reason:`malformed`};let f=d.data;if(!await t.identity.verify(f[`issuer-key`],KA(a,o),s))return{ok:!1,reason:`bad_signature`};if(!NO(await t.identity.deriveDeviceId(f[`issuer-key`][`public-key`]),f.issuer))return{ok:!1,reason:`wrong_issuer`};let p=t.clock.now();if(f.expires<=p)return{ok:!1,reason:`expired`};if(f[`not-before`]!==void 0&&f[`not-before`]>p)return{ok:!1,reason:`not_yet_valid`};let m=f[`valid-until`];if(m!==void 0&&m<=p)return{ok:!1,reason:`content_expired`};if(await jO(await t.revocation.entriesFor(f[`token-id`]),async e=>QA(e,f,t))!==void 0)return{ok:!1,reason:`revoked`};if(f.conditions!==void 0){let e;try{e=b_(f.conditions,x_)}catch{return{ok:!1,reason:`conditions_invalid`}}let r=CA.safeParse(e);if(!r.success)return{ok:!1,reason:`conditions_invalid`};if(!(await UA(r.data,f,t.clock,t.extraPredicateResolvers,n)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}let h=f.parent,g=f[`authorised-by`];if(f.capability===`manage:grant`&&h!==void 0)return{ok:!1,reason:`authorisation_invalid`};if(h!==void 0&&g!==void 0)return{ok:!1,reason:`malformed`};if(h!==void 0){let e;try{e=b_(h,x_)}catch{return{ok:!1,reason:`parent_invalid`}}let n=RD.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let i=await ej(n.data,t,{depth:r+1,seen:l});if(!i.ok)return i.reason===`chain_too_deep`||i.reason===`chain_cycle`?{ok:!1,reason:i.reason}:{ok:!1,reason:`parent_invalid`};let a={capability:f.capability,scope:f.scope,expires:f.expires,...f[`delegations-remaining`]===void 0?{}:{delegationsRemaining:f[`delegations-remaining`]}};return await HA(i.claims,f.issuer,a)===void 0?{ok:!0,claims:f,rootIssuer:i.rootIssuer,rootIssuerKey:i.rootIssuerKey,depth:i.depth+1}:{ok:!1,reason:`delegation_exceeds_parent`}}if(g!==void 0){let e;try{e=b_(g,x_)}catch{return{ok:!1,reason:`authorisation_invalid`}}let n=RD.safeParse(e);if(!n.success)return{ok:!1,reason:`authorisation_invalid`};let i=await ej(n.data,t,{subjectClaims:f,depth:r+1,seen:l});if(!i.ok)return i.reason===`chain_too_deep`||i.reason===`chain_cycle`?{ok:!1,reason:i.reason}:{ok:!1,reason:`authorisation_invalid`};let a=i.claims,o=a[`grants-capability`];return NO(a.bearer,f.issuer)&&a.capability===`manage:grant`&&(o===void 0||o===f.capability)&&IO(a.scope,f.scope)&&f.expires<=a.expires&&(a[`delegations-remaining`]===void 0||f[`delegations-remaining`]!==void 0&&f[`delegations-remaining`]<a[`delegations-remaining`])?{ok:!0,claims:f,rootIssuer:i.rootIssuer,rootIssuerKey:i.rootIssuerKey,depth:i.depth+1}:{ok:!1,reason:`authorisation_invalid`}}return{ok:!0,claims:f,rootIssuer:f.issuer,rootIssuerKey:f[`issuer-key`],depth:0}}async function tj(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=b_(r,x_)}catch{return{ok:!1,reason:`malformed`}}let o=XE.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;return await t.identity.verify(s[`issuer-key`],KA(n,r),i)?NO(await t.identity.deriveDeviceId(s[`issuer-key`][`public-key`]),s.issuer)?{ok:!0,claims:s}:{ok:!1,reason:`wrong_issuer`}:{ok:!1,reason:`bad_signature`}}var nj={"bearer-is":`parent_bearer_mismatch`,"expires-at":`expires_exceeds_parent`,"scope-narrows":`scope_does_not_narrow`,"capability-is":`capability_mismatch`,"depth-remaining":`delegation_exceeds_parent`};async function rj(e,t,n){let r=await HA(e,t,n);return r===void 0?void 0:nj[r]}async function ij(e,t,n){if(e.parent!==void 0)return`authorisation_parent_forbidden`;if(!NO(e.bearer,t))return`authorisation_bearer_mismatch`;let r=e[`grants-capability`];if(e.capability!==`manage:grant`||r!==void 0&&r!==n.capability)return`authorisation_capability_mismatch`;if(!IO(e.scope,n.scope))return`authorisation_scope_does_not_narrow`;if(n.expires>e.expires)return`authorisation_exceeds_authoriser`;let i=e[`delegations-remaining`];if(i!==void 0&&(n.delegationsRemaining===void 0||n.delegationsRemaining>=i))return`authorisation_delegation_exceeds`;if(e.conditions!==void 0){let t;try{t=b_(e.conditions,x_)}catch{return`authorisation_malformed`}let r=CA.safeParse(t);if(!r.success)return`authorisation_malformed`;if(!(await UA(r.data,e,{now:()=>0},{},n)).ok)return`authorisation_conditions_not_satisfied`}}async function aj(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};if(e.parent!==void 0&&e.authorisedBy!==void 0)return{ok:!1,reason:`links_exclusive`};if(e.capability===`manage:grant`&&e.parent!==void 0)return{ok:!1,reason:`authorisation_parent_forbidden`};let t;if(e.parent!==void 0){let n=XA(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await rj(n,e.identity.deviceId,{capability:e.capability,scope:e.scope,expires:e.expires,...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining}});if(r!==void 0)return{ok:!1,reason:r};t=JA(e.parent)}let n;if(e.authorisedBy!==void 0){let t=XA(e.authorisedBy);if(t===void 0)return{ok:!1,reason:`authorisation_malformed`};let r=await ij(t,e.identity.deviceId,{capability:e.capability,scope:e.scope,bearer:e.bearer,expires:e.expires,...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining}});if(r!==void 0)return{ok:!1,reason:r};n=JA(e.authorisedBy)}let r=JA({"token-id":e.tokenId,issuer:e.identity.deviceId,"issuer-key":e.identity.identityKey,bearer:e.bearer,capability:e.capability,scope:e.scope,expires:e.expires,...e.notBefore===void 0?{}:{"not-before":e.notBefore},...t===void 0?{}:{parent:t},...e.delegationsRemaining===void 0?{}:{"delegations-remaining":e.delegationsRemaining},...e.conditions===void 0?{}:{conditions:JA(e.conditions)},...n===void 0?{}:{"authorised-by":n},...e.grantsCapability===void 0?{}:{"grants-capability":e.grantsCapability},...e.requestsCapability===void 0?{}:{"requests-capability":e.requestsCapability}}),i=YA(e.identity);return{ok:!0,token:[i,{},r,await e.identity.sign(KA(i,r))]}}async function oj(e){let t=JA({"token-id":e.tokenId,issuer:e.identity.deviceId,"issuer-key":e.identity.identityKey,"revoked-at":e.revokedAt}),n=YA(e.identity);return[n,{},t,await e.identity.sign(KA(n,t))]}var sj=`wm-grant1.`;function cj(e){let t=e[2];if(t===null)return;let n;try{n=b_(t,x_)}catch{return}let r=zD.safeParse(n);return r.success?r.data:void 0}function lj(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function uj(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function dj(e){return sj+lj(Mg(e,hg))}function fj(e){let t=e.trim();if(!t.startsWith(`wm-grant1.`))throw Error(`a grant code starts with "${sj}"`);let n;try{n=b_(uj(t.slice(10)),x_)}catch{throw Error(`the grant code is damaged: it does not decode`)}let r=RD.safeParse(n);if(!r.success||cj(r.data)===void 0)throw Error(`the grant code does not carry a capability token`);return r.data}async function pj(e,t){let n=await ZA(e,t);return n.ok?{kind:`valid`}:{kind:`invalid`,reason:n.reason}}var mj={malformed:`malformed`,bad_signature:`signature does not verify`,wrong_issuer:`issuer does not match its key`,bearer_mismatch:`names another bearer`,expired:`expired`,not_yet_valid:`not valid yet`,content_expired:`content expired`,revoked:`revoked`,delegation_exceeds_parent:`exceeds what its parent allows`,parent_invalid:`its parent grant is no longer valid`,conditions_invalid:`its conditions are invalid`,conditions_not_satisfied:`its conditions are not met`,authorisation_invalid:`exceeds what its authorising grant allows`,chain_too_deep:`its chain is deeper than allowed`,chain_cycle:`its chain revisits a token`};function hj(e){return e.kind===`valid`?`valid`:mj[e.reason]}var gj=`grant/`;function _j(e,t){return`${gj}${e}/${t}`}function vj(e){let t=e.slice(6).split(`/`)[0];if(t===`held`||t===`issued`)return t;throw Error(`stored grant key ${e} names no direction`)}function yj(e){return typeof e==`object`&&!!e&&`token`in e&&`recordedAt`in e&&typeof e.recordedAt==`number`}function bj(e){let t=new Set;return{async record(n,r,i){let a=cj(r);if(a===void 0)throw Error(`a grant must carry readable token claims`);let o=_j(n,dO(a[`token-id`]));if(await e.get(o)===void 0){await e.set(o,new Uint8Array(Mg({token:r,recordedAt:i},hg)));for(let e of t)e()}},async list(){let t=[],n=await e.keys(gj),r=await Promise.all(n.map(async t=>({key:t,value:await e.get(t)})));for(let{key:e,value:n}of r){if(n===void 0)continue;let r=b_(n,x_);if(!yj(r))throw Error(`stored grant at ${e} is malformed`);let i=RD.safeParse(r.token);if(!i.success)throw Error(`stored grant at ${e} is malformed`);let a=cj(i.data);if(a===void 0)throw Error(`stored grant at ${e} has unreadable claims`);t.push({tokenId:dO(a[`token-id`]),direction:vj(e),token:i.data,claims:a,recordedAt:r.recordedAt})}return t.sort((e,t)=>t.recordedAt-e.recordedAt)},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}function xj(e){return dO(e)}function Sj(){let e=new Map;return{async entriesFor(t){return Promise.resolve(e.get(xj(t))??[])},async record(t,n){let r=await tj(t,n);if(r.ok){let t=xj(r.claims[`token-id`]),n=e.get(t);n===void 0?e.set(t,[r.claims]):n.push(r.claims)}return r}}}var Cj=`revocation/`;async function wj(e,t,n){let r;try{r=b_(n,x_)}catch{return`it is not valid CBOR`}let i=ZE.safeParse(r);if(!i.success)return`it is not a revocation entry`;let a=await e.record(i.data,{identity:t});return a.ok?void 0:`it no longer verifies (${a.reason})`}async function Tj(e){let{storage:t,identity:n,clock:r}=e,i=Sj(),a=new Set;async function o(e){let r=await i.record(e,{identity:n});if(r.ok){let n=`${Cj}${dO(r.claims.issuer)}/${dO(r.claims[`token-id`])}`;await t.set(n,new Uint8Array(Mg(e,hg)));for(let e of a)e()}return r}let s=await t.keys(Cj),c=(await Promise.all(s.map(async e=>{let r=await t.get(e);if(r===void 0)return;let a=await wj(i,n,r);return a===void 0?void 0:{key:e,reason:a}}))).filter(e=>e!==void 0);return{view:i,unreadable:()=>c,async discardUnreadable(e){await t.delete(e),c=c.filter(t=>t.key!==e);for(let e of a)e()},subscribe(e){return a.add(e),()=>{a.delete(e)}},ingest:o,async revoke(e){let t=await oj({identity:n,tokenId:e,revokedAt:r.now()}),i=await o(t);if(!i.ok)throw Error(`the revocation this device signed does not verify (${i.reason})`);return t}}}var Ej=`preferences/intro-dismissed`,Dj=new Uint8Array([1]);function Oj(e){return{async introDismissed(){return await e.get(Ej)!==void 0},async setIntroDismissed(t){t?await e.set(Ej,new Uint8Array(Dj)):await e.delete(Ej)}}}var kj=`agent/self`,Aj=`wire-mesh-console`;function jj(e){return e.slice(0,12)}var Mj=/[\p{Cc}\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu;function Nj(e){let t=e.replace(Mj,``).trim();if(t!==``)return Array.from(t).slice(0,64).join(``).trimEnd()}function Pj(e){let t=e[kj];if(typeof t==`object`&&t&&`name`in t&&typeof t.name==`string`)return Nj(t.name)}function Fj(e){return{[kj]:{name:e,harness:Aj}}}function Ij(e,t,n,r){return t===void 0?n===void 0?{primary:jj(e),secondary:void 0,source:`id`,matchesPetname:!1}:{primary:n,secondary:jj(e),source:`self`,matchesPetname:r.has(n)}:{primary:t,secondary:n!==void 0&&n!==t?n:void 0,source:`petname`,matchesPetname:!1}}function Lj(e){return e.source===`self`&&e.secondary!==void 0?`${e.primary} (${e.secondary})`:e.primary}var Rj=`petname/`,zj=`self-name`,Bj=new TextEncoder,Vj=new TextDecoder;function Hj(e){async function t(t,n){let r=Nj(n);if(r===void 0){await e.delete(t);return}await e.set(t,new Uint8Array(Bj.encode(r)))}return{async petnames(){let t=new Map,n=await e.keys(Rj),r=await Promise.all(n.map(async t=>({key:t,value:await e.get(t)})));for(let{key:e,value:n}of r)n!==void 0&&t.set(e.slice(8),Vj.decode(n));return t},async setPetname(e,n){await t(Rj+e,n)},async selfName(){let t=await e.get(zj);return t===void 0?void 0:Vj.decode(t)},async setSelfName(e){await t(zj,e)}}}var Uj=String(2**53-1).length,Wj=`message`;function Gj(e,t){return`${Wj}/${e}/${String(t.sentAt).padStart(Uj,`0`)}-${dO(t.messageId)}`}function Kj(e){let t=e.slice(`${Wj}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function qj(e){return e===`sent`||e===`received`}function Jj(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:qj(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Yj(e){return{async append(t,n){await e.set(Gj(t,n),new Uint8Array(Mg(n,hg)))},async roomPaths(){let t=await e.keys(`${Wj}/`);return[...new Set(t.map(Kj))]},async list(t){let n=(await e.keys(`${Wj}/${t}/`)).sort(),r=[],i=await Promise.all(n.map(async t=>({key:t,value:await e.get(t)})));for(let{key:e,value:t}of i){if(t===void 0)continue;let n=b_(t,x_);if(!Jj(n))throw Error(`stored message at ${e} is malformed`);r.push(n)}return r}}}function Xj(e){return new Uint8Array(Mg(e,hg))}function Zj(e,t){return{type:`relay-data`,payload:Xj(e),...t===void 0?{}:{"to-device":t}}}var Qj=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function $j(e){let t=b_(new Uint8Array(e),x_),n=NE.safeParse(t);if(!n.success)throw new Qj(n.error.message);return n.data}function eM(e){let t;try{t=b_(e,x_)}catch{return null}let n=NE.safeParse(t);return n.success?n.data:null}var tM=16,nM=4096;function rM(e){let t=0;for(let n of e)t+=String(n.length).length+1+n.length;return t}function iM(...e){let t=``;for(let n of e){t+=`${String(n.length)}:`;for(let e=0;e<n.length;e+=nM)t+=String.fromCharCode(...n.subarray(e,e+nM))}return t}async function aM(e){return await e()??!1}function oM(e){let t=new Map,n=0,r=0,i=e=>{let r=t.get(e);r!==void 0&&(t.delete(e),n-=r.cost)};return{async verdict(a,o){let s=rM(a)+tM;if(s>e||r+s>e)return aM(o);let c=iM(...a),l=t.get(c);if(l!==void 0)return t.delete(c),t.set(c,l),l.settled;r+=s;let u=o().then(e=>e===void 0?(i(c),!1):e).finally(()=>{r-=s});t.set(c,{settled:u,cost:s}),n+=s;for(let r of t.keys()){if(n<=e)break;i(r)}return u}}}var sM=1024,cM=sM*sM*8,lM=new WeakMap;function uM(e){let t=lM.get(e);if(t!==void 0)return t;let n=oM(cM);return lM.set(e,n),n}var dM=`signature`,fM=`identity-key`,pM=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function mM(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=Mg(t,hg),r=new Uint8Array(pM.length+n.length);return r.set(pM,0),r.set(n,pM.length),r}async function hM(e,t){let n=await e.sign(mM(t));return{...t,[dM]:n}}async function gM(e,t){let n;try{n=mM(t)}catch{return!1}return uM(e).verdict([t[dM],n],async()=>_M(e,t,n))}async function _M(e,t,n){let r=t[fM];try{return NO(await e.deriveDeviceId(r[`public-key`]),t.device)?await e.verify(r,n,t[dM]):!1}catch{return}}var vM={name:`wire-mesh-core`,version:`4.0.8`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`3.0.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/byte-stream-connection":{import:`./dist/adapters/byte-stream-connection.mjs`,require:`./dist/adapters/byte-stream-connection.cjs`},"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/channel-exhausted-error":{import:`./dist/domain/channel-exhausted-error.mjs`,require:`./dist/domain/channel-exhausted-error.cjs`},"./domain/coordinator-election":{import:`./dist/domain/coordinator-election.mjs`,require:`./dist/domain/coordinator-election.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/hub-mailbox":{import:`./dist/domain/hub-mailbox.mjs`,require:`./dist/domain/hub-mailbox.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/pinned-address":{import:`./dist/domain/pinned-address.mjs`,require:`./dist/domain/pinned-address.cjs`},"./domain/relay-advert":{import:`./dist/domain/relay-advert.mjs`,require:`./dist/domain/relay-advert.cjs`},"./domain/relay-hub":{import:`./dist/domain/relay-hub.mjs`,require:`./dist/domain/relay-hub.cjs`},"./domain/relay-use-gate":{import:`./dist/domain/relay-use-gate.mjs`,require:`./dist/domain/relay-use-gate.cjs`},"./domain/revocation-view":{import:`./dist/domain/revocation-view.mjs`,require:`./dist/domain/revocation-view.cjs`},"./domain/room":{import:`./dist/domain/room.mjs`,require:`./dist/domain/room.cjs`},"./domain/room-path":{import:`./dist/domain/room-path.mjs`,require:`./dist/domain/room-path.cjs`},"./domain/room-rekey":{import:`./dist/domain/room-rekey.mjs`,require:`./dist/domain/room-rekey.cjs`},"./domain/room-token-verification":{import:`./dist/domain/room-token-verification.mjs`,require:`./dist/domain/room-token-verification.cjs`},"./domain/shard-manifest":{import:`./dist/domain/shard-manifest.mjs`,require:`./dist/domain/shard-manifest.cjs`},"./domain/threshold-subject":{import:`./dist/domain/threshold-subject.mjs`,require:`./dist/domain/threshold-subject.cjs`},"./domain/token-predicates":{import:`./dist/domain/token-predicates.mjs`,require:`./dist/domain/token-predicates.cjs`},"./domain/token-scope":{import:`./dist/domain/token-scope.mjs`,require:`./dist/domain/token-scope.cjs`},"./domain/tokens":{import:`./dist/domain/tokens.mjs`,require:`./dist/domain/tokens.cjs`},"./domain/topology":{import:`./dist/domain/topology.mjs`,require:`./dist/domain/topology.cjs`},"./domain/topology-snapshot":{import:`./dist/domain/topology-snapshot.mjs`,require:`./dist/domain/topology-snapshot.cjs`},"./domain/verdict-cache":{import:`./dist/domain/verdict-cache.mjs`,require:`./dist/domain/verdict-cache.cjs`},"./domain/webrtc-signaling":{import:`./dist/domain/webrtc-signaling.mjs`,require:`./dist/domain/webrtc-signaling.cjs`},"./generated/protocol":{import:`./dist/generated/protocol.mjs`,require:`./dist/generated/protocol.cjs`},"./generated/runtime":{import:`./dist/generated/runtime.mjs`,require:`./dist/generated/runtime.cjs`},"./ports/clock":{import:`./dist/ports/clock.mjs`,require:`./dist/ports/clock.cjs`},"./ports/identity":{import:`./dist/ports/identity.mjs`,require:`./dist/ports/identity.cjs`},"./ports/storage":{import:`./dist/ports/storage.mjs`,require:`./dist/ports/storage.cjs`},"./ports/transport":{import:`./dist/ports/transport.mjs`,require:`./dist/ports/transport.cjs`},"./package.json":`./package.json`},files:[`dist`,`wasm-dist`],license:`MIT`,packageManager:`pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c`,publishConfig:{provenance:!0,access:`public`},repository:{type:`git`,url:`https://github.com/ExaDev/wire-mesh.git`,directory:`ts/packages/core`},scripts:{_build:`tsdown`,"_build-wasm":`./scripts/build-threshold-wasm.sh`,"_conformance-check":`vitest run test/conformance.unit.test.ts`,_generate:`node generate.ts`,_lint:`eslint . --fix --cache --max-warnings 0`,_mutation:`stryker run stryker.config.ts`,_test:`vitest run`,_typecheck:`tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit`,build:`turbo run _build`,"build-wasm":`turbo run _build-wasm`,"conformance-check":`turbo run _conformance-check`,generate:`turbo run _generate`,lint:`turbo run _lint`,mutation:`turbo run _mutation`,prepack:`node scripts/assert-wasm-dist.ts`,test:`turbo run _test`,typecheck:`turbo run _typecheck`},type:`module`}.version,yM=`wire-mesh/version`,bM=`version.get`;function xM(e){return`verb`in e&&e.verb===bM}function SM(){return{result:`ok`,version:vM}}var CM=new Set([`device`,`addresses`,`snapshot-seconds`,fM,dM]),wM=`topology/peers`,TM=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function EM(e){for(let t of Object.keys(e)){if(CM.has(t))throw Error(`sendGossipUpdate extension key "${t}" collides with a mandatory peer-advert field`);if(t===`topology/peers`)throw Error(`sendGossipUpdate extension key "${t}" collides with a session-managed gossip field`);if(t===`wire-mesh/version`)throw Error(`sendGossipUpdate extension key "${t}" is reserved for wire-mesh-core's own self-reported version`);if(!TM.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}function DM(){let e=[],t=[];return{push(n){let r=e.shift();r===void 0?t.push(n):r(n)},stream:{[Symbol.asyncIterator](){return{next:async()=>new Promise(n=>{let r=t.shift();r===void 0?e.push(e=>{n({value:e,done:!1})}):n({value:r,done:!1})})}}}}}var OM=class extends Error{constructor(){super(`the channel's send counter is exhausted`),this.name=`ChannelExhaustedError`}};function kM(e){return{type:`handshake`,version:1,domains:[...e]}}var AM=[`core/federation`];function jM(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!AM.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function MM(e){return`data/${fO(e)}/head`}function NM(e,t){return`data/${fO(e)}/entry/${String(t)}`}async function PM(e,t){let n=await e.get(MM(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function FM(e,t,n){await e.set(MM(t),new TextEncoder().encode(String(n)))}async function IM(e,t){return PM(e,t)}async function LM(e,t){let n=await PM(e.storage,e.identity.deviceId)+1;return await e.storage.set(NM(e.identity.deviceId,n),t),await FM(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function RM(e,t,n,r){let i=[],a=async n=>{if(n>r)return;let o=await e.get(NM(t,n));o!==void 0&&(i.push(o),await a(n+1))};return await a(n),i}async function zM(e,t,n){let r=await PM(e,t.peer);if(r<=t[`from-seq`])return null;let i=Math.min(r,t[`from-seq`]+n),a=await RM(e,t.peer,t[`from-seq`]+1,i);return a.length===0?null:{type:`data-entries`,peer:t.peer,"from-seq":t[`from-seq`],entries:a}}async function BM(e,t){let n=await PM(e,t.peer);return t[`from-seq`]===n?(await MO(t.entries,async(n,r)=>{await e.set(NM(t.peer,t[`from-seq`]+1+r),n)}),await FM(e,t.peer,t[`from-seq`]+t.entries.length),{ok:!0}):{ok:!1,reason:`gap`}}async function VM(e,t,n){let r=await PM(e,t);return RM(e,t,n+1,r)}function HM(e){return e.type===`data-have`||e.type===`data-request`||e.type===`data-entries`}var UM=class extends Error{constructor(){super(`timed out waiting for pong`),this.name=`PingTimeoutError`}};function WM(){let e=[];function t(t){let n=e.findIndex(e=>e.sentAt===t);return n!==-1&&(e.splice(n,1),!0)}return{resolveOldest(t){let n=e.shift();n!==void 0&&n.resolve(t-n.sentAt)},rejectAll(t){for(let n of e.splice(0))n.reject(Error(t))},async sendAndAwait(n,r,i){let a=new Promise((t,r)=>{e.push({sentAt:n,resolve:t,reject:r})});return await r(),i===void 0?a:Promise.race([a,new Promise((e,r)=>{setTimeout(()=>{t(n)&&r(new UM)},i)})])}}}function GM(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function KM(e){let t=GM(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function qM(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return KM({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function JM(){let e=new Map;return{has:t=>e.has(fO(t)),add:t=>{e.set(fO(t),t)},remove:t=>{e.delete(fO(t))},clear:()=>{e.clear()},list:()=>[...e.values()]}}function YM(e){let t=[];return{record:n=>{t.push(n),t.length>e&&t.splice(0,t.length-e)},entries:()=>[...t]}}var XM=16,ZM=256,QM=256,$M=12,eN=4,tN=8,nN=new TextEncoder,rN=nN.encode(`wire-mesh/secure-hello/v1\0`),iN=nN.encode(`wire-mesh/secure-channel/v1\0`),aN=nN.encode(`wire-mesh/secure-data/v1\0`),oN=nN.encode(`lo-to-hi`),sN=nN.encode(`hi-to-lo`),cN={name:`ECDH`,namedCurve:`P-256`};function lN(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function uN(e,t){for(let n=0;n<Math.min(e.length,t.length);n+=1){let r=(e[n]??0)-(t[n]??0);if(r!==0)return r}return e.length-t.length}function dN(e){let t=new Uint8Array(tN);return new DataView(t.buffer).setBigUint64(0,BigInt(e),!1),t}function fN(e,t,n,r){return lN(rN,e,t,n,r)}async function pN(e,t){let n=await crypto.subtle.generateKey(cN,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.exportKey(`raw`,n.publicKey)),i=crypto.getRandomValues(new Uint8Array(XM)),a=await e.sign(fN(r,i,e.deviceId,t));return{peer:t,privateKey:n.privateKey,hello:{type:`secure-hello`,"ephemeral-key":r,nonce:i,"identity-key":e.identityKey,"to-device":t,signature:a}}}async function mN(e,t){let n=t[`identity-key`],r=await e.deriveDeviceId(n[`public-key`]);if(!NO(t[`to-device`],e.deviceId))return{ok:!1,reason:`wrong_recipient`};try{return await e.verify(n,fN(t[`ephemeral-key`],t.nonce,r,e.deviceId),t.signature)?{ok:!0,peer:{deviceId:r,identityKey:n}}:{ok:!1,reason:`bad_signature`}}catch(e){if(!(e instanceof w_))throw e;return{ok:!1,reason:e.fault===`unsupported_alg`?`unsupported_identity_alg`:`invalid_identity_key`}}}var hN=2**53-1;function gN(e){if(!Number.isSafeInteger(e)||e<0)throw RangeError(`firstSendCounter must be a non-negative safe integer`)}function _N(e){if(e>hN)throw new OM;return{counter:e,next:e+1}}function vN(e){let t=new Uint8Array($M);return t.set(dN(e),eN),t}function yN(e,t,n){return lN(aN,e,t,dN(n))}async function bN({secret:e,salt:t,low:n,high:r,label:i}){let a=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(t),info:lN(iN,n,r,i)},a,{name:`AES-GCM`,length:ZM},!1,[`encrypt`,`decrypt`])}async function xN(e,{pending:t,remote:n,peer:r,firstSendCounter:i=0}){gN(i);let a;try{let e=await crypto.subtle.importKey(`raw`,Uint8Array.from(n[`ephemeral-key`]),cN,!1,[]);a=new Uint8Array(await crypto.subtle.deriveBits({name:`ECDH`,public:e},t.privateKey,QM))}catch{return}let o=uN(e.deviceId,r.deviceId)<0,s=o?e.deviceId:r.deviceId,c=o?r.deviceId:e.deviceId,l=lN(o?t.hello.nonce:n.nonce,o?n.nonce:t.hello.nonce),u=await bN({secret:a,salt:l,low:s,high:c,label:oN}),d=await bN({secret:a,salt:l,low:s,high:c,label:sN}),f=o?u:d,p=o?d:u,m=i,h=-1,g=Promise.resolve(),_=Promise.resolve();async function v(t,n){return{type:`secure-data`,counter:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:vN(n),additionalData:yN(e.deviceId,r.deviceId,n)},f,Xj(t)))}}async function y(t){if(t.counter<=h)return{ok:!1,reason:`replayed`};let n;try{n=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:vN(t.counter),additionalData:yN(r.deviceId,e.deviceId,t.counter)},p,Uint8Array.from(t.ciphertext)))}catch{return{ok:!1,reason:`unauthentic`}}h=Math.max(h,t.counter);let i=eM(n);return i===null?{ok:!1,reason:`undecodable`}:{ok:!0,frame:i}}let b=async e=>{let t=_.then(async()=>y(e));return _=t.catch(()=>void 0),t};return{peer:r,seal:async e=>{let t=_N(m),n=t.counter;m=t.next;let r=g.then(async()=>v(e,n));return g=r.catch(()=>void 0),r},open:async e=>{let t=await b(e);return t.ok?t.frame:void 0},openOutcome:b}}function SN(e,t,n={}){n.firstSendCounter!==void 0&&gN(n.firstSendCounter);let r=new Map;function i(n){let i=fO(n),a=Promise.withResolvers(),o=pN(e,n),s={status:`awaiting`,pending:o,settle:a};return r.set(i,s),o.then(async({hello:e})=>t(n,e)).catch(e=>{a.reject(e instanceof Error?e:Error(String(e))),r.get(i)===s&&r.delete(i)}),s}return{ensure:async e=>{let t=r.get(fO(e));return t?.status===`established`?t.channel:(t??i(e)).settle.promise},applyHello:async t=>{let a;try{a=await mN(e,t)}catch(e){n.onFault?.(e);return}if(!a.ok)return;let o=fO(a.peer.deviceId),s=r.get(o),c=s?.status===`awaiting`?s:i(a.peer.deviceId),l=await xN(e,{pending:await c.pending,remote:t,peer:a.peer,...n.firstSendCounter===void 0?{}:{firstSendCounter:n.firstSendCounter}});if(l===void 0){c.settle.reject(Error(`the peer sent an unusable ephemeral key`)),r.get(o)===c&&r.delete(o);return}let u={...l,seal:async e=>{try{return await l.seal(e)}catch(e){let t=r.get(o);throw e instanceof OM&&t?.status===`established`&&t.channel===u&&r.delete(o),e}}};r.set(o,{status:`established`,channel:u}),c.settle.resolve(u)},open:async(e,t)=>{if(t===void 0)return;let n=r.get(fO(t));if(n?.status!==`established`)return;let i=await n.channel.open(e);return i===void 0?void 0:{frame:i,from:n.channel.peer.deviceId}},reset:e=>{for(let t of r.values())t.status===`awaiting`&&t.settle.reject(Error(e));r.clear()},forget:e=>{let t=fO(e),n=r.get(t);n?.status===`awaiting`&&n.settle.reject(Error(`the relay pairing was lost`)),r.delete(t)}}}var CN=1e3,wN=3e3;function TN(e,t,n,r,i,a=[],o,s,c){let l=null,u={status:`idle`},d={status:`pending`},f=new Map,p=YM(256),m=p.record,h=!1,g=DM(),_=null,v=null,y=0,b=null,x=0,S=JM(),C=qM({getAuthenticatedPeer:()=>l?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>S.list()}),w=new Map,T=SN(e,async(e,t)=>{if(l===null)throw Error(`not connected`);m({direction:`sent`,frame:t}),await l.send(Zj(t,e)),M()},{onFault:c}),E=DM(),D=DM(),O=DM(),k=DM(),A=WM();function j(){return{state:u,directory:[...f.values()],frameLog:p.entries()}}function M(){g.push(j())}function N(e){for(let t of w.values())t.reject(Error(e));w.clear()}function ee(e,t,n){let r=x;x+=1;let i=n??b;return{type:`manage-request`,"request-id":r,command:e,scope:t,...i===null?{}:{token:i}}}function P(){if(l===null||u.status!==`connected`)throw Error(`not connected`);return l}async function F(e,t,n){if(l===null)throw Error(`not connected`);if(!t){await l.send(e);return}if(n===void 0)throw Error(`a relayed frame needs the device it is for`);let r=await(await T.ensure(n)).seal(e);await l.send(Zj(r,n))}function I(e,t){let n=e[`request-id`],r=w.get(n);if(r===void 0)return;let i=r.expectedFrom;(i===void 0?t===void 0:t!==void 0&&fO(t)===fO(i))&&(w.delete(n),r.resolve(e.outcome))}function te(e,t){let n=e[`request-id`],r=t?.fromDevice,i=t?.toDevice,a={requestId:n,command:e.command,scope:e.scope,...e.token===void 0?{}:{token:e.token},...r===void 0?{}:{fromDevice:r},...i===void 0?{}:{toDevice:i},respond:async e=>{let i={type:`manage-response`,"request-id":n,outcome:e};m({direction:`sent`,frame:i}),await F(i,t!==void 0,r),M()}};if(xM(e.command.params)){a.respond(SM()).catch(()=>void 0);return}E.push(a)}async function ne(n){if(n.type===`relay-data`){let e=eM(n.payload);if(e?.type===`secure-hello`){m({direction:`received`,frame:e}),await T.applyHello(e);return}if(e?.type===`secure-data`){let t=await T.open(e,n[`from-device`]);t?.frame.type===`manage-response`?(m({direction:`received`,frame:t.frame}),I(t.frame,t.from)):t!==void 0&&HM(t.frame)?(m({direction:`received`,frame:t.frame}),k.push({frame:t.frame,fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}})):t?.frame.type===`manage-request`&&(m({direction:`received`,frame:t.frame}),te(t.frame,{fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}}));return}m({direction:`received`,frame:n});return}if(m({direction:`received`,frame:n}),n.type===`handshake`)L(n);else if(n.type===`gossip`){let t=await Promise.all(n.peers.map(async t=>gM(e,t)));for(let e of n.peers.filter((e,n)=>t[n]===!0)){let t=fO(e.device),n=f.get(t)?.advert[`snapshot-seconds`];n!==void 0&&e[`snapshot-seconds`]<n||(f.set(t,{device:e.device,advert:e}),C.recordAdvert(e.device),i?.(e))}}else if(n.type===`relay-inbound`)S.add(n[`source-device`]);else if(n.type===`manage-response`)I(n);else if(n.type===`manage-request`)te(n);else if(n.type===`pong`)A.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)D.push(e);else HM(n)?k.push({frame:n}):n.type===`coordinator`&&O.push(n)}async function re(e){if(l===null)throw Error(`not connected`);if(S.has(e))return;let t={type:`relay-connect`,"target-device":e};m({direction:`sent`,frame:t}),await l.send(t),S.add(e),M()}let ie=kM([]);function L(e){if(d.status!==`pending`)return;_!==null&&(clearTimeout(_),_=null);let t=jM(ie,e);d=t.ok?{status:`negotiated`,version:t.version,sharedDomains:t.sharedDomains}:{status:`rejected`,reason:`no shared domains or version`},u.status===`connected`&&(u={...u,handshake:d})}function R(e,t){return e.redialAddress?.()??t}function ae(e,t,r){if(!h){if(N(`disconnected before a response arrived`),A.rejectAll(`disconnected before a pong arrived`),n!==null&&y<n.maxAttempts){y+=1;let i=y;u={status:`reconnecting`,address:t,attempt:i,reason:e},M(),v=setTimeout(()=>{v=null,le(t,r).catch(e=>{ae(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}u={status:`closed`,address:t,reason:e},M()}}async function oe(e,t,n){let r=!1;for await(let t of e.receive()){if(h)return;r||(r=!0,y=0),await ne(t),await o?.(e,t),M()}s?.(e),u.status===`connected`&&ae(`node closed the connection`,R(e,t),n)}async function se(n){return n!==void 0&&EM(n),{type:`gossip`,peers:[await hM(e,{...n,[yM]:vM,[wM]:C.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/CN),"identity-key":e.identityKey})]}}async function ce(e,t,n){l=e,T.reset(`the connection changed before the channel was ready`),S.clear(),ie=kM(n),d={status:`pending`},u={status:`connected`,address:t,handshake:d},m({direction:`sent`,frame:ie}),await l.send(ie),M();let r=await se();m({direction:`sent`,frame:r}),await l.send(r),M(),_=setTimeout(()=>{_=null,d.status===`pending`&&(d={status:`unanswered`},u.status===`connected`&&(u={...u,handshake:d}),M())},wN),oe(l,t,n).catch(r=>{u.status===`connected`&&ae(r instanceof Error?r.message:String(r),R(e,t),n)})}async function le(e,t){if(r===null)throw Error(`this session is already connected; there is nothing to dial`);_!==null&&(clearTimeout(_),_=null),u={status:`connecting`,address:e},M();let n=await r(e);if(h){await n.close();return}await ce(n,e,t)}return{wireUpConnection:ce,session:{events:g.stream,incomingManageRequests:E.stream,revocationAnnouncements:D.stream,coordinatorFrames:O.stream,incomingDataFrames:k.stream,async connect(e,t){if(l!==null)throw Error(`a session connects once; create a new one to reconnect`);y=0,await le(e,t).catch(n=>{throw ae(n instanceof Error?n.message:String(n),e,t),n})},async sendPing(){let e=P(),t={type:`ping`};m({direction:`sent`,frame:t}),await e.send(t),M()},async sendPingMeasureRtt(e){let n=P();return A.sendAndAwait(t.now(),async()=>{let e={type:`ping`};m({direction:`sent`,frame:e}),await n.send(e),M()},e)},setToken(e){b=e},async sendManageRequest(e,t,n,r,i){P(),n!==void 0&&await re(n);let a=ee(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{w.set(o,{resolve:e,reject:t,expectedFrom:n})});m({direction:`sent`,frame:a});let c=(async()=>{try{await F(a,n!==void 0,n)}catch(e){throw w.delete(o),s.catch(()=>void 0),e}return M(),s})();if(i===void 0)return c;let l;return Promise.race([c,new Promise(e=>{l=setTimeout(()=>{w.delete(o)&&(n!==void 0&&(S.remove(n),T.forget(n)),e({result:`error`,code:`timeout`}))},i)})]).finally(()=>{clearTimeout(l)})},async sendRevocationAnnounce(e){P();let t={type:`revocation-announce`,entries:[...e]};m({direction:`sent`,frame:t}),await F(t,!1),M()},async sendCoordinatorClaim(e){P();let t={...e};m({direction:`sent`,frame:t}),await F(t,!1),M()},async sendGossipUpdate(e){P();let t=await se(e);m({direction:`sent`,frame:t}),await F(t,!1),M()},getTopologyPeers(){return C.compute()},async sendDataFrame(e,t){P(),t!==void 0&&await re(t),m({direction:`sent`,frame:e}),await F(e,t!==void 0,t),M()},async close(){h=!0,_!==null&&(clearTimeout(_),_=null),v!==null&&(clearTimeout(v),v=null),N(`connection closed before a response arrived`),T.reset(`the session closed before the channel was ready`),A.rejectAll(`connection closed before a pong arrived`),l!==null&&await l.close(),(u.status===`connected`||u.status===`connecting`||u.status===`reconnecting`)&&(u={status:`closed`,address:u.address,reason:`closed by you`}),M()}}}}function EN(e,t,n={now:()=>Date.now()},r=null,i=[],a,o,s){let{session:c}=TN(t,n,r,async t=>e.connect(t),a,i,o,void 0,s);return c}async function DN(e,t,n,r={}){let i=r.clock??{now:()=>Date.now()},a=null,o=new Promise(e=>{a=e}),s=!1,{session:c,wireUpConnection:l}=TN(t,i,null,null,e=>{s||(s=!0,a?.(e.device)),r.onPeerAdvert?.(e)},r.addresses,r.onFrame,r.onSessionEnd);return await l(e,r.label??`accepted`,n),{...c,peerDeviceId:o}}function ON(e){return e instanceof Error?e:Error(String(e))}function kN(e){let t=fO(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[ON(n)]);return}if(!n){e.onExpansionDeclined?.(t);return}await i(t,t.addresses,[])}async function i(t,n,r){let[a,...o]=n;if(a===void 0){e.onExpansionFailed?.(t,r);return}try{let n=await e.dial(a);e.onExpanded(t,a,n)}catch(e){await i(t,o,[...r,ON(e)])}}return{considerAdvert(e){let i=fO(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var AN=/^[0-9a-f]{64}$/,jN=/^[A-Za-z0-9_-]+$/;function MN(e,t){if(!AN.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function NN(e,t){if(MN(e,`a`),MN(t,`b`),e===t)throw Error(`a DM room path cannot name the same device twice (${e})`);return e<t?`${e}+${t}`:`${t}+${e}`}function PN(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(AN.test(n)&&jN.test(r))return{kind:`owner-named`,owner:n,localName:r}}let n=e.indexOf(`+`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1);if(AN.test(t)&&AN.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var FN=5,IN=1e3,LN=3e4,RN=2,zN={maxAttempts:FN,delayMs:e=>Math.min(IN*RN**(e-1),LN)},BN=4,VN=1024,HN=VN*VN*100,UN=new Uint8Array(BN);function WN(e){let t=Mg(e,hg),n=new Uint8Array(BN+t.length);return new DataView(n.buffer).setUint32(0,t.length),n.set(t,BN),n}function GN(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function KN(e){return{[Symbol.asyncIterator]:()=>({next:async()=>{let t=await e.read();return t.done?{done:!0,value:void 0}:{done:!1,value:t.value}}})}}async function*qN(e){let t=new Uint8Array;try{for await(let n of KN(e))for(t=GN(t,n);t.length>=BN;){let e=new DataView(t.buffer,t.byteOffset).getUint32(0);if(e>104857600)throw Error(`frame of ${String(e)} bytes exceeds the ${String(HN)}-byte limit`);if(t.length<BN+e)break;if(e===0){t=t.slice(BN);continue}let n=t.slice(BN,BN+e);t=t.slice(BN+e);let r=NE.safeParse(b_(n,x_));r.success&&(yield r.data)}}catch(t){throw await e.cancel(t),t}}function JN(e,t={opened:!1}){let n=e.writable.getWriter(),r=e.readable.getReader(),i=qN(r),a=t.opened?n.write(UN):Promise.resolve();return a.catch(()=>void 0),{send:async e=>{await a,await n.write(WN(e))},receive:()=>i,close:async()=>{await Promise.allSettled([n.close(),r.cancel()])}}}var YN=`/wire-mesh`,XN=8e3,ZN=`the web console is a client only: it cannot listen`;async function QN(e){let t=[],n=async()=>{let r=await e.read();if(!r.done){if(!(r.value instanceof Uint8Array))throw Error(`the announcement carried something other than bytes`);t.push(r.value),await n()}};return await n(),t}async function $N(e){let t=e.incomingUnidirectionalStreams.getReader(),n=await t.read();if(t.releaseLock(),n.done)throw Error(`the node opened no announcement stream`);let r=n.value;if(!(r instanceof ReadableStream))throw Error(`the announcement stream is not a readable stream`);let i=await QN(r.getReader()),a=new Uint8Array(i.reduce((e,t)=>e+t.length,0)),o=0;for(let e of i)a.set(e,o),o+=e.length;return q_(a)}async function eP(e){let t,n=new Promise(e=>{t=setTimeout(()=>{e(`timed out`)},XN)});try{let t=await Promise.race([e.createBidirectionalStream(),n]);if(t===`timed out`)throw e.close(),Error(`this browser cannot open a stream to this node: it is waiting for flow-control credit the node never grants, which is how Safari behaves with the node's HTTP/3 library (fails-components/webtransport#490); reach the node over wss:// instead`);return t}finally{clearTimeout(t)}}function tP(e){return{async connect(t){if(typeof WebTransport>`u`)throw Error(`this browser does not support WebTransport`);let{url:n,sha256:r}=W_(t),i=new URL(n).host,a=J_(r,await e.recall(i)),o=new WebTransport(new URL(YN,n).toString(),{serverCertificateHashes:a.map(e=>({algorithm:`sha-256`,value:e}))});await o.ready;let s=JN(await eP(o),{opened:!0});o.closed.catch(()=>void 0).then(async()=>s.close());let c;return $N(o).then(async t=>{c=t,await e.remember(i,t)}).catch(()=>void 0),{...s,redialAddress:()=>c===void 0?t:X_(t,c)}},async listen(){return Promise.reject(Error(ZN))}}}var nP=1e3,rP=1002,iP=`the web console is a client only: it cannot listen`;function aP(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary WebSocket message`)),e.close(rP,`protocol error`);return}let i;try{i=$j(r.data)}catch(t){if(t instanceof Qj)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close(rP,`protocol error`);return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return r?Promise.reject(Error(`connection is closed`)):(e.send(Xj(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(nP),Promise.resolve()}}}function oP(){return{async connect(e){let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return Promise.reject(Error(`not a WebSocket address: ${e}`));let n=new WebSocket(t);return n.binaryType=`arraybuffer`,new Promise((e,r)=>{n.addEventListener(`open`,()=>{e()}),n.addEventListener(`error`,()=>{r(Error(`connect to ${t.toString()} failed`))})}).then(()=>aP(n))},async listen(){return Promise.reject(Error(iP))}}}function sP(e){let t=oP(),n=tP(e);return{connect:async e=>U_(e)?n.connect(e):t.connect(e),listen:async(e,n)=>t.listen(e,n)}}var cP=[{urls:`stun:stun.cloudflare.com:3478`}],lP=`webrtc:signal`,uP={kind:`node`};function dP(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function fP(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function pP(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function mP(e,t){return{verb:lP,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function hP(e,t){return{verb:lP,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function gP(e,t){return{verb:lP,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function _P(e){return{candidate:e.candidate,...e.sdpMid===null?{}:{"sdp-mid":e.sdpMid},...e.sdpMLineIndex===null?{}:{"sdp-m-line-index":e.sdpMLineIndex},...e.usernameFragment===null?{}:{"username-fragment":e.usernameFragment}}}function vP(e){return{candidate:e.candidate,...e[`sdp-mid`]===void 0?{}:{sdpMid:e[`sdp-mid`]},...e[`sdp-m-line-index`]===void 0?{}:{sdpMLineIndex:e[`sdp-m-line-index`]},...e[`username-fragment`]===void 0?{}:{usernameFragment:e[`username-fragment`]}}}function yP(){let e=0;return()=>{let t=e;return e+=1,t}}async function bP(e,t){if(e.token===void 0)return!1;let n=await ZA(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===uP.kind:!1}function xP(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary data channel message`)),e.close();return}let i;try{i=$j(r.data)}catch(t){if(t instanceof Qj)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close();return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return e.readyState===`open`?(e.send(Xj(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var SP=`wire-mesh`;function CP(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function wP(e,t){e.addEventListener(`open`,()=>{t(xP(e))},{once:!0})}var TP=16,EP=36e5;async function DP(e,t){let n=new Uint8Array(TP);crypto.getRandomValues(n);let r=await aj({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:lP,scope:uP,expires:t.now()+EP});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function OP(e,t){let n={identity:t.identity,clock:t.clock,revocation:t.revocation},r=new Map,i=new Map,a=yP();async function o(t,n){let r=gP(t,n===null?void 0:_P(n));await e.sendManageRequest(r,uP,i.get(t))}async function s(a,s){if(!await bP(a,n)){await a.respond({result:`error`,code:`unauthorized`});return}let c=s[`negotiation-id`];i.set(c,a.fromDevice);let l=new RTCPeerConnection({iceServers:[...t.iceServers]});r.set(c,l),CP(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{let{channel:n}=e;n.binaryType=`arraybuffer`,wP(n,t.onIncomingConnection)}),await l.setRemoteDescription({type:`offer`,sdp:s.sdp});let u=await l.createAnswer();await l.setLocalDescription(u),await a.respond({result:`ok`}),await e.sendManageRequest(hP(c,u.sdp??``),uP,a.fromDevice)}async function c(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.setRemoteDescription({type:`answer`,sdp:t.sdp}),await e.respond({result:`ok`})}async function l(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.addIceCandidate(t.candidate===void 0?null:vP(t.candidate)),await e.respond({result:`ok`})}async function u(){for await(let t of e.incomingManageRequests){if(t.command.verb!==`webrtc:signal`)continue;let e=t.command.params;dP(e)?await s(t,e):fP(e)?await c(t,e):pP(e)&&await l(t,e)}}return u(),{async initiate(n){let s=a();i.set(s,n);let c=new RTCPeerConnection({iceServers:[...t.iceServers]});r.set(s,c),CP(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(SP);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{wP(l,e),l.addEventListener(`error`,()=>{t(Error(`data channel failed to open`))},{once:!0})}),d=await c.createOffer();await c.setLocalDescription(d);let f=await e.sendManageRequest(mP(s,d.sdp??``),uP,n,await DP(t.identity,t.clock));if(f.result===`error`)throw r.delete(s),i.delete(s),c.close(),Error(`webrtc offer rejected: ${f.code}`);return u}}}var kP={frames:0,stage:void 0,handshake:void 0,issued:0,seen:new Set};function AP(e){return fO(e)}function jP(e,t){if(t.type===`gossip`)return e===`received`?t.peers.map(e=>({kind:`peer`,summary:`Peer seen:`,peer:AP(e.device)})):[{kind:`peer`,summary:`Advertised this console to the node`,peer:void 0}];if(t.type===`relay-connect`)return[{kind:`pairing`,summary:`Asked the node to pair this console with`,peer:AP(t[`target-device`])}];if(t.type===`relay-inbound`)return[{kind:`pairing`,summary:`Pairing established with`,peer:AP(t[`source-device`])}];if(t.type===`relay-data`){let n=e===`sent`?t[`to-device`]:t[`from-device`];return[{kind:`relay`,summary:e===`sent`?`Relayed a message to`:`Relayed message received from`,peer:n===void 0?void 0:AP(n)}]}return t.type===`close`?[{kind:`connection`,summary:`The node closed the connection`,peer:void 0}]:[]}function MP(e){return e.status===`reconnecting`?`reconnecting:${String(e.attempt)}`:e.status}function NP(e,t,n){let r=[],i=e=>{r.push({kind:`connection`,summary:e,peer:void 0})};if(MP(t)!==e.stage)switch(t.status){case`connecting`:i(`Connecting to ${t.address}`);break;case`connected`:i(`Connected to ${t.address}`);break;case`reconnecting`:i(`${e.stage?.startsWith(`reconnecting`)===!0?`Retry failed`:`Connection lost`} (${t.reason}); retrying, attempt ${String(t.attempt)}`);break;case`closed`:i(`Closed (${t.reason})`)}return t.status===`connected`&&n!==e.handshake&&(t.handshake.status===`negotiated`?i(`Handshake negotiated: ${t.handshake.sharedDomains.join(`, `)}`):t.handshake.status===`unanswered`?i(`The node does not answer handshakes (a relay-only node)`):t.handshake.status===`rejected`&&i(`Handshake rejected (${t.handshake.reason})`)),r}function PP(e){return e.status===`connected`?e.handshake.status:void 0}function FP(e,t,n){let r=PP(t.state),i=new Set(e.seen),a=[...NP(e,t.state,r),...t.frameLog.slice(e.frames).flatMap(e=>jP(e.direction,e.frame)).filter(e=>e.kind!==`peer`||e.peer===void 0||!i.has(e.peer)&&(i.add(e.peer),!0))].map((t,r)=>({...t,key:`activity-${String(e.issued+r)}`,at:n}));return{tracker:{frames:t.frameLog.length,stage:MP(t.state),handshake:r,issued:e.issued+a.length,seen:i},entries:a}}function IP(e){return e.map(e=>({key:`certificate-${e.key}`,at:e.at,kind:`certificate`,summary:`Certificate changed: ${e.node} announced certificates unlike the remembered ones`,peer:void 0}))}function LP(e,t){let[n,r]=(0,k.useState)({event:void 0,activity:[],statusSince:void 0});return(0,k.useEffect)(()=>{let n={cancelled:!1};return(async()=>{let i=kP;for await(let a of e.events){if(n.cancelled)return;let e=t.now(),o=FP(i,a,e),s=o.tracker.stage!==i.stage;i=o.tracker,r(t=>({event:a,activity:[...t.activity,...o.entries].slice(-500),statusSince:s?e:t.statusSince}))}})(),()=>{n.cancelled=!0}},[e,t]),n}var RP=`local-network-access`,zP=4,BP=255,VP=8,HP=32,UP=[`10.0.0.0/8`,`127.0.0.0/8`,`172.16.0.0/12`,`192.168.0.0/16`,`169.254.0.0/16`,`100.64.0.0/10`];function WP(e){let t=e.split(`.`);if(t.length!==zP)return;let n=0;for(let e of t){let t=/^\d{1,3}$/.test(e)?Number(e):NaN;if(!(t<=BP))return;n=n*2**VP+t}return n}function GP(e,t){let[n,r]=t.split(`/`),i=WP(n??``),a=Number(r);if(i===void 0)return!1;let o=2**(HP-a);return Math.floor(e/o)===Math.floor(i/o)}function KP(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase(),n=WP(t);return n===void 0?t.includes(`:`)?t===`::1`||/^f[cd]/.test(t)||/^fe[89ab]/.test(t):t===`localhost`||t.endsWith(`.local`)||!t.includes(`.`):UP.some(e=>GP(n,e))}function qP(e){try{return new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`ws://${e}`).hostname}catch{return}}function JP(e){return typeof e==`object`&&!!e&&`name`in e&&typeof e.name==`string`}function YP(){if(`permissions`in navigator)return{query:async e=>{if(!JP(e))throw TypeError(`not a permission descriptor`);return navigator.permissions.query(e)}}}async function XP(e,t,n){let r=qP(e);if(r!==void 0&&KP(r)&&!KP(t)&&n!==void 0)try{let{state:e}=await n.query({name:RP});return e===`denied`?`Your browser blocked this page from reaching ${r}, a device on your local network. Allow "Local network access" for this site in the browser's site settings (the icon left of the address), then connect again.`:void 0}catch{return}}var ZP=(0,k.createContext)(void 0);function QP(){let e=(0,k.useContext)(ZP);if(e===void 0)throw Error(`usePeerNames must be used inside PeerNamesProvider`);return e}var $P={pongTimeoutMs:5e3,intervalMs:15e3};function eF(e,t,n=$P){let[r,i]=(0,k.useState)([]),[a,o]=(0,k.useState)(!1),s=(0,k.useRef)(!1),c=(0,k.useCallback)(()=>{e.sendPingMeasureRtt(n.pongTimeoutMs).then(e=>{s.current=!0,o(!1),i(t=>[...t,e].slice(-40))},e=>{e instanceof UM&&(o(!s.current),i(e=>[...e,void 0].slice(-40)))})},[e,n.pongTimeoutMs]);return(0,k.useEffect)(()=>{if(!t||a)return;c();let e=setInterval(c,n.intervalMs);return()=>{clearInterval(e)}},[t,a,c,n.intervalMs]),{samples:r,unresponsive:a,probe:c}}function tF(e,t,n){let[r,i]=(0,k.useState)(()=>e.now());return(0,k.useEffect)(()=>{if(!t)return;let r=setInterval(()=>{i(e.now())},n);return()=>{clearInterval(r)}},[e,t,n]),r}var nF=1e3,rF=60,iF=60,aF=24;function oF(e){let t=Math.floor(e/nF);if(t<1)return;if(t<rF)return`${String(t)} s`;let n=Math.floor(t/rF);if(n<iF)return`${String(n)} min`;let r=Math.floor(n/iF);return r<aF?`${String(r)} h`:`${String(Math.floor(r/aF))} d`}function sF(e){let t=oF(e);return t===void 0?`just now`:`${t} ago`}function cF(e){let t=oF(e);return t===void 0?`in under a second`:`in ${t}`}function lF(e){return`${String(Math.max(0,Math.ceil(e/nF)))} s`}function uF(e,t,n){if(n.length===0)return{kind:`first-use`,node:e,presented:t};let r=new Set(n),i=t.filter(e=>r.has(e));return i.length>0?{kind:`known`,node:e,trusted:i}:{kind:`changed`,node:e,remembered:n,presented:t}}function dF(e){if(U_(e))try{let{url:t,sha256:n}=W_(e);return{node:new URL(t).host,sha256:[...n]}}catch{return}}function fF(e,t){return{recall:e.recall,remember:async(n,r)=>{let i=uF(n,r.map(e=>dO(e)),(await e.recall(n)).map(e=>dO(e)));await e.remember(n,r),i.kind===`changed`&&t({node:n,remembered:i.remembered,presented:i.presented})}}}var pF=2;function mF(e){let t=[];for(let n=0;n<e.length;n+=pF)t.push(e.slice(n,n+pF).toUpperCase());return t.join(`:`)}var hF=/^([a-z][a-z0-9+.-]*):\/\//i,gF={ws:`ws:`,wss:`wss:`,http:`ws:`,https:`wss:`};function _F(e){if(U_(e))return e;let t=hF.exec(e);if(t===null)return`ws://${e}`;let n=gF[t[1]?.toLowerCase()??``];if(n===void 0)return e;let r=new URL(e);return r.protocol=n,r.hash=``,r.toString()}function vF({deviceHex:e}){return(0,z.jsx)(z.Fragment,{children:Lj(QP().labelOf(e))})}function yF(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function bF({activity:e,frameLog:t}){let[n,r]=(0,k.useState)(!1);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(um,{mt:`md`,label:`Show raw frames`,checked:n,onChange:e=>{r(e.currentTarget.checked)}}),n?(0,z.jsx)(km.ScrollContainer,{minWidth:0,h:384,"data-testid":`frame-log`,children:(0,z.jsxs)(km,{children:[(0,z.jsx)(km.Thead,{children:(0,z.jsxs)(km.Tr,{children:[(0,z.jsx)(km.Th,{children:`direction`}),(0,z.jsx)(km.Th,{children:`frame`})]})}),(0,z.jsx)(km.Tbody,{children:t.map((e,t)=>(0,z.jsxs)(km.Tr,{children:[(0,z.jsx)(km.Td,{children:e.direction}),(0,z.jsx)(km.Td,{children:yF(e.frame)})]},t))})]})}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`md`,children:`Activity`}),e.length===0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Nothing has happened yet.`}):(0,z.jsx)(km.ScrollContainer,{minWidth:0,h:384,"data-testid":`activity-log`,children:(0,z.jsx)(km,{children:(0,z.jsx)(km.Tbody,{children:[...e].reverse().map(e=>(0,z.jsxs)(km.Tr,{children:[(0,z.jsx)(km.Td,{children:new Date(e.at).toLocaleTimeString()}),(0,z.jsxs)(km.Td,{children:[e.summary,e.peer!==void 0&&(0,z.jsxs)(z.Fragment,{children:[` `,(0,z.jsx)(vF,{deviceHex:e.peer})]})]})]},e.key))})})})]})]})}var xF=160,SF=32,CF=3,wF=2,TF=26;function EF(e){let t=e.at(-1);return t===void 0?e.length===0?`No round trips measured yet`:`Last ping got no pong`:`Round trip ${String(Math.round(t))} ms`}function DF({samples:e}){let t=e.filter(e=>e!==void 0),n=Math.max(1,...t),r=xF/39,i=(40-e.length)*r,a=e.map((e,t)=>({x:i+t*r,y:e===void 0?void 0:CF+TF*(1-e/n)})),o=a.filter(e=>e.y!==void 0).map(e=>`${e.x.toFixed(1)},${String(e.y)}`).join(` `);return(0,z.jsxs)(`div`,{"data-testid":`rtt-sparkline`,children:[(0,z.jsxs)(`svg`,{role:`img`,"aria-label":EF(e),width:xF,height:SF,viewBox:`0 0 ${String(xF)} ${String(SF)}`,children:[(0,z.jsx)(`polyline`,{points:o,fill:`none`,stroke:`currentColor`,strokeWidth:1.5}),a.map(e=>e.y===void 0?null:(0,z.jsx)(`circle`,{cx:e.x,cy:e.y,r:wF,fill:`currentColor`},e.x)),a.filter(e=>e.y===void 0).map(e=>(0,z.jsx)(`line`,{x1:e.x,x2:e.x,y1:21,y2:29,stroke:`var(--mantine-color-red-6)`,strokeWidth:2},e.x))]}),(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:EF(e)})]})}function OF({state:e,statusSince:t,now:n,policy:r}){let i=t===void 0?void 0:t+r.delayMs(e.attempt),a=i===void 0?0:i-n;return(0,z.jsxs)(U,{size:`sm`,c:`orange`,"data-testid":`reconnect-status`,children:[a>0?`Retrying in ${lF(a)}`:`Retrying now`,` `,`(attempt `,e.attempt,` of `,r.maxAttempts,`). Last failure:`,` `,e.reason]})}function kF({state:e,statusSince:t,now:n,policy:r,health:i}){return e.status===`reconnecting`?(0,z.jsx)(OF,{state:e,statusSince:t,now:n,policy:r}):e.status===`connected`?(0,z.jsxs)(pl,{align:`flex-end`,gap:`md`,mb:`sm`,children:[(0,z.jsx)(DF,{samples:i.samples}),i.unresponsive&&(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:`This node does not answer pings, so round trips are not measured automatically.`})]}):null}function AF(e){e?.focus()}function jF({deviceHex:e}){let t=QP(),n=t.labelOf(e),[r,i]=(0,k.useState)(void 0);return r===void 0?(0,z.jsxs)(pl,{gap:`xs`,wrap:`nowrap`,children:[(0,z.jsxs)(`div`,{children:[n.source===`self`&&(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:`calls itself`}),(0,z.jsx)(U,{size:`sm`,fw:n.source===`petname`?`bold`:`normal`,fs:n.source===`self`?`italic`:`normal`,ff:n.source===`id`?`monospace`:`text`,children:n.primary}),n.matchesPetname&&(0,z.jsx)(_d,{size:`xs`,color:`orange`,variant:`light`,children:`same as a name you set`}),n.secondary!==void 0&&(0,z.jsx)(U,{size:`xs`,c:`dimmed`,ff:n.source===`self`?`monospace`:`text`,children:n.secondary})]}),(0,z.jsx)(zd,{value:e,children:({copied:e,copy:t})=>(0,z.jsx)(Zp,{label:e?`Copied`:`Copy device id`,children:(0,z.jsx)(rl,{size:`sm`,variant:`subtle`,"aria-label":`Copy device id of ${n.primary}`,onClick:t,children:`⧉`})})}),(0,z.jsx)(rl,{size:`sm`,variant:`subtle`,"aria-label":`Rename ${n.primary}`,onClick:()=>{i(t.petnameOf(e)??``)},children:`✎`})]}):(0,z.jsx)(`form`,{onSubmit:n=>{n.preventDefault(),t.rename(e,r).then(()=>{i(void 0)})},children:(0,z.jsxs)(pl,{gap:`xs`,wrap:`nowrap`,children:[(0,z.jsx)(Am,{size:`xs`,"aria-label":`Petname for ${n.primary}`,value:r,ref:AF,onChange:e=>{i(e.currentTarget.value)}}),(0,z.jsx)(rl,{type:`submit`,size:`sm`,"aria-label":`Save petname`,children:`✓`}),(0,z.jsx)(rl,{size:`sm`,variant:`subtle`,"aria-label":`Cancel rename`,onClick:()=>{i(void 0)},children:`×`})]})})}var MF=`q7ltm10`,NF=`q7ltm11`;function PF({columns:e,rows:t}){return(0,z.jsxs)(km,{striped:!0,className:NF,children:[(0,z.jsx)(km.Thead,{role:`rowgroup`,children:(0,z.jsx)(km.Tr,{role:`row`,children:e.map(e=>(0,z.jsx)(km.Th,{role:`columnheader`,children:e.headerless===!0?null:e.label},e.label))})}),(0,z.jsx)(km.Tbody,{role:`rowgroup`,children:t.map(t=>(0,z.jsx)(km.Tr,{role:`row`,children:e.map((e,n)=>(0,z.jsx)(km.Td,{role:`cell`,"data-label":e.label,children:t.cells[n]},e.label))},t.key))})]})}var FF=16,IF=1e3;function LF(e){let t=``;for(let n of e)t+=n.toString(FF).padStart(2,`0`);return t}function RF(e){if(e.state.status!==`connected`)return``;switch(e.state.handshake.status){case`pending`:return` · handshake pending`;case`negotiated`:return` · v${String(e.state.handshake.version)} · ${e.state.handshake.sharedDomains.join(`, `)}`;case`unanswered`:return` · handshake unanswered (relay-only node?)`;case`rejected`:return` · handshake rejected (${e.state.handshake.reason})`}return``}function zF(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${RF(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}var BF=1e3,VF=[{label:`device`},{label:`addresses`},{label:`advertised`},{label:`actions`,headerless:!0}];function HF({address:e,session:t,clock:n,reconnectPolicy:r,certificateChanges:i,onClose:a,onMessagePeer:o,pageHost:s=window.location.hostname,permissions:c=YP()}){let{event:l,activity:u,statusSince:d}=LP(t,n),f=l?.state.status===`reconnecting`||l?.state.status===`closed`,[p,m]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{let t={value:!0};return f&&XP(e,s,c).then(n=>{t.value&&m({address:e,message:n})}),()=>{t.value=!1}},[f,e,s,c]);let h=f&&p?.address===e?p.message:void 0,{observeDirectory:g,selfName:_}=QP(),v=l?.state.status===`connected`;(0,k.useEffect)(()=>{l!==void 0&&g(l.directory)},[l,g]);let y=(0,k.useRef)(!1),[b,x]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{v&&(_!==void 0||y.current)&&(y.current=_!==void 0,t.sendGossipUpdate(_===void 0?void 0:Fj(_)).then(()=>{x(void 0)},e=>{x(e instanceof Error?e.message:String(e))}))},[v,_,t]);let S=l===void 0?`idle`:zF(l),C=l?.directory??[],w=l?.frameLog??[],T=eF(t,v),E=tF(n,l?.state.status===`reconnecting`||C.length>0,BF),D=dF(_F(e))?.node,O=(0,k.useMemo)(()=>[...u,...IP(i.filter(e=>e.node===D))].sort((e,t)=>e.at-t.at),[u,i,D]);return(0,z.jsxs)(Nd,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,z.jsxs)(pl,{justify:`space-between`,mb:`xs`,children:[(0,z.jsx)(U,{fw:600,children:e}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,disabled:!v,onClick:T.probe,children:`Send ping`}),(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:`light`,onClick:a,children:`Disconnect`})]})]}),(0,z.jsx)(U,{fw:600,size:`sm`,mb:`sm`,children:S}),h===void 0?null:(0,z.jsx)(eu,{color:`yellow`,mb:`sm`,children:h}),b!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`Could not publish your display name`,mb:`sm`,children:b}),l!==void 0&&(0,z.jsx)(kF,{state:l.state,statusSince:d,now:E,policy:r,health:T}),(0,z.jsx)(U,{fw:600,size:`sm`,children:`Peer directory`}),C.length===0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,z.jsx)(PF,{columns:VF,rows:C.map(e=>({key:LF(e.device),cells:[(0,z.jsx)(jF,{deviceHex:LF(e.device)},`device`),e.advert.addresses.join(`, `),(0,z.jsx)(Zp,{label:`As the peer advertised it, by its own clock`,children:(0,z.jsx)(`span`,{children:sF(E-e.advert[`snapshot-seconds`]*IF)})},`advertised`),(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{o(e.device)},children:`Message`},`actions`)]}))}),(0,z.jsx)(bF,{activity:O,frameLog:w})]})}var UF=[{label:`device`},{label:`addresses`},{label:`gossiped by`},{label:`actions`,headerless:!0}];function WF({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,z.jsxs)(Nd,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,z.jsx)(U,{size:`sm`,c:`dimmed`,mb:`xs`,children:`Each node below was listed in the directory of a node you are connected to, which is the only thing vouching for it: the address it lists may not be a wire-mesh node at all. Nothing is dialled until you connect.`}),(0,z.jsx)(PF,{columns:UF,rows:e.map(e=>({key:e.key,cells:[(0,z.jsx)(jF,{deviceHex:LF(e.device)},`device`),e.addresses.join(`, `),(0,z.jsxs)(k.Fragment,{children:[e.via.claimedDevice!==void 0&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:`claimed to be`}),(0,z.jsx)(jF,{deviceHex:e.via.claimedDevice})]}),(0,z.jsxs)(U,{size:`xs`,c:`dimmed`,children:[`over `,e.via.address]})]},`via`),(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]},`actions`)]}))})]})}function GF({label:e,hashes:t}){return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(U,{size:`sm`,fw:600,children:e}),t.map(e=>(0,z.jsx)(Ld,{block:!0,children:mF(e)},e))]})}function KF({prompt:e}){let{assessment:t,decide:n}=e,r=t.kind===`changed`;return(0,z.jsx)(eu,{color:r?`red`:`blue`,title:r?`Certificate changed for ${t.node}`:`First connection to ${t.node}`,"data-testid":`certificate-prompt`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:r?`This address presents a certificate that shares nothing with the one remembered for this node. The node may have replaced its certificate, or something else may be answering at this address. Only continue if you expected the change.`:`This console has not connected to this node before. Connecting pins the certificate below as the one to expect from it from now on. Compare it with what the node's operator reports before you trust it.`}),r&&(0,z.jsx)(GF,{label:`Remembered`,hashes:t.remembered}),(0,z.jsx)(GF,{label:r?`Presented now`:`Certificate (SHA-256)`,hashes:t.presented}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,color:r?`red`:`blue`,onClick:()=>{n(!0)},children:r?`Trust the new certificate`:`Trust and connect`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{n(!1)},children:`Cancel`})]})]})})}function qF({prompts:e,changes:t,onDismissChange:n}){let r=t.filter(e=>!e.dismissed);return e.length===0&&r.length===0?null:(0,z.jsxs)(rm,{gap:`sm`,"data-testid":`certificate-trust`,children:[e.map(e=>(0,z.jsx)(KF,{prompt:e},e.key)),r.map(e=>(0,z.jsx)(eu,{color:`red`,title:`${e.node} announced different certificates`,withCloseButton:!0,closeButtonLabel:`Dismiss`,onClose:()=>{n(e.key)},children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`The node is still reachable through the certificate you pinned, but it now announces certificates that share nothing with the ones remembered for it, and the announced set is what this console will pin from now on.`}),(0,z.jsx)(GF,{label:`Remembered`,hashes:e.remembered}),(0,z.jsx)(GF,{label:`Announced`,hashes:e.presented})]})},e.key))]})}function JF(e,t){let[n,r]=(0,k.useState)([]),[i,a]=(0,k.useState)([]),o=(0,k.useMemo)(()=>fF(e,e=>{a(n=>[...n,{...e,key:crypto.randomUUID(),at:t.now(),dismissed:!1}])}),[e,t]),s=(0,k.useRef)(new Map),c=(0,k.useRef)(new Map);(0,k.useEffect)(()=>{let e=c.current;return()=>{for(let{refuse:t}of[...e.values()])t()}},[]);let l=(0,k.useCallback)(async e=>{let t=`${e.node} ${[...e.presented].sort().join(`,`)}`,n=s.current.get(t);if(n!==void 0)return n.decision;let i=crypto.randomUUID(),a=new Promise(n=>{let a=!1,o=e=>{a||(a=!0,c.current.get(t)?.promptKey===i&&c.current.delete(t),s.current.get(t)?.promptKey===i&&s.current.delete(t),r(e=>e.filter(e=>e.key!==i)),n(e))};c.current.set(t,{promptKey:i,refuse:()=>{o(!1)}}),r(t=>[...t,{key:i,assessment:e,decide:o}])});return s.current.set(t,{promptKey:i,decision:a}),a},[]);return{prompts:n,changes:i,memory:o,confirmAddress:(0,k.useCallback)(async t=>{let n=dF(t);if(n===void 0)return t;let r=uF(n.node,n.sha256.map(e=>dO(e)),(await e.recall(n.node)).map(e=>dO(e)));if(r.kind===`known`)return X_(t,n.sha256.filter(e=>r.trusted.includes(dO(e))));if(await l(r))return await e.remember(n.node,n.sha256),t},[e,l]),dismissChange:(0,k.useCallback)(e=>{a(t=>t.map(t=>t.key===e?{...t,dismissed:!0}:t))},[])}}function YF({store:e,children:t}){let[n,r]=(0,k.useState)(new Map),[i,a]=(0,k.useState)(new Map),[o,s]=(0,k.useState)(void 0),[c,l]=(0,k.useState)(void 0),u=(0,k.useRef)(Promise.resolve()),d=(0,k.useCallback)(async e=>{u.current=u.current.then(async()=>{try{await e(),l(void 0)}catch(e){l(e instanceof Error?e.message:String(e))}}),await u.current},[]);(0,k.useEffect)(()=>{Promise.all([e.petnames(),e.selfName()]).then(([e,t])=>{r(e),s(t)},e=>{l(e instanceof Error?e.message:String(e))})},[e]);let f=(0,k.useCallback)(async(t,n)=>d(async()=>{await e.setPetname(t,n),r(await e.petnames())}),[e,d]),p=(0,k.useCallback)(async t=>d(async()=>{await e.setSelfName(t),s(await e.selfName())}),[e,d]),m=(0,k.useCallback)(e=>{a(t=>{let n;for(let r of e){let e=Pj(r.advert),i=fO(r.device);t.get(i)!==e&&(n??=new Map(t),e===void 0?n.delete(i):n.set(i,e))}return n??t})},[]),h=(0,k.useMemo)(()=>new Set(n.values()),[n]),g=(0,k.useMemo)(()=>({labelOf:e=>Ij(e,n.get(e),i.get(e),h),petnameOf:e=>n.get(e),rename:f,selfName:o,setSelfName:p,observeDirectory:m}),[n,h,i,o,f,p,m]);return(0,z.jsxs)(ZP.Provider,{value:g,children:[c!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`Saved names are unavailable`,mb:`md`,children:c}),t]})}function XF(){let{selfName:e,setSelfName:t}=QP(),[n,r]=(0,k.useState)(void 0),i=n??e??``;return(0,z.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),t(i).then(()=>{r(void 0)})},children:(0,z.jsxs)(pl,{align:`flex-end`,wrap:`wrap`,children:[(0,z.jsx)(Am,{label:`Your display name`,description:`Shown to the peers you connect to, signed by this device's key. Leave empty to show only your short id.`,value:i,maxLength:64,onChange:e=>{r(e.currentTarget.value)},style:{flex:1,minWidth:`16rem`}}),(0,z.jsx)(Ed,{type:`submit`,variant:`light`,disabled:(Nj(i)??``)===(e??``),children:`Save name`})]})})}function ZF({onDismiss:e}){return(0,z.jsxs)(Nd,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`onboarding-intro`,children:[(0,z.jsx)(Lm,{order:2,size:`h4`,mb:`xs`,children:`Welcome to the wire-mesh console`}),(0,z.jsxs)(vf,{type:`ordered`,spacing:`xs`,size:`sm`,children:[(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`Connect.`}),` `,`Enter a node's address in the Node field and press Connect. A console served by a node starts with that node's address filled in, so there is usually nothing to type. The status line shows the connection coming up.`]}),(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`See who is here.`}),` `,`Once connected, the node's peer directory lists the devices it knows. Message opens a conversation with one. Devices appear under the name they chose for themselves, or a short id; use the pencil beside a device to give it a name of your own, which only this console keeps.`]}),(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`Discovered peers wait for you.`}),` `,`A node you are connected to can tell you about other nodes. Nothing vouches for those addresses except the node that listed them, and one may not be a wire-mesh node at all, so the console never dials one by itself. Each waits in the Discovered peers list until you press Connect or dismiss it.`]}),(0,z.jsxs)(vf.Item,{children:[(0,z.jsx)(U,{span:!0,fw:600,children:`Offline.`}),` `,`The console itself loads without a network, and conversations are kept on this device, so history stays readable. Sending needs a route to the peer, through a node or directly; a message that could not be sent stays with its reason until you retry or dismiss it.`]})]}),(0,z.jsx)(Ed,{mt:`md`,size:`xs`,onClick:e,children:`Got it`})]})}function QF(e,t){return e.sentAt===t.sentAt?dO(e.messageId).localeCompare(dO(t.messageId)):e.sentAt-t.sentAt}function $F(e,t){let n=new Set(e.map(e=>dO(e.messageId))),r=t.filter(e=>!n.has(dO(e.messageId)));return r.length===0?e:[...e,...r].sort(QF)}function eI(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function tI(e,t){return{roomPath:e,participants:t,direct:void 0,relay:void 0,via:void 0,token:void 0,status:`closed`,messages:[],notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}}function nI(e,t,n){let r=t===void 0?n===void 0?void 0:`hub`:`direct`;return{...e,direct:t,relay:n,via:r,status:r===void 0?`closed`:`connected`}}function rI(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??tI(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...nI(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??tI(t.roomPath,t.participants);return new Map(e).set(t.roomPath,nI(n,n.direct,t.route))}case`direct-closed`:return eI(e,t.roomPath,e=>nI(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=eI(n,r.roomPath,e=>nI(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...tI(t.roomPath,t.participants),messages:$F([],t.messages)}):eI(e,t.roomPath,e=>({...e,messages:$F(e.messages,t.messages)}));case`notices`:return eI(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return eI(e,t.roomPath,e=>{let n=$F(e.messages,[t.message]),r=n!==e.messages;return{...e,messages:n,unread:r&&t.message.direction===`received`?e.unread+1:e.unread}});case`read`:return eI(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return eI(e,t.roomPath,e=>({...e,outgoing:e.outgoing.some(e=>e.localId===t.entry.localId)?e.outgoing.map(e=>e.localId===t.entry.localId?t.entry:e):[...e.outgoing,t.entry]}));case`outgoing-removed`:return eI(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return eI(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return eI(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return eI(e,t.roomPath,e=>({...e,token:t.token}))}return e}function iI(e,t){let n=PN(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}function aI(e,t){return e.participants.length===0?e.roomPath:e.participants.map(e=>Lj(t.labelOf(e))).join(`, `)}function oI(e){return e.toLowerCase().split(/\s+/).filter(e=>e!==``)}function sI(e,t){let n=e.toLowerCase();return t.every(e=>n.includes(e))}function cI(e,t){let n=oI(t);if(n.length===0)return[];let r=new TextDecoder,i=[];for(let t of e)t.messages.forEach((e,r)=>{sI(e.text,n)&&i.push({key:`${t.roomPath}/message/${String(r)}`,roomPath:t.roomPath,kind:`message`,text:e.text,at:e.sentAt,direction:e.direction})}),t.notices.forEach((e,a)=>{if(e.plaintext===void 0||e.claims===void 0)return;let o=r.decode(e.plaintext);sI(o,n)&&i.push({key:`${t.roomPath}/notice/${String(a)}`,roomPath:t.roomPath,kind:`notice`,text:o,at:e.claims[`posted-at`],direction:void 0})});return i.sort((e,t)=>t.at-e.at).slice(0,50)}function lI({conversations:e,onSelect:t}){let n=QP(),[r,i]=(0,k.useState)(``);if(e.length===0)return null;let a=cI(e,r),o=oI(r).length>0,s=new Map(e.map(e=>[e.roomPath,e]));return(0,z.jsxs)(rm,{gap:`xs`,"data-testid":`search-panel`,children:[(0,z.jsx)(Am,{type:`search`,label:`Search conversations and notices`,value:r,onChange:e=>{i(e.currentTarget.value)}}),o&&a.length===0&&(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Nothing matches.`}),a.map(e=>{let i=s.get(e.roomPath);return(0,z.jsx)(Sf,{label:(0,z.jsx)(nf,{highlight:oI(r),size:`sm`,children:e.text}),description:(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(_d,{size:`xs`,variant:`light`,children:e.kind}),(0,z.jsxs)(U,{size:`xs`,c:`dimmed`,children:[i===void 0?e.roomPath:aI(i,n),` · `,new Date(e.at).toLocaleString()]})]}),onClick:()=>{t(e.roomPath)}},e.key)})]})}var uI=16;function dI(){let e=new Uint8Array(uI);return crypto.getRandomValues(e),e}function fI(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function pI(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}var mI=class extends Error{capability;code;constructor(e,t){super(`capability request for "${e}" was refused (${t})`),this.name=`CapabilityRequestRefusedError`,this.capability=e,this.code=t}};async function hI(e,t,n,r,i,a,o){let s=await e.sendManageRequest(pI(t,a),n,r,o,i);if(s.result!==`ok`)throw new mI(t,s.code);let c=JE.safeParse(s);if(!c.success)throw Error(`capability request for "${t}" response was malformed`);return c.data}var gI=`manage:request`;async function _I(e,t){if(e.token===void 0)return{ok:!1,code:`token_required`};if(t.revocation===void 0)throw Error(`requireRequestToken needs a revocation view on the handler options`);let n=await ZA(e.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.bearerDevice,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});if(!n.ok)return{ok:!1,code:n.reason};if(n.claims.capability!==`manage:request`)return{ok:!1,code:`capability_mismatch`};let r=n.claims[`requests-capability`];return r!==void 0&&r!==t.capability?{ok:!1,code:`capability_mismatch`}:IO(n.claims.scope,e.scope)?{ok:!0}:{ok:!1,code:`scope_mismatch`}}function vI(e){return async function(t){let n=qE.safeParse(t.command.params);if(!n.success||n.data.capability!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let r=n.data;if(e.requireRequestToken===!0){let n=await _I(t,e);if(!n.ok){await t.respond({result:`error`,code:n.code});return}}let i=r[`valid-until`];if(i!==void 0&&i<=e.clock.now()){await t.respond({result:`error`,code:`expired`});return}let a=!1,o=setTimeout(()=>{a||(a=!0,t.respond({result:`error`,code:`timeout`,message:`no decision within the capability-request timeout`}).catch(()=>void 0))},e.timeoutMs);fI(o),e.onRequest({scope:t.scope,requesterDevice:e.bearerDevice,async decide(n){if(a)return;if(a=!0,clearTimeout(o),n.kind===`reject`){await t.respond({result:`error`,code:`denied`,...n.reason===void 0?{}:{message:n.reason}});return}let r=await aj({identity:e.identity,clock:e.clock,tokenId:dI(),bearer:e.bearerDevice,capability:n.capability,scope:t.scope,expires:n.expires,...n.delegationsRemaining===void 0?{}:{delegationsRemaining:n.delegationsRemaining}});if(!r.ok){await t.respond({result:`error`,code:`mint_failed`});return}let i=r.token;await t.respond({result:`ok`,"granted-token":i,...n.extensions??{}})}})}}var yI=16,bI=36e5,xI=[{verb:`room:member`,scopeKind:`room`},{verb:`room:join`,scopeKind:`room`},{verb:`room:invite`,scopeKind:`room`},{verb:`webrtc:signal`,scopeKind:`node`},{verb:`relay:use`,scopeKind:`node`},{verb:`pin:write`,scopeKind:`folder`},{verb:`exec:pty`,scopeKind:`folder`},{verb:`exec:proc`,scopeKind:`folder`},{verb:`group:member`,scopeKind:`group`},{verb:WA,scopeKind:`folder`},{verb:gI,scopeKind:`room`}],SI={[WA]:`grantsCapability`,[gI]:`requestsCapability`},CI={already_expired:`the grant would already have expired`,parent_malformed:`the grant it delegates from is malformed`,parent_bearer_mismatch:`the grant it delegates from is not held by this device`,expires_exceeds_parent:`it would outlast the grant it delegates from`,scope_does_not_narrow:`its scope is wider than the grant it delegates from`,capability_mismatch:`its capability differs from the grant it delegates from`,delegation_exceeds_parent:`it permits more delegation than its parent does`,links_exclusive:`it would carry both a parent grant and an authorising grant`,authorisation_malformed:`the grant authorising it is malformed`,authorisation_parent_forbidden:`a grant permission cannot be delegated from a parent grant`,authorisation_bearer_mismatch:`the grant authorising it is not held by this device`,authorisation_capability_mismatch:`the grant authorising it names a different capability`,authorisation_scope_does_not_narrow:`its scope is wider than the grant authorising it`,authorisation_exceeds_authoriser:`it would outlast the grant authorising it`,authorisation_delegation_exceeds:`it permits more delegation than the grant authorising it does`,authorisation_conditions_not_satisfied:`the grant authorising it does not allow this mint`};function wI(e,t){let n=(t??``).trim();if(n===``)return{ok:!0};let r=SI[e];if(r===void 0)return{ok:!1,error:`only ${WA} and ${gI} name a verb they cover`};let i=jD.safeParse(n);return i.success?{ok:!0,claim:r,verb:i.data}:{ok:!1,error:`the covered verb must look like subsystem:action, for example room:member`}}function TI(){let e=new Uint8Array(yI);return crypto.getRandomValues(e),e}async function EI(e,t){let n;try{n=mO(e.bearerHex.trim().toLowerCase())}catch{return{ok:!1,error:`the bearer must be a 64-character hex device-id`}}let r=jD.safeParse(e.capability.trim());if(!r.success)return{ok:!1,error:`the capability must look like subsystem:action, for example room:member`};if(e.scopeKind.trim()===``)return{ok:!1,error:`the scope needs a kind, for example room`};if(!Number.isFinite(e.lifetimeHours)||e.lifetimeHours<=0)return{ok:!1,error:`the lifetime must be more than zero hours`};if(e.delegationsRemaining!==void 0&&!(Number.isSafeInteger(e.delegationsRemaining)&&e.delegationsRemaining>=0))return{ok:!1,error:`further delegations must be a whole number, zero or more`};let i=wI(r.data,e.targetVerb);if(!i.ok)return i;let a=e.selfGrantBars??[];if(a.length>0&&r.data!==`manage:grant`)return{ok:!1,error:`only a ${WA} can bar its holder from granting to itself`};let o=[];for(let e of a){let t=jD.safeParse(e.trim());if(!t.success)return{ok:!1,error:`the barred verb "${e}" must look like subsystem:action`};o.push(FA(t.data,n))}let s=e.scopePath.trim(),c=await aj({identity:t.identity,clock:t.clock,tokenId:TI(),bearer:n,capability:r.data,scope:{kind:e.scopeKind.trim(),...s===``?{}:{path:s}},expires:Math.round(t.clock.now()+e.lifetimeHours*bI),...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining},...e.parent===void 0?{}:{parent:e.parent},...e.authorisedBy===void 0?{}:{authorisedBy:e.authorisedBy},...i.claim===void 0||i.verb===void 0?{}:{[i.claim]:i.verb},...o.length===0?{}:{conditions:o}});return c.ok?{ok:!0,token:c.token}:{ok:!1,error:`refused: ${CI[c.reason]}`}}var DI=3e4;function OI(e){let{identity:t,clock:n,grants:r,revocations:i,announce:a}=e,[o,s]=(0,k.useState)([]),[c,l]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{let e={cancelled:!1,latestLoad:0},a=async()=>{e.latestLoad+=1;let a=e.latestLoad,o=await r.list(),c=await Promise.all(o.map(async e=>({...e,status:await pj(e.token,{identity:t,clock:n,revocation:i.view,...e.direction===`held`?{expectedBearer:t.deviceId}:{}})})));!e.cancelled&&a===e.latestLoad&&(s(c),l(void 0))},o=()=>{a().catch(t=>{e.cancelled||l(t instanceof Error?t.message:String(t))})};o();let c=[r.subscribe(o),i.subscribe(o)],u=setInterval(o,DI);return()=>{e.cancelled=!0,clearInterval(u);for(let e of c)e()}},[t,n,r,i]);let u=(0,k.useCallback)(async e=>{let i=await EI(e,{identity:t,clock:n});return i.ok?(await r.record(`issued`,i.token,n.now()),{ok:!0,code:dj(i.token)}):i},[t,n,r]),d=(0,k.useCallback)(async e=>{let a;try{a=fj(e)}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}let o=await pj(a,{identity:t,clock:n,revocation:i.view,expectedBearer:t.deviceId});return o.kind===`invalid`?{ok:!1,error:`this device cannot hold that grant: ${hj(o)}`}:(await r.record(`held`,a,n.now()),{ok:!0})},[t,n,r,i]),f=(0,k.useCallback)(async e=>{try{let t=await i.revoke(e.claims[`token-id`]);return{ok:!0,announced:await a(t)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},[i,a]);return(0,k.useMemo)(()=>({rows:o,loadError:c,mint:u,importCode:d,revoke:f}),[o,c,u,d,f])}function kI({label:e,children:t}){return(0,z.jsxs)(U,{size:`sm`,children:[(0,z.jsxs)(U,{span:!0,fw:600,children:[e,`:`]}),` `,t]})}function AI({row:e}){let{claims:t}=e,n=dj(e.token);return(0,z.jsxs)(rm,{gap:4,"data-testid":`grant-details`,children:[(0,z.jsx)(kI,{label:`Token id`,children:(0,z.jsx)(Ld,{children:e.tokenId})}),(0,z.jsx)(kI,{label:`Issuer`,children:(0,z.jsx)(vF,{deviceHex:fO(t.issuer)})}),(0,z.jsx)(kI,{label:`Bearer`,children:(0,z.jsx)(vF,{deviceHex:fO(t.bearer)})}),(0,z.jsxs)(kI,{label:`Allows`,children:[t.capability,` over `,t.scope.kind,t.scope.path===void 0?``:` ${t.scope.path}`]}),(0,z.jsx)(kI,{label:`Expires`,children:new Date(t.expires).toISOString()}),t[`not-before`]!==void 0&&(0,z.jsx)(kI,{label:`Not before`,children:new Date(t[`not-before`]).toISOString()}),t[`delegations-remaining`]!==void 0&&(0,z.jsx)(kI,{label:`Further delegations`,children:t[`delegations-remaining`]}),t.parent!==void 0&&(0,z.jsx)(kI,{label:`Delegated from`,children:`another grant (its parent rides inside this one)`}),(0,z.jsx)(kI,{label:`Status`,children:hj(e.status)}),(0,z.jsx)(df,{readOnly:!0,label:`Grant code`,description:`Paste this into the other device's grant import to give it this grant.`,value:n,autosize:!0,minRows:2,maxRows:4}),(0,z.jsx)(zd,{value:n,children:({copied:e,copy:t})=>(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:t,w:`fit-content`,children:e?`Copied`:`Copy grant code`})})]})}function jI(e,t){return e>t?cF(e-t):sF(t-e)}function MI({title:e,rows:t,other:n,now:r,onRevoke:i}){let[a,o]=(0,k.useState)(void 0),[s,c]=(0,k.useState)(void 0);return(0,z.jsxs)(`div`,{"data-testid":`grants-${e.toLowerCase()}`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`sm`,children:e}),t.length===0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`None.`}):(0,z.jsx)(PF,{columns:[{label:`capability`},{label:`over`},{label:n===`issuer`?`from`:`to`},{label:`expires`},{label:`status`},{label:`actions`,headerless:!0}],rows:t.map(e=>({key:`${e.direction}/${e.tokenId}`,cells:[e.claims.capability,`${e.claims.scope.kind}${e.claims.scope.path===void 0?``:` ${e.claims.scope.path}`}`,(0,z.jsx)(jF,{deviceHex:fO(e.claims[n])},`other`),jI(e.claims.expires,r),(0,z.jsx)(_d,{color:e.status.kind===`valid`?`green`:`red`,variant:`light`,children:hj(e.status)},`status`),(0,z.jsxs)(k.Fragment,{children:[(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{o(a===e.tokenId?void 0:e.tokenId)},children:a===e.tokenId?`Hide`:`Inspect`}),i!==void 0&&e.status.kind===`valid`&&(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:s===e.tokenId?`filled`:`light`,onClick:()=>{s===e.tokenId?(c(void 0),i(e)):c(e.tokenId)},children:s===e.tokenId?`Confirm: revoke for good`:`Revoke`})]}),a===e.tokenId&&(0,z.jsx)(AI,{row:e})]},`actions`)]}))})]})}function NI({onImport:e}){let[t,n]=(0,k.useState)(``),[r,i]=(0,k.useState)(void 0);return(0,z.jsx)(`form`,{onSubmit:r=>{r.preventDefault(),e(t).then(e=>{i(e),e.ok&&n(``)})},children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`md`,children:`Add a grant you were given`}),(0,z.jsx)(df,{label:`Grant code`,value:t,onChange:e=>{n(e.currentTarget.value)},autosize:!0,minRows:2,maxRows:4,required:!0}),(0,z.jsx)(Ed,{type:`submit`,size:`xs`,w:`fit-content`,children:`Add grant`}),r?.ok===!1&&(0,z.jsx)(eu,{color:`red`,title:`Not added`,children:r.error}),r?.ok===!0&&(0,z.jsx)(eu,{color:`green`,title:`Grant added`,children:`It is listed under Held.`})]})})}var PI=24,FI=`root`,II=`none`;function LI(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e!==``)}function RI({delegable:e,onMint:t}){let[n,r]=(0,k.useState)(``),[i,a]=(0,k.useState)(``),[o,s]=(0,k.useState)(``),[c,l]=(0,k.useState)(``),[u,d]=(0,k.useState)(PI),[f,p]=(0,k.useState)(``),[m,h]=(0,k.useState)(FI),[g,_]=(0,k.useState)(II),[v,y]=(0,k.useState)(``),[b,x]=(0,k.useState)(``),[S,C]=(0,k.useState)(void 0),w=e.find(e=>e.tokenId===m),T=e.find(e=>e.tokenId===g),E=e.filter(e=>e.claims.capability===WA),D=i===`manage:grant`||i===`manage:request`;function O(){if(m!==FI&&w===void 0){C({ok:!1,error:`the grant you chose to delegate from is no longer valid; choose another, or choose Root grant to mint without one`});return}if(g!==II&&T===void 0){C({ok:!1,error:`the grant you chose to authorise this is no longer valid; choose another, or choose None to mint without one`});return}t({bearerHex:n,capability:i,scopeKind:o,scopePath:c,lifetimeHours:u,delegationsRemaining:f===``?void 0:f,parent:w?.token,authorisedBy:T?.token,targetVerb:D?v:``,selfGrantBars:i===`manage:grant`?LI(b):[]}).then(C,e=>{C({ok:!1,error:e instanceof Error?e.message:String(e)})})}return(0,z.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),O()},children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mt:`md`,children:`Mint a grant`}),(0,z.jsx)(Am,{label:`Bearer device-id`,description:`The device the grant is for: 64 hex characters, copied from a peer's directory row.`,value:n,onChange:e=>{r(e.currentTarget.value)},required:!0}),(0,z.jsx)(md,{label:`Capability`,description:`What it allows, as subsystem:action.`,data:xI.map(e=>e.verb),value:i,onChange:e=>{a(e);let t=xI.find(t=>t.verb===e);t!==void 0&&s(t.scopeKind)},required:!0}),(0,z.jsx)(Am,{label:`Scope kind`,value:o,onChange:e=>{s(e.currentTarget.value)},required:!0}),(0,z.jsx)(Am,{label:`Scope path`,description:`Leave empty for a scope with no path.`,value:c,onChange:e=>{l(e.currentTarget.value)}}),D&&(0,z.jsx)(Am,{label:`Covered verb`,description:i===`manage:grant`?`The one verb the holder may grant, as subsystem:action. Empty means any verb within the scope.`:`The one verb the holder may request, as subsystem:action. Empty means any verb within the scope.`,value:v,onChange:e=>{y(e.currentTarget.value)}}),i===`manage:grant`&&(0,z.jsx)(Am,{label:`Barred from granting to itself`,description:`Comma-separated verbs the holder may not grant to its own device, for example manage:grant to stop it passing on the right to grant.`,value:b,onChange:e=>{x(e.currentTarget.value)}}),(0,z.jsx)(Lp,{label:`Lasts (hours)`,min:0,value:u,onChange:e=>{d(typeof e==`number`?e:0)}}),(0,z.jsx)(Lp,{label:`Further delegations`,description:`How many times the bearer may pass it on. Empty leaves it unset.`,min:0,allowDecimal:!1,value:f,onChange:e=>{p(typeof e==`number`?e:``)}}),(0,z.jsx)($p,{label:`Delegate from`,description:`A grant you hold, which the new grant may only narrow. Root means none.`,allowDeselect:!1,data:[{value:FI,label:`Root grant (none)`},...e.map(e=>({value:e.tokenId,label:`${e.claims.capability} from ${jj(fO(e.claims.issuer))}`}))],value:m,onChange:e=>{h(e??FI)}}),(0,z.jsx)($p,{label:`Authorised by`,description:`A manage:grant you hold that permits this mint; it may bar what you can grant. None means this grant is minted on your own authority.`,allowDeselect:!1,data:[{value:II,label:`None`},...E.map(e=>({value:e.tokenId,label:`manage:grant from ${jj(fO(e.claims.issuer))}`}))],value:g,onChange:e=>{_(e??II)}}),(0,z.jsx)(Ed,{type:`submit`,size:`xs`,w:`fit-content`,children:`Mint grant`}),S?.ok===!1&&(0,z.jsx)(eu,{color:`red`,title:`Not minted`,children:S.error}),S?.ok===!0&&(0,z.jsx)(eu,{color:`green`,title:`Grant minted`,children:`It is listed under Issued, where Inspect shows its grant code.`})]})})}var zI=1e3;function BI(e){if(!e.ok)return{color:`red`,title:`Not revoked`,text:e.error};let{attempted:t,reached:n}=e.announced;return t===0?{color:`yellow`,title:`Revoked here only`,text:`No connection was open, so no node was told. This console no longer honours the grant.`}:n<t?{color:`yellow`,title:`Revoked, but not every node was told`,text:`Sent to ${String(n)} of ${String(t)} connected nodes. This console no longer honours the grant.`}:{color:`green`,title:`Revoked`,text:`Sent to ${String(n)} connected ${n===1?`node`:`nodes`}. This console no longer honours the grant.`}}function VI({grants:e,clock:t}){let n=tF(t,!0,zI),[r,i]=(0,k.useState)(void 0),a=r===void 0?void 0:BI(r),o=e.rows.filter(e=>e.direction===`held`),s=e.rows.filter(e=>e.direction===`issued`);return(0,z.jsxs)(rm,{gap:`xs`,"data-testid":`grants-panel`,children:[(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`A grant is a signed statement that one device may do something over something until a time. Revoking one you issued is recorded here, where this console stops honouring it at once, and sent to the nodes you are connected to. A node only passes it on if it relays revocations, which the hub does not.`}),e.loadError!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`Grants could not be read`,children:e.loadError}),(0,z.jsx)(MI,{title:`Held`,rows:o,other:`issuer`,now:n}),(0,z.jsx)(MI,{title:`Issued`,rows:s,other:`bearer`,now:n,onRevoke:t=>{e.revoke(t).then(i,e=>{i({ok:!1,error:e instanceof Error?e.message:String(e)})})}}),a!==void 0&&(0,z.jsx)(eu,{color:a.color,title:a.title,"data-testid":`revocation-report`,children:a.text}),(0,z.jsx)(RI,{delegable:o.filter(e=>e.status.kind===`valid`),onMint:e.mint}),(0,z.jsx)(NI,{onImport:e.importCode})]})}var HI=6e4;function UI(e,t){let n=URL.createObjectURL(new Blob([t],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=e,r.hidden=!0,document.body.append(r),r.click(),r.remove(),setTimeout(()=>{URL.revokeObjectURL(n)},HI)}var WI=`wire-mesh-console-identity.json`,GI=2;function KI(){location.reload()}function qI({identity:e,backup:t,save:n=UI,reload:r=KI}){let i=fO(e.deviceId),[a,o]=(0,k.useState)({kind:`idle`}),[s,c]=(0,k.useState)(!1);async function l(){try{n(WI,JSON.stringify(await t.export(),void 0,GI)),o({kind:`exported`})}catch(e){o({kind:`error`,message:e instanceof Error?e.message:String(e)})}}async function u(e){try{await t.restore(e),o({kind:`restored`})}catch(e){o({kind:`error`,message:e instanceof Error?e.message:String(e)})}}async function d(e){if(e!==null)try{o({kind:`confirm-restore`,backup:await kO(await e.text())})}catch(e){o({kind:`error`,message:e instanceof Error?e.message:String(e)})}}return(0,z.jsxs)(rm,{gap:`xs`,"data-testid":`identity-panel`,children:[(0,z.jsxs)(U,{size:`sm`,children:[`This device is `,(0,z.jsx)(Ld,{"data-testid":`own-device-id`,children:i}),` `,(0,z.jsx)(zd,{value:i,children:({copied:e,copy:t})=>(0,z.jsx)(Ed,{size:`compact-xs`,variant:`subtle`,onClick:t,children:e?`Copied`:`Copy device id`})})]}),(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Its key is ES256 (P-256) and lives in this browser. If this browser's storage is cleared or the device is lost, the identity is gone, along with every grant made to it. A backup file lets you keep it.`}),a.kind===`confirm-export`&&(0,z.jsx)(eu,{color:`orange`,title:`This file holds your private key`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`Anyone who has it can act as this device. Save it somewhere private, and do not send it to anyone. The console does not show the key or keep a copy of the file.`}),(0,z.jsx)(od,{label:`I understand, and I want a backup file`,checked:s,onChange:e=>{c(e.currentTarget.checked)}}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,color:`orange`,disabled:!s,onClick:()=>{l()},children:`Save backup file`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{o({kind:`idle`})},children:`Cancel`})]})]})}),a.kind===`exported`&&(0,z.jsxs)(eu,{color:`green`,title:`Backup file handed to your browser`,children:[(0,z.jsx)(U,{size:`sm`,children:`The browser was asked to save it, and may have asked where. Check that the file is there before you rely on it.`}),(0,z.jsx)(U,{size:`sm`,children:`Keep it private. Restoring it on another browser makes that browser this device.`})]}),a.kind===`confirm-restore`&&(0,z.jsx)(eu,{color:`red`,title:`Replace this device's identity?`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsxs)(U,{size:`sm`,children:[`This device is now `,(0,z.jsx)(Ld,{children:i}),`. The backup is`,` `,(0,z.jsx)(Ld,{children:a.backup.deviceId}),`. Restoring makes this browser the backup's device the next time the console loads, and this identity, with the grants made to it, is gone unless you have a backup of it.`]}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,color:`red`,onClick:()=>{u(a.backup)},children:`Replace this identity`}),(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{o({kind:`idle`})},children:`Cancel`})]})]})}),a.kind===`restored`&&(0,z.jsx)(eu,{color:`green`,title:`Identity restored`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`Reload the console to run as the restored identity.`}),(0,z.jsx)(Ed,{size:`xs`,w:`fit-content`,onClick:r,children:`Reload now`})]})}),a.kind===`error`&&(0,z.jsx)(eu,{color:`red`,title:`That did not work`,children:a.message}),(a.kind===`idle`||a.kind===`exported`||a.kind===`error`)&&(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,variant:`light`,onClick:()=>{c(!1),o({kind:`confirm-export`})},children:`Back up this identity`}),(0,z.jsx)(Wd,{accept:`application/json,.json`,onChange:e=>{d(e)},children:e=>(0,z.jsx)(Ed,{size:`xs`,variant:`light`,color:`red`,...e,children:`Restore from a backup file`})})]})]})}function JI({identity:e,clock:t,grants:n,revocations:r,identityBackup:i,announceRevocation:a}){let o=OI({identity:e,clock:t,grants:n,revocations:r,announce:a});return(0,z.jsxs)(Zl,{multiple:!0,variant:`contained`,"data-testid":`identity-section`,children:[(0,z.jsxs)(Zl.Item,{value:`identity`,children:[(0,z.jsx)(Zl.Control,{children:`Identity`}),(0,z.jsx)(Zl.Panel,{children:(0,z.jsx)(qI,{identity:e,backup:i})})]}),(0,z.jsxs)(Zl.Item,{value:`grants`,children:[(0,z.jsx)(Zl.Control,{children:`Grants`}),(0,z.jsx)(Zl.Panel,{children:(0,z.jsx)(VI,{grants:o,clock:t})})]})]})}function YI({revocations:e,onFailure:t}){let n=(0,k.useSyncExternalStore)(e.subscribe,e.unreadable);return n.length===0?null:(0,z.jsx)(eu,{color:`red`,title:`Some stored revocations could not be loaded`,"data-testid":`unreadable-revocations`,children:(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsx)(U,{size:`sm`,children:`A grant that one of these revoked may read as valid until it is dealt with. Discarding an entry deletes it from this console's storage.`}),n.map(n=>(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsxs)(U,{size:`sm`,children:[n.key,`: `,n.reason]}),(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.discardUnreadable(n.key).catch(e=>{t(e instanceof Error?e.message:String(e))})},children:`Discard`})]},n.key))]})})}function XI(e){return e instanceof Error?e.message:String(e)}function ZI(e){let[t,n]=(0,k.useState)(void 0),[r,i]=(0,k.useState)(void 0);(0,k.useEffect)(()=>{e.introDismissed().then(n,e=>{n(!1),i(XI(e))})},[e]);let a=(0,k.useCallback)(t=>{n(t),e.setIntroDismissed(t).then(()=>{i(void 0)},e=>{i(XI(e))})},[e]),o=(0,k.useCallback)(()=>{a(!0)},[a]),s=(0,k.useCallback)(()=>{a(!1)},[a]);return{visible:t===!1,ready:t!==void 0,error:r,dismiss:o,show:s}}function QI({conversations:e,selected:t,onSelect:n}){let r=QP();return e.length===0?null:(0,z.jsxs)(rm,{gap:0,"data-testid":`conversation-list`,children:[(0,z.jsx)(U,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,z.jsx)(Sf,{active:e.roomPath===t,label:aI(e,r),description:e.status===`connected`?void 0:`offline`,rightSection:(0,z.jsxs)(pl,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,z.jsx)(_d,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,z.jsx)(_d,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function $I({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,k.useState)(``),[l,u]=(0,k.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(pl,{gap:`xs`,flex:1,children:[(0,z.jsx)(Am,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,z.jsx)(Ed,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,z.jsx)(U,{size:`sm`,c:`red`,children:l})]})}var eL=`You`,tL=256,nL=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function rL({sentAt:e}){return(0,z.jsx)(U,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:nL.format(e)})}function iL({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,k.useRef)(null);return(0,k.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,z.jsx)(Gs,{h:tL,viewportRef:a,children:(0,z.jsxs)(rm,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,z.jsxs)(rm,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,z.jsx)(U,{size:`xs`,fw:600,c:`dimmed`,children:i?eL:n}),(0,z.jsx)(U,{size:`sm`,children:t.text}),(0,z.jsx)(rL,{sentAt:t.sentAt})]},dO(t.messageId))}),t.map(e=>(0,z.jsxs)(rm,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,z.jsx)(U,{size:`xs`,fw:600,c:`dimmed`,children:eL}),(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`failed`?(0,z.jsxs)(pl,{gap:`xs`,children:[(0,z.jsx)(U,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,z.jsx)(Ed,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,z.jsx)(Ed,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]}):(0,z.jsx)(U,{size:`xs`,c:`dimmed`,children:e.status===`awaiting-approval`?`Waiting for ${n} to allow messages`:`Sending`})]},e.localId))]})})}function aL(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function oL({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=aL(e);return(0,z.jsx)(H,{children:n===void 0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,z.jsx)(U,{size:`sm`,children:n})},t)});return(0,z.jsxs)(rm,{gap:4,children:[t,(0,z.jsxs)(_d,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var sL=864e5;function cL(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function lL({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){let a=QP();return(0,z.jsxs)(rm,{gap:`xs`,children:[(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsx)(U,{fw:600,"data-testid":`conversation-header`,children:aI(e,a)}),(0,z.jsx)(U,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:cL(e.via)})]}),e.pendingJoinRequest&&(0,z.jsx)(eu,{color:`blue`,title:`Message request`,children:(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsxs)(U,{size:`sm`,children:[(0,z.jsx)(vF,{deviceHex:e.pendingJoinRequest.requesterHex}),` `,`wants to message you`]}),(0,z.jsxs)(pl,{children:[(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+sL})},children:`Allow`}),(0,z.jsx)(Ed,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,z.jsx)(iL,{messages:e.messages,outgoing:e.outgoing,peerLabel:aI(e,a),onRetry:r,onDiscard:i}),(0,z.jsx)(pl,{children:(0,z.jsx)($I,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,z.jsx)(Ud,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,z.jsx)(oL,{notices:e.notices}),e.via===void 0?(0,z.jsx)(U,{size:`sm`,c:`dimmed`,children:`Durable notices can be posted while the conversation is connected.`}):(0,z.jsx)(pl,{children:(0,z.jsx)($I,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})})]})}var uL=`room:member`;async function dL(e,t){let n=await ZA(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.expectedBearer});if(!n.ok)return n;if(n.claims.scope.kind!==`room`)return{ok:!1,reason:`wrong_scope_kind`};if(n.claims.scope.path!==t.roomPath)return{ok:!1,reason:`wrong_scope_path`};let r=PN(t.roomPath),i=fO(n.rootIssuer);if(r.kind===`owner-named`){if(i!==r.owner)return{ok:!1,reason:`wrong_chain_root`}}else if(t.dmRootPolicy===`either-participant`){if(i!==r.participants[0]&&i!==r.participants[1])return{ok:!1,reason:`wrong_chain_root`}}else if(i!==fO(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}async function fL(e,t,n,r){let i=(await e.list()).filter(e=>{let t=e.claims;if(e.direction!==`held`||t.capability!==`manage:request`)return!1;let i=t[`requests-capability`];return i!==void 0&&i!==n?!1:IO(t.scope,r)}),a=async e=>{let[n,...r]=e;if(n!==void 0)return(await pj(n.token,t)).kind===`valid`?n.token:a(r)};return a(i)}function pL(e){if(e instanceof mI)switch(e.code){case`denied`:return`the other side denied the request`;case`token_required`:return`the other side only accepts requests that present a request permission, and this device holds none that covers this one`;case`capability_mismatch`:return`the request permission presented does not cover this capability`;case`scope_mismatch`:return`the request permission presented does not cover this conversation`;default:return`the request permission presented was refused (${e.code})`}}function mL(e){return async function(t){if(t.command.verb!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let n=YE.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}let r=n.data[`granted-token`],i=await ZA(r,{identity:e.identity,clock:e.clock,revocation:e.revocation,expectedBearer:e.identity.deviceId});if(!i.ok){await t.respond({result:`error`,code:i.reason});return}if(i.claims.capability!==e.capability){await t.respond({result:`error`,code:`capability_mismatch`});return}if(!IO(i.claims.scope,t.scope)){await t.respond({result:`error`,code:`scope_mismatch`});return}await t.respond({result:`ok`}),e.onGrant({capability:e.capability,grantedToken:r,scope:t.scope,granterDevice:e.granterDevice})}}var hL=16;function gL(){let e=new Uint8Array(hL);return crypto.getRandomValues(e),e}var _L=3e5;function vL(e,t,n){return{verb:uL,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function yL(e,t,n,{token:r,targetDevice:i}){let a=vL(n,gL(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function bL(e,t,{targetDevice:n,requestToken:r}={}){let i;try{i=await hI(e,uL,{kind:`room`,path:t},n,void 0,void 0,r)}catch(e){let t=pL(e);throw t===void 0?e:Error(t)}let a=pD.safeParse(i);if(!a.success)throw Error(`room.join response for ${t} was malformed`);return{token:a.data[`granted-token`],members:a.data.members.map(e=>e.device)}}function xL(e,t,n){async function r(e,r){let i=e.scope.path;if(i===void 0||e.token===void 0){await e.respond({result:`error`,code:`unauthorized`});return}if(!(await dL(e.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.peerDevice,roomPath:i})).ok){await e.respond({result:`error`,code:`unauthorized`});return}await e.respond({result:`ok`});let a=r[`message-id`],o=r[`sent-at`],s=r.text;a instanceof Uint8Array&&typeof o==`number`&&typeof s==`string`&&n.onMessage?.({roomPath:i,text:s,messageId:a,sentAt:o})}function i(e){return async n=>{if(n.kind===`reject`){let t={kind:`reject`,...n.reason===void 0?{}:{reason:n.reason}};await e.decide(t);return}let r=[...t.currentMembers?.()??[],t.peerDevice].map(e=>({device:e})),i={kind:`accept`,capability:n.capability,expires:n.expires,...n.delegationsRemaining===void 0?{}:{delegationsRemaining:n.delegationsRemaining},extensions:{members:r}};await e.decide(i)}}let a=vI({capability:uL,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??_L,onRequest(e){let t=e.scope.path,r=n.onJoinRequest;if(t===void 0||r===void 0){e.decide({kind:`reject`,reason:`unsupported verb`});return}r({roomPath:t,requesterDevice:e.requesterDevice,decide:i(e)})}});async function o(e){if(e.scope.path===void 0){await e.respond({result:`error`,code:`missing_scope_path`});return}if(n.onJoinRequest===void 0){await e.respond({result:`error`,code:`unsupported_verb`});return}await a({...e,respond:async t=>{if(t.result===`ok`){let e=RD.safeParse(t[`granted-token`]);e.success&&n.onGrantIssued?.(e.data)}await e.respond(t)}})}let s=mL({capability:uL,identity:t.identity,clock:t.clock,revocation:t.revocation,granterDevice:t.peerDevice,onGrant(e){let t=e.scope.path,r=n.onRoomInvite;t!==void 0&&r!==void 0&&r({roomPath:t,granterDevice:e.granterDevice,token:e.grantedToken})}});async function c(e){if(e.scope.path===void 0){await e.respond({result:`error`,code:`missing_scope_path`});return}if(n.onRoomInvite===void 0){await e.respond({result:`error`,code:`unsupported_verb`});return}await s(e)}(async()=>{for await(let t of e.incomingManageRequests){if(t.command.verb!==`room:member`)continue;let e=t.command.params;typeof e==`object`&&`verb`in e&&(e.verb===`room.send`?await r(t,e):e.verb===`capability.request`?await o(t):e.verb===`capability.grant`?await c(t):e.verb===`room.rekey`&&n.onRekey!==void 0&&await n.onRekey(t))}})()}var SL=`room-key/`,CL=`room-token/`,wL=`room-key-delivered/`,TL=String(2**53-1).length;function EL(e,t){return`${SL}${e}/${String(t).padStart(TL,`0`)}`}function DL(e){return{get:async(t,n)=>e.get(EL(t,n)),set:async(t,n,r)=>{await e.set(EL(t,n),new Uint8Array(r))},currentEpoch:async t=>{let n=(await e.keys(`${SL}${t}/`)).sort().at(-1);return n===void 0?void 0:Number(n.slice(n.lastIndexOf(`/`)+1))}}}function OL(e,t,n,r){return{get:async i=>{let a=CL+i,o=await e.get(a);if(o===void 0)return;let s=RD.safeParse(b_(o,x_));if(s.success&&(await ZA(s.data,{identity:t,clock:n,revocation:r,expectedBearer:t.deviceId})).ok)return s.data;await e.delete(a)},set:async(t,n)=>{await e.set(CL+t,new Uint8Array(Mg(n,hg)))},rooms:async()=>(await e.keys(CL)).map(e=>e.slice(11))}}function kL(e){return{isDelivered:async t=>await e.get(wL+t)!==void 0,markDelivered:async t=>{await e.set(wL+t,new Uint8Array([1]))}}}var AL=32,jL=256,ML=12,NL=4,PL=8,FL=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function IL(){return crypto.getRandomValues(new Uint8Array(AL))}function LL(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(NL);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(PL);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(FL.length+n.length+t.length+r.length),a=0;return i.set(FL,a),a+=FL.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function RL(e,t){let n=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(new Uint8Array),info:Uint8Array.from(LL(t))},n,{name:`AES-GCM`,length:jL},!1,[`encrypt`,`decrypt`])}async function zL(e,t){let n=crypto.getRandomValues(new Uint8Array(ML)),r=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:n},e,Uint8Array.from(t))),i=new Uint8Array(n.length+r.length);return i.set(n,0),i.set(r,n.length),i}async function BL(e,t){if(t.length<ML)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,ML),r=t.slice(ML);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function VL(e,t){return zL(e,t)}async function HL(e,t){return BL(e,t)}async function UL(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function WL(e,t){return zL(await UL(e),t)}async function GL(e,t){return BL(await UL(e),t)}var KL=`+aes256gcm`;function qL(e){return YL(e)?e:`${e}${KL}`}function JL(e){return YL(e)?e.slice(0,e.length-10):e}function YL(e){return e.endsWith(KL)}var XL=`store_failed`;function ZL(e,t){return{verb:uL,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function QL(e,t,n,r,i,a){return e.sendManageRequest(ZL(n,r),{kind:`room`,path:t},i,a)}function $L(e){return async function(t){if(t.command.verb!==`room:member`){await t.respond({result:`error`,code:`malformed`});return}let n=dD.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}if(t.scope.kind!==`room`||t.scope.path===void 0){await t.respond({result:`error`,code:`scope_mismatch`});return}let r=t.scope.path,i=await dL(e.ownRoomMemberToken,{identity:e.identity,clock:e.clock,revocation:e.revocation,expectedBearer:e.identity.deviceId,roomPath:r,dmRootPolicy:`either-participant`});if(!i.ok){await t.respond({result:`error`,code:i.reason});return}let a=e.identity.deriveSharedSecret;if(a===void 0){await t.respond({result:`error`,code:`ecdh_unsupported`});return}let o=n.data[`key-epoch`],s=Array.isArray(n.data[`wrapped-key`])?n.data[`wrapped-key`]:[n.data[`wrapped-key`]],c=o-s.length+1,l;try{let e=await a(i.rootIssuerKey);l=await Promise.all(s.map(async(t,n)=>HL(await RL(e,{room:r,keyEpoch:c+n}),t)))}catch{await t.respond({result:`error`,code:`unwrap_failed`});return}try{await e.onRekey({room:r,keyEpoch:o,contentKeys:l})}catch(e){throw await t.respond({result:`error`,code:XL}),e}await t.respond({result:`ok`})}}async function eR(e,t){await e.reduce(async(e,n,r)=>{await e,await t(n,r)},Promise.resolve())}function tR(e){return Uint8Array.from(e)}function nR(e){return tR(Mg(e,hg))}function rR(e){return nR({1:e.identityKey.alg,4:e.deviceId})}function iR(e,t){return Mg([`Signature1`,e,new Uint8Array,t],hg)}function aR(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}async function oR(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=b_(r,x_)}catch{return{ok:!1,reason:`malformed`}}let o=hD.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(t.expectedRoom!==void 0&&s.room!==t.expectedRoom)return{ok:!1,reason:`wrong_room`};if(!await t.identity.verify(s[`poster-key`],iR(n,r),i))return{ok:!1,reason:`bad_signature`};if(!aR(await t.identity.deriveDeviceId(s[`poster-key`][`public-key`]),s.poster))return{ok:!1,reason:`wrong_poster`};let c=s[`valid-until`];if(c!==void 0&&c<=t.clock.now())return{ok:!1,reason:`content_expired`};let l=s[`key-epoch`];if(YL(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await dL(s.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:s.poster,roomPath:s.room,...t.dmRootPolicy===void 0?{}:{dmRootPolicy:t.dmRootPolicy}});return u.ok?{ok:!0,claims:s}:{ok:!1,reason:u.reason}}async function sR(e){let t=nR({room:e.room,poster:e.identity.deviceId,"poster-key":e.identity.identityKey,token:e.token,"notice-id":e.noticeId,"posted-at":e.clock.now(),"content-type":e.contentType,content:e.content,...e.refs===void 0?{}:{refs:[...e.refs]},...e.validUntil===void 0?{}:{"valid-until":e.validUntil},...e.keyEpoch===void 0?{}:{"key-epoch":e.keyEpoch}}),n=rR(e.identity);return[n,{},t,await e.identity.sign(iR(n,t))]}var cR=16;function lR(e){return new Uint8Array(Mg(e,hg))}function uR(e){let{identity:t,storage:n,clock:r,revocation:i,roomKeys:a}=e;async function o(e){let i=await a.currentEpoch(e.room);if(i===void 0)throw Error(`no content key held for room ${e.room}: room.rekey this room before posting encrypted notices`);let o=await a.get(e.room,i);if(o===void 0)throw Error(`content key store is inconsistent: epoch ${String(i)} is current for room ${e.room} but holds no key`);let s=e.noticeId??crypto.getRandomValues(new Uint8Array(cR)),c=await WL(o,e.plaintext),l=await sR({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:qL(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await LM({identity:t,storage:n},lR(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await IM(n,e);if(!(await BM(n,{type:`data-entries`,peer:e,"from-seq":r,entries:[t]})).ok)throw Error(`gap rejecting entry for peer log (head ${String(r)})`)}async function c(e,t,r){let i=await VM(n,e,0),a=[];return await MO(i,async e=>{a.push(await l(e,t,r))}),a}async function l(e,n,o){let s=u(e);if(s===void 0)return{verified:!1,reason:`malformed`};let c=await oR(s,{identity:t,clock:r,revocation:i,expectedRoom:n,dmRootPolicy:o});if(!c.ok)return{verified:!1,reason:c.reason};let l=c.claims;if(!YL(l[`content-type`]))return{verified:!0,contentType:l[`content-type`],plaintext:l.content,claims:l};let d=l[`key-epoch`];if(d===void 0)return{verified:!1,reason:`key_epoch_mismatch`};let f=await a.get(l.room,d),p={verified:!0,contentType:JL(l[`content-type`]),claims:l};if(f===void 0)return p;try{let e=await GL(f,l.content);return{...p,plaintext:e}}catch{return p}}function u(e){try{let t=b_(e,x_),n=mD.safeParse(t);return n.success?n.data:void 0}catch{return}}return{postEncryptedNotice:o,ingestPeerEntry:s,readOwnNotices:async e=>c(t.deviceId,e,`either-participant`),readPeerNotices:async(e,t)=>c(e,t,`self`)}}var dR=32;function fR(e){let{senders:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=uR({identity:r,storage:n,clock:i,revocation:a,roomKeys:o});async function l(e,t){let r=await IM(n,t);await e.sendDataFrame({type:`data-request`,peer:t,"from-seq":r})}async function u(e){let t=await IM(n,r.deviceId);t!==0&&await e.sendDataFrame({type:`data-have`,peer:r.deviceId,"head-seq":t})}function d(e,t){if(e.type===`data-have`){l(t,e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await BM(n,e)).ok&&(e.entries.length>=dR&&await l(t,e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await zM(n,e,dR);r!==null&&await t.sendDataFrame(r)})().catch(()=>void 0)}return{handleFrame:d,async post(e){let{dataHave:n}=await c.postEncryptedNotice(e);await Promise.allSettled(t().map(async e=>e.sendDataFrame(n))),s()},async readRoom(e,t){let n=await c.readOwnNotices(e),r=await Promise.all(t.map(async t=>c.readPeerNotices(t,e)));return[...n,...r.flat()]},async sync(e,t){await u(e),await Promise.all(t.map(async t=>l(e,t)))},async pull(e){await Promise.allSettled(t().flatMap(t=>e.map(async e=>l(t,e))))},roomKeys:o}}async function pR(e){let{session:t,target:n,identity:r,clock:i,revocation:a,ownRoomMemberToken:o,roomPath:s,roomKeys:c,delivery:l}=e,u=s.split(`+`)[0]??``;if(u===``||fO(r.deviceId)!==u)return;let d=await c.currentEpoch(s);if(d!==void 0&&d!==1||await l.isDelivered(s))return;let f=await dL(o,{identity:r,clock:i,revocation:a,expectedBearer:r.deviceId,roomPath:s,dmRootPolicy:`either-participant`});if(!f.ok)throw Error(`own room token failed verification: ${f.reason}`);let p=r.deriveSharedSecret;if(p===void 0)throw Error(`this identity cannot derive ECDH shared secrets`);let m=d===void 0?IL():await c.get(s,1);if(m===void 0)throw Error(`room ${s} lost its epoch 1 key`);let h=await VL(await RL(await p(f.rootIssuerKey),{room:s,keyEpoch:1}),m);d===void 0&&await c.set(s,1,m);let g=await QL(t,s,1,h,n,o);if(g.result!==`ok`)throw Error(`room.rekey was refused: ${g.code}`);await l.markDelivered(s)}var mR=[`core/management`,`core/room`],hR=16;function gR(){let e=new Uint8Array(hR);return crypto.getRandomValues(e),e}function _R(e){if(e?.direct!==void 0)return{session:e.direct,target:void 0};if(e?.relay!==void 0)return{session:e.relay.hub,target:e.relay.peer};throw Error(`conversation is not connected`)}function vR({identity:e,clock:t,messageStore:n,roomStorage:r,capabilities:i}){let{revocation:a,grants:o}=i,[s,c]=(0,k.useReducer)(rI,new Map),l=fO(e.deviceId),[u,d]=(0,k.useState)(void 0),f=(0,k.useCallback)(e=>{e.then(void 0,e=>{d(e instanceof Error?e.message:String(e))})},[]),p=(0,k.useRef)(s);(0,k.useEffect)(()=>{p.current=s},[s]);let m=(0,k.useRef)(new Set),h=(0,k.useRef)(new WeakSet),g=(0,k.useMemo)(()=>DL(r),[r]);function _(){return[...p.current.values()].flatMap(e=>e.participants.map(e=>mO(e)))}let v=(0,k.useRef)(()=>void 0),y=(0,k.useMemo)(()=>fR({senders:()=>[...new Set([...[...p.current.values()].flatMap(e=>[...e.direct===void 0?[]:[e.direct],...e.relay===void 0?[]:[e.relay.hub]]),...m.current])],storage:r,identity:e,clock:t,revocation:a,roomKeys:g,onChange:()=>{v.current()}}),[e,t,r,g,a]);function b(e){let t=p.current.get(e)?.participants;t!==void 0&&y.readRoom(e,t.map(e=>mO(e))).then(t=>{c({type:`notices`,roomPath:e,notices:[...t]})})}(0,k.useEffect)(()=>{v.current=()=>{for(let e of p.current.keys())b(e)}});let x=(0,k.useRef)(new Map),S=(0,k.useMemo)(()=>kL(r),[r]),C=(0,k.useMemo)(()=>OL(r,e,t,a),[r,e,t,a]);async function w(e,t){x.current.set(e,t),await C.set(e,t)}async function T(e){let t=x.current.get(e);if(t!==void 0)return t;let n=await C.get(e);return n!==void 0&&x.current.set(e,n),n}(0,k.useEffect)(()=>{let e=new AbortController,t=()=>e.signal.aborted;return(async()=>{await eR([...new Set([...await n.roomPaths(),...await C.rooms()])],async e=>{if(t())return;let r=await n.list(e);if(t())return;let i=iI(e,l);c({type:`restored`,roomPath:e,participants:i,messages:r}),y.readRoom(e,i.map(e=>mO(e))).then(t=>{c({type:`notices`,roomPath:e,notices:[...t]})})})})(),()=>{e.abort()}},[n,C,y,l]);let E=(0,k.useRef)(new Map);async function D(n,r,i){let o=E.current.get(n);if(o!==void 0)return o;let s=pR({session:i.session,target:i.target,identity:e,clock:t,revocation:a,ownRoomMemberToken:r,roomPath:n,roomKeys:g,delivery:S}).finally(()=>{E.current.delete(n)});return E.current.set(n,s),s}function O(r){return{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};f(n.append(r,t)),c({type:`message`,roomPath:r,message:t}),y.pull((p.current.get(r)?.participants??[]).map(e=>mO(e)))},onGrantIssued:e=>{f(o.record(`issued`,e,t.now()))},onJoinRequest:e=>{c({type:`join-request`,roomPath:r,request:{requesterHex:fO(e.requesterDevice),async decide(t){c({type:`join-request-settled`,roomPath:r}),await e.decide(t),(async()=>{let e=await T(r),t=p.current.get(r);e!==void 0&&t!==void 0&&await D(r,e,_R(t))})().catch(()=>void 0)}}})},onRekey:async n=>{let i=await T(r);if(i===void 0){await n.respond({result:`error`,code:`no_token`});return}await $L({identity:e,clock:t,revocation:a,ownRoomMemberToken:i,onRekey:async e=>{await eR(e.contentKeys,async(t,n)=>{await g.set(r,e.keyEpoch-e.contentKeys.length+1+n,t)}),b(r)}})(n)}}}let A=(0,k.useCallback)(async(r,i)=>{let o={},u=await DN(r,e,mR,{clock:t,onFrame:(e,t)=>{o.current?.(t)}}),d=i??await u.peerDeviceId,f=fO(d),p=NN(l,f);if(s.get(p)?.direct!==void 0){await u.close();return}o.current=e=>{y.handleFrame(e,u)},c({type:`direct-opened`,roomPath:p,participants:[f],session:u}),c({type:`restored`,roomPath:p,participants:[f],messages:await n.list(p)}),y.sync(u,[d]).catch(()=>void 0),xL(u,{identity:e,clock:t,revocation:a,peerDevice:d,currentMembers:()=>[e.deviceId,d]},O(p)),(async()=>{for await(let e of u.events)e.state.status===`closed`&&c({type:`direct-closed`,roomPath:p})})()},[e,t,l,s,n,y]),j=(0,k.useCallback)(async n=>fL(o,{identity:e,clock:t,revocation:a,expectedBearer:e.deviceId},uL,{kind:`room`,path:n}),[o,e,t,a]),M=(0,k.useCallback)(async(e,r,i)=>{let a=s.get(e),{session:l,target:u}=_R(a),d=a?.token;if(d===void 0){i(`awaiting-approval`);let n=await bL(l,e,{targetDevice:u,requestToken:await j(e)});i(`sending`),d=n.token,await w(e,d),f(o.record(`held`,d,t.now())),c({type:`token`,roomPath:e,token:d}),await D(e,d,{session:l,target:u}).catch(()=>void 0)}let p=await yL(l,e,r,{token:d,targetDevice:u});if(p.result!==`ok`)throw Error(`send failed: ${p.code}`);let m={direction:`sent`,text:r,messageId:gR(),sentAt:t.now()};return await n.append(e,m),m},[s,t,n,e,g,j]),N=(0,k.useCallback)(async(e,t,n)=>{c({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await M(e,n,r=>{c({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:r}})});c({type:`message`,roomPath:e,message:r}),c({type:`outgoing-removed`,roomPath:e,localId:t})}catch(r){c({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`failed`,error:r instanceof Error?r.message:String(r)}})}},[M]),ee=(0,k.useCallback)(async(e,t)=>N(e,crypto.randomUUID(),t),[N]),P=(0,k.useCallback)(async(e,t)=>{let n=s.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await N(e,t,n.text)},[s,N]),F=(0,k.useCallback)((e,t)=>{c({type:`outgoing-removed`,roomPath:e,localId:t})},[]),I=(0,k.useCallback)(async(e,n)=>{let r=s.get(e),{session:i,target:a}=_R(r),l=r?.token??await T(e);l===void 0&&(l=(await bL(i,e,{targetDevice:a,requestToken:await j(e)})).token,await w(e,l),f(o.record(`held`,l,t.now())),c({type:`token`,roomPath:e,token:l})),await D(e,l,{session:i,target:a}),await y.post({room:e,token:l,contentType:`text/plain`,plaintext:new TextEncoder().encode(n)}),b(e)},[s,e,t,g,y,j]),te=(0,k.useCallback)(e=>{c({type:`read`,roomPath:e})},[]),ne=(0,k.useCallback)((e,t)=>{let r=NN(l,fO(t)),i=[fO(t)];c({type:`relay-opened`,roomPath:r,participants:i,route:{hub:e,peer:t}}),n.list(r).then(e=>{c({type:`restored`,roomPath:r,participants:i,messages:e})}),y.sync(e,[t]).catch(()=>void 0)},[l,n,y]),re=(0,k.useCallback)(n=>{let r=new Map;m.current.add(n),(async()=>{for await(let i of n.incomingManageRequests){let o=i.fromDevice;if(o===void 0)continue;let s=fO(o),c=r.get(s);if(c===void 0){c=DM(),r.set(s,c);let i=NN(l,s);ne(n,o),xL({incomingManageRequests:c.stream},{identity:e,clock:t,revocation:a,peerDevice:o,currentMembers:()=>[e.deviceId,o]},O(i))}c.push(i)}})()},[e,t,l,ne]),ie=(0,k.useCallback)(e=>{m.current.delete(e),c({type:`hub-closed`,hub:e})},[]),L=(0,k.useCallback)((e,t,n)=>{h.current.has(t)||(h.current.add(t),y.sync(e,_()).catch(()=>void 0)),y.handleFrame(n,e)},[y]);return{conversations:[...s.values()],persistenceFailure:u,openRelay:ne,watchHub:re,dropHub:ie,onHubFrame:L,attach:A,send:ee,retry:P,discard:F,postNotice:I,markRead:te}}function yR(e,t){let n=new Map(t.map(e=>[e,DM()]));return(async()=>{for await(let t of e)n.get(t.command.verb)?.push(t)})(),{stream:e=>{let t=n.get(e);if(t===void 0)throw Error(`the demux was not built to carry verb ${e}`);return t.stream}}}var bR=8787,xR=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function SR(e){return xR.test(e)}async function CR(e=bR){try{return await fetch(`http://127.0.0.1:${String(e)}/`,{mode:`no-cors`}),`ws://127.0.0.1:${String(e)}`}catch{return}}async function wR(e=typeof location>`u`?``:location.host){return SR(e)?Promise.resolve(void 0):CR()}var TR=`ws://localhost:8787`,ER=[`core/management`,`core/exec`,`core/data`],DR=[`core/management`,`core/data`],OR=[lP,uL];function kR({identity:e,clock:t,messageStore:n,roomStorage:r,certificateMemory:i,nameStore:a,preferences:o,grants:s,revocations:c,identityBackup:l,discoverLocalNode:u=wR,defaultAddress:d=TR}){let[f,p]=(0,k.useState)(d),[m,h]=(0,k.useState)(DR),[g,_]=(0,k.useState)([]),[v,y]=(0,k.useState)([]),[b,x]=(0,k.useState)([]),[S,C]=(0,k.useState)(void 0),w=ZI(o),T=JF(i,t),E=(0,k.useMemo)(()=>({revocation:c.view,grants:s}),[c,s]),D=vR({identity:e,clock:t,messageStore:n,roomStorage:r,capabilities:E}),[O,A]=(0,k.useState)(),j=D.conversations.find(e=>e.roomPath===O)??D.conversations[0],{markRead:M}=D,N=j?.roomPath,ee=j?.unread??0;(0,k.useEffect)(()=>{N!==void 0&&ee>0&&M(N)},[N,ee,M]);let P=(0,k.useRef)(new Map),F=(0,k.useRef)(D.onHubFrame);(0,k.useEffect)(()=>{F.current=D.onHubFrame},[D.onHubFrame]);let I=(0,k.useRef)(D.watchHub);(0,k.useEffect)(()=>{I.current=D.watchHub},[D.watchHub]);let te=(0,k.useRef)(D.attach);(0,k.useEffect)(()=>{te.current=D.attach},[D.attach]);let ne=(0,k.useRef)(g);(0,k.useEffect)(()=>{ne.current=g},[g]);let re=(0,k.useRef)(new Set),ie=(0,k.useRef)(new Map),L=(0,k.useRef)(!1),R=()=>L.current;(0,k.useEffect)(()=>(L.current=!1,()=>{L.current=!0;for(let e of ne.current)e.session.close()}),[]);let ae=(0,k.useRef)(m);(0,k.useEffect)(()=>{ae.current=m},[m]);function oe(n,r){let i=yR(r.incomingManageRequests,OR),a=OP({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(lP)},{identity:e,clock:t,revocation:E.revocation,iceServers:cP,onIncomingConnection:e=>{te.current(e)}});(async()=>{for await(let e of r.revocationAnnouncements)try{await c.ingest(e)}catch(e){C(e instanceof Error?e.message:String(e))}})();let o={sendManageRequest:async(...e)=>r.sendManageRequest(...e),sendDataFrame:async e=>r.sendDataFrame(e),incomingManageRequests:i.stream(uL)};P.current.set(r,o),I.current(o),_(e=>[...e,{address:n,session:r,hub:o,negotiator:a}])}async function se(e,t){let n=LF(e.device);for(let t of e.addresses){let e=ie.current.get(t)??new Set;e.add(n),ie.current.set(t,e)}return new Promise(r=>{y(i=>[...i,{key:n,device:e.device,addresses:e.addresses,via:t,resolve:r}])})}function ce(e,t){y(n=>(n.find(t=>t.key===e)?.resolve(t),n.filter(t=>t.key!==e)))}function le(n){let r={current:null},i={current:null},a=EN(sP(T.memory),e,t,zN,[],e=>{r.current?.considerAdvert(e)},(e,t)=>{let n=i.current===null?void 0:P.current.get(i.current);n!==void 0&&F.current(n,e,t)});return i.current=a,r.current=kN({selfDeviceId:e.deviceId,shouldExpand:async e=>se(e,n),dial:de,onExpanded:(e,t,n)=>{oe(t,n),ue(e)},onExpansionDeclined:ue,onExpansionFailed:ue}),a}function ue(e){let t=LF(e.device);for(let n of e.addresses){let e=ie.current.get(n);e?.delete(t),e?.size===0&&ie.current.delete(n)}}async function de(e){let t=await T.confirmAddress(_F(e));if(t===void 0)throw Error(`the certificate of ${e} was not trusted`);if(R())throw Error(`the console was closed before the dial began`);let n=ie.current.get(e),[r]=n??[],i=le({address:e,claimedDevice:n?.size===1?r:void 0});if(await i.connect(t,ae.current),R())throw await i.close(),Error(`the console was closed while the dial was connecting`);return i}function fe(e){ne.current.some(t=>t.address===e)||re.current.has(e)||(re.current.add(e),T.confirmAddress(_F(e)).then(t=>{if(t===void 0||R())return;let n=le({address:e,claimedDevice:void 0});oe(e,n),n.connect(t,m).catch(()=>{})}).finally(()=>{re.current.delete(e)}))}let pe=(0,k.useRef)(fe);(0,k.useEffect)(()=>{pe.current=fe});let me=(0,k.useRef)(u);(0,k.useEffect)(()=>{me.current=u},[u]);let he=(0,k.useRef)(!1);(0,k.useEffect)(()=>{he.current||(he.current=!0,me.current().then(e=>{e!==void 0&&pe.current(e)}))},[]);function ge(e){e.preventDefault(),fe(f)}async function _e(e){let t=await Promise.allSettled(ne.current.map(async t=>t.session.sendRevocationAnnounce([e])));return{attempted:t.length,reached:t.filter(e=>e.status===`fulfilled`).length}}function ve(e){D.dropHub(e.hub),e.session.close(),_(t=>t.filter(t=>t.session!==e.session))}function ye(t,n){D.openRelay(t.hub,n),A(NN(fO(e.deviceId),fO(n))),t.negotiator.initiate(n).then(async e=>D.attach(e,n)).catch(e=>{x(t=>[...t,{key:crypto.randomUUID(),peer:LF(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,z.jsx)(YF,{store:a,children:(0,z.jsxs)(rm,{className:MF,p:`md`,gap:`lg`,children:[(0,z.jsxs)(pl,{justify:`space-between`,children:[(0,z.jsx)(Lm,{order:1,children:`wire-mesh console`}),w.ready&&!w.visible&&(0,z.jsx)(Ed,{size:`xs`,variant:`subtle`,onClick:w.show,children:`How this works`})]}),w.error!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`The first-run intro's setting is unavailable`,children:w.error}),w.visible&&(0,z.jsx)(ZF,{onDismiss:w.dismiss}),(0,z.jsx)(XF,{}),(0,z.jsxs)(`form`,{onSubmit:ge,children:[(0,z.jsxs)(pl,{align:`flex-end`,wrap:`wrap`,children:[(0,z.jsx)(Am,{label:`Node`,value:f,onChange:e=>{p(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,z.jsx)(Ed,{type:`submit`,children:`Connect`})]}),(0,z.jsx)(od.Group,{label:`Domains offered`,value:m,onChange:h,children:(0,z.jsx)(pl,{mt:`xs`,children:ER.map(e=>(0,z.jsx)(od,{value:e,label:e},e))})})]}),(0,z.jsx)(qF,{prompts:T.prompts,changes:T.changes,onDismissChange:T.dismissChange}),(0,z.jsx)(WF,{peers:v,onConnect:e=>{ce(e,!0)},onDismiss:e=>{ce(e,!1)}}),g.map(e=>(0,z.jsx)(HF,{address:e.address,session:e.session,clock:t,reconnectPolicy:zN,certificateChanges:T.changes,onClose:()=>{ve(e)},onMessagePeer:t=>{ye(e,t)}},e.address)),b.map(e=>(0,z.jsxs)(eu,{color:`yellow`,title:(0,z.jsxs)(z.Fragment,{children:[`No direct connection to `,(0,z.jsx)(vF,{deviceHex:e.peer})]}),withCloseButton:!0,onClose:()=>{x(t=>t.filter(t=>t.key!==e.key))},children:[e.reason,`. Messages go through the hub instead.`]},e.key)),D.persistenceFailure!==void 0&&(0,z.jsxs)(eu,{color:`red`,title:`Could not save to this console's storage`,children:[D.persistenceFailure,`. The conversation carries on, but what failed to save will be missing after a reload.`]}),S!==void 0&&(0,z.jsx)(eu,{color:`red`,title:`A revocation could not be stored`,children:S}),(0,z.jsx)(YI,{revocations:c,onFailure:C}),(0,z.jsx)(lI,{conversations:D.conversations,onSelect:A}),(0,z.jsx)(JI,{identity:e,clock:t,grants:s,revocations:c,identityBackup:l,announceRevocation:_e}),(0,z.jsx)(QI,{conversations:D.conversations,selected:j?.roomPath,onSelect:A}),j!==void 0&&(0,z.jsx)(lL,{view:j,onSend:async e=>D.send(j.roomPath,e),onPostNotice:async e=>D.postNotice(j.roomPath,e),onRetry:e=>{D.retry(j.roomPath,e)},onDiscard:e=>{D.discard(j.roomPath,e)}},j.roomPath)]})})}var AR=`modulepreload`,jR=function(e){return`/`+e},MR={},NR=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=jR(t,n),t=s(t),t in MR)return;MR[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:AR,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},PR=`false`,FR=`false`,IR=PR===`true`,LR=FR===`true`;function RR(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,c,l,u,d=async(e=!0)=>{await l,IR||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await NR(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[]).then(({Workbox:e})=>new e(`/sw.js`,{scope:`/`,type:`classic`})).catch(e=>{s?.(e)}),!c)return;if(u=()=>{c?.messageSkipWaiting()},!LR){if(IR)c.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),c.addEventListener(`installed`,e=>{e.isUpdate||i?.()});else{let e=!1,t=()=>{e=!0,c?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),r?.()};c.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&i?.():n.isExternal?t():!e&&i?.():n.isUpdate||i?.()}),c.addEventListener(`waiting`,t)}}c.register({immediate:t}).then(e=>{o?o(`/sw.js`,e):a?.(e)}).catch(e=>{s?.(e)})}}return l=f(),d}function zR(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,k.useState)(!1),[u,d]=(0,k.useState)(!1),[f]=(0,k.useState)(()=>RR({immediate:t,onNeedReload:n,onOfflineReady(){d(!0),i?.()},onNeedRefresh(){l(!0),r?.()},onRegistered:a,onRegisteredSW:o,onRegisterError:s}));return{needRefresh:[c,l],offlineReady:[u,d],updateServiceWorker:f}}function BR(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=zR();function a(){t(!1),r(!1)}return!e&&!n?null:(0,z.jsx)(Ef,{onClose:a,closeButtonProps:{"aria-label":`Dismiss`},title:n?`Update available`:`Ready to work offline`,pos:`fixed`,bottom:`1rem`,right:`1rem`,style:{zIndex:1e3},children:(0,z.jsx)(pl,{gap:`xs`,children:n?(0,z.jsx)(Ed,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var VR=`ws://localhost:8787`;function HR(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function UR(e,t){return e?VR:HR(t)}var WR=await qm(),GR=await I_(WR),KR={now:()=>Date.now()},qR=bj(await qm()),JR=await Tj({storage:await qm(),identity:GR,clock:KR}),YR=AO(WR),XR=Yj(await qm()),ZR=await qm(),QR=gO(await qm()),$R=Hj(await qm()),ez=Oj(await qm()),tz=UR(!1,window.location),nz=document.getElementById(`root`);if(nz===null)throw Error(`missing #root element`);(0,Rm.createRoot)(nz).render((0,z.jsx)(k.StrictMode,{children:(0,z.jsxs)(xn,{children:[(0,z.jsx)(kR,{identity:GR,clock:KR,messageStore:XR,roomStorage:ZR,certificateMemory:QR,nameStore:$R,preferences:ez,grants:qR,revocations:JR,identityBackup:YR,defaultAddress:tz}),(0,z.jsx)(BR,{})]})}));