-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.js
2 lines (2 loc) · 87.1 KB
/
index.js
1
2
const e=(e,t=document)=>[...t.querySelectorAll(e)],t=(e,t=document)=>{const n=(new XPathEvaluator).createExpression(e).evaluate(t,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE),r=[];for(let e=0,{snapshotLength:t}=n;e<t;e++)r.push(n.snapshotItem(e));return r},n=Object.getOwnPropertyDescriptors(Response.prototype),r=e=>"function"==typeof e,s={get:(e,t)=>n.hasOwnProperty(t)?((e,t,{get:n,value:s})=>n||!r(s)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,n[t]):((e,t)=>r(t)?t.bind(e):t)(e,e[t])};var o=(e,...t)=>new Proxy(fetch(e,...t),s);const{assign:a}=Object,i="entries",c="readonly",l="readwrite",u={durability:"default",prefix:"IDBMap"},p=({target:{result:e}})=>e;class f extends EventTarget{#e;#t;#n;async#r(e,t){const n=(await this.#e).transaction(i,t,this.#t);return new Promise(((t,r)=>a(e(n.objectStore(i)),{onsuccess:t,onerror:r})))}constructor(e,{durability:t=u.durability,prefix:n=u.prefix}=u){super(),this.#n=n,this.#t={durability:t},this.#e=new Promise(((t,n)=>{a(indexedDB.open(`${this.#n}/${e}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(i),n.oncomplete=()=>t(e)},onsuccess(e){t(p(e))},onerror(e){n(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith("on")&&(e[n]=t);return e}))}dispatchEvent(e){const{type:t,message:n,isTrusted:r}=e;return super.dispatchEvent(r?a(new Event(t),{message:n}):e)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),c).then(p)}async clear(){await this.#r((e=>e.clear()),l)}async delete(e){await this.#r((t=>t.delete(e)),l)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),c).then(p)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),c).then(p)}async keys(){return await this.#r((e=>e.getAllKeys()),c).then(p)}async set(e,t){return await this.#r((n=>n.put(t,e)),l),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class d extends Map{#s;#o;constructor(...e){super(),this.#s=new f(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}const y=new Proxy(new Map,{get:(e,t)=>(e.has(t)||e.set(t,Promise.withResolvers()),e.get(t))}),h=new Set(["__dict__","constructor","get","has","includes","next","set","then"]),m=new Proxy(Object.freeze({}),{get:(e,t)=>"string"!=typeof t||h.has(t)?void 0:y[t].promise.then((e=>e.sync))});var w={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};let g="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),g+=crypto.randomUUID()}catch(At){g+=Math.random().toString(36).substring(2)}const{getPrototypeOf:b}=Object,_=e=>{const t=typeof e;switch(t){case"function":case"undefined":return"";case"object":return null===e?"null":"object";default:return t}},{isArray:A}=Array,{isView:v}=ArrayBuffer,{stringify:E}=JSON,k=(e,t,n)=>{const r=t.get(n);return"number"==typeof r?(e.push(w.ref,r),!0):(t.set(n,e.length),!1)},S=(e,t,n,r=_(n))=>{switch(r){case"null":e.push(w.null);break;case"object":if(k(e,t,n))break;switch(!0){case A(n):{const r=n.length;e.push(w.array,r);for(let s=0;s<r;s++)S(e,t,n[s]);break}case v(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(w.view,(e=>{for(;!(e.name in globalThis);)e=b(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),k(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(w.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=65535)e.push.apply(e,r.subarray(t,t+65535))}break}case n instanceof Date:e.push(w.date,+n);break;case n instanceof Map:{const r=e.push(w.map,0);let s=0;for(const[r,o]of n){const n=_(r),a=_(o);n&&a&&(S(e,t,r,n),S(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(w.set,0);let s=0;for(const r of n){const n=_(r);n&&(S(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(w.regexp,n.source,n.flags);break;case n instanceof Error:e.push(w.error,n.name,n.message,n.stack,n.cause);break;default:{if("toJSON"in n){const r=n.toJSON();if(r===n){e.push(w.object,0);break}if(k(e,t,n=r))break}const r=e.push(w.object,0);let s=0;for(const r in n){const o=n[r],a=_(o);a&&(S(e,t,r,"string"),S(e,t,o,a),s++)}e[r-1]=s;break}}break;case"boolean":e.push(n?w.true:w.false);break;case"string":if(k(e,t,n))break;e.push(w.string,n);break;case"bigint":e.push(w[r],n.toString());break;case"symbol":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith("Symbol.")||Symbol.keyFor(e)?t:""})(n);if(t){e.push(w[r],t);break}}case"":e.push(w.undefined);break;default:e.push(w[r],n)}},x=(e=>({byteOffset:t=0}={})=>(n,r)=>{const s=e(n),o=s.length,a=2*o+t;r.byteLength<a&&r.grow(a);const i=new Uint16Array(r,t,o);for(let e=0;e<o;e++)i[e]=s.charCodeAt(e);return o})((e=>{const t=[];return S(t,new Map,e),E(t)})),j="destroy";var F=e=>({byteOffset:t=0}={})=>(n,r)=>{const s=e(n),o=s.length,a=2*o+t;r.byteLength<a&&r.grow(a);const i=new Uint16Array(r,t,o);for(let e=0;e<o;e++)i[e]=s.charCodeAt(e);return o};const{stringify:B}=JSON,$=F(B),D="array",R="bigint",M="function",P="null",O="number",T="object",L="string",C="symbol",I="undefined",{getPrototypeOf:N}=Object,W=e=>{for(;!(e.name in globalThis);)e=N(e);return e.name};var U=Object.fromEntries([D,R,"boolean",M,P,O,T,L,C,I,"view"].map(((e,t)=>[e,t])));const{stringify:H}=JSON,J=F((e=>{switch(e[0]){case U.view:{const{constructor:t,buffer:n}=e[1];e[1]=[W(t),[...new Uint8Array(n)]];break}case U[R]:e[1]=e[1].toString()}return H(e)})),q="592e34ef",z="="+q,K="-"+q,{assign:G,create:Y}=Object;let X="coincident-",V=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),X+=crypto.randomUUID()}catch(e){V=!1,X+=Math.random().toString(36).substring(2)}const Z={byteOffset:2*Int32Array.BYTES_PER_ELEMENT,useUTF16:!0,circular:!0},Q=new Map,ee=(e,t,n)=>{const r="then"!==t;return r&&(e[t]=n),r},te=()=>Promise.withResolvers(),ne="InstallTrigger"in globalThis?X:"",{notify:re}=Atomics,se=e=>e;var oe=e=>{const t=e?.transform,n=(e?.encoder||$)(Z);class r extends globalThis.Worker{constructor(e,r){const{port1:s,port2:o}=new MessageChannel,[a,i]=((e,t=0)=>[n=>{const r=te();do{n=e(t++)}while(Q.has(n));return Q.set(n,r),[n,r]},(e,t,n)=>{const r=Q.get(e);Q.delete(e),n?r.reject(n):r.resolve(t)}])(se),c=new Map,l=Y(null);let u="";super(e,G({type:"module"},r)).proxy=new Proxy(l,{get:(e,n)=>{if("then"===n)return;let r=c.get(n);return r||c.set(n,r=(...e)=>{const[r,o]=a();return s.postMessage([r,n,t?e.map(t):e]),(({promise:e},t)=>{if(u){const n=setTimeout(console.warn,3e3,`💀🔒 - is proxy.${u}() awaiting proxy.${t}() ?`);e=e.then((e=>(clearTimeout(n),e)),(e=>(clearTimeout(n),Promise.reject(e))))}return e})(o,n)}),r},set:ee}),super.postMessage(ne,[o]),V&&ne&&super.addEventListener("message",(e=>{const{data:t}=e;t?.ID===ne&&((e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),s.onmessage(t))})),s.onmessage=async({data:e})=>{const r=e[0],o=typeof r;if("number"===o)i.apply(null,e);else if(u=e[1],await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,l,t),u="","string"===o)s.postMessage(e);else{const t=e[2]||e[1];r[1]=void 0===t?0:n(t,r.buffer),r[0]=1,re(r,0)}}}}return{Worker:r,native:V}};const ae="destruct",ie=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(ie.set(Symbol[e],e),ie.set(e,Symbol[e]));const ce=e=>ie.get(e)||`.${Symbol.keyFor(e)||""}`,le=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,"font-weight:bold","collected"),e(t)})),ue=Object.create(null),pe=(e,t,{debug:n,handler:r,return:s,token:o=e}=ue)=>{const a=s||new Proxy(e,r||ue),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),le.register(...i),a},{addEventListener:fe}=EventTarget.prototype,de=new WeakMap;Reflect.defineProperty(EventTarget.prototype,"addEventListener",{value(e,t,...n){const r=n.at(0)?.invoke;if(r){let t=de.get(this);t||(t=new Map,de.set(this,t)),t.set(e,[].concat(r)),delete n[0].invoke}return fe.call(this,e,t,...n)}});const{isArray:ye}=Array,{isView:he}=ArrayBuffer;var me=(e,t)=>{const{clear:n,drop:r,get:s,hold:o}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===O?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),a=new Map,i=e=>{a.delete(e),t(ae,e)},c=e=>{const t=typeof e;switch(t){case T:return null===e?[U[P],e]:e===globalThis?[U[T],null]:ye(e)?[U[D],o(e)]:he(e)?[U.view,e]:[U[T],o(e)];case M:return[U[M],o(e)];case C:return[U[C],ce(e)];default:return[U[t],e]}},l=([e,n])=>{switch(e){case U[T]:if(null===n)return globalThis;if(typeof n===O)return s(n);for(const e in n)n[e]=l(n[e]);return n;case U[D]:return typeof n===O?s(n):n.map(l);case U[M]:switch(typeof n){case O:return s(n);case L:{let e=a.get(n)?.deref();return e||(e=pe(n,i,{token:!1,return:function(...e){return e.length&&e[0]instanceof Event&&(e=>{const{currentTarget:t,target:n,type:r}=e,s=de.get(t||n)?.get(r);if(s)for(const t of s)e[t]()})(e[0]),t("apply",n,c(this),e.map(c)).then(l)}}),a.set(n,new WeakRef(e))),e}}case U[C]:return(e=>ie.get(e)||Symbol.for(e.slice(1)))(n);default:return n}},u=(e,t,n)=>c(e(t,...n.map(l))),p=t=>import(e(t)),f=new Set;return(e,t,...o)=>{if(e===j)n();else if(e===ae)f.has(t)||r(t);else{const n=Reflect[e],r=null==t?globalThis:s(t);switch(e){case"defineProperty":{const[e,t]=o.map(l);return c(n(r,e,t))}case"getOwnPropertyDescriptor":{const e=n(r,...o.map(l));if(e){const{get:t,set:n,value:r}=e;t&&(e.get=c(t)),n&&(e.set=c(n)),r&&(e.value=c(r))}return[U[e?T:I],e]}case"ownKeys":return[U[D],n(r).map(c)];case"get":if(null==t){const e="import"===o[0][1]?c(p):u(n,r,o);return f.add(e[1]),e}default:return u(n,r,o)}}return[U[I],void 0]}};const{url:we}=import.meta,ge=/import\((['"])([^)]+?\.js)\1\)/g,be=(e,t,n)=>`import(${t}${new URL(n,we).href}${t})`,{Worker:_e}=(e=>{let t=!1;const n=e?.import,r=e?.encoder||$,s=oe({...e,encoder(e){const n=r(e),s=J(e);return(e,r)=>t?(t=!1,s(e,r)):n(e,r)}});class o extends s.Worker{constructor(e,r){const{proxy:s}=super(e,r),o=me(r?.import||n||(e=>new URL(e,location.href)),s[K]);s[z]=function(...e){return t=!0,o.apply(this,e)}}terminate(){this.proxy[z](j),super.terminate()}}return{...s,Worker:o}})({encoder:x});const Ae=new WeakMap,ve=e=>{const t=e||console,n={buffered:ke,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return Ae.set(t,n),t}}},Ee=new TextDecoder,ke=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Ee.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},Se=new Map,xe=e=>Se.get(e),je=(e,t)=>{try{return Function("require",t)(xe)}catch(t){Ae.get(e).stderr(t)}};var Fe={type:"dummy",module:()=>"data:application/javascript,",engine:e=>ve().get(e),registerJSModule(e,t,n){Se.set(t,n)},run:je,runAsync:je,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)(xe,n)}catch(t){Ae.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};Promise.withResolvers||(Promise.withResolvers=function(){var e,t,n=new this((function(n,r){e=n,t=r}));return{resolve:e,reject:t,promise:n}});const Be={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\r\n]+/))if(t.trim().length){/^(\s+)/.test(t)&&(e=e.replace(new RegExp("^"+RegExp.$1,"gm"),""));break}return e}},{replace:$e}="",De=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,Re={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'},Me=e=>Re[e],Pe=(e,...t)=>Be[typeof e](e,...t),Oe=e=>$e.call(e,De,Me),{isArray:Te}=Array,{assign:Le,create:Ce,defineProperties:Ie,defineProperty:Ne,entries:We}=Object,{all:Ue,resolve:He}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Je=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href;function qe(e){return e.startsWith(".")?Je(e,this):e}let ze=0;const Ke=(e,t)=>({id:e.id||(e.id=`${t}-w${ze++}`),tag:e.tagName}),Ge=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Ye=(e,t,n,r)=>({type:t,config:n,interpreter:r,io:Ae.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}),Xe=e=>e.replace(/^(?:\n|\r\n)/,""),Ve=(e,t,n,r)=>{const s=e[t].bind(e);e[t]="run"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,Xe(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Xe(t),...o);return r&&await s(e,r,...o),a}},Ze=Symbol.for("polyscript.js_modules"),Qe=new Map;Ne(globalThis,Ze,{value:Qe});const et=new Proxy(Qe,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]}),tt=(e,t)=>!t.startsWith("_"),nt=(e,t)=>new Proxy(e,{has:tt,get:(e,n)=>e[t][n]}),rt=(e,t,n,r)=>{if("pyodide"===e)return;const s="polyscript.js_modules";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,nt(r,e));t.registerJSModule(n,s,r)},st=(e,t)=>import(e).then((e=>{Qe.set(t,{...e})})),ot=e=>new Promise(((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(Le(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))})),at=e=>/\.css$/i.test(new URL(e).pathname),it=e=>/^(?:false|0|no)$/i.test(e.getAttribute("async")),ct=!globalThis.window,lt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):pt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},ut=e=>{const t=e.split("/");return t.pop(),t.join("/")},pt=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},ft=(e,t)=>{const n=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join("/").replace(/^\/+/,"/")},dt=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},yt=(e,t)=>o(Je(e,t)).arrayBuffer(),ht=(e,t,n,r)=>Ue((e=>{for(const{files:t,to_file:n,from:r=""}of e){if(void 0!==t&&void 0!==n)throw new Error("Cannot use 'to_file' and 'files' parameters together!");if(void 0===t&&void 0===n&&r.endsWith("/"))throw new Error(`Couldn't determine the filename from the path ${r}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:n,files:r})=>{if(Te(r))return r.map((n=>({url:dt([e,n]),path:dt([t,n])})));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:dt([t,s])}]}))})(n).map((({url:n,path:s})=>yt(n,r).then((n=>e.writeFile(t,s,n)))))),mt=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,wt=(e,t)=>e.replace(/\{.+?\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),gt=(e,t,n,r)=>Ue((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of We(e))if(/^\{.+\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,wt(o,t))}else{const e=wt(s,t),a=mt(e,wt(o||"./",t));if(n.has(a)&&!a.endsWith("/*"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>yt(n,r).then((r=>e.writeFile(t,s,r,n)))))),bt=({main:e,worker:t},n)=>{const r=[];if(t&&ct)for(let[e,s]of We(t))e=Je(e,n),r.push(st(e,s));if(e&&!ct)for(let[t,s]of We(e))t=Je(t,n),at(t)?ot(t):r.push(st(t,s));return Ue(r)},_t=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:At}=Object,vt=e=>{const t=typeof e;switch(t){case"function":case"undefined":return"";case"object":return null===e?"null":"object";default:return t}};let Et="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),Et+=crypto.randomUUID()}catch(At){Et+=Math.random().toString(36).substring(2)}var kt={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:St}=Object,xt=e=>{switch(e[Ft++]){case kt.array:{const t=e[Ft++],n=[];e[Ft-2]=n;for(let r=0;r<t;r++)n[r]=xt(e);return n}case kt.object:{const t=e[Ft++],n={};e[Ft-2]=n;for(let r=0;r<t;r++)n[xt(e)]=xt(e);return n}case kt.string:{const t=e[Ft++];return e[Ft-2]=t,t}case kt.ref:return e[e[Ft++]];case kt.number:return e[Ft++];case kt.bigint:return BigInt(e[Ft++]);case kt.true:return!0;case kt.false:return!1;case kt.null:return null;case kt.undefined:return;case kt.buffer:{const t=e[Ft++],n=e[Ft++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Ft-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Ft++];return s}case kt.view:{const t=e[Ft++],n=e[Ft++],r=e[Ft++],s=[xt(e),n];r&&s.push(r);const o=new globalThis[t](...s);return e[Ft-4]=o,o}case kt.symbol:return(t=e[Ft++]).startsWith("Symbol.")?Symbol[t.slice(t.indexOf(".")+1)]:Symbol.for(t);case kt.date:{const t=new Date(e[Ft++]);return e[Ft-2]=t,t}case kt.map:{const t=e[Ft++],n=new Map;e[Ft-2]=n;for(let r=0;r<t;r++){const t=xt(e),r=xt(e);void 0!==t&&n.set(t,r)}return n}case kt.set:{const t=e[Ft++],n=new Set;e[Ft-2]=n;for(let r=0;r<t;r++){const t=xt(e);void 0!==t&&n.add(t)}return n}case kt.regexp:{const t=e[Ft++],n=e[Ft++],r=new RegExp(t,n);return e[Ft-3]=r,r}case kt.error:{const t=globalThis[e[Ft++]]||Error,n=e[Ft++],r=e[Ft++],s=new t(n,{cause:e[Ft++]});return e[Ft-5]=St(s,"stack",{value:r}),s}default:throw new Error(`Unknown type: ${e[Ft-1]}`)}var t},{parse:jt}=JSON;let Ft=0;const{isArray:Bt}=Array,{isView:$t}=ArrayBuffer,{stringify:Dt}=JSON,Rt=(e,t,n)=>{const r=t.get(n);return"number"==typeof r?(e.push(kt.ref,r),!0):(t.set(n,e.length),!1)},Mt=(e,t,n,r=vt(n))=>{switch(r){case"null":e.push(kt.null);break;case"object":if(Rt(e,t,n))break;switch(!0){case Bt(n):{const r=n.length;e.push(kt.array,r);for(let s=0;s<r;s++)Mt(e,t,n[s]);break}case $t(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(kt.view,(e=>{for(;!(e.name in globalThis);)e=At(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Rt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(kt.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=65535)e.push.apply(e,r.subarray(t,t+65535))}break}case n instanceof Date:e.push(kt.date,+n);break;case n instanceof Map:{const r=e.push(kt.map,0);let s=0;for(const[r,o]of n){const n=vt(r),a=vt(o);n&&a&&(Mt(e,t,r,n),Mt(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(kt.set,0);let s=0;for(const r of n){const n=vt(r);n&&(Mt(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(kt.regexp,n.source,n.flags);break;case n instanceof Error:e.push(kt.error,n.name,n.message,n.stack,n.cause);break;default:{if("toJSON"in n){const r=n.toJSON();if(r===n){e.push(kt.object,0);break}if(Rt(e,t,n=r))break}const r=e.push(kt.object,0);let s=0;for(const r in n){const o=n[r],a=vt(o);a&&(Mt(e,t,r,"string"),Mt(e,t,o,a),s++)}e[r-1]=s;break}}break;case"boolean":e.push(n?kt.true:kt.false);break;case"string":if(Rt(e,t,n))break;e.push(kt.string,n);break;case"bigint":e.push(kt[r],n.toString());break;case"symbol":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith("Symbol.")||Symbol.keyFor(e)?t:""})(n);if(t){e.push(kt[r],t);break}}case"":e.push(kt.undefined);break;default:e.push(kt[r],n)}},Pt={parse:e=>{Ft=0;const t=jt(e);return t.length?xt(t):void 0},stringify:e=>{const t=[];return Mt(t,new Map,e),Dt(t)}},Ot=new WeakMap,Tt=async(e,t,n,r,s)=>{r.files&&(t("Loading files"),await gt(e,n,r.files,s),t("Loaded files")),r.fetch&&(t("Loading fetch"),await ht(e,n,r.fetch,s),t("Loaded fetch")),r.js_modules&&(t("Loading JS modules"),await bt(r.js_modules,s),t("Loaded JS modules"))},Lt=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await Ot.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new d(e);return await t.sync(),t},n.JSON=Pt),e.registerJsModule(t,n)},Ct=(e,t)=>{if(e.endsWith("/*")){if(/\.(zip|whl|tgz|tar(?:\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},It=(e,t,...n)=>{try{return e.runPython(Pe(t),...n)}catch(t){Ae.get(e).stderr(t)}},Nt=async(e,t,...n)=>{try{return await e.runPythonAsync(Pe(t),...n)}catch(t){Ae.get(e).stderr(t)}},Wt=async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ae.get(e).stderr(t)}};var Ut=(new TextEncoder).encode("_F='github:'\n_E='user-agent'\n_D=True\n_C=False\n_B='/'\n_A=None\nfrom uio import StringIO\nimport sys\nclass Response:\n\tdef __init__(A,f):A.raw=f;A.encoding='utf-8';A._cached=_A\n\tdef close(A):\n\t\tif A.raw:A.raw.close();A.raw=_A\n\t\tA._cached=_A\n\t@property\n\tdef content(self):\n\t\tA=self\n\t\tif A._cached is _A:\n\t\t\ttry:A._cached=A.raw.read()\n\t\t\tfinally:A.raw.close();A.raw=_A\n\t\treturn A._cached\n\t@property\n\tdef text(self):return str(self.content,self.encoding)\n\tdef json(A):import ujson;return ujson.loads(A.content)\nHEADERS_TO_IGNORE=_E,\ntry:import js\nexcept Exception as err:raise OSError('This version of urequests can only be used in the browser')\nHEADERS_TO_IGNORE=_E,\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\n\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\n\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\n\telse:A.open(D,url,_C)\n\tfor(F,J)in headers.items():\n\t\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\n\tif E:A.timeout=int(E*1000)\n\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader('Content-Type','application/json')\n\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\ndef get(url,**A):return request('GET',url,**A)\n_PACKAGE_INDEX=const('https://micropython.org/pi/v2')\n_CHUNK_SIZE=128\ndef _ensure_path_exists(path):\n\timport os;A=path.split(_B)\n\tif not A[0]:A.pop(0);A[0]=_B+A[0]\n\tB=''\n\tfor C in range(len(A)-1):\n\t\tB+=A[C]\n\t\ttry:os.stat(B)\n\t\texcept:os.mkdir(B)\n\t\tB+=_B\ndef _chunk(src,dest):\n\tA=memoryview(bytearray(_CHUNK_SIZE))\n\twhile _D:\n\t\tB=src.readinto(A)\n\t\tif B==0:break\n\t\tdest(A if B==_CHUNK_SIZE else A[:B])\ndef _check_exists(path,short_hash):\n\tA=short_hash;import os\n\ttry:\n\t\timport binascii as C,hashlib as D\n\t\twith open(path,'rb')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],'utf-8');return F==A\n\texcept:return _C\ndef _rewrite_url(url,branch=_A):\n\tB=branch;A=url\n\tif not B:B='HEAD'\n\tif A.startswith(_F):A=A[7:].split(_B);A='https://raw.githubusercontent.com/'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\n\treturn A\ndef _download_file(url,dest):\n\tB=dest;A=get(url)\n\ttry:\n\t\tif A.status_code!=200:print('Error',A.status_code,'requesting',url);return _C\n\t\tprint('Copying:',B);_ensure_path_exists(B)\n\t\twith open(B,'wb')as C:_chunk(A.raw,C.write)\n\t\treturn _D\n\tfinally:A.close()\ndef _install_json(package_json_url,index,target,version,mpy):\n\tK='File not found: {} {}';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\n\ttry:\n\t\tif E.status_code!=200:print('Package not found:',G);return _C\n\t\tF=E.json()\n\tfinally:E.close()\n\tfor(A,C)in F.get('hashes',()):\n\t\tB=D+_B+A\n\t\tif _check_exists(B,C):print('Exists:',B)\n\t\telse:\n\t\t\tL='{}/file/{}/{}'.format(H,C[:2],C)\n\t\t\tif not _download_file(L,B):print(K.format(A,C));return _C\n\tfor(A,J)in F.get('urls',()):\n\t\tB=D+_B+A\n\t\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\n\tfor(M,N)in F.get('deps',()):\n\t\tif not _install_package(M,H,D,N,mpy):return _C\n\treturn _D\ndef _install_package(package,index,target,version,mpy):\n\tD=index;C=target;B=version;A=package\n\tif A.startswith('http://')or A.startswith('https://')or A.startswith(_F):\n\t\tif A.endswith('.py')or A.endswith('.mpy'):print('Downloading {} to {}'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\n\t\telse:\n\t\t\tif not A.endswith('.json'):\n\t\t\t\tif not A.endswith(_B):A+=_B\n\t\t\t\tA+='package.json'\n\t\t\tprint('Installing {} to {}'.format(A,C))\n\telse:\n\t\tif not B:B='latest'\n\t\tprint('Installing {} ({}) from {} to {}'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,'_mpy')else'py';A='{}/package/{}/{}/{}.json'.format(D,'py',A,B)\n\treturn _install_json(A,D,C,B,mpy)\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\n\tB=target;A=index\n\tif not B:\n\t\tfor C in sys.path:\n\t\t\tif C.endswith('/lib'):B=C;break\n\t\telse:print('Unable to find lib dir in sys.path');return\n\tif not A:A=_PACKAGE_INDEX\n\tif _install_package(package,A.rstrip(_B),B,version,mpy):print('Done')\n\telse:print('Package may be partially installed')");const Ht=async e=>(await import("./toml-DiUM0_qs.js")).parse(e);async function Jt(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function qt(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return"."!==e&&".."!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:"local",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await zt(e.opts.fileSystemHandle);for(const[o,a]of n)"."!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:"file"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:"file"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:"remote",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error("node type not supported")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error("node type not supported");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if("file"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if("directory"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if("file"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l="remote"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,"/")).substring(1);if("local"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if("local"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,"/")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if("FileSystemDirectoryHandle"!==n.constructor.name)throw new TypeError("Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle");return function(e){t.mkdirTree?t.mkdirTree(e):pt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path '${e}' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path '${e}' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory '${e}' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await Jt(t,!0),{syncfs:async()=>await Jt(t,!1)}}}const zt=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),"directory"===r.kind&&await e(r)}(e);const n=new Map;n.set(".",e);for(const r of t){const t=(await e.resolve(r)).join("/");n.set(t,r)}return n},Kt=(e,t)=>{try{e.mkdir(t)}catch(e){}},Gt=_t("mpy");var Yt={type:"micropython",module:(e="1.24.1")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=ve({stderr:ke(console.error),stdout:ke(console.log)});n=n.replace(/\.m?js$/,".wasm"),Gt("Loading MicroPython");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Xt.bind(this,i,r);return Ot.set(i,c),await Tt(this,Gt,i,t,r),this.writeFile(i,"./mip.py",Ut),t.packages&&(Gt("Loading packages"),await c(t.packages.map(qe,r)),Gt("Loaded packages")),Gt("Loaded MicroPython"),i.mountNativeFS||(i.mountNativeFS=qt(i._module)),i},registerJSModule:Lt,run:It,runAsync:Nt,runEvent:Wt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=Ct(t,r);if(c){const r=t.slice(0,-1);switch("./"!==r&&s.mkdir(r),c){case"whl":case"zip":{const e=new Blob([n],{type:"application/zip"});return import("./zip-DxlTOqbw.js").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)Kt(s,i);else{Kt(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case"tgz":case"tar.gz":{const t="./_.tar.gz";return lt(i,t,n),void e.runPython(`\n import os, gzip, tarfile\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open("${t}", "rb")))\n for f in tar:\n name = f"${r}{f.name}"\n if f.type == tarfile.DIRTYPE:\n if f.name != "./":\n os.mkdir(name.strip("/"))\n else:\n dir = os.path.dirname(name)\n if not os.path.exists(dir):\n os.mkdir(dir)\n source = tar.extractfile(f)\n with open(name, "wb") as dest:\n dest.write(source.read())\n dest.close()\n tar.close()\n os.remove("${t}")\n `)}}}return lt(i,t,n)}};async function Xt(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=Je(s,t),r=await o(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const Vt={dict_converter:Object.fromEntries},{stringify:Zt}=JSON;let Qt=!1;const en=e=>(...t)=>{try{return Qt=!0,e(...t)}finally{Qt=!1}};let tn=!1;const nn=()=>{if(tn)return;tn=!0;const e=new WeakMap,t=e=>e.destroy(),n=n=>{for(let r=0;r<n.length;r++){const s=n[r];if("function"==typeof s&&"copy"in s){Qt=!1;let o=e.get(s)?.deref();if(!o)try{o=pe(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),Qt=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return Qt&&n(t),s(this,e,t)}},call:{value(e,...t){return Qt&&n(t),s(this,e,t)}}})},rn=_t("py"),sn=new WeakMap;var on={type:"pyodide",module:(e="0.27.5")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){ct||"auto"!==t.experimental_create_proxy||nn(),rn("Loading Pyodide");let{packages:s,index_urls:o}=t;s&&(s=s.map(qe,r)),rn("Loading Storage");const a=n.slice(0,n.lastIndexOf("/")),i=new d(a),c={indexURL:a},l="never"!==t.packages_cache;if(await i.sync(),l){if(s){s=s.sort();const e=Zt(s);if(i.has(e)){const t=new Blob([i.get(e)],{type:"application/json"});c.lockFileURL=URL.createObjectURL(t),c.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else i.clear();rn("Loaded Storage");const{stderr:u,stdout:p,get:f}=ve(),y=await f(e({stderr:u,stdout:p,...c})),h=cn.bind(y);return o&&sn.set(y,o),Ot.set(y,h),await Tt(this,rn,y,t,r),s&&await h(s,i,l),await i.close(),c.lockFileURL&&URL.revokeObjectURL(c.lockFileURL),rn("Loaded Pyodide"),y},registerJSModule:Lt,run:en(It),runAsync:en(Nt),runEvent:en(Wt),transform:(e,t)=>an.call(e,t),writeFile:(e,t,n,r)=>{const s=Ct(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return lt({FS:o,PATH:a,PATH_FS:i},t,n)}};function an(e){const{ffi:{PyProxy:t}}=this;if(e&&"object"==typeof e){if(e instanceof t)return e.toJs(Vt);if(e instanceof Map)return new Map([...e.entries()]);if(Te(e))return e.map(an,this)}return e}async function cn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,rn(e),console.log=s};console.log=s,await this.loadPackage("micropip");const o=this.pyimport("micropip");if(sn.has(this)&&o.set_index_urls(sn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof d){const n=o.freeze();t.set(Zt(e),n)}o.destroy()}const ln="ruby-wasm-wasi",un=ln.replace(/\W+/g,"_");var pn={type:ln,experimental:!0,module:(e="2.7.1")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\/browser\/\+esm$/,"/ruby.wasm");const s=await o(n).arrayBuffer(),a=await WebAssembly.compile(s),{vm:i}=await e(a);return t.files&&await gt(this,i,t.files,r),t.fetch&&await ht(this,i,t.fetch,r),t.js_modules&&await bt(t.js_modules,r),i},registerJSModule(e,t,n){t=t.replace(/\W+/g,"__");const r=`__module_${un}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(Pe(t),...n),runAsync:(e,t,...n)=>e.evalAsync(Pe(t),...n),async runEvent(e,t,n){if(/^xworker\.(on\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${un}_event`;globalThis[r]=n,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${ln}`)}};var fn={type:"wasmoon",module:(e="1.16.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=ve(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,"print",a),c.global.setField(e,"printErr",o)})),n.files&&await gt(this,c,n.files,s),n.fetch&&await ht(this,c,n.fetch,s),n.js_modules&&await bt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(Pe(t),...n)}catch(t){Ae.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(Pe(t),...n)}catch(t){Ae.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Ae.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(pt(e,ut(t)),t=ft(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const dn=new WeakMap,yn=async(e,t)=>{const{shelter:n,destroy:r,io:s}=dn.get(e),{output:o,result:a}=await n.captureR(Pe(t));for(const{type:e,data:t}of o)s[e](t);return pe(a,r,{token:!1})};var hn={type:"webr",experimental:!0,module:(e="0.4.2")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=ve(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return dn.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Ae.get(o)}),t.files&&await gt(this,o,t.files,r),t.fetch&&await ht(this,o,t.fetch,r),t.js_modules&&await bt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:yn,runAsync:yn,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log("transforming",t),t),writeFile:()=>{}};const mn=new Map,wn=new Map,gn=[],bn=[],_n=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=mn.get(n),o=/^(?:\.?\.?\/|[a-z0-9-]+:\/\/)/i.test(r)?r.join("@"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(wn.set(t,e),s(r,e,n,o))))}}),An=e=>{for(const t of[].concat(e.type))mn.set(t,e),gn.push(`script[type="${t}"]`),bn.push(`${t}-`)};for(const e of[Fe,Yt,on,pn,fn,hn])An(e);const{parse:vn}=JSON,En=(e,t="./config.txt")=>{let n=typeof e;return"string"===n&&/\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Je(e),n]},kn=(e,t,n={})=>{const[r,s]=En(e,t);return"json"===s?n=o(r).json():"toml"===s?n=o(r).text().then(Ht):"string"===s?n=Sn(e):"object"===s&&e?n=e:"txt"===s&&"string"==typeof n&&(n=Sn(n)),[n,e=r]},Sn=e=>{try{return vn(e)}catch(t){return Ht(e)}},xn=(e,t,n,r={})=>(t&&([r,t]=kn(t,n,r)),He(r).then((n=>_n[e](n,t)))),jn=(e,t="")=>`${e}@${t}`.replace(/@$/,"");function Fn(e=this){return String(e).replace(/^(async\s*)?(\bfunction\b)?(.*?)\(/,((e,t,n,r)=>r&&!n?`${t||""}function ${r}(`:e))}const Bn="BeforeRun",$n="AfterRun",Dn=[`code${Bn}`,`code${Bn}Async`,`code${$n}`,`code${$n}Async`],Rn=["onWorker","onReady",`on${Bn}`,`on${Bn}Async`,`on${$n}`,`on${$n}Async`];function Mn(e,t){const{run:n,runAsync:r}=mn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Pn=(e,t,n,r,s,o)=>{if(s||o){const a=Mn.bind(e,t),i=r?"runAsync":"run",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let On=class{constructor(e,t={}){const{main:n,worker:r}=t;this.interpreter=e,this.onWorker=n?.onWorker;for(const e of Rn.slice(1))this[e]=r?.[e];for(const e of Dn)this[e]=r?.[e]}toJSON(){const e={};for(const t of Rn.slice(1))this[t]&&(e[t]=Fn(this[t]));for(const t of Dn)this[t]&&(e[t]=Pe(this[t]()));return e}};var Tn=(...e)=>function(t,n){if(e.length){const[t,r]=e;(n=Le({},n||{type:t,version:r})).type||(n.type=t)}const[r]=En(n.config,n.configURL),s=((...e)=>new _e(URL.createObjectURL(new Blob(['const{assign:e}=Object,t="entries",n="readonly",r="readwrite",s={durability:"default",prefix:"IDBMap"},o=({target:{result:e}})=>e;class a extends EventTarget{#e;#t;#n;async#r(n,r){const s=(await this.#e).transaction(t,r,this.#t);return new Promise(((r,o)=>e(n(s.objectStore(t)),{onsuccess:r,onerror:o})))}constructor(n,{durability:r=s.durability,prefix:a=s.prefix}=s){super(),this.#n=a,this.#t={durability:r},this.#e=new Promise(((r,s)=>{e(indexedDB.open(`${this.#n}/${n}`),{onupgradeneeded({target:{result:e,transaction:n}}){e.objectStoreNames.length||e.createObjectStore(t),n.oncomplete=()=>r(e)},onsuccess(e){r(o(e))},onerror(e){s(e),this.dispatchEvent(e)}})})).then((e=>{const t=this.dispatchEvent.bind(this);for(const n in e)n.startsWith("on")&&(e[n]=t);return e}))}dispatchEvent(t){const{type:n,message:r,isTrusted:s}=t;return super.dispatchEvent(s?e(new Event(n),{message:r}):t)}async close(){(await this.#e).close()}get size(){return this.#r((e=>e.count()),n).then(o)}async clear(){await this.#r((e=>e.clear()),r)}async delete(e){await this.#r((t=>t.delete(e)),r)}async entries(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e).then((t=>[e,t])))))}async forEach(e,t=this){for(const[n,r]of await this.entries())await e.call(t,r,n,this)}async get(e){return await this.#r((t=>t.get(e)),n).then(o)}async has(e){return void 0!==await this.#r((t=>t.getKey(e)),n).then(o)}async keys(){return await this.#r((e=>e.getAllKeys()),n).then(o)}async set(e,t){return await this.#r((n=>n.put(t,e)),r),this}async values(){const e=await this.keys();return Promise.all(e.map((e=>this.get(e))))}get[Symbol.toStringTag](){return this.#n}}class i extends Map{#s;#o;constructor(...e){super(),this.#s=new a(...e),this.#o=this.#s.entries().then((e=>{for(const[t,n]of e)super.set(t,n)}))}async close(){await this.#o,await this.#s.close()}async sync(){await this.#o}clear(){return this.#o=this.#o.then((()=>this.#s.clear())),super.clear()}delete(e){return this.#o=this.#o.then((()=>this.#s.delete(e))),super.delete(e)}set(e,t){return this.#o=this.#o.then((()=>this.#s.set(e,t))),super.set(e,t)}}let c="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),c+=crypto.randomUUID()}catch(An){c+=Math.random().toString(36).substring(2)}const{fromCharCode:l}=String,{min:u}=Math;const{defineProperty:p}=Object,d=e=>{switch(e[y++]){case 1:{const t=e[y++],n=[];e[y-2]=n;for(let r=0;r<t;r++)n[r]=d(e);return n}case 2:{const t=e[y++],n={};e[y-2]=n;for(let r=0;r<t;r++)n[d(e)]=d(e);return n}case 4:{const t=e[y++];return e[y-2]=t,t}case 0:return e[e[y++]];case 3:return e[y++];case 12:return BigInt(e[y++]);case 5:return!0;case 6:return!1;case 7:return null;case 13:return;case 8:{const t=e[y++],n=e[y++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[y-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[y++];return s}case 9:{const t=e[y++],n=e[y++],r=e[y++],s=[d(e),n];r&&s.push(r);const o=new globalThis[t](...s);return e[y-4]=o,o}case 10:return(t=e[y++]).startsWith("Symbol.")?Symbol[t.slice(t.indexOf(".")+1)]:Symbol.for(t);case 11:{const t=new Date(e[y++]);return e[y-2]=t,t}case 14:{const t=e[y++],n=new Map;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e),r=d(e);void 0!==t&&n.set(t,r)}return n}case 15:{const t=e[y++],n=new Set;e[y-2]=n;for(let r=0;r<t;r++){const t=d(e);void 0!==t&&n.add(t)}return n}case 16:{const t=e[y++],n=e[y++],r=new RegExp(t,n);return e[y-3]=r,r}case 17:{const t=globalThis[e[y++]]||Error,n=e[y++],r=e[y++],s=new t(n,{cause:e[y++]});return e[y-5]=p(s,"stack",{value:r}),s}default:throw new Error(`Unknown type: ${e[y-1]}`)}var t},{parse:f}=JSON;let y=0;const h=(e=>({byteOffset:t})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o="",a=0;for(;a<n;){const e=u(a+65535,n);o+=l.apply(null,s.subarray(a,e)),a=e}return e(o)})((e=>{y=0;const t=f(e);return t.length?d(t):void 0})),m="592e34ef",w="="+m,g="-"+m,{create:b}=Object;let _="coincident-",A=!0;try{new SharedArrayBuffer(4,{maxByteLength:8}),_+=crypto.randomUUID()}catch(e){A=!1,_+=Math.random().toString(36).substring(2)}const E=2*Int32Array.BYTES_PER_ELEMENT,v={byteOffset:E,useUTF16:!0,circular:!0},S=new Map,k=(e,t,n)=>{const r="then"!==t;return r&&(e[t]=n),r},x=()=>Promise.withResolvers(),{fromCharCode:j}=String,{min:B}=Math;var P=e=>({byteOffset:t})=>(n,r)=>{const s=new Uint16Array(r,t,n);let o="",a=0;for(;a<n;){const e=B(a+65535,n);o+=j.apply(null,s.subarray(a,e)),a=e}return e(o)};const{parse:$}=JSON,O=P($),F="array",T="bigint",R="function",M="null",D="number",L="object",C="symbol",I="undefined";var N=Object.fromEntries([F,T,"boolean",R,M,D,L,"string",C,I,"view"].map(((e,t)=>[e,t])));const{parse:U}=JSON,H=P((e=>{const t=U(e);switch(t[0]){case N.view:{const[e,n]=t[1],r=new Uint8Array(n);t[1]=new globalThis[e](r.buffer);break}case N[I]:t[1]=void 0;break;case N[T]:t[1]=BigInt(t[1])}return t})),W=x();addEventListener("message",(e=>{(e=>{e.stopImmediatePropagation(),e.preventDefault()})(e),W.resolve([e.data,e.ports[0]])}),{once:!0});var J=async e=>{const[t,n]=await W.promise,r=A&&!!t,s=e?.transform,o=(e?.decoder||O)(v);let a,i;if(A){const t=new SharedArrayBuffer(e?.minByteLength||65535,{maxByteLength:e?.maxByteLength||16777216});a=new Int32Array(t),i=Atomics.wait}const[c,l]=((e,t=0)=>[n=>{const r=x();do{n=e(t++)}while(S.has(n));return S.set(n,r),[n,r]},(e,t,n)=>{const r=S.get(e);S.delete(e),n?r.reject(n):r.resolve(t)}])(String),u=new Map,p=b(null),d=new Proxy(p,{get(e,l){if("then"===l)return;let p=u.get(l);return p||u.set(l,p=(...e)=>{const u=[a,l,s?e.map(s):e];if(A){r?postMessage({ID:t,data:u}):n.postMessage(u),i(a,0),a[0]=0;const e=a[1]?o(a[1],a.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=c();return u[0]=e,n.postMessage(u),t.promise}}),p},set:k});return n.onmessage=async({data:e})=>{"string"==typeof e[0]?l.apply(null,e):(await(async(e,t,n)=>{try{const r=await t[e[1]].apply(null,e[2]);e[1]=n?n(r):r,e[2]=null}catch(t){e[2]=t}})(e,p,s),n.postMessage(e))},{native:A,proxy:d}};const q="apply",z="construct",K="defineProperty",G="deleteProperty",Y="get",V="getOwnPropertyDescriptor",X="getPrototypeOf",Z="has",Q="isExtensible",ee="ownKeys",te="preventExtensions",ne="set",re="setPrototypeOf";var se=Object.freeze({__proto__:null,APPLY:q,CONSTRUCT:z,DEFINE_PROPERTY:K,DELETE_PROPERTY:G,GET:Y,GET_OWN_PROPERTY_DESCRIPTOR:V,GET_PROTOTYPE_OF:X,HAS:Z,IS_EXTENSIBLE:Q,OWN_KEYS:ee,PREVENT_EXTENSION:te,SET:ne,SET_PROTOTYPE_OF:re});const oe="destruct";function ae(){return this}const ie=new FinalizationRegistry((([e,t,n])=>{n&&console.debug(`%c${String(t)}`,"font-weight:bold","collected"),e(t)})),ce=Object.create(null),le=(e,t,{debug:n,handler:r,return:s,token:o=e}=ce)=>{const a=s||new Proxy(e,r||ce),i=[a,[t,e,!!n]];return!1!==o&&i.push(o),ie.register(...i),a},{Object:ue,Proxy:pe,Reflect:de}=globalThis,{isArray:fe}=Array,{ownKeys:ye}=de,{create:he,hasOwn:me,values:we}=ue,ge=(e,t)=>t===F?e[0]:t===R?e():t===L?e.$:e,be=(e,t,n,r)=>{const s={type:{value:t}},o=me(e,"valueOf");for(const a of we(se)){let i=r(e[a]||de[a]);if(o&&a===Y){const{valueOf:r}=e,{value:s}=i;i={value(e,o,...a){return o===n?r.call(this,ge(e,t)):s.call(this,e,o,...a)}}}s[a]=i}return he(e,s)},_e=(e,t,n,r=e)=>{if(r===e)switch(typeof e){case L:case I:r||(r=!1);case R:break;default:r=!1,t===e&&(t=ue(e))}const s=new pe(t,n),{destruct:o}=n;return o?le(e,o,{token:r,return:s}):s},Ae=e=>t=>{const n=typeof t;return n===L?t?e.get(t)?.[0]??(e=>fe(e)?F:L)(t):M:n},Ee=e=>t=>{let n=typeof t;switch(n){case L:if(!t){n=M;break}case R:const r=e.get(t);r&&([n,t]=r)}return[n,t]},ve=e=>((e=>{ie.unregister(e)})(e),e);var Se=e=>{const t=new WeakMap,n=Symbol(),r={},s=(e,n,r)=>(t.set(e,[n,r]),e),o={proxy:r,release:ve,pair:Ee(t),typeOf:Ae(t),isProxy:e=>t.has(e),valueOf:e=>e[n]??e.valueOf()};for(const t of ye(e)){if(me(o,t))continue;const a=e[t];switch(t){case F:{const e=be(a,t,n,(e=>({value([t],...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(_e(t,[t],e,...n),F,t);break}case R:{const e=be(a,t,n,(e=>({value(t,...n){return e.call(this,t(),...n)}})));r[t]=(t,...n)=>{return s(_e(t,(r=t,ae.bind(r)),e,...n),R,t);var r};break}case L:{const e=be(a,t,n,(e=>({value({$:t},...n){return e.call(this,t,...n)}})));r[t]=(t,...n)=>s(_e(t,{$:t},e,...n),L,t);break}default:{const e=be(a,t,n,(e=>({value:e})));r[t]=(n,...r)=>s(_e(n,n,e,...r),t,n);break}}}return o};const{drop:ke,get:xe,hold:je}=(()=>{const e=new Map,t=new Map;let n=0;return{clear:()=>{e.clear(),t.clear()},drop:n=>{const[r,s]=typeof n===D?[t,e]:[e,t],o=r.has(n);return o&&(s.delete(r.get(n)),r.delete(n)),o},get:e=>t.get(e),hold:r=>{if(!e.has(r)){let s;for(;t.has(s=n++););e.set(r,s),t.set(s,r)}return e.get(r)}}})(),Be=new Map;for(const e of Reflect.ownKeys(Symbol))typeof Symbol[e]===C&&(Be.set(Symbol[e],e),Be.set(e,Symbol[e]));const Pe=e=>Be.get(e)||`.${Symbol.keyFor(e)||""}`,{isArray:$e}=Array,{isView:Oe}=ArrayBuffer,{[q]:Fe}=Reflect;var Te=(e,t)=>{const n=new Map,r=(e,t)=>{let r=n.get(e)?.deref();return r||n.set(e,new WeakRef(r=t(e))),r},s=([e,t])=>{switch(e){case N[L]:return null==t?globalThis:typeof t===D?r(t,l.object):t;case N[F]:return typeof t===D?r(t,l.array):t;case N[R]:return typeof t===D?r(t,l.function):xe(parseInt(t));case N[C]:return(e=>Be.get(e)||Symbol.for(e.slice(1)))(t);default:return t}},o=e=>{let[n,r]=p(e);switch(n){case L:if(r==globalThis||null==r)r=null;else if(typeof r===L){if(r=t(r),$e(r))return[N[F],r.map(o)];if(Oe(r))return[N.view,r];{const e={};for(const t in r)e[t]=o(r[t]);r=e}}return[N[L],r];case F:return[N[F],typeof r===D?r:t(r).map(o)];case R:return[N[R],typeof r===R?String(je(t(r))):r];case C:return[N[C],Pe(e)];default:return[N[n],r]}},a=(...t)=>s(e(...t)),i={[K]:(e,t,n)=>a(K,e,o(t),o(n)),[G]:(e,t)=>a(G,e,o(t)),[Y]:(e,t)=>a(Y,e,o(t)),[X]:e=>a(X,e),[V]:(e,t)=>{const n=a(V,e,o(t));if(n){const{get:e,set:t,value:r}=n;e&&(n.get=s(e)),t&&(n.set=s(t)),r&&(n.value=s(r))}return n},[Z]:(e,t)=>a(Z,e,o(t)),[Q]:e=>a(Q,e),[ee]:e=>a(ee,e).map(s),[te]:e=>a(te,e),[ne]:(e,t,n)=>a(ne,e,o(t),o(n)),[re]:(e,t)=>a(re,e,o(t)),[oe](t){n.delete(t),e(oe,t)}},c={[L]:i,[F]:i,[R]:{...i,[q]:(e,...t)=>a(q,e,...t.map(o)),[z]:(e,...t)=>a(z,e,...t.map(o))}},{proxy:l,isProxy:u,pair:p}=Se(c);return{isProxy:u,global:l.object(null),method:async(e,t,...n)=>{const r=parseInt(t);switch(e){case q:{const[e,t]=n;return o(await Fe(xe(r),s(e),t.map(s)))}case oe:ke(r)}}}};const Re={object(...e){return this.string(function(e){for(var t=e[0],n=1,r=arguments.length;n<r;n++)t+=arguments[n]+e[n];return t}(...e))},string(e){for(const t of e.split(/[\\r\\n]+/))if(t.trim().length){/^(\\s+)/.test(t)&&(e=e.replace(new RegExp("^"+RegExp.$1,"gm"),""));break}return e}},Me=new WeakMap,De=e=>{const t=e||console,n={buffered:Ce,stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>n.stderr(...e),stdout:(...e)=>n.stdout(...e),async get(e){const t=await e;return Me.set(t,n),t}}},Le=new TextDecoder,Ce=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(Le.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},Ie=(e,...t)=>Re[typeof e](e,...t),{isArray:Ne}=Array,{assign:Ue,create:He,defineProperty:We,entries:Je}=Object,{all:qe,resolve:ze}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ke=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,"")).href;function Ge(e){return e.startsWith(".")?Ke(e,this):e}const Ye=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Ve=e=>Function(`\'use strict\';return (${e})`)(),Xe=e=>e.replace(/^(?:\\n|\\r\\n)/,""),Ze=Symbol.for("polyscript.js_modules"),Qe=new Map;We(globalThis,Ze,{value:Qe}),new Proxy(Qe,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const et=(e,t)=>!t.startsWith("_"),tt=(e,t)=>new Proxy(e,{has:et,get:(e,n)=>e[t][n]}),nt=(e,t)=>import(e).then((e=>{Qe.set(t,{...e})})),rt=e=>new Promise(((t,n)=>{document.querySelector(`link[rel="stylesheet"][href="${e}"]`)?t():document.head.append(Ue(document.createElement("link"),{rel:"stylesheet",href:e,onload:t,onerror:n}))})),st=e=>/\\.css$/i.test(new URL(e).pathname),ot=(e,t)=>e.has(t),at=e=>[...e.keys()];var it=(e,t,n,r)=>{const s=globalThis[Ze];if(n)for(let[e,t]of Je(n)){let n=s.get(t);n&&!Ne(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:ot,ownKeys:at,get:(e,s)=>{let o=e.get(s);if(Ne(o)){let a=o;o=null;for(let e of a)e=Ke(e,r),st(e)?n.importCSS(e):(n.importJS(e,s),o=t[Ze].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const ct=new Map,lt=e=>ct.get(e),ut=(e,t)=>{try{return Function("require",t)(lt)}catch(t){Me.get(e).stderr(t)}};var pt={type:"dummy",module:()=>"data:application/javascript,",engine:e=>De().get(e),registerJSModule(e,t,n){ct.set(t,n)},run:ut,runAsync:ut,runEvent:async(e,t,n)=>{try{await Function("require","e",`return ${t}(e)`)(lt,n)}catch(t){Me.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const dt=Object.getOwnPropertyDescriptors(Response.prototype),ft=e=>"function"==typeof e,yt={get:(e,t)=>dt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!ft(r)?e.then((e=>e[t])):(...n)=>e.then((e=>e[t](...n))))(e,t,dt[t]):((e,t)=>ft(t)?t.bind(e):t)(e,e[t])};var ht=(e,...t)=>new Proxy(fetch(e,...t),yt);Promise.withResolvers||(Promise.withResolvers=function(){var e,t,n=new this((function(n,r){e=n,t=r}));return{resolve:e,reject:t,promise:n}});const mt=!globalThis.window,wt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):bt(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},gt=e=>{const t=e.split("/");return t.pop(),t.join("/")},bt=(e,t)=>{const n=[];for(const r of t.split("/"))"."!==r&&".."!==r&&(n.push(r),r&&e.mkdir(n.join("/")))},_t=(e,t)=>{const n=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":n.pop();break;default:n.push(e)}return[e.cwd()].concat(n).join("/").replace(/^\\/+/,"/")},At=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},Et=(e,t)=>ht(Ke(e,t)).arrayBuffer(),vt=(e,t,n,r)=>qe((e=>{for(const{files:t,to_file:n,from:r=""}of e){if(void 0!==t&&void 0!==n)throw new Error("Cannot use \'to_file\' and \'files\' parameters together!");if(void 0===t&&void 0===n&&r.endsWith("/"))throw new Error(`Couldn\'t determine the filename from the path ${r}, please supply \'to_file\' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:n,files:r})=>{if(Ne(r))return r.map((n=>({url:At([e,n]),path:At([t,n])})));const s=n||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:At([t,s])}]}))})(n).map((({url:n,path:s})=>Et(n,r).then((n=>e.writeFile(t,s,n)))))),St=(e,t)=>t.endsWith("/")?`${t}${e.split("/").pop()}`:t,kt=(e,t)=>e.replace(/\\{.+?\\}/g,(e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)})),xt=(e,t,n,r)=>qe((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of Je(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,kt(o,t))}else{const e=kt(s,t),a=St(e,kt(o||"./",t));if(n.has(a)&&!a.endsWith("/*"))throw new SyntaxError(`Duplicated destination: ${a}`);n.add(a),r.push({url:e,path:a})}return r})(n).map((({url:n,path:s})=>Et(n,r).then((r=>e.writeFile(t,s,r,n)))))),jt=({main:e,worker:t},n)=>{const r=[];if(t&&mt)for(let[e,s]of Je(t))e=Ke(e,n),r.push(nt(e,s));if(e&&!mt)for(let[t,s]of Je(e))t=Ke(t,n),st(t)?rt(t):r.push(nt(t,s));return qe(r)},Bt=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{getPrototypeOf:Pt}=Object,$t=e=>{const t=typeof e;switch(t){case"function":case"undefined":return"";case"object":return null===e?"null":"object";default:return t}};let Ot="coincident-";try{new SharedArrayBuffer(4,{maxByteLength:8}),Ot+=crypto.randomUUID()}catch(Pt){Ot+=Math.random().toString(36).substring(2)}var Ft={ref:0,array:1,object:2,number:3,string:4,true:5,false:6,null:7,buffer:8,view:9,symbol:10,date:11,bigint:12,undefined:13,map:14,set:15,regexp:16,error:17};const{defineProperty:Tt}=Object,Rt=e=>{switch(e[Dt++]){case Ft.array:{const t=e[Dt++],n=[];e[Dt-2]=n;for(let r=0;r<t;r++)n[r]=Rt(e);return n}case Ft.object:{const t=e[Dt++],n={};e[Dt-2]=n;for(let r=0;r<t;r++)n[Rt(e)]=Rt(e);return n}case Ft.string:{const t=e[Dt++];return e[Dt-2]=t,t}case Ft.ref:return e[e[Dt++]];case Ft.number:return e[Dt++];case Ft.bigint:return BigInt(e[Dt++]);case Ft.true:return!0;case Ft.false:return!1;case Ft.null:return null;case Ft.undefined:return;case Ft.buffer:{const t=e[Dt++],n=e[Dt++],r=[t];n&&r.push({maxByteLength:n});const s=new ArrayBuffer(...r);e[Dt-3]=s;const o=new Uint8Array(s,0,t);for(let n=0;n<t;n++)o[n]=e[Dt++];return s}case Ft.view:{const t=e[Dt++],n=e[Dt++],r=e[Dt++],s=[Rt(e),n];r&&s.push(r);const o=new globalThis[t](...s);return e[Dt-4]=o,o}case Ft.symbol:return(t=e[Dt++]).startsWith("Symbol.")?Symbol[t.slice(t.indexOf(".")+1)]:Symbol.for(t);case Ft.date:{const t=new Date(e[Dt++]);return e[Dt-2]=t,t}case Ft.map:{const t=e[Dt++],n=new Map;e[Dt-2]=n;for(let r=0;r<t;r++){const t=Rt(e),r=Rt(e);void 0!==t&&n.set(t,r)}return n}case Ft.set:{const t=e[Dt++],n=new Set;e[Dt-2]=n;for(let r=0;r<t;r++){const t=Rt(e);void 0!==t&&n.add(t)}return n}case Ft.regexp:{const t=e[Dt++],n=e[Dt++],r=new RegExp(t,n);return e[Dt-3]=r,r}case Ft.error:{const t=globalThis[e[Dt++]]||Error,n=e[Dt++],r=e[Dt++],s=new t(n,{cause:e[Dt++]});return e[Dt-5]=Tt(s,"stack",{value:r}),s}default:throw new Error(`Unknown type: ${e[Dt-1]}`)}var t},{parse:Mt}=JSON;let Dt=0;const{isArray:Lt}=Array,{isView:Ct}=ArrayBuffer,{stringify:It}=JSON,Nt=(e,t,n)=>{const r=t.get(n);return"number"==typeof r?(e.push(Ft.ref,r),!0):(t.set(n,e.length),!1)},Ut=(e,t,n,r=$t(n))=>{switch(r){case"null":e.push(Ft.null);break;case"object":if(Nt(e,t,n))break;switch(!0){case Lt(n):{const r=n.length;e.push(Ft.array,r);for(let s=0;s<r;s++)Ut(e,t,n[s]);break}case Ct(n):{const{BYTES_PER_ELEMENT:r,buffer:s,byteOffset:o,length:a}=n;if(e.push(Ft.view,(e=>{for(;!(e.name in globalThis);)e=Pt(e);return e.name})(n.constructor),o,a!==(s.byteLength-o)/r?a:0),Nt(e,t,s))break;n=s}case n instanceof ArrayBuffer:{const t=n.byteLength,r=n.resizable?n.maxByteLength:0;if(e.push(Ft.buffer,t,r),t){const r=new Uint8Array(n,0,t);for(let t=0;t<r.length;t+=65535)e.push.apply(e,r.subarray(t,t+65535))}break}case n instanceof Date:e.push(Ft.date,+n);break;case n instanceof Map:{const r=e.push(Ft.map,0);let s=0;for(const[r,o]of n){const n=$t(r),a=$t(o);n&&a&&(Ut(e,t,r,n),Ut(e,t,o,a),s++)}e[r-1]=s;break}case n instanceof Set:{const r=e.push(Ft.set,0);let s=0;for(const r of n){const n=$t(r);n&&(Ut(e,t,r,n),s++)}e[r-1]=s;break}case n instanceof RegExp:e.push(Ft.regexp,n.source,n.flags);break;case n instanceof Error:e.push(Ft.error,n.name,n.message,n.stack,n.cause);break;default:{if("toJSON"in n){const r=n.toJSON();if(r===n){e.push(Ft.object,0);break}if(Nt(e,t,n=r))break}const r=e.push(Ft.object,0);let s=0;for(const r in n){const o=n[r],a=$t(o);a&&(Ut(e,t,r,"string"),Ut(e,t,o,a),s++)}e[r-1]=s;break}}break;case"boolean":e.push(n?Ft.true:Ft.false);break;case"string":if(Nt(e,t,n))break;e.push(Ft.string,n);break;case"bigint":e.push(Ft[r],n.toString());break;case"symbol":{const t=(e=>{const t=String(e).slice(7,-1);return t.startsWith("Symbol.")||Symbol.keyFor(e)?t:""})(n);if(t){e.push(Ft[r],t);break}}case"":e.push(Ft.undefined);break;default:e.push(Ft[r],n)}},Ht={parse:e=>{Dt=0;const t=Mt(e);return t.length?Rt(t):void 0},stringify:e=>{const t=[];return Ut(t,new Map,e),It(t)}},Wt=new WeakMap,Jt=async(e,t,n,r,s)=>{r.files&&(t("Loading files"),await xt(e,n,r.files,s),t("Loaded files")),r.fetch&&(t("Loading fetch"),await vt(e,n,r.fetch,s),t("Loaded fetch")),r.js_modules&&(t("Loading JS modules"),await jt(r.js_modules,s),t("Loaded JS modules"))},qt=(e,t,n)=>{"polyscript"===t&&(n.lazy_py_modules=async(...t)=>(await Wt.get(e)(t),t.map((t=>e.pyimport(t)))),n.storage=async e=>{const t=new i(e);return await t.sync(),t},n.JSON=Ht),e.registerJsModule(t,n)},zt=(e,t)=>{if(e.endsWith("/*")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return""},Kt=(e,t,...n)=>{try{return e.runPython(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},Gt=async(e,t,...n)=>{try{return await e.runPythonAsync(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},Yt=async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.globals.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Me.get(e).stderr(t)}};var Vt=(new TextEncoder).encode("_F=\'github:\'\\n_E=\'user-agent\'\\n_D=True\\n_C=False\\n_B=\'/\'\\n_A=None\\nfrom uio import StringIO\\nimport sys\\nclass Response:\\n\\tdef __init__(A,f):A.raw=f;A.encoding=\'utf-8\';A._cached=_A\\n\\tdef close(A):\\n\\t\\tif A.raw:A.raw.close();A.raw=_A\\n\\t\\tA._cached=_A\\n\\t@property\\n\\tdef content(self):\\n\\t\\tA=self\\n\\t\\tif A._cached is _A:\\n\\t\\t\\ttry:A._cached=A.raw.read()\\n\\t\\t\\tfinally:A.raw.close();A.raw=_A\\n\\t\\treturn A._cached\\n\\t@property\\n\\tdef text(self):return str(self.content,self.encoding)\\n\\tdef json(A):import ujson;return ujson.loads(A.content)\\nHEADERS_TO_IGNORE=_E,\\ntry:import js\\nexcept Exception as err:raise OSError(\'This version of urequests can only be used in the browser\')\\nHEADERS_TO_IGNORE=_E,\\ndef request(method,url,data=_A,json=_A,headers={},stream=_A,auth=_A,timeout=_A,parse_headers=_D):\\n\\tE=timeout;D=method;C=data;from js import XMLHttpRequest as G;A=G.new();A.withCredentials=_C\\n\\tif auth is not _A:import ubinascii;H,I=auth;A.open(D,url,_C,H,I)\\n\\telse:A.open(D,url,_C)\\n\\tfor(F,J)in headers.items():\\n\\t\\tif F.lower()not in HEADERS_TO_IGNORE:A.setRequestHeader(F,J)\\n\\tif E:A.timeout=int(E*1000)\\n\\tif json is not _A:assert C is _A;import ujson;C=ujson.dumps(json);A.setRequestHeader(\'Content-Type\',\'application/json\')\\n\\tA.send(C);B=Response(StringIO(A.responseText));B.status_code=A.status;B.reason=A.statusText;B.headers=A.getAllResponseHeaders();return B\\ndef get(url,**A):return request(\'GET\',url,**A)\\n_PACKAGE_INDEX=const(\'https://micropython.org/pi/v2\')\\n_CHUNK_SIZE=128\\ndef _ensure_path_exists(path):\\n\\timport os;A=path.split(_B)\\n\\tif not A[0]:A.pop(0);A[0]=_B+A[0]\\n\\tB=\'\'\\n\\tfor C in range(len(A)-1):\\n\\t\\tB+=A[C]\\n\\t\\ttry:os.stat(B)\\n\\t\\texcept:os.mkdir(B)\\n\\t\\tB+=_B\\ndef _chunk(src,dest):\\n\\tA=memoryview(bytearray(_CHUNK_SIZE))\\n\\twhile _D:\\n\\t\\tB=src.readinto(A)\\n\\t\\tif B==0:break\\n\\t\\tdest(A if B==_CHUNK_SIZE else A[:B])\\ndef _check_exists(path,short_hash):\\n\\tA=short_hash;import os\\n\\ttry:\\n\\t\\timport binascii as C,hashlib as D\\n\\t\\twith open(path,\'rb\')as E:B=D.sha256();_chunk(E,B.update);F=str(C.hexlify(B.digest())[:len(A)],\'utf-8\');return F==A\\n\\texcept:return _C\\ndef _rewrite_url(url,branch=_A):\\n\\tB=branch;A=url\\n\\tif not B:B=\'HEAD\'\\n\\tif A.startswith(_F):A=A[7:].split(_B);A=\'https://raw.githubusercontent.com/\'+A[0]+_B+A[1]+_B+B+_B+_B.join(A[2:])\\n\\treturn A\\ndef _download_file(url,dest):\\n\\tB=dest;A=get(url)\\n\\ttry:\\n\\t\\tif A.status_code!=200:print(\'Error\',A.status_code,\'requesting\',url);return _C\\n\\t\\tprint(\'Copying:\',B);_ensure_path_exists(B)\\n\\t\\twith open(B,\'wb\')as C:_chunk(A.raw,C.write)\\n\\t\\treturn _D\\n\\tfinally:A.close()\\ndef _install_json(package_json_url,index,target,version,mpy):\\n\\tK=\'File not found: {} {}\';I=version;H=index;G=package_json_url;D=target;E=get(_rewrite_url(G,I))\\n\\ttry:\\n\\t\\tif E.status_code!=200:print(\'Package not found:\',G);return _C\\n\\t\\tF=E.json()\\n\\tfinally:E.close()\\n\\tfor(A,C)in F.get(\'hashes\',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif _check_exists(B,C):print(\'Exists:\',B)\\n\\t\\telse:\\n\\t\\t\\tL=\'{}/file/{}/{}\'.format(H,C[:2],C)\\n\\t\\t\\tif not _download_file(L,B):print(K.format(A,C));return _C\\n\\tfor(A,J)in F.get(\'urls\',()):\\n\\t\\tB=D+_B+A\\n\\t\\tif not _download_file(_rewrite_url(J,I),B):print(K.format(A,J));return _C\\n\\tfor(M,N)in F.get(\'deps\',()):\\n\\t\\tif not _install_package(M,H,D,N,mpy):return _C\\n\\treturn _D\\ndef _install_package(package,index,target,version,mpy):\\n\\tD=index;C=target;B=version;A=package\\n\\tif A.startswith(\'http://\')or A.startswith(\'https://\')or A.startswith(_F):\\n\\t\\tif A.endswith(\'.py\')or A.endswith(\'.mpy\'):print(\'Downloading {} to {}\'.format(A,C));return _download_file(_rewrite_url(A,B),C+_B+A.rsplit(_B)[-1])\\n\\t\\telse:\\n\\t\\t\\tif not A.endswith(\'.json\'):\\n\\t\\t\\t\\tif not A.endswith(_B):A+=_B\\n\\t\\t\\t\\tA+=\'package.json\'\\n\\t\\t\\tprint(\'Installing {} to {}\'.format(A,C))\\n\\telse:\\n\\t\\tif not B:B=\'latest\'\\n\\t\\tprint(\'Installing {} ({}) from {} to {}\'.format(A,B,D,C));E=sys.implementation._mpy&255 if mpy and hasattr(sys.implementation,\'_mpy\')else\'py\';A=\'{}/package/{}/{}/{}.json\'.format(D,\'py\',A,B)\\n\\treturn _install_json(A,D,C,B,mpy)\\ndef install(package,index=_A,target=_A,version=_A,mpy=_D):\\n\\tB=target;A=index\\n\\tif not B:\\n\\t\\tfor C in sys.path:\\n\\t\\t\\tif C.endswith(\'/lib\'):B=C;break\\n\\t\\telse:print(\'Unable to find lib dir in sys.path\');return\\n\\tif not A:A=_PACKAGE_INDEX\\n\\tif _install_package(package,A.rstrip(_B),B,version,mpy):print(\'Done\')\\n\\telse:print(\'Package may be partially installed\')");const Xt=async e=>(await import("./toml-DiUM0_qs.js")).parse(e);async function Zt(e,t){return new Promise(((n,r)=>{e.syncfs(t,(e=>{e?r(e):n()}))}))}function Qt(e){const t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:function(e){if(!e.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},syncfs:async(e,t,n)=>{try{const r=s.getLocalSet(e),o=await s.getRemoteSet(e),a=t?o:r,i=t?r:o;await s.reconcile(e,a,i),n(null)}catch(e){n(e)}},getLocalSet:e=>{let n=Object.create(null);function s(e){return"."!==e&&".."!==e}function o(e){return t=>r.join2(e,t)}let a=t.readdir(e.mountpoint).filter(s).map(o(e.mountpoint));for(;a.length;){let e=a.pop(),r=t.stat(e);t.isDir(r.mode)&&a.push.apply(a,t.readdir(e).filter(s).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:"local",entries:n}},getRemoteSet:async e=>{const t=Object.create(null),n=await en(e.opts.fileSystemHandle);for(const[o,a]of n)"."!==o&&(t[r.join2(e.mountpoint,o)]={timestamp:"file"===a.kind?(await a.getFile()).lastModifiedDate:new Date,mode:"file"===a.kind?s.FILE_MODE:s.DIR_MODE});return{type:"remote",entries:t,handles:n}},loadLocalEntry:e=>{const r=t.lookupPath(e).node,s=t.stat(e);if(t.isDir(s.mode))return{timestamp:s.mtime,mode:s.mode};if(t.isFile(s.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:s.mtime,mode:s.mode,contents:r.contents};throw new Error("node type not supported")},storeLocalEntry:(e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else{if(!t.isFile(n.mode))throw new Error("node type not supported");t.writeFile(e,n.contents,{canOwn:!0})}t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},removeLocalEntry:e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},loadRemoteEntry:async e=>{if("file"===e.kind){const t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:s.FILE_MODE,timestamp:t.lastModifiedDate}}if("directory"===e.kind)return{mode:s.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+e.kind)},storeRemoteEntry:async(e,n,s)=>{const o=e.get(r.dirname(n)),a=t.isFile(s.mode)?await o.getFileHandle(r.basename(n),{create:!0}):await o.getDirectoryHandle(r.basename(n),{create:!0});if("file"===a.kind){const e=await a.createWritable();await e.write(s.contents),await e.close()}e.set(n,a)},removeRemoteEntry:async(e,t)=>{const n=e.get(r.dirname(t));await n.removeEntry(r.basename(t)),e.delete(t)},reconcile:async(e,n,o)=>{let a=0;const i=[];Object.keys(n.entries).forEach((function(e){const r=n.entries[e],s=o.entries[e];(!s||t.isFile(r.mode)&&r.timestamp.getTime()>s.timestamp.getTime())&&(i.push(e),a++)})),i.sort();const c=[];if(Object.keys(o.entries).forEach((function(e){n.entries[e]||(c.push(e),a++)})),c.sort().reverse(),!a)return;const l="remote"===n.type?n.handles:o.handles;for(const t of i){const n=r.normalize(t.replace(e.mountpoint,"/")).substring(1);if("local"===o.type){const e=l.get(n),r=await s.loadRemoteEntry(e);s.storeLocalEntry(t,r)}else{const e=s.loadLocalEntry(t);await s.storeRemoteEntry(l,n,e)}}for(const t of c)if("local"===o.type)s.removeLocalEntry(t);else{const n=r.normalize(t.replace(e.mountpoint,"/")).substring(1);await s.removeRemoteEntry(l,n)}}};return e.FS.filesystems.NATIVEFS_ASYNC=s,async function(e,n){if("FileSystemDirectoryHandle"!==n.constructor.name)throw new TypeError("Expected argument \'fileSystemHandle\' to be a FileSystemDirectoryHandle");return function(e){t.mkdirTree?t.mkdirTree(e):bt(t,e);const{node:n}=t.lookupPath(e,{follow_mount:!1});if(t.isMountpoint(n))throw new Error(`path \'${e}\' is already a file system mount point`);if(!t.isDir(n.mode))throw new Error(`path \'${e}\' points to a file not a directory`);for(const t in n.contents)throw new Error(`directory \'${e}\' is not empty`)}(e),t.mount(t.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:n},e),await Zt(t,!0),{syncfs:async()=>await Zt(t,!1)}}}const en=async e=>{const t=[];await async function e(n){for await(const r of n.values())t.push(r),"directory"===r.kind&&await e(r)}(e);const n=new Map;n.set(".",e);for(const r of t){const t=(await e.resolve(r)).join("/");n.set(t,r)}return n},tn=(e,t)=>{try{e.mkdir(t)}catch(e){}},nn=Bt("mpy");var rn={type:"micropython",module:(e="1.24.1")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,n,r){const{stderr:s,stdout:o,get:a}=De({stderr:Ce(console.error),stdout:Ce(console.log)});n=n.replace(/\\.m?js$/,".wasm"),nn("Loading MicroPython");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=sn.bind(this,i,r);return Wt.set(i,c),await Jt(this,nn,i,t,r),this.writeFile(i,"./mip.py",Vt),t.packages&&(nn("Loading packages"),await c(t.packages.map(Ge,r)),nn("Loaded packages")),nn("Loaded MicroPython"),i.mountNativeFS||(i.mountNativeFS=Qt(i._module)),i},registerJSModule:qt,run:Kt,runAsync:Gt,runEvent:Yt,transform:(e,t)=>e.PyProxy.toJs(t),writeFile:(e,t,n,r)=>{const{FS:s,_module:{PATH:o,PATH_FS:a}}=e,i={FS:s,PATH:o,PATH_FS:a},c=zt(t,r);if(c){const r=t.slice(0,-1);switch("./"!==r&&s.mkdir(r),c){case"whl":case"zip":{const e=new Blob([n],{type:"application/zip"});return import("./zip-DxlTOqbw.js").then((async({BlobReader:t,Uint8ArrayWriter:n,ZipReader:a})=>{const i=new a(new t(e));for(const e of await i.getEntries()){const{directory:t,filename:a}=e,i=r+a;if(t)tn(s,i);else{tn(s,o.dirname(i));const t=await e.getData(new n);s.writeFile(i,t,{canOwn:!0})}}i.close()}))}case"tgz":case"tar.gz":{const t="./_.tar.gz";return wt(i,t,n),void e.runPython(`\\n import os, gzip, tarfile\\n tar = tarfile.TarFile(fileobj=gzip.GzipFile(fileobj=open("${t}", "rb")))\\n for f in tar:\\n name = f"${r}{f.name}"\\n if f.type == tarfile.DIRTYPE:\\n if f.name != "./":\\n os.mkdir(name.strip("/"))\\n else:\\n dir = os.path.dirname(name)\\n if not os.path.exists(dir):\\n os.mkdir(dir)\\n source = tar.extractfile(f)\\n with open(name, "wb") as dest:\\n dest.write(source.read())\\n dest.close()\\n tar.close()\\n os.remove("${t}")\\n `)}}}return wt(i,t,n)}};async function sn(e,t,n){let r;for(const s of n)if(s.endsWith(".whl")){const n=Ke(s,t),r=await ht(n).arrayBuffer();await this.writeFile(e,"./*",r,n)}else r||(r=e.pyimport("mip")),r.install(s)}const on={dict_converter:Object.fromEntries},{stringify:an}=JSON;let cn=!1;const ln=e=>(...t)=>{try{return cn=!0,e(...t)}finally{cn=!1}};let un=!1;const pn=()=>{if(un)return;un=!0;const e=new WeakMap,t=e=>e.destroy(),n=n=>{for(let r=0;r<n.length;r++){const s=n[r];if("function"==typeof s&&"copy"in s){cn=!1;let o=e.get(s)?.deref();if(!o)try{o=le(s.copy(),t),e.set(s,new WeakRef(o))}catch(e){console.error(e)}o&&(n[r]=o),cn=!0}}},{call:r}=Function,s=r.bind(r,r.apply);Object.defineProperties(Function.prototype,{apply:{value(e,t){return cn&&n(t),s(this,e,t)}},call:{value(e,...t){return cn&&n(t),s(this,e,t)}}})},dn=Bt("py"),fn=new WeakMap;var yn={type:"pyodide",module:(e="0.27.5")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,n,r){mt||"auto"!==t.experimental_create_proxy||pn(),dn("Loading Pyodide");let{packages:s,index_urls:o}=t;s&&(s=s.map(Ge,r)),dn("Loading Storage");const a=n.slice(0,n.lastIndexOf("/")),c=new i(a),l={indexURL:a},u="never"!==t.packages_cache;if(await c.sync(),u){if(s){s=s.sort();const e=an(s);if(c.has(e)){const t=new Blob([c.get(e)],{type:"application/json"});l.lockFileURL=URL.createObjectURL(t),l.packages=s.map((e=>e.split(/[>=<]=/)[0])),s=null}}}else c.clear();dn("Loaded Storage");const{stderr:p,stdout:d,get:f}=De(),y=await f(e({stderr:p,stdout:d,...l})),h=mn.bind(y);return o&&fn.set(y,o),Wt.set(y,h),await Jt(this,dn,y,t,r),s&&await h(s,c,u),await c.close(),l.lockFileURL&&URL.revokeObjectURL(l.lockFileURL),dn("Loaded Pyodide"),y},registerJSModule:qt,run:ln(Kt),runAsync:ln(Gt),runEvent:ln(Yt),transform:(e,t)=>hn.call(e,t),writeFile:(e,t,n,r)=>{const s=zt(t,r);if(s)return e.unpackArchive(n,s,{extractDir:t.slice(0,-1)});const{FS:o,PATH:a,_module:{PATH_FS:i}}=e;return wt({FS:o,PATH:a,PATH_FS:i},t,n)}};function hn(e){const{ffi:{PyProxy:t}}=this;if(e&&"object"==typeof e){if(e instanceof t)return e.toJs(on);if(e instanceof Map)return new Map([...e.entries()]);if(Ne(e))return e.map(hn,this)}return e}async function mn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,dn(e),console.log=s};console.log=s,await this.loadPackage("micropip");const o=this.pyimport("micropip");if(fn.has(this)&&o.set_index_urls(fn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(an(e),n)}o.destroy()}const wn="ruby-wasm-wasi",gn=wn.replace(/\\W+/g,"_");var bn={type:wn,experimental:!0,module:(e="2.7.1")=>`https://cdn.jsdelivr.net/npm/@ruby/3.2-wasm-wasi@${e}/dist/browser/+esm`,async engine({DefaultRubyVM:e},t,n,r){n=n.replace(/\\/browser\\/\\+esm$/,"/ruby.wasm");const s=await ht(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await xt(this,a,t.files,r),t.fetch&&await vt(this,a,t.fetch,r),t.js_modules&&await jt(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,"__");const r=`__module_${gn}_${t}`;globalThis[r]=n,this.run(e,`require "js";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(Ie(t),...n),runAsync:(e,t,...n)=>e.evalAsync(Ie(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${gn}_event`;globalThis[r]=n,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${r}])`),delete globalThis[r]}else{const r=this.run(e,`method(:${t})`);await r.call(t,e.wrap(n))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${wn}`)}};var _n={type:"wasmoon",module:(e="1.16.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},n,r,s){const{stderr:o,stdout:a,get:i}=De(),c=await i((new e).createEngine());return c.global.getTable(t.Base,(e=>{c.global.setField(e,"print",a),c.global.setField(e,"printErr",o)})),n.files&&await xt(this,c,n.files,s),n.fetch&&await vt(this,c,n.fetch,s),n.js_modules&&await jt(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(Ie(t),...n)}catch(t){Me.get(e).stderr(t)}},runEvent:async(e,t,n)=>{const[r,...s]=t.split(".");let o,a=e.global.get(r);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,n)}catch(t){Me.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(bt(e,gt(t)),t=_t(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const An=new WeakMap,En=async(e,t)=>{const{shelter:n,destroy:r,io:s}=An.get(e),{output:o,result:a}=await n.captureR(Ie(t));for(const{type:e,data:t}of o)s[e](t);return le(a,r,{token:!1})};var vn={type:"webr",experimental:!0,module:(e="0.4.2")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=De(),o=new e.WebR;await s(o.init().then((()=>o)));const a=await new o.Shelter;return An.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:Me.get(o)}),t.files&&await xt(this,o,t.files,r),t.fetch&&await vt(this,o,t.fetch,r),t.js_modules&&await jt(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:En,runAsync:En,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>(console.log("transforming",t),t),writeFile:()=>{}};const Sn=new Map,kn=new Map,xn=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split("@"),s=Sn.get(n),o=/^(?:\\.?\\.?\\/|[a-z0-9-]+:\\/\\/)/i.test(r)?r.join("@"):s.module(...r);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:n,module:r,engine:s}=e.get(t);return(e,o)=>r.then((r=>(kn.set(t,e),s(r,e,n,o))))}}),jn=e=>{for(const t of[].concat(e.type))Sn.set(t,e)};for(const e of[pt,rn,yn,bn,_n,vn])jn(e);const{parse:Bn}=JSON,Pn=(e,t,n={})=>{const[r,s]=((e,t="./config.txt")=>{let n=typeof e;return"string"===n&&/\\.(json|toml|txt)$/.test(e)?n=RegExp.$1:e=t,[Ke(e),n]})(e,t);return"json"===s?n=ht(r).json():"toml"===s?n=ht(r).text().then(Xt):"string"===s?n=$n(e):"object"===s&&e?n=e:"txt"===s&&"string"==typeof n&&(n=$n(n)),[n,e=r]},$n=e=>{try{return Bn(e)}catch(t){return Xt(e)}},On="BeforeRun",Fn="AfterRun",Tn=[`code${On}`,`code${On}Async`,`code${Fn}`,`code${Fn}Async`],Rn=["onWorker","onReady",`on${On}`,`on${On}Async`,`on${Fn}`,`on${Fn}Async`];function Mn(e,t){const{run:n,runAsync:r}=Sn.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const Dn=(e,t,n,r,s,o)=>{if(s||o){const a=Mn.bind(e,t),i=r?"runAsync":"run",c=e[i];e[i]=r?async function(e,t,...r){s&&await s.call(this,a(e),n);const i=await c.call(this,e,t,...r);return o&&await o.call(this,a(e),n),i}:function(e,t,...r){s&&s.call(this,a(e),n);const i=c.call(this,e,t,...r);return o&&o.call(this,a(e),n),i}}};let Ln,Cn,In;const Nn=(e,t)=>{addEventListener(e,t||(async t=>{try{await Ln,Cn(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Un,native:Hn,window:Wn,isWindowProxy:Jn}=await(async e=>{let t=!1;const n=e?.decoder||O,r=await J({...e,decoder(e){const r=n(e),s=H(e);return(e,n)=>t?(t=!1,s(e,n)):r(e,n)}}),s=r.proxy[w],{isProxy:o,global:a,method:i}=Te((function(...e){return t=!0,s.apply(this,e)}),e?.transform||(e=>e));return r.proxy[g]=i,{...r,window:a,isWindowProxy:o}})({decoder:h,transform:e=>In?In(e):e}),qn={polyfill:!Hn,sync:Un,window:Hn?Wn:null,isWindowProxy:Jn,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Nn("message",(({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{Ln=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,y=((e,t="")=>`${e}@${t}`.replace(/@$/,""))(l,p),h=await((e,t,n,r={})=>(t&&([r,t]=Pn(t,n,r)),ze(r).then((n=>xn[e](n,t)))))(y,t,n,d),{js_modules:m}=kn.get(y),w=m?.main,g=He(Sn.get(l)),b=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:Me.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(g,u||l,d||{},h);let _="run";if(f&&(_+="Async"),s){let e,t,n="",r="";for(const e of Tn){const t=s[e];if(t){const s=e.endsWith("Async");(s&&f||!s&&!f)&&(e.startsWith("codeBefore")?n=t:r=t)}}(n||r)&&((e,t,n,r)=>{const s=e[t].bind(e);e[t]="run"===t?(e,t,...o)=>{n&&s(e,n,...o);const a=s(e,Xe(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Xe(t),...o);return r&&await s(e,r,...o),a}})(g,_,n,r);for(const n of Rn.slice(2)){const r=s[n];if(r){const s=n.endsWith("Async");if(s&&f||!s&&!f){const s=Ve(r);n.startsWith("onBefore")?e=s:t=s}}}Dn(g,b,qn,f,e,t)}let A,E,v,S=null,k="";Hn&&(({CustomEvent:A,document:E}=Wn),S=o&&E.getElementById(o)||null,v=e=>Ye(S,u||l,e,!0,A));const x=it(Wn,Un,w,t);if(((e,t,n,r)=>{if("pyodide"===e)return;const s="polyscript.js_modules";for(const e of Reflect.ownKeys(r))t.registerJSModule(n,`${s}.${e}`,tt(r,e));t.registerJSModule(n,s,r)})(l,g,h,x),g.registerJSModule(h,"polyscript",{IDBMap:a,IDBMapSync:i,xworker:qn,currentScript:S,config:b.config,js_modules:x,get target(){return!k&&S&&("SCRIPT"===c?S.after(Ue(Wn.document.createElement(`script-${u||l}`),{id:k=`${o}-target`})):(k=o,S.replaceChildren(),S.style.display="block")),k}}),Cn=g.runEvent.bind(g,h),In=g.transform.bind(g,h),S&&v("ready"),s?.onReady&&Ve(s?.onReady).call(g,Mn.call(g,b,h),qn),await g[_](h,r),["micropython","pyodide"].includes(g.type)){const e="polyscript",t=`__${e}_workers__`,n="__export__";h.runPython([`import js as ${t}`,`${t}.${t} = "${n}" in locals() and ${n} or []`,`del ${t}`].join("\\n"));const r=[...globalThis[t]];delete globalThis[t],r.length&&h.runPython([`from ${e} import xworker as ${t}`,...r.map((e=>`${t}.sync.${e} = ${e}`)),`del ${t}`].join("\\n"))}return S&&v("done"),postMessage("polyscript:done"),h}catch(e){postMessage(e)}})(),Nn("error"),Nn("message"),Nn("messageerror"),Hn&&addEventListener("py:progress",(({type:e,detail:t})=>{Wn.dispatchEvent(new Wn.CustomEvent(e,{detail:t}))}))}));\n'.replace(ge,be)],{type:"application/javascript"})),...e))({serviceWorker:n?.serviceWorker||n?.service_worker}),{postMessage:a}=s,i=this instanceof On,c=Le(s.proxy,{importJS:st,importCSS:ot}),l=Promise.withResolvers();let u=o(t).text().then((e=>{const t=i?this.toJSON():void 0;a.call(s,{options:n,config:r,code:e,hooks:t})})).then((()=>{u={then:e=>e()}}));return Ie(s,{sync:{value:c},ready:{value:l.promise},postMessage:{value:(e,...t)=>u.then((()=>a.call(s,e,...t)))},onerror:{writable:!0,configurable:!0,value:console.error}}),s.addEventListener("message",(e=>{const{data:t}=e,n=t instanceof Error;(n||"polyscript:done"===t)&&(e.stopImmediatePropagation(),n?(l.reject(t),s.onerror(Ce(e,{type:{value:"error"},error:{value:t}}))):l.resolve(s))})),i&&this.onWorker?.(this.interpreter,s),s};const Ln="Invalid content",Cn="Invalid worker attribute",In="Invalid worker attribute";var Nn=e=>{const{src:t,worker:n}=e.attributes;if(n){let{value:r}=n;if(r)throw new SyntaxError(In);if(r=t?.value,!r){if(t)throw new SyntaxError(Cn);if(e.childElementCount){const{innerHTML:t,localName:n,type:s}=e,o=s||n.replace(/-script$/,"");r=Oe(t),console.warn(`Deprecated: use <script type="${o}"> for an always safe content parsing:\n`,r)}else r=e.textContent;return URL.createObjectURL(new Blob([Pe(r)],{type:"text/plain"}))}return r}if(t&&e.textContent.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*(?:\/\/|#).*/gm,"").trim())throw new SyntaxError(Ln)};const Wn=(e,t)=>{const n=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(e);return n.getElementById(t)||((e,t=document)=>t.querySelector(e))(t,n)},Un=new WeakMap,Hn={get(){let e=Un.get(this);return e||(e=document.createElement(`${this.type}-script`),Un.set(this,e),Gn(this)),e},set(e){"string"==typeof e?Un.set(this,Wn(this,e)):(Un.set(this,e),Gn(this))}},Jn=new WeakMap,qn=new Map,zn=(e,t)=>{const n=e?.value;return n?t+n:""},Kn=(e,t,n,r,s,o,a=e)=>{if(!qn.has(t)){const i={interpreter:xn(n,s,o),queue:He(),XWorker:Tn(e,r)};qn.set(t,i),qn.has(e)||qn.set(e,i),qn.has(a)||qn.set(a,i)}return qn.get(t)},Gn=async e=>{if(Jn.has(e)){const{target:t}=e;t&&(e.closest("head")?document.body.append(t):e.after(t))}else{const{attributes:{config:t,env:n,name:r,target:s,version:a,"service-worker":i},src:c,type:l}=e,u=!it(e),p=a?.value,h=jn(l,p);let w=zn(t,"|");const g=zn(n,"")||`${h}${w}`;w=w.slice(1);const b=Nn(e);if(b){const t=new(Tn(l,p))(b,{...Ke(e,l),version:p,async:u,config:w,serviceWorker:i?.value});Jn.set(Ne(e,"xworker",{value:t}),{xworker:t});const n=r?.value;return void(n&&y[n].resolve(t.ready))}const _=zn(s,""),A=Kn(l,g,h,p,w);Jn.set(Ne(e,"target",Hn),A),_&&Un.set(e,Wn(e,_));const v=c?o(c).text():e.textContent;A.queue=A.queue.then((()=>(async(e,t,n,r)=>{const{type:s}=e,o=mn.get(s);o.experimental&&console.warn(`The ${s} interpreter is experimental`);const[a,i]=await Ue([Jn.get(e).interpreter,t]);try{rt(s,o,a,et),o.registerJSModule(a,"polyscript",{IDBMap:f,IDBMapSync:d,XWorker:n,currentScript:e,js_modules:et,workers:m}),Ge(e,s,"ready"),Ne(document,"currentScript",{configurable:!0,get:()=>e});const t=Ge.bind(null,e,s,"done");let c=o[r?"runAsync":"run"](a,i);return r&&(c=await c),t(),c}finally{delete document.currentScript}})(e,v,A.XWorker,u)))}},Yn=new Proxy(Ce(null),{get:(e,t)=>new Promise(queueMicrotask).then((()=>Xn(t)))}),Xn=async e=>{if(qn.has(e)){const{interpreter:t,queue:n}=qn.get(e);return(await Ue([t,n]))[0]}const t=qn.size?`Available interpreters are: ${[...qn.keys()].map((e=>`"${e}"`)).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},Vn=async e=>{const{type:n,currentTarget:r}=e;if(bn.length)for(let{name:s,value:o,ownerElement:a}of t(`./@*[${bn.map((e=>`name()="${e}${n}"`)).join(" or ")}]`,r)){s=s.slice(0,-(n.length+1));const t=await Xn(a.getAttribute(`${s}-env`)||s);mn.get(s).runEvent(t,o,e)}},Zn=e=>{if(bn.length)for(let{name:n,ownerElement:r}of t(`.//@*[${bn.map((e=>`starts-with(name(),"${e}")`)).join(" or ")}]`,e)){const e=n.lastIndexOf("-"),t=n.slice(e+1);"env"!==t&&(r.addEventListener(t,Vn),"disabled"in r&&!r.disabled&&(r.disabled=!0,Yn[n.slice(0,e)].then((()=>{r.disabled=!1}))))}},Qn=Tn(),er=[],tr=new Map,nr=new Map,rr=new Map,sr=async e=>{for(const t of er)if(e.matches(t)){const n=nr.get(t),r=or.get(n),{resolve:s}=rr.get(n),{options:o,known:a}=r;if(a.has(e))return;a.add(e);for(const[t,n]of tr)e.matches(t)&&await n(e);const{interpreter:i,configURL:c,config:l,version:u,env:p,onerror:h,hooks:w}=o;let g;try{const t=Nn(e);if(t){let r=u,o=c,a=e.getAttribute("config")||l||{};if(!r||!a){const[e,t]=kn(a,c);a=await e,o=t,r=a.version||a.interpreter,r&&/\.m?js$/.test(r)&&(r=new URL(r,o).href)}const p=Qn.call(new On(null,w),t,{...Ke(e,n),configURL:o,version:r,type:i,custom:n,config:a,async:!it(e),serviceWorker:e.getAttribute("service-worker")});Ne(e,"xworker",{value:p}),s({type:n,xworker:p});const f=e.getAttribute("name");return void(f&&y[f].resolve(p.ready))}}catch(e){g=e}const b=jn(i,u),_=p||`${b}${l?`|${l}`:""}`,{interpreter:A,XWorker:v}=Kn(n,_,b,u,l,c,i),E=await A,k=Ce(mn.get(i)),S=new On(E,w),x=function(...e){return v.apply(S,e)},j={...Ye(k,n,structuredClone(wn.get(b)),E),XWorker:x};rt(i,k,E,et),k.registerJSModule(E,"polyscript",{IDBMap:f,IDBMapSync:d,XWorker:x,config:j.config,currentScript:n.startsWith("_")?null:e,js_modules:et,workers:m});for(const t of["Run","RunAsync"]){let n,r,s="",o="";for(const e of Dn){const n=w?.main?.[e];n&&e.endsWith(t)&&(e.startsWith("codeBefore")?s=Pe(n()):o=Pe(n()))}(s||o)&&Ve(k,`r${t.slice(1)}`,s,o);for(let e=2;e<Rn.length;e++){const s=Rn[e],o=w?.main?.[s];o&&s.endsWith(t)&&(s.startsWith("onBefore")?n=o:r=o)}Pn(k,j,e,t.endsWith("Async"),n,r)}r.queue=r.queue.then((()=>(s(j),g&&h?.(g,e),w?.main?.onReady?.(j,e))))}},or=new Map;let ar=0;const ir=e=>(rr.has(e)||rr.set(e,Promise.withResolvers()),rr.get(e).promise),[{customObserver:cr,define:lr,whenDefined:ur,env:pr,Hook:fr,XWorker:dr},yr]=((e,t,n=globalThis)=>{const r=Symbol.for(e),s=r in n;return[s?n[r]:Object.defineProperty(n,r,{value:t})[r],s]})("polyscript",{customObserver:tr,define:(t,n)=>{let r=null==t;if(r)t="_ps"+ar++;else if(mn.has(t)||or.has(t))throw new Error(`<script type="${t}"> already registered`);if(!mn.has(n?.interpreter))throw new Error("Unspecified interpreter");mn.set(t,mn.get(n.interpreter));const s=[`script[type="${t}"]`];if(ir(t),r){const{hooks:e}=n,r=e?.main?.onReady;n={...n,hooks:{...e,main:{...e?.main,onReady(e,n){er.splice(er.indexOf(t),1),mn.delete(t),or.delete(t),rr.delete(t),n.remove(),r?.(e)}}}},document.head.append(Le(document.createElement("script"),{type:t}))}else s.push(`${t}-script`),bn.push(`${t}-`);for(const e of s)nr.set(e,t);er.push(...s),or.set(t,{options:Le({env:t},n),known:new WeakSet,queue:Promise.resolve()}),r||Zn(document),e(s.join(",")).forEach(sr)},whenDefined:ir,env:Yn,Hook:On,XWorker:Qn});if(!yr){const t=new MutationObserver((e=>{const t=gn.join(",");for(const{type:r,target:s,attributeName:o,addedNodes:a}of e)if("attributes"!==r)for(const e of a)1===e.nodeType&&(Zn(e),t&&e.matches(t)?Gn(e):n(t,e,!0));else{const e=o.lastIndexOf("-")+1;if(e){const t=o.slice(0,e);for(const n of bn)if(t===n){const t=o.slice(e);if("env"!==t){const e=s.hasAttribute(o)?"add":"remove";s[`${e}EventListener`](t,Vn)}break}}}})),n=(t,n,r)=>{t&&e(t,n).forEach(Gn),(t=er.join(","))&&(r&&sr(n),e(t,n).forEach(sr))},r=e=>(t.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:s}=Element.prototype;Le(Element.prototype,{attachShadow(e){return r(s.call(this,e))}}),queueMicrotask((()=>{Zn(r(document)),n(gn.join(","),document,!1)}))}export{fr as Hook,Ln as INVALID_CONTENT,Cn as INVALID_SRC_ATTR,In as INVALID_WORKER_ATTR,dr as XWorker,cr as customObserver,lr as define,pr as env,ur as whenDefined};
//# sourceMappingURL=index.js.map