polyscript
Advanced tools
Comparing version
@@ -79,2 +79,6 @@ import withResolvers from '@webreflection/utils/with-resolvers'; | ||
} | ||
if (Number.isSafeInteger(cfg?.experimental_ffi_timeout)) | ||
globalThis.reflected_ffi_timeout = cfg.experimental_ffi_timeout; | ||
const xworker = XW.call(new Hook(null, hooks), worker, { | ||
@@ -81,0 +85,0 @@ ...nodeInfo(node, type), |
@@ -59,6 +59,3 @@ import { dedent } from '../utils.js'; | ||
}, | ||
transform: (_, value) => { | ||
console.log('transforming', value); | ||
return value; | ||
}, | ||
transform: (_, value) => value, | ||
writeFile: () => { | ||
@@ -65,0 +62,0 @@ // MAYBE ??? |
@@ -68,5 +68,2 @@ import withResolvers from '@webreflection/utils/with-resolvers'; | ||
ready: { value: resolver.promise }, | ||
ffi: { | ||
direct: worker.direct, | ||
}, | ||
postMessage: { | ||
@@ -73,0 +70,0 @@ value: (data, ...rest) => bootstrap.then( |
@@ -7,3 +7,3 @@ /* c8 ignore start */ | ||
const { Worker } = coincident({ transfer: false }); | ||
export default (...args) => new Worker(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)}}const c=\"677caa6a\",l=\"=\"+c,u=\"-\"+c;let p=0;const d=p++,f=p++,h=p++,y=p++,m=p++,g=p++,w=p++,_=p++,b=p++,A=p++,E=p++,k=p++,v=p++,S=p++,x=p++,$=p++,j=p++,B=p++,M=p++,F=p++,P=p++,R=p++,D=p++,T=p++,O=p++,L=new TextDecoder,C=new TextEncoder,I=new Map(Reflect.ownKeys(Symbol).map(e=>[Symbol[e],`@${String(e)}`])),H=e=>{switch(e[0]){case\"@\":return Symbol[e.slice(1)];case\"#\":return Symbol.for(e.slice(1));case\"!\":return Symbol(e.slice(1));default:return Symbol()}},U=e=>I.get(e)||((e,t)=>void 0===t?\"?\":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),W=Object.defineProperty,N=Object.assign,q=Array.isArray,J=ArrayBuffer.isView,z=(e,t)=>[e,t],K=e=>e,G={},V=e=>(t,n=new Map)=>{for(let r=0,s=t.length;r<s;r++)t[r]=e(t[r],n);return t},X=([e,t])=>0===e?t:H(t),Y=e=>\"string\"==typeof e?z(0,e):z(16,U(e)),Z=(e,t)=>{for(let n=e.push,r=0,s=t.length;r<s;r+=32767)n.apply(e,t.subarray(r,r+32767))},Q=new ArrayBuffer(8),ee=new DataView(Q),te=new Uint8Array(Q),ne=(e,t,n)=>(e.set(t,n),n),re=e=>{te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],te[4]=e[ae++],te[5]=e[ae++],te[6]=e[ae++],te[7]=e[ae++]},se=e=>(te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],ee.getUint32(0,!0)),oe=(e,t)=>{switch(e[ae++]){case m:return re(e),ee.getFloat64(0,!0);case g:return e[ae++];case P:{const n=ne(t,ae-1,{});for(let r=0,s=se(e);r<s;r++)n[oe(e,t)]=oe(e,t);return n}case $:{const n=ne(t,ae-1,[]);for(let r=0,s=se(e);r<s;r++)n.push(oe(e,t));return n}case T:{const n=ae-1,r=oe(e,t);return ne(t,n,new globalThis[r](oe(e,t)))}case j:{const n=ae-1,r=se(e);return ne(t,n,e.slice(ae,ae+=r).buffer)}case S:{const n=ae-1,r=se(e);return ne(t,n,L.decode(e.slice(ae,ae+=r)))}case B:return ne(t,ae-1,new Date(oe(e,t)));case F:{const n=ne(t,ae-1,new Map);for(let r=0,s=se(e);r<s;r++)n.set(oe(e,t),oe(e,t));return n}case D:{const n=ne(t,ae-1,new Set);for(let r=0,s=se(e);r<s;r++)n.add(oe(e,t));return n}case M:{const n=oe(e,t),r=oe(e,t),s=oe(e,t),o=new(globalThis[n]||Error)(r);return ne(t,ae-1,W(o,\"stack\",{value:s}))}case R:{const n=oe(e,t),r=oe(e,t);return ne(t,ae-1,new RegExp(n,r))}case d:return!1;case f:return!0;case w:return NaN;case _:return 1/0;case b:return-1/0;case A:return 0;case E:return-0;case y:return null;case k:return re(e),ee.getBigInt64(0,!0);case v:return re(e),ee.getBigUint64(0,!0);case x:return H(oe(e,t));case O:return t.get(se(e));default:return}};let ae=0;const ie=e=>(ae=0,oe(e,new Map)),ce=({byteOffset:e=0}={})=>(t,n)=>ie(new Uint8Array(n,e,t));let le=0;const ue=le++,pe=le++,de=le++,fe=le++,he=le++,ye=le++,me=le++,ge=le++,we=le++,_e=le++,be=le++,Ae=le++,Ee=le++,ke=le++,ve=le++,Se=le++,xe=le++,$e=le++,{getPrototypeOf:je}=Object,{construct:Be}=Reflect,{toStringTag:Me}=Symbol,{toString:Fe}=G,Pe=(e,t=Fe.call(e).slice(8,-1))=>t in globalThis?t:Pe(je(e)||G),Re=(e,t=e[Me])=>t in globalThis?t:Re(Be(je(e.constructor),[0])),De=(e,t)=>new ArrayBuffer(e,{maxByteLength:t}),Te=([e,t],n)=>{const r=n?e.byteLength:e.length;if(n){if(t){const n=De(r,t);new Uint8Array(n).set(new Uint8Array(e)),e=n}}else{const n=t?De(r,t):new ArrayBuffer(r);new Uint8Array(n).set(e),e=n}return e};const Oe=/\\[('|\")?(.+?)\\1\\]/g,Le=(e,t)=>e?.[t];var Ce=e=>{const t=[],n=e=>{const n=t.splice(e);for(;e<n.length;)n[e++].delete(n[e++])};return class r extends Map{static keys=Symbol();static proto=Symbol();drop(e,t){return e!==r.proto&&super.delete(r.keys),super.delete(e),t}set(r,s){return((r,s)=>{t.push(r,s)<3&&setTimeout(n,e,0)})(super.set(r,s),r),s}}};const{preventExtensions:Ie}=Object;var He=({reflect:e=K,transform:t=K,released:n=K,buffer:r=!1,timeout:s=-1}=G)=>{const o=V(X),a=V(Y),i=e=>{if(!q(e))return e;const[t,n]=e;if(1&t)return u(e,t,n);switch(t){case 2:return j;case 0:return n;case 16:return H(n);case 32:return BigInt(n);case 68:return(([e,t,n,r],s)=>{const o=Te(t,s),a=globalThis[e];return r?new a(o,n,r):new a(o,n)})(n,r);case 64:return Te(n,r)}},c=(e,n=new Map)=>{switch(typeof e){case\"object\":{if(null===e)break;if(e===globalThis)return x;if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);if(A||!_.has(s)){if(q(s)){const t=[];r=z(4,t),n.set(e,r);for(let e=0,r=s.length;e<r;e++)t[e]=c(s[e],n);return r}if(!(J(s)||s instanceof ArrayBuffer||\"Object\"!==Pe(s))){const t={};r=z(2,t),n.set(e,r);for(const e in s)t[e]=c(s[e],n);return r}}r=z(0,s),n.set(e,r)}return r}case\"function\":{if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);r=z(8,E(s)),n.set(e,r)}return r}case\"symbol\":return z(16,U(e))}return e},l=V(c),u=(e,t,n)=>{let r=S.get(n),s=r?.deref();return s||(r&&B.unregister(r),s=new(3===t?m:5===t?g:w)(e,n),r=new WeakRef(s),S.set(n,r),B.register(s,n,r)),s},p=e=>{switch(typeof e){case\"object\":if(null===e)break;case\"function\":return $ in e;default:return!1}},d=-1<s,f=d?Ce(s):Map;class h{constructor(e){this._=e,d&&(this.$=new f)}get(t,n){if(d&&this.$.has(n))return this.$.get(n);const r=e(_e,this._,Y(n));return d?r[0]?this.$.set(n,i(r[1])):i(r[1]):i(r)}set(t,n,r){const s=e(xe,this._,Y(n),c(r));return d?this.$.drop(n,s):s}_oK(){return o(e(ve,this._),S)}ownKeys(e){return d?this.$.has(f.keys)?this.$.get(f.keys):this.$.set(f.keys,this._oK()):this._oK()}getOwnPropertyDescriptor(t,n){const r=i(e(be,this._,Y(n)));if(r)for(const e in r)r[e]=i(r[e]);return r}defineProperty(t,n,r){const s=e(ge,this._,Y(n),c(r));return d?this.$.drop(n,s):s}deleteProperty(t,n){const r=e(we,this._,Y(n));return d?this.$.drop(n,r):r}_gPO(){return i(e(Ae,this._))}getPrototypeOf(e){return d?this.$.has(f.proto)?this.$.get(f.proto):this.$.set(f.proto,this._gPO()):this._gPO()}setPrototypeOf(t,n){const r=e($e,this._,c(n));return d?this.$.drop(f.proto,r):r}isExtensible(t){return e(ke,this._)}preventExtensions(t){return Ie(t)&&e(Se,this._)}}const y=(t,n,r)=>r===$?!!(b=t):e(Ee,n,Y(r));class m extends h{constructor(e,t){return new Proxy({_:e},super(t))}has(e,t){return y(e._,this._,t)}}class g extends h{constructor(e,t){return new Proxy(e,super(t))}has(e,t){return y(e,this._,t)}}class w extends h{constructor(e,t){return new Proxy(Ue.bind(e),super(t))}has(e,t){return y(e(),this._,t)}construct(t,n){return i(e(me,this._,l(n)))}apply(t,n,r){const s=new Map;return i(e(ye,this._,c(n,s),l(r,s)))}get(e,t){switch(t){case\"apply\":return(t,n)=>this.apply(e,t,n);case\"call\":return(t,...n)=>this.apply(e,t,n);default:return super.get(e,t)}}}let _,b,A=!0;const{id:E,ref:k,unref:v}=((e=0,t=new Map,n=new Map)=>({clear:()=>{t.clear(),n.clear()},id:r=>{let s=n.get(r);if(void 0===s){for(;t.has(s=e++););t.set(s,r),n.set(r,s)}return s},ref:e=>t.get(e),unref:e=>(n.delete(t.get(e)),t.delete(e))}))(),S=new Map,x=z(2,null),$=Symbol(\"reflected-ffi\"),j=new m(x,null),B=new FinalizationRegistry(t=>{S.delete(t),e(ue,t)});return{global:j,isProxy:p,assign(t,...n){const r=p(t),s=N(r?{}:t,...n);return r&&e(pe,b[1],c(s)),t},direct:e=>(A&&(A=!1,_=new WeakSet),_.add(e),e),evaluate:(t,...n)=>i(e(de,null,function(e=this){return String(e).replace(/^(async\\s*)?(\\bfunction\\b)?(.*?)\\(/,(e,t,n,r)=>r&&!n?`${t||\"\"}function ${r}(`:e)}(t),l(n))),gather(t,...n){const r=p(t),s=r?i:e=>t[e];r&&(n=e(fe,b[1],a(n,S)));for(let e=0;e<n.length;e++)n[e]=s(n[e]);return n},query:(t,n)=>p(t)?i(e(he,b[1],n)):((e,t)=>t.replace(Oe,\".$2\").split(\".\").reduce(Le,e))(t,n),reflect(e,t,...r){switch(e){case ye:{const[e,n]=r;for(let e=0,t=n.length;e<t;e++)n[e]=i(n[e]);return c(Reflect.apply(k(t),i(e),n))}case ue:return n(k(t)),v(t)}}}};function Ue(){return this}var We=Promise.withResolvers.bind(Promise),Ne=(e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=We();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]};const qe=[],Je=new WeakSet,ze=(...e)=>(Je.add(e),e);let{SharedArrayBuffer:Ke}=globalThis,Ge=!0;try{new Ke(4,{maxByteLength:8})}catch(e){Ge=!1,Ke=class extends ArrayBuffer{get growable(){return super.resizable}grow(e){super.resize(e)}}}const{create:Ve}=Object,Xe=`coincident-${Ge?crypto.randomUUID():Math.random().toString(36).substring(2)}`,Ye=2*Int32Array.BYTES_PER_ELEMENT,Ze={byteOffset:Ye},Qe=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},et=e=>{e.stopImmediatePropagation(),e.preventDefault()},[tt,nt]=Ne();let[rt,st]=tt(),ot=()=>st,at=()=>{},{Atomics:it,MessagePort:ct,SharedArrayBuffer:lt,postMessage:ut}=globalThis;if(Ge)nt(rt);else{lt=Ke;const e=new Map,t=(e,...t)=>{e.addEventListener(...t)};if(\"importScripts\"in globalThis){at=t=>{e.set(t,null)};const n=t=>{const n=t[0],r=p++;return e.set(n,r),[r,n,t]},r=ut;ut=function(e,t){if(u){const s={ID:e.ID,data:n(e.data)};r(s,t)}else st.then(()=>this.postMessage(e,t))},ct=class extends ct{postMessage(e,t){u?super.postMessage(n(e),t):st.then(()=>this.postMessage(e,t))}},t(globalThis,\"message\",e=>{et(e),nt(rt,e.data)},{once:!0});const{wait:s}=it,{parse:o}=JSON,a=t=>{const n=new XMLHttpRequest;return n.open(\"POST\",`${l}?sabayon`,!1),n.setRequestHeader(\"Content-Type\",\"application/json\"),n.send(`[\"${c}\",${e.get(t)}]`),n},i=(e,t)=>(e.set(o(t.responseText)),\"ok\");it={wait:(t,...n)=>e.has(t)?i(t,a(t)):s(t,...n)};let c,l,u=!1,p=Math.random();st=st.then(e=>{[c,l]=e,u=!0})}else{const n=[Xe,Math.random()].join(\"-\").replace(/\\W/g,\"-\"),r=new BroadcastChannel(\"dc78209b-186c-4f83-80e9-406becb7d9f3\");r.onmessage=async t=>{const[s,o,a]=t.data;if(o===n)for(const[t,[n,o]]of e)if(n===a){await o.promise;let e=t.length;for(;e--&&!t[e];);r.postMessage([s,t.slice(0,e+1)]);break}};const{notify:s}=it;it={notify(t,...n){const r=e.get(t);return r?(r[1].resolve(),0):s(t,...n)}};let o=\"\",a=null;const i=(e,n)=>{let r,s=!0;e.getRegistration(o).then(t=>t??e.register(o,n)).then(function n(a){const{controller:i}=e;if(s=s&&!!i,r=a.installing||a.waiting||a.active,\"activated\"===r.state){if(s){if(i.scriptURL===o)return nt(rt);a.unregister()}location.reload()}else t(r,\"statechange\",()=>n(a),{once:!0})})};ot=(e,t)=>(a||(o=new URL(e,location.href).href,i(navigator.serviceWorker,t),a=st),a)}}const{setPrototypeOf:pt}=Reflect;let{postMessage:dt}=globalThis;const ft=We(),ht=ct.prototype;addEventListener(\"message\",e=>{et(e);const[t,n,r]=e.data,[s]=e.ports;n&&(pt(s,ht),t&&(dt=ut)),ft.resolve([t,n,r,s])},{once:!0});var yt=async e=>{const[t,n,r,s]=await ot().then(()=>ft.promise),o=!!t,a=Ge||!!n,i=e?.transform,c=(e?.decoder||ce)(Ze),l=!1!==e?.transfer;let u,p,d;if(a){const t=new(n?lt:SharedArrayBuffer)(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});u=new Int32Array(t),n?(({wait:d}=it),at(u)):(({pause:p,wait:d}=Atomics),p&&!o&&(d=(e,t)=>{for(;e[t]<1;)p()}))}const[f,h]=Ne(String),y=new Map,m=Ve(null),g=new Proxy(m,{get(e,n){if(\"then\"===n)return;let r=y.get(n);return r||y.set(n,r=(...e)=>{const r=((e,t)=>{let n=qe;return e&&Je.has(t.at(-1)||qe)&&(n=t.pop(),Je.delete(n)),n})(l,e),p=[u,n,i?e.map(i):e];if(a){o?dt({ID:t,data:p},r):s.postMessage(p,r),d(u,0),u[0]=0;const e=u[1]?c(u[1],u.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=f();return p[0]=e,s.postMessage(p,r),t}}),r},set:Qe});return s.addEventListener(\"message\",async({data:e})=>{\"string\"==typeof e[0]?h.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,m,i),s.postMessage(e))}),s.start(),{native:Ge,proxy:g,ffi_timeout:r,sync:a,transfer:ze}};const mt={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}},gt=new WeakMap,wt=e=>{const t=e||console,n={buffered:bt,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 gt.set(t,n),t}}},_t=new TextDecoder,bt=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(_t.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},At=(e,...t)=>mt[typeof e](e,...t),{isArray:Et}=Array,{assign:kt,create:vt,defineProperty:St,entries:xt}=Object,{all:$t,resolve:jt}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Bt=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Mt(e){return e.startsWith(\".\")?Bt(e,this):e}const Ft=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Pt=e=>Function(`'use strict';return (${e})`)(),Rt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),Dt=Symbol.for(\"polyscript.js_modules\"),Tt=new Map;St(globalThis,Dt,{value:Tt}),new Proxy(Tt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const Ot=(e,t)=>!t.startsWith(\"_\"),Lt=(e,t)=>new Proxy(e,{has:Ot,get:(e,n)=>e[t][n]}),Ct=(e,t)=>import(e).then(e=>{Tt.set(t,{...e})}),It=e=>new Promise((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(kt(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))}),Ht=e=>/\\.css$/i.test(new URL(e).pathname),Ut=(e,t)=>e.has(t),Wt=e=>[...e.keys()];var Nt=(e,t,n,r)=>{const s=globalThis[Dt];if(n)for(let[e,t]of xt(n)){let n=s.get(t);n&&!Et(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:Ut,ownKeys:Wt,get:(e,s)=>{let o=e.get(s);if(Et(o)){let a=o;o=null;for(let e of a)e=Bt(e,r),Ht(e)?n.importCSS(e):(n.importJS(e,s),o=t[Dt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const qt=new Map,Jt=e=>qt.get(e),zt=(e,t)=>{try{return Function(\"require\",t)(Jt)}catch(t){gt.get(e).stderr(t)}};var Kt={type:\"dummy\",module:()=>\"data:text/javascript,\",engine:e=>wt().get(e),registerJSModule(e,t,n){qt.set(t,n)},run:zt,runAsync:zt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(Jt,n)}catch(t){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const Gt=Object.getOwnPropertyDescriptors(Response.prototype),Vt=e=>\"function\"==typeof e,Xt={get:(e,t)=>Gt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!Vt(r)?e.then(e=>e[t]):(...n)=>e.then(e=>e[t](...n)))(e,t,Gt[t]):((e,t)=>Vt(t)?t.bind(e):t)(e,e[t])};var Yt=(e,...t)=>new Proxy(fetch(e,...t),Xt);const Zt=!globalThis.window,Qt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):tn(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},en=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},tn=(e,t)=>{const n=[];for(const r of t.split(\"/\"))\".\"!==r&&\"..\"!==r&&(n.push(r),r&&e.mkdir(n.join(\"/\")))},nn=(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(/^\\/+/,\"/\")},rn=e=>{const t=e.map(e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\")).filter(e=>\"\"!==e&&\".\"!==e).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},sn=(e,t)=>Yt(Bt(e,t)).arrayBuffer(),on=(e,t,n,r)=>$t((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(Et(r))return r.map(n=>({url:rn([e,n]),path:rn([t,n])}));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:rn([t,s])}]})})(n).map(({url:n,path:s})=>sn(n,r).then(n=>e.writeFile(t,s,n)))),an=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,cn=(e,t)=>e.replace(/\\{.+?\\}/g,e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)}),ln=(e,t,n,r)=>$t((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of xt(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,cn(o,t))}else{const e=cn(s,t),a=an(e,cn(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})=>sn(n,r).then(r=>e.writeFile(t,s,r,n)))),un=({main:e,worker:t},n)=>{const r=[];if(t&&Zt)for(let[e,s]of xt(t))e=Bt(e,n),r.push(Ct(e,s));if(e&&!Zt)for(let[t,s]of xt(e))t=Bt(t,n),Ht(t)?It(t):r.push(Ct(t,s));return $t(r)},pn=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{isNaN:dn,isFinite:fn,isInteger:hn}=Number,{ownKeys:yn}=Reflect,{is:mn}=Object,gn=(e,t,n)=>{const r=n.get(e),s=!r;return s?(ee.setUint32(0,t.length,!0),n.set(e,[te[0],te[1],te[2],te[3]])):t.push(O,r[0],r[1],r[2],r[3]),s},wn=(e,t,n)=>{ee.setUint32(0,n,!0),e.push(t,te[0],te[1],te[2],te[3])},_n=(e,t,n)=>{switch(typeof e){case\"number\":e&&fn(e)?hn(e)&&e<256&&-1<e?t.push(g,e):(ee.setFloat64(0,e,!0),t.push(m,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7])):dn(e)?t.push(w):e?t.push(e<0?b:_):t.push(mn(e,0)?A:E);break;case\"object\":switch(!0){case null===e:t.push(y);break;case!gn(e,t,n):break;case q(e):{const r=e.length;wn(t,$,r);for(let s=0;s<r;s++)_n(e[s],t,n);break}case J(e):if(t.push(T),_n(Re(e),t,n),e=e.buffer,!gn(e,t,n))break;case e instanceof ArrayBuffer:{const n=new Uint8Array(e);wn(t,j,n.length),bn(t,n);break}case e instanceof Date:t.push(B),_n(e.getTime(),t,n);break;case e instanceof Map:wn(t,F,e.size);for(const[r,s]of e)_n(r,t,n),_n(s,t,n);break;case e instanceof Set:wn(t,D,e.size);for(const r of e)_n(r,t,n);break;case e instanceof Error:t.push(M),_n(e.name,t,n),_n(e.message,t,n),_n(e.stack,t,n);break;case e instanceof RegExp:t.push(R),_n(e.source,t,n),_n(e.flags,t,n);break;default:if(\"toJSON\"in e){const r=e.toJSON();_n(r===e?null:r,t,n)}else{const r=yn(e),s=r.length;wn(t,P,s);for(let o=0;o<s;o++){const s=r[o];_n(s,t,n),_n(e[s],t,n)}}}break;case\"string\":if(gn(e,t,n)){const n=C.encode(e);wn(t,S,n.length),bn(t,n)}break;case\"boolean\":t.push(e?f:d);break;case\"symbol\":t.push(x),_n(U(e),t,n);break;case\"bigint\":{let n=k;9223372036854775807n<e?(ee.setBigUint64(0,e,!0),n=v):ee.setBigInt64(0,e,!0),t.push(n,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7]);break}default:t.push(h)}};let bn=Z;const An={parse:ie,stringify:e=>{const t=[];return bn=Z,_n(e,t,new Map),t}},En=new WeakMap,kn=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await ln(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await on(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await un(r.js_modules,s),t(\"Loaded JS modules\"))},vn=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await En.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=An),e.registerJsModule(t,n)},Sn=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},xn=(e,t,...n)=>{try{return e.runPython(At(t),...n)}catch(t){gt.get(e).stderr(t)}},$n=async(e,t,...n)=>{try{return await e.runPythonAsync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},jn=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){gt.get(e).stderr(t)}};var Bn=(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 Mn=async e=>(await import(\"./toml-BK2RWy-G.js\")).parse(e);async function Fn(e,t){return new Promise((n,r)=>{e.syncfs(t,e=>{e?r(e):n()})})}function Pn(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 Rn(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):tn(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 Fn(t,!0),{syncfs:async()=>await Fn(t,!1)}}}const Rn=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},Dn=(e,t)=>{try{e.mkdir(t)}catch(e){}},Tn=pn(\"mpy\");var On={type:\"micropython\",module:(e=\"1.25.0\")=>`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}=wt({stderr:bt(console.error),stdout:bt(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),Tn(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Ln.bind(this,i,r);return En.set(i,c),await kn(this,Tn,i,t,r),this.writeFile(i,\"./mip.py\",Bn),t.packages&&(Tn(\"Loading packages\"),await c(t.packages.map(Mt,r)),Tn(\"Loaded packages\")),Tn(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=Pn(i._module)),i},registerJSModule:vn,run:xn,runAsync:$n,runEvent:jn,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=Sn(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-BKVoQflw.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)Dn(s,i);else{Dn(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 Qt(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 Qt(i,t,n)}};async function Ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Bt(s,t),r=await Yt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const Cn={dict_converter:Object.fromEntries},{stringify:In}=JSON,{apply:Hn}=Reflect,Un=Function.prototype,Wn=e=>function(...t){return Hn(e,this,t)};let Nn,qn;const Jn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case\"object\":if(null===r)break;case\"function\":if(Nn in r&&!r[Nn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=qn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(Un,{apply:{value(t,r){return e&&n(r),Hn(this,t,r)}},call:{value(t,...r){return e&&n(r),Hn(this,t,r)}}})},zn=pn(\"py\"),Kn=new WeakMap;var Gn={type:\"pyodide\",module:(e=\"0.27.7\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){zn(\"Loading Pyodide\");let{packages:o,index_urls:a}=n;o&&(o=o.map(Mt,s)),zn(\"Loading Storage\");const c=r.slice(0,r.lastIndexOf(\"/\")),l=new i(`${c}@${t}`),u={indexURL:c},p=\"never\"!==n.packages_cache;if(await l.sync(),p){if(o)if(\"passthrough\"===n.packages_cache)u.packages=o,o=null,l.clear();else{o=o.sort();const e=In(o);if(l.has(e)){const t=new Blob([l.get(e)],{type:\"application/json\"});u.lockFileURL=URL.createObjectURL(t),u.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else l.clear();zn(\"Loaded Storage\");const{stderr:d,stdout:f,get:h}=wt(),y=await h(e({stderr:d,stdout:f,...u}));n.debug&&y.setDebug(!0);const m=Xn.bind(y);return a&&Kn.set(y,a),En.set(y,m),await kn(this,zn,y,n,s),o&&await m(o,l,p),await l.close(),u.lockFileURL&&URL.revokeObjectURL(u.lockFileURL),zn(\"Loaded Pyodide\"),\"auto\"===n.experimental_create_proxy&&(y.runPython([\"import js\",\"from pyodide.ffi import to_js\",\"o=js.Object.fromEntries\",\"js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)\"].join(\";\"),{globals:y.toPy({})}),qn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[Nn]=Reflect.ownKeys(qn).filter(e=>\"symbol\"==typeof e&&\"Symbol(pyproxy.attrs)\"===String(e)),Jn(!0)),y},registerJSModule:vn,run:Wn(xn),runAsync:Wn($n),runEvent:Wn(jn),transform:(e,t)=>Hn(Vn,e,[t]),writeFile:(e,t,n,r)=>{const s=Sn(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 Qt({FS:o,PATH:a,PATH_FS:i},t,n)}};function Vn(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(Cn);if(e instanceof Map)return new Map([...e.entries()]);if(Et(e))return e.map(Vn,this)}return e}async function Xn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,zn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(Kn.has(this)&&o.set_index_urls(Kn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(In(e),n)}o.destroy()}const Yn=\"ruby-wasm-wasi\",Zn=Yn.replace(/\\W+/g,\"_\");var Qn={type:Yn,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 Yt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await ln(this,a,t.files,r),t.fetch&&await on(this,a,t.fetch,r),t.js_modules&&await un(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${Zn}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(At(t),...n),runAsync:(e,t,...n)=>e.evalAsync(At(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${Zn}_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 ${Yn}`)}};var er={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}=wt(),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 ln(this,c,n.files,s),n.fetch&&await on(this,c,n.fetch,s),n.js_modules&&await un(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(At(t),...n)}catch(t){gt.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){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(tn(e,en(t)),t=nn(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const tr=new WeakMap,nr=new FinalizationRegistry(e=>e()),rr=async(e,t)=>{const{shelter:n,destroy:r,io:s}=tr.get(e),{output:o,result:a}=await n.captureR(At(t));for(const{type:e,data:t}of o)s[e](t);return nr.register(a,r),a};var sr={type:\"webr\",experimental:!0,module:(e=\"0.4.4\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=wt(),o=new e.WebR;await s(o.init().then(()=>o));const a=await new o.Shelter;return tr.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:gt.get(o)}),t.files&&await ln(this,o,t.files,r),t.fetch&&await on(this,o,t.fetch,r),t.js_modules&&await un(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:rr,runAsync:rr,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 or=new Map,ar=new Map,ir=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=or.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=>(ar.set(t,e),s(r,e,n,o)))}}),cr=e=>{for(const t of[].concat(e.type))or.set(t,e)};for(const e of[Kt,On,Gn,Qn,er,sr])cr(e);const{parse:lr}=JSON,ur=(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,[Bt(e),n]})(e,t);return\"json\"===s?n=Yt(r).json():\"toml\"===s?n=Yt(r).text().then(Mn):\"string\"===s?n=pr(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=pr(n)),[n,e=r]},pr=e=>{try{return lr(e)}catch(t){return Mn(e)}},dr=\"BeforeRun\",fr=\"AfterRun\",hr=[`code${dr}`,`code${dr}Async`,`code${fr}`,`code${fr}Async`],yr=[\"onWorker\",\"onReady\",`on${dr}`,`on${dr}Async`,`on${fr}`,`on${fr}Async`];function mr(e,t){const{run:n,runAsync:r}=or.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const gr=(e,t,n,r,s,o)=>{if(s||o){const a=mr.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 wr,_r,br;const Ar=(e,t)=>{addEventListener(e,t||(async t=>{try{await wr,_r(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Er,sync:kr,native:vr,window:Sr,isWindowProxy:xr,ffi:$r}=await(async e=>{const t=await yt({...e,decoder:e?.decoder||ce}),n=He({...e,buffer:!0,reflect:t.proxy[l],timeout:t.ffi_timeout});return t.proxy[u]=n.reflect,{...t,window:n.global,isWindowProxy:n.isProxy,ffi:{assign:n.assign,direct:n.direct,evaluate:n.evaluate,gather:n.gather,query:n.query}}})({transfer:!1,transform:e=>br?br(e):e}),jr={polyfill:kr,sync:Er,window:vr||kr?Sr:null,isWindowProxy:xr,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Ar(\"message\",({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{wr=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,h=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),y=await((e,t,n,r={})=>(t&&([r,t]=ur(t,n,r)),jt(r).then(n=>ir[e](n,t))))(h,t,n,d),{js_modules:m}=ar.get(h),g=m?.main,w=vt(or.get(l)),_=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:gt.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(w,u||l,d||{},y);let b=\"run\";if(f&&(b+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of hr){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,Rt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Rt(t),...o);return r&&await s(e,r,...o),a}})(w,b,n,r);for(const n of yr.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=Pt(r);n.startsWith(\"onBefore\")?e=s:t=s}}}gr(w,_,jr,f,e,t)}let A,E,k,v=null,S=\"\";(vr||kr)&&(({CustomEvent:A,document:E}=Sr),v=o&&E.getElementById(o)||null,k=e=>Ft(v,u||l,e,!0,A));const x=Nt(Sr,Er,g,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}`,Lt(r,e));t.registerJSModule(n,s,r)})(l,w,y,x),w.registerJSModule(y,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:jr,currentScript:v,config:_.config,js_modules:x,ffi:$r,get target(){return!S&&v&&(\"SCRIPT\"===c?v.after(kt(Sr.document.createElement(`script-${u||l}`),{id:S=`${o}-target`})):(S=o,v.replaceChildren(),v.style.display=\"block\")),S}}),_r=w.runEvent.bind(w,y),br=w.transform.bind(w,y),v&&k(\"ready\"),s?.onReady&&Pt(s?.onReady).call(w,mr.call(w,_,y),jr),await w[b](y,r),[\"micropython\",\"pyodide\"].includes(w.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";y.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&&y.runPython([`from ${e} import xworker as ${t}`,...r.map(e=>`${t}.sync.${e} = ${e}`),`del ${t}`].join(\"\\n\"))}return v&&k(\"done\"),postMessage(\"polyscript:done\"),y}catch(e){postMessage(e)}})(),Ar(\"error\"),Ar(\"message\"),Ar(\"messageerror\"),(vr||kr)&&addEventListener(\"py:progress\",({type:e,detail:t})=>{Sr.dispatchEvent(new Sr.CustomEvent(e,{detail:t}))})});\n".replace(re,place)],{type:'text/javascript'})), ...args) | ||
export default (...args) => new Worker(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)}}const c=\"677caa6a\",l=\"=\"+c,u=\"-\"+c;let p=0;const d=p++,f=p++,h=p++,y=p++,m=p++,g=p++,w=p++,_=p++,b=p++,A=p++,E=p++,k=p++,v=p++,S=p++,x=p++,$=p++,j=p++,B=p++,M=p++,F=p++,P=p++,R=p++,D=p++,T=p++,O=p++,L=new TextDecoder,C=new TextEncoder,I=new Map(Reflect.ownKeys(Symbol).map(e=>[Symbol[e],`@${String(e)}`])),H=e=>{switch(e[0]){case\"@\":return Symbol[e.slice(1)];case\"#\":return Symbol.for(e.slice(1));case\"!\":return Symbol(e.slice(1));default:return Symbol()}},U=e=>I.get(e)||((e,t)=>void 0===t?\"?\":void 0===Symbol.keyFor(e)?`!${t}`:`#${t}`)(e,e.description),W=Object.defineProperty,N=Object.assign,q=Array.isArray,J=ArrayBuffer.isView,z=(e,t)=>[e,t],K=e=>e,G={},V=e=>(t,n=new Map)=>{for(let r=0,s=t.length;r<s;r++)t[r]=e(t[r],n);return t},X=([e,t])=>0===e?t:H(t),Y=e=>\"string\"==typeof e?z(0,e):z(16,U(e)),Z=(e,t)=>{for(let n=e.push,r=0,s=t.length;r<s;r+=32767)n.apply(e,t.subarray(r,r+32767))},Q=new ArrayBuffer(8),ee=new DataView(Q),te=new Uint8Array(Q),ne=(e,t,n)=>(e.set(t,n),n),re=e=>{te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],te[4]=e[ae++],te[5]=e[ae++],te[6]=e[ae++],te[7]=e[ae++]},se=e=>(te[0]=e[ae++],te[1]=e[ae++],te[2]=e[ae++],te[3]=e[ae++],ee.getUint32(0,!0)),oe=(e,t)=>{switch(e[ae++]){case m:return re(e),ee.getFloat64(0,!0);case g:return e[ae++];case P:{const n=ne(t,ae-1,{});for(let r=0,s=se(e);r<s;r++)n[oe(e,t)]=oe(e,t);return n}case $:{const n=ne(t,ae-1,[]);for(let r=0,s=se(e);r<s;r++)n.push(oe(e,t));return n}case T:{const n=ae-1,r=oe(e,t);return ne(t,n,new globalThis[r](oe(e,t)))}case j:{const n=ae-1,r=se(e);return ne(t,n,e.slice(ae,ae+=r).buffer)}case S:{const n=ae-1,r=se(e);return ne(t,n,L.decode(e.slice(ae,ae+=r)))}case B:return ne(t,ae-1,new Date(oe(e,t)));case F:{const n=ne(t,ae-1,new Map);for(let r=0,s=se(e);r<s;r++)n.set(oe(e,t),oe(e,t));return n}case D:{const n=ne(t,ae-1,new Set);for(let r=0,s=se(e);r<s;r++)n.add(oe(e,t));return n}case M:{const n=oe(e,t),r=oe(e,t),s=oe(e,t),o=new(globalThis[n]||Error)(r);return ne(t,ae-1,W(o,\"stack\",{value:s}))}case R:{const n=oe(e,t),r=oe(e,t);return ne(t,ae-1,new RegExp(n,r))}case d:return!1;case f:return!0;case w:return NaN;case _:return 1/0;case b:return-1/0;case A:return 0;case E:return-0;case y:return null;case k:return re(e),ee.getBigInt64(0,!0);case v:return re(e),ee.getBigUint64(0,!0);case x:return H(oe(e,t));case O:return t.get(se(e));default:return}};let ae=0;const ie=e=>(ae=0,oe(e,new Map)),ce=({byteOffset:e=0}={})=>(t,n)=>ie(new Uint8Array(n,e,t));let le=0;const ue=le++,pe=le++,de=le++,fe=le++,he=le++,ye=le++,me=le++,ge=le++,we=le++,_e=le++,be=le++,Ae=le++,Ee=le++,ke=le++,ve=le++,Se=le++,xe=le++,$e=le++,{getPrototypeOf:je}=Object,{construct:Be}=Reflect,{toStringTag:Me}=Symbol,{toString:Fe}=G,Pe=(e,t=Fe.call(e).slice(8,-1))=>t in globalThis?t:Pe(je(e)||G),Re=(e,t=e[Me])=>t in globalThis?t:Re(Be(je(e.constructor),[0])),De=(e,t)=>new ArrayBuffer(e,{maxByteLength:t}),Te=([e,t],n)=>{const r=n?e.byteLength:e.length;if(n){if(t){const n=De(r,t);new Uint8Array(n).set(new Uint8Array(e)),e=n}}else{const n=t?De(r,t):new ArrayBuffer(r);new Uint8Array(n).set(e),e=n}return e};const Oe=/\\[('|\")?(.+?)\\1\\]/g,Le=(e,t)=>e?.[t];var Ce=e=>{const t=[],n=e=>{const n=t.splice(e);for(;e<n.length;)n[e++].delete(n[e++])};return class r extends Map{static keys=Symbol();static proto=Symbol();drop(e,t){return e!==r.proto&&super.delete(r.keys),super.delete(e),t}set(r,s){return((r,s)=>{t.push(r,s)<3&&setTimeout(n,e,0)})(super.set(r,s),r),s}}};const{preventExtensions:Ie}=Object;var He=({reflect:e=K,transform:t=K,released:n=K,buffer:r=!1,timeout:s=-1}=G)=>{const o=V(X),a=V(Y),i=e=>{if(!q(e))return e;const[t,n]=e;if(1&t)return u(e,t,n);switch(t){case 2:return j;case 0:return n;case 16:return H(n);case 32:return BigInt(n);case 68:return(([e,t,n,r],s)=>{const o=Te(t,s),a=globalThis[e];return r?new a(o,n,r):new a(o,n)})(n,r);case 64:return Te(n,r)}},c=(e,n=new Map)=>{switch(typeof e){case\"object\":{if(null===e)break;if(e===globalThis)return x;if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);if(A||!_.has(s)){if(q(s)){const t=[];r=z(4,t),n.set(e,r);for(let e=0,r=s.length;e<r;e++)t[e]=c(s[e],n);return r}if(!(J(s)||s instanceof ArrayBuffer||\"Object\"!==Pe(s))){const t={};r=z(2,t),n.set(e,r);for(const e in s)t[e]=c(s[e],n);return r}}r=z(0,s),n.set(e,r)}return r}case\"function\":{if($ in e)return b;let r=n.get(e);if(!r){const s=t(e);r=z(8,E(s)),n.set(e,r)}return r}case\"symbol\":return z(16,U(e))}return e},l=V(c),u=(e,t,n)=>{let r=S.get(n),s=r?.deref();return s||(r&&B.unregister(r),s=new(3===t?m:5===t?g:w)(e,n),r=new WeakRef(s),S.set(n,r),B.register(s,n,r)),s},p=e=>{switch(typeof e){case\"object\":if(null===e)break;case\"function\":return $ in e;default:return!1}},d=-1<s,f=d?Ce(s):Map;class h{constructor(e){this._=e,d&&(this.$=new f)}get(t,n){if(d&&this.$.has(n))return this.$.get(n);const r=e(_e,this._,Y(n));return d?r[0]?this.$.set(n,i(r[1])):i(r[1]):i(r)}set(t,n,r){const s=e(xe,this._,Y(n),c(r));return d?this.$.drop(n,s):s}_oK(){return o(e(ve,this._),S)}ownKeys(e){return d?this.$.has(f.keys)?this.$.get(f.keys):this.$.set(f.keys,this._oK()):this._oK()}getOwnPropertyDescriptor(t,n){const r=i(e(be,this._,Y(n)));if(r)for(const e in r)r[e]=i(r[e]);return r}defineProperty(t,n,r){const s=e(ge,this._,Y(n),c(r));return d?this.$.drop(n,s):s}deleteProperty(t,n){const r=e(we,this._,Y(n));return d?this.$.drop(n,r):r}_gPO(){return i(e(Ae,this._))}getPrototypeOf(e){return d?this.$.has(f.proto)?this.$.get(f.proto):this.$.set(f.proto,this._gPO()):this._gPO()}setPrototypeOf(t,n){const r=e($e,this._,c(n));return d?this.$.drop(f.proto,r):r}isExtensible(t){return e(ke,this._)}preventExtensions(t){return Ie(t)&&e(Se,this._)}}const y=(t,n,r)=>r===$?!!(b=t):e(Ee,n,Y(r));class m extends h{constructor(e,t){return new Proxy({_:e},super(t))}has(e,t){return y(e._,this._,t)}}class g extends h{constructor(e,t){return new Proxy(e,super(t))}has(e,t){return y(e,this._,t)}}class w extends h{constructor(e,t){return new Proxy(Ue.bind(e),super(t))}has(e,t){return y(e(),this._,t)}construct(t,n){return i(e(me,this._,l(n)))}apply(t,n,r){const s=new Map;return i(e(ye,this._,c(n,s),l(r,s)))}get(e,t){switch(t){case\"apply\":return(t,n)=>this.apply(e,t,n);case\"call\":return(t,...n)=>this.apply(e,t,n);default:return super.get(e,t)}}}let _,b,A=!0;const{id:E,ref:k,unref:v}=((e=0,t=new Map,n=new Map)=>({clear:()=>{t.clear(),n.clear()},id:r=>{let s=n.get(r);if(void 0===s){for(;t.has(s=e++););t.set(s,r),n.set(r,s)}return s},ref:e=>t.get(e),unref:e=>(n.delete(t.get(e)),t.delete(e))}))(),S=new Map,x=z(2,null),$=Symbol(\"reflected-ffi\"),j=new m(x,null),B=new FinalizationRegistry(t=>{S.delete(t),e(ue,t)});return{global:j,isProxy:p,assign(t,...n){const r=p(t),s=N(r?{}:t,...n);return r&&e(pe,b[1],c(s)),t},direct:e=>(A&&(A=!1,_=new WeakSet),_.add(e),e),evaluate:(t,...n)=>i(e(de,null,function(e=this){return String(e).replace(/^(async\\s*)?(\\bfunction\\b)?(.*?)\\(/,(e,t,n,r)=>r&&!n?`${t||\"\"}function ${r}(`:e)}(t),l(n))),gather(t,...n){const r=p(t),s=r?i:e=>t[e];r&&(n=e(fe,b[1],a(n,S)));for(let e=0;e<n.length;e++)n[e]=s(n[e]);return n},query:(t,n)=>p(t)?i(e(he,b[1],n)):((e,t)=>t.replace(Oe,\".$2\").split(\".\").reduce(Le,e))(t,n),reflect(e,t,...r){switch(e){case ye:{const[e,n]=r;for(let e=0,t=n.length;e<t;e++)n[e]=i(n[e]);return c(Reflect.apply(k(t),i(e),n))}case ue:return n(k(t)),v(t)}}}};function Ue(){return this}var We=Promise.withResolvers.bind(Promise),Ne=(e=e=>e)=>{const t=new Map;let n=0;return[()=>{let r;do{r=e(n++)}while(t.has(r));const s=We();return t.set(r,s),[r,s.promise]},(e,n,r)=>{const s=t.get(e);t.delete(e),r?s?.reject(r):s?.resolve(n)}]};const qe=[],Je=new WeakSet,ze=(...e)=>(Je.add(e),e);let{SharedArrayBuffer:Ke}=globalThis,Ge=!0;try{new Ke(4,{maxByteLength:8})}catch(e){Ge=!1,Ke=class extends ArrayBuffer{get growable(){return super.resizable}grow(e){super.resize(e)}}}const{create:Ve}=Object,Xe=`coincident-${Ge?crypto.randomUUID():Math.random().toString(36).substring(2)}`,Ye=2*Int32Array.BYTES_PER_ELEMENT,Ze={byteOffset:Ye},Qe=(e,t,n)=>{const r=\"then\"!==t;return r&&(e[t]=n),r},et=e=>{e.stopImmediatePropagation(),e.preventDefault()},[tt,nt]=Ne();let[rt,st]=tt(),ot=()=>st,at=()=>{},{Atomics:it,MessagePort:ct,SharedArrayBuffer:lt,postMessage:ut}=globalThis;if(Ge)nt(rt);else{lt=Ke;const e=new Map,t=(e,...t)=>{e.addEventListener(...t)};if(\"importScripts\"in globalThis){at=t=>{e.set(t,null)};const n=t=>{const n=t[0],r=p++;return e.set(n,r),[r,n,t]},r=ut;ut=function(e,t){if(u){const s={ID:e.ID,data:n(e.data)};r(s,t)}else st.then(()=>this.postMessage(e,t))},ct=class extends ct{postMessage(e,t){u?super.postMessage(n(e),t):st.then(()=>this.postMessage(e,t))}},t(globalThis,\"message\",e=>{et(e),nt(rt,e.data)},{once:!0});const{wait:s}=it,{parse:o}=JSON,a=t=>{const n=new XMLHttpRequest;return n.open(\"POST\",`${l}?sabayon`,!1),n.setRequestHeader(\"Content-Type\",\"application/json\"),n.send(`[\"${c}\",${e.get(t)}]`),n},i=(e,t)=>(e.set(o(t.responseText)),\"ok\");it={wait:(t,...n)=>e.has(t)?i(t,a(t)):s(t,...n)};let c,l,u=!1,p=Math.random();st=st.then(e=>{[c,l]=e,u=!0})}else{const n=[Xe,Math.random()].join(\"-\").replace(/\\W/g,\"-\"),r=new BroadcastChannel(\"dc78209b-186c-4f83-80e9-406becb7d9f3\");r.onmessage=async t=>{const[s,o,a]=t.data;if(o===n)for(const[t,[n,o]]of e)if(n===a){await o.promise;let e=t.length;for(;e--&&!t[e];);r.postMessage([s,t.slice(0,e+1)]);break}};const{notify:s}=it;it={notify(t,...n){const r=e.get(t);return r?(r[1].resolve(),0):s(t,...n)}};let o=\"\",a=null;const i=(e,n)=>{let r,s=!0;e.getRegistration(o).then(t=>t??e.register(o,n)).then(function n(a){const{controller:i}=e;if(s=s&&!!i,r=a.installing||a.waiting||a.active,\"activated\"===r.state){if(s){if(i.scriptURL===o)return nt(rt);a.unregister()}location.reload()}else t(r,\"statechange\",()=>n(a),{once:!0})})};ot=(e,t)=>(a||(o=new URL(e,location.href).href,i(navigator.serviceWorker,t),a=st),a)}}const{setPrototypeOf:pt}=Reflect;let{postMessage:dt}=globalThis;const ft=We(),ht=ct.prototype;addEventListener(\"message\",e=>{et(e);const[t,n,r]=e.data,[s]=e.ports;n&&(pt(s,ht),t&&(dt=ut)),ft.resolve([t,n,r,s])},{once:!0});var yt=async e=>{const[t,n,r,s]=await ot().then(()=>ft.promise),o=!!t,a=Ge||!!n,i=e?.transform,c=(e?.decoder||ce)(Ze),l=!1!==e?.transfer;let u,p,d;if(a){const t=new(n?lt:SharedArrayBuffer)(e?.minByteLength||32767,{maxByteLength:e?.maxByteLength||16777216});u=new Int32Array(t),n?(({wait:d}=it),at(u)):(({pause:p,wait:d}=Atomics),p&&!o&&(d=(e,t)=>{for(;e[t]<1;)p()}))}const[f,h]=Ne(String),y=new Map,m=Ve(null),g=new Proxy(m,{get(e,n){if(\"then\"===n)return;let r=y.get(n);return r||y.set(n,r=(...e)=>{const r=((e,t)=>{let n=qe;return e&&Je.has(t.at(-1)||qe)&&(n=t.pop(),Je.delete(n)),n})(l,e),p=[u,n,i?e.map(i):e];if(a){o?dt({ID:t,data:p},r):s.postMessage(p,r),d(u,0),u[0]=0;const e=u[1]?c(u[1],u.buffer):void 0;if(e instanceof Error)throw e;return e}{const[e,t]=f();return p[0]=e,s.postMessage(p,r),t}}),r},set:Qe});return s.addEventListener(\"message\",async({data:e})=>{\"string\"==typeof e[0]?h.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,m,i),s.postMessage(e))}),s.start(),{native:Ge,proxy:g,ffi_timeout:r,sync:a,transfer:ze}};const mt={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}},gt=new WeakMap,wt=e=>{const t=e||console,n={buffered:bt,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 gt.set(t,n),t}}},_t=new TextDecoder,bt=(e,t=10)=>{const n=[];return r=>{if(r instanceof Uint8Array)for(const s of r)s===t?e(_t.decode(new Uint8Array(n.splice(0)))):n.push(s);else e(r)}},At=(e,...t)=>mt[typeof e](e,...t),{isArray:Et}=Array,{assign:kt,create:vt,defineProperty:St,entries:xt}=Object,{all:$t,resolve:jt}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Bt=(e,t=location.href)=>new URL(e,t.replace(/^blob:/,\"\")).href;function Mt(e){return e.startsWith(\".\")?Bt(e,this):e}const Ft=(e,t,n,r=!1,s=CustomEvent)=>{e.dispatchEvent(new s(`${t}:${n}`,{bubbles:!0,detail:{worker:r}}))},Pt=e=>Function(`'use strict';return (${e})`)(),Rt=e=>e.replace(/^(?:\\n|\\r\\n)/,\"\"),Dt=Symbol.for(\"polyscript.js_modules\"),Tt=new Map;St(globalThis,Dt,{value:Tt}),new Proxy(Tt,{get:(e,t)=>e.get(t),has:(e,t)=>e.has(t),ownKeys:e=>[...e.keys()]});const Ot=(e,t)=>!t.startsWith(\"_\"),Lt=(e,t)=>new Proxy(e,{has:Ot,get:(e,n)=>e[t][n]}),Ct=(e,t)=>import(e).then(e=>{Tt.set(t,{...e})}),It=e=>new Promise((t,n)=>{document.querySelector(`link[rel=\"stylesheet\"][href=\"${e}\"]`)?t():document.head.append(kt(document.createElement(\"link\"),{rel:\"stylesheet\",href:e,onload:t,onerror:n}))}),Ht=e=>/\\.css$/i.test(new URL(e).pathname),Ut=(e,t)=>e.has(t),Wt=e=>[...e.keys()];var Nt=(e,t,n,r)=>{const s=globalThis[Dt];if(n)for(let[e,t]of xt(n)){let n=s.get(t);n&&!Et(n)||(s.set(t,n||(n=[])),n.push(e))}return((e,t,n,r)=>new Proxy(e,{has:Ut,ownKeys:Wt,get:(e,s)=>{let o=e.get(s);if(Et(o)){let a=o;o=null;for(let e of a)e=Bt(e,r),Ht(e)?n.importCSS(e):(n.importJS(e,s),o=t[Dt].get(s));e.set(s,o)}return o}}))(s,e,t,r)};const qt=new Map,Jt=e=>qt.get(e),zt=(e,t)=>{try{return Function(\"require\",t)(Jt)}catch(t){gt.get(e).stderr(t)}};var Kt={type:\"dummy\",module:()=>\"data:text/javascript,\",engine:e=>wt().get(e),registerJSModule(e,t,n){qt.set(t,n)},run:zt,runAsync:zt,runEvent:async(e,t,n)=>{try{await Function(\"require\",\"e\",`return ${t}(e)`)(Jt,n)}catch(t){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile(){}};const Gt=Object.getOwnPropertyDescriptors(Response.prototype),Vt=e=>\"function\"==typeof e,Xt={get:(e,t)=>Gt.hasOwnProperty(t)?((e,t,{get:n,value:r})=>n||!Vt(r)?e.then(e=>e[t]):(...n)=>e.then(e=>e[t](...n)))(e,t,Gt[t]):((e,t)=>Vt(t)?t.bind(e):t)(e,e[t])};var Yt=(e,...t)=>new Proxy(fetch(e,...t),Xt);const Zt=!globalThis.window,Qt=({FS:e,PATH:t,PATH_FS:n},r,s)=>{const o=n.resolve(r),a=t.dirname(o);return e.mkdirTree?e.mkdirTree(a):tn(e,a),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},en=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},tn=(e,t)=>{const n=[];for(const r of t.split(\"/\"))\".\"!==r&&\"..\"!==r&&(n.push(r),r&&e.mkdir(n.join(\"/\")))},nn=(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(/^\\/+/,\"/\")},rn=e=>{const t=e.map(e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\")).filter(e=>\"\"!==e&&\".\"!==e).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},sn=(e,t)=>Yt(Bt(e,t)).arrayBuffer(),on=(e,t,n,r)=>$t((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(Et(r))return r.map(n=>({url:rn([e,n]),path:rn([t,n])}));const s=n||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:rn([t,s])}]})})(n).map(({url:n,path:s})=>sn(n,r).then(n=>e.writeFile(t,s,n)))),an=(e,t)=>t.endsWith(\"/\")?`${t}${e.split(\"/\").pop()}`:t,cn=(e,t)=>e.replace(/\\{.+?\\}/g,e=>{if(!t.has(e))throw new SyntaxError(`Invalid template: ${e}`);return t.get(e)}),ln=(e,t,n,r)=>$t((e=>{const t=new Map,n=new Set,r=[];for(const[s,o]of xt(e))if(/^\\{.+\\}$/.test(s)){if(t.has(s))throw new SyntaxError(`Duplicated template: ${s}`);t.set(s,cn(o,t))}else{const e=cn(s,t),a=an(e,cn(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})=>sn(n,r).then(r=>e.writeFile(t,s,r,n)))),un=({main:e,worker:t},n)=>{const r=[];if(t&&Zt)for(let[e,s]of xt(t))e=Bt(e,n),r.push(Ct(e,s));if(e&&!Zt)for(let[t,s]of xt(e))t=Bt(t,n),Ht(t)?It(t):r.push(Ct(t,s));return $t(r)},pn=e=>t=>{dispatchEvent(new CustomEvent(`${e}:progress`,{detail:t}))},{isNaN:dn,isFinite:fn,isInteger:hn}=Number,{ownKeys:yn}=Reflect,{is:mn}=Object,gn=(e,t,n)=>{const r=n.get(e),s=!r;return s?(ee.setUint32(0,t.length,!0),n.set(e,[te[0],te[1],te[2],te[3]])):t.push(O,r[0],r[1],r[2],r[3]),s},wn=(e,t,n)=>{ee.setUint32(0,n,!0),e.push(t,te[0],te[1],te[2],te[3])},_n=(e,t,n)=>{switch(typeof e){case\"number\":e&&fn(e)?hn(e)&&e<256&&-1<e?t.push(g,e):(ee.setFloat64(0,e,!0),t.push(m,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7])):dn(e)?t.push(w):e?t.push(e<0?b:_):t.push(mn(e,0)?A:E);break;case\"object\":switch(!0){case null===e:t.push(y);break;case!gn(e,t,n):break;case q(e):{const r=e.length;wn(t,$,r);for(let s=0;s<r;s++)_n(e[s],t,n);break}case J(e):if(t.push(T),_n(Re(e),t,n),e=e.buffer,!gn(e,t,n))break;case e instanceof ArrayBuffer:{const n=new Uint8Array(e);wn(t,j,n.length),bn(t,n);break}case e instanceof Date:t.push(B),_n(e.getTime(),t,n);break;case e instanceof Map:wn(t,F,e.size);for(const[r,s]of e)_n(r,t,n),_n(s,t,n);break;case e instanceof Set:wn(t,D,e.size);for(const r of e)_n(r,t,n);break;case e instanceof Error:t.push(M),_n(e.name,t,n),_n(e.message,t,n),_n(e.stack,t,n);break;case e instanceof RegExp:t.push(R),_n(e.source,t,n),_n(e.flags,t,n);break;default:if(\"toJSON\"in e){const r=e.toJSON();_n(r===e?null:r,t,n)}else{const r=yn(e),s=r.length;wn(t,P,s);for(let o=0;o<s;o++){const s=r[o];_n(s,t,n),_n(e[s],t,n)}}}break;case\"string\":if(gn(e,t,n)){const n=C.encode(e);wn(t,S,n.length),bn(t,n)}break;case\"boolean\":t.push(e?f:d);break;case\"symbol\":t.push(x),_n(U(e),t,n);break;case\"bigint\":{let n=k;9223372036854775807n<e?(ee.setBigUint64(0,e,!0),n=v):ee.setBigInt64(0,e,!0),t.push(n,te[0],te[1],te[2],te[3],te[4],te[5],te[6],te[7]);break}default:t.push(h)}};let bn=Z;const An={parse:ie,stringify:e=>{const t=[];return bn=Z,_n(e,t,new Map),t}},En=new WeakMap,kn=async(e,t,n,r,s)=>{r.files&&(t(\"Loading files\"),await ln(e,n,r.files,s),t(\"Loaded files\")),r.fetch&&(t(\"Loading fetch\"),await on(e,n,r.fetch,s),t(\"Loaded fetch\")),r.js_modules&&(t(\"Loading JS modules\"),await un(r.js_modules,s),t(\"Loaded JS modules\"))},vn=(e,t,n)=>{\"polyscript\"===t&&(n.lazy_py_modules=async(...t)=>(await En.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=An),e.registerJsModule(t,n)},Sn=(e,t)=>{if(e.endsWith(\"/*\")){if(/\\.(zip|whl|tgz|tar(?:\\.gz)?)$/.test(t))return RegExp.$1;throw new Error(`Unsupported archive ${t}`)}return\"\"},xn=(e,t,...n)=>{try{return e.runPython(At(t),...n)}catch(t){gt.get(e).stderr(t)}},$n=async(e,t,...n)=>{try{return await e.runPythonAsync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},jn=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){gt.get(e).stderr(t)}};var Bn=(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 Mn=async e=>(await import(\"./toml-BK2RWy-G.js\")).parse(e);async function Fn(e,t){return new Promise((n,r)=>{e.syncfs(t,e=>{e?r(e):n()})})}function Pn(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 Rn(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):tn(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 Fn(t,!0),{syncfs:async()=>await Fn(t,!1)}}}const Rn=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},Dn=(e,t)=>{try{e.mkdir(t)}catch(e){}},Tn=pn(\"mpy\");var On={type:\"micropython\",module:(e=\"1.25.0\")=>`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}=wt({stderr:bt(console.error),stdout:bt(console.log)});n=n.replace(/\\.m?js$/,\".wasm\"),Tn(\"Loading MicroPython\");const i=await a(e({linebuffer:!1,stderr:s,stdout:o,url:n})),c=Ln.bind(this,i,r);return En.set(i,c),await kn(this,Tn,i,t,r),this.writeFile(i,\"./mip.py\",Bn),t.packages&&(Tn(\"Loading packages\"),await c(t.packages.map(Mt,r)),Tn(\"Loaded packages\")),Tn(\"Loaded MicroPython\"),i.mountNativeFS||(i.mountNativeFS=Pn(i._module)),i},registerJSModule:vn,run:xn,runAsync:$n,runEvent:jn,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=Sn(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-BKVoQflw.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)Dn(s,i);else{Dn(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 Qt(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 Qt(i,t,n)}};async function Ln(e,t,n){let r;for(const s of n)if(s.endsWith(\".whl\")){const n=Bt(s,t),r=await Yt(n).arrayBuffer();await this.writeFile(e,\"./*\",r,n)}else r||(r=e.pyimport(\"mip\")),r.install(s)}const Cn={dict_converter:Object.fromEntries},{stringify:In}=JSON,{apply:Hn}=Reflect,Un=Function.prototype,Wn=e=>function(...t){return Hn(e,this,t)};let Nn,qn;const Jn=e=>{const t=new WeakMap,n=n=>{for(let r,s=0;s<n.length;s++)switch(typeof(r=n[s])){case\"object\":if(null===r)break;case\"function\":if(Nn in r&&!r[Nn].shared?.gcRegistered){e=!1;let o=t.get(r)?.deref();if(!o){o=qn(r);const e=new WeakRef(o);t.set(r,e),t.set(o,e)}n[s]=o,e=!0}}};Object.defineProperties(Un,{apply:{value(t,r){return e&&n(r),Hn(this,t,r)}},call:{value(t,...r){return e&&n(r),Hn(this,t,r)}}})},zn=pn(\"py\"),Kn=new WeakMap;var Gn={type:\"pyodide\",module:(e=\"0.27.7\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e,version:t},n,r,s){zn(\"Loading Pyodide\");let{packages:o,index_urls:a}=n;o&&(o=o.map(Mt,s)),zn(\"Loading Storage\");const c=r.slice(0,r.lastIndexOf(\"/\")),l=new i(`${c}@${t}`),u={indexURL:c},p=\"never\"!==n.packages_cache;if(await l.sync(),p){if(o)if(\"passthrough\"===n.packages_cache)u.packages=o,o=null,l.clear();else{o=o.sort();const e=In(o);if(l.has(e)){const t=new Blob([l.get(e)],{type:\"application/json\"});u.lockFileURL=URL.createObjectURL(t),u.packages=o.map(e=>e.split(/[>=<]=/)[0]),o=null}}}else l.clear();zn(\"Loaded Storage\");const{stderr:d,stdout:f,get:h}=wt(),y=await h(e({stderr:d,stdout:f,...u}));n.debug&&y.setDebug(!0);const m=Xn.bind(y);return a&&Kn.set(y,a),En.set(y,m),await kn(this,zn,y,n,s),o&&await m(o,l,p),await l.close(),u.lockFileURL&&URL.revokeObjectURL(u.lockFileURL),zn(\"Loaded Pyodide\"),\"auto\"===n.experimental_create_proxy&&(y.runPython([\"import js\",\"from pyodide.ffi import to_js\",\"o=js.Object.fromEntries\",\"js.experimental_create_proxy=lambda r:to_js(r,dict_converter=o)\"].join(\";\"),{globals:y.toPy({})}),qn=globalThis.experimental_create_proxy,delete globalThis.experimental_create_proxy,[Nn]=Reflect.ownKeys(qn).filter(e=>\"symbol\"==typeof e&&\"Symbol(pyproxy.attrs)\"===String(e)),Jn(!0)),y},registerJSModule:vn,run:Wn(xn),runAsync:Wn($n),runEvent:Wn(jn),transform:(e,t)=>Hn(Vn,e,[t]),writeFile:(e,t,n,r)=>{const s=Sn(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 Qt({FS:o,PATH:a,PATH_FS:i},t,n)}};function Vn(e){const{ffi:{PyProxy:t}}=this;if(e&&\"object\"==typeof e){if(e instanceof t)return e.toJs(Cn);if(e instanceof Map)return new Map([...e.entries()]);if(Et(e))return e.map(Vn,this)}return e}async function Xn(e,t,n=!1){const{log:r}=console,s=(e,...t)=>{r(e,...t),console.log=r,zn(e),console.log=s};console.log=s,await this.loadPackage(\"micropip\");const o=this.pyimport(\"micropip\");if(Kn.has(this)&&o.set_index_urls(Kn.get(this)),await o.install(e,{keep_going:!0}),console.log=r,n&&t instanceof i){const n=o.freeze();t.set(In(e),n)}o.destroy()}const Yn=\"ruby-wasm-wasi\",Zn=Yn.replace(/\\W+/g,\"_\");var Qn={type:Yn,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 Yt(n).arrayBuffer(),o=await WebAssembly.compile(s),{vm:a}=await e(o);return t.files&&await ln(this,a,t.files,r),t.fetch&&await on(this,a,t.fetch,r),t.js_modules&&await un(t.js_modules,r),a},registerJSModule(e,t,n){t=t.replace(/\\W+/g,\"__\");const r=`__module_${Zn}_${t}`;globalThis[r]=n,this.run(e,`require \"js\";$${t}=JS.global[:${r}]`),delete globalThis[r]},run:(e,t,...n)=>e.eval(At(t),...n),runAsync:(e,t,...n)=>e.evalAsync(At(t),...n),async runEvent(e,t,n){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,r=`__module_${Zn}_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 ${Yn}`)}};var er={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}=wt(),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 ln(this,c,n.files,s),n.fetch&&await on(this,c,n.fetch,s),n.js_modules&&await un(n.js_modules,s),c},registerJSModule:(e,t,n)=>{e.global.set(t,n)},run:(e,t,...n)=>{try{return e.doStringSync(At(t),...n)}catch(t){gt.get(e).stderr(t)}},runAsync:async(e,t,...n)=>{try{return await e.doString(At(t),...n)}catch(t){gt.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){gt.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,n)=>((e,t,n)=>(tn(e,en(t)),t=nn(e,t),e.writeFile(t,new Uint8Array(n),{canOwn:!0})))(e,t,n)};const tr=new WeakMap,nr=new FinalizationRegistry(e=>e()),rr=async(e,t)=>{const{shelter:n,destroy:r,io:s}=tr.get(e),{output:o,result:a}=await n.captureR(At(t));for(const{type:e,data:t}of o)s[e](t);return nr.register(a,r),a};var sr={type:\"webr\",experimental:!0,module:(e=\"0.4.4\")=>`https://cdn.jsdelivr.net/npm/webr@${e}/dist/webr.mjs`,async engine(e,t,n,r){const{get:s}=wt(),o=new e.WebR;await s(o.init().then(()=>o));const a=await new o.Shelter;return tr.set(o,{module:e,shelter:a,destroy:a.destroy.bind(a),io:gt.get(o)}),t.files&&await ln(this,o,t.files,r),t.fetch&&await on(this,o,t.fetch,r),t.js_modules&&await un(t.js_modules,r),o},registerJSModule(e,t){console.warn(`Experimental interpreter: module ${t} is not supported (yet)`)},run:rr,runAsync:rr,async runEvent(e,t,n){await e.evalRVoid(`${t}(event)`,{env:{event:{type:[n.type]}}})},transform:(e,t)=>t,writeFile:()=>{}};const or=new Map,ar=new Map,ir=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[n,...r]=t.split(\"@\"),s=or.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=>(ar.set(t,e),s(r,e,n,o)))}}),cr=e=>{for(const t of[].concat(e.type))or.set(t,e)};for(const e of[Kt,On,Gn,Qn,er,sr])cr(e);const{parse:lr}=JSON,ur=(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,[Bt(e),n]})(e,t);return\"json\"===s?n=Yt(r).json():\"toml\"===s?n=Yt(r).text().then(Mn):\"string\"===s?n=pr(e):\"object\"===s&&e?n=e:\"txt\"===s&&\"string\"==typeof n&&(n=pr(n)),[n,e=r]},pr=e=>{try{return lr(e)}catch(t){return Mn(e)}},dr=\"BeforeRun\",fr=\"AfterRun\",hr=[`code${dr}`,`code${dr}Async`,`code${fr}`,`code${fr}Async`],yr=[\"onWorker\",\"onReady\",`on${dr}`,`on${dr}Async`,`on${fr}`,`on${fr}Async`];function mr(e,t){const{run:n,runAsync:r}=or.get(this.type);return{...e,run:n.bind(this,t),runAsync:r.bind(this,t)}}const gr=(e,t,n,r,s,o)=>{if(s||o){const a=mr.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 wr,_r,br;const Ar=(e,t)=>{addEventListener(e,t||(async t=>{try{await wr,_r(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{proxy:Er,sync:kr,native:vr,window:Sr,isWindowProxy:xr,ffi:$r}=await(async e=>{const t=await yt({...e,decoder:e?.decoder||ce}),n=He({...e,buffer:!0,reflect:t.proxy[l],timeout:t.ffi_timeout});return t.proxy[u]=n.reflect,{...t,window:n.global,isWindowProxy:n.isProxy,ffi:{assign:n.assign,direct:n.direct,evaluate:n.evaluate,gather:n.gather,query:n.query}}})({transfer:!1,transform:e=>br?br(e):e}),jr={polyfill:kr,sync:Er,window:vr||kr?Sr:null,isWindowProxy:xr,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};Ar(\"message\",({data:{options:e,config:t,configURL:n,code:r,hooks:s}})=>{wr=(async()=>{try{const{id:o,tag:c,type:l,custom:u,version:p,config:d,async:f}=e,h=((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(l,p),y=await((e,t,n,r={})=>(t&&([r,t]=ur(t,n,r)),jt(r).then(n=>ir[e](n,t))))(h,t,n,d),{js_modules:m}=ar.get(h),g=m?.main,w=vt(or.get(l)),_=((e,t,n,r)=>({type:t,config:n,interpreter:r,io:gt.get(r),run:(t,...n)=>e.run(r,t,...n),runAsync:(t,...n)=>e.runAsync(r,t,...n),runEvent:(...t)=>e.runEvent(r,...t)}))(w,u||l,d||{},y);let b=\"run\";if(f&&(b+=\"Async\"),s){let e,t,n=\"\",r=\"\";for(const e of hr){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,Rt(t),...o);return r&&s(e,r,...o),a}:async(e,t,...o)=>{n&&await s(e,n,...o);const a=await s(e,Rt(t),...o);return r&&await s(e,r,...o),a}})(w,b,n,r);for(const n of yr.slice(2)){const r=s[n];if(r){const s=n.endsWith(\"Async\");if(s&&f||!s&&!f){const s=Pt(r);n.startsWith(\"onBefore\")?e=s:t=s}}}gr(w,_,jr,f,e,t)}let A,E,k,v=null,S=\"\";(vr||kr)&&(({CustomEvent:A,document:E}=Sr),v=o&&E.getElementById(o)||null,k=e=>Ft(v,u||l,e,!0,A));const x=Nt(Sr,Er,g,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}`,Lt(r,e));t.registerJSModule(n,s,r)})(l,w,y,x),w.registerJSModule(y,\"polyscript\",{IDBMap:a,IDBMapSync:i,xworker:jr,currentScript:v,config:_.config,js_modules:x,ffi:$r,get target(){return!S&&v&&(\"SCRIPT\"===c?v.after(kt(Sr.document.createElement(`script-${u||l}`),{id:S=`${o}-target`})):(S=o,v.replaceChildren(),v.style.display=\"block\")),S}}),_r=w.runEvent.bind(w,y),br=w.transform.bind(w,y),v&&k(\"ready\"),s?.onReady&&Pt(s?.onReady).call(w,mr.call(w,_,y),jr),await w[b](y,r),[\"micropython\",\"pyodide\"].includes(w.type)){const e=\"polyscript\",t=`__${e}_workers__`,n=\"__export__\";y.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&&y.runPython([`from ${e} import xworker as ${t}`,...r.map(e=>`${t}.sync.${e} = ${e}`),`del ${t}`].join(\"\\n\"))}return v&&k(\"done\"),postMessage(\"polyscript:done\"),y}catch(e){postMessage(e)}})(),Ar(\"error\"),Ar(\"message\"),Ar(\"messageerror\"),(vr||kr)&&addEventListener(\"py:progress\",({type:e,detail:t})=>{Sr.dispatchEvent(new Sr.CustomEvent(e,{detail:t}))})});\n".replace(re,place)],{type:'text/javascript'})), ...args) | ||
/* c8 ignore stop */ |
{ | ||
"name": "polyscript", | ||
"version": "0.17.32", | ||
"version": "0.17.33", | ||
"description": "PyScript single core to rule them all", | ||
@@ -50,3 +50,3 @@ "main": "./esm/index.js", | ||
"@node-loader/import-maps": "^1.1.0", | ||
"@playwright/test": "^1.53.1", | ||
"@playwright/test": "^1.53.2", | ||
"@rollup/plugin-node-resolve": "^16.0.1", | ||
@@ -99,4 +99,4 @@ "@rollup/plugin-terser": "^0.4.4", | ||
"worker": { | ||
"blob": "sha256-0iNYLCULhuZ1/9hfRtU2P1sy8ROVPHtopwnp0+qn/a4=" | ||
"blob": "sha256-8QhxMuSDadSIcmEC3hl5kz2JvOET2oQF3G/GQQ3NWX4=" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
1241578
04428
-0.07%