personal_site/assets/blog/micropython/micropython.min.mjs
2024-07-29 10:49:20 +01:00

1 line
110 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var _scriptName,_createMicroPythonModule=(_scriptName=import.meta.url,async function(moduleArg={}){var moduleRtn,readyPromiseResolve,readyPromiseReject,Module=moduleArg,readyPromise=new Promise(((resolve,reject)=>{readyPromiseResolve=resolve,readyPromiseReject=reject}));["_free","_malloc","_mp_js_init","_mp_js_repl_init","_mp_js_repl_process_char","_mp_hal_get_interrupt_char","_mp_sched_keyboard_interrupt","_mp_js_do_exec","_mp_js_do_exec_async","_mp_js_do_import","_mp_js_register_js_module","_proxy_c_free_obj","_proxy_c_init","_proxy_c_to_js_call","_proxy_c_to_js_delete_attr","_proxy_c_to_js_dir","_proxy_c_to_js_get_array","_proxy_c_to_js_get_dict","_proxy_c_to_js_get_iter","_proxy_c_to_js_get_type","_proxy_c_to_js_has_attr","_proxy_c_to_js_iternext","_proxy_c_to_js_lookup_attr","_proxy_c_to_js_resume","_proxy_c_to_js_store_attr","_proxy_convert_mp_to_js_obj_cside","_memory","___indirect_function_table","_proxy_convert_mp_to_js_then_js_to_mp_obj_jsside","_proxy_convert_mp_to_js_then_js_to_js_then_js_to_mp_obj_jsside","_js_get_proxy_js_ref_info","_has_attr","_lookup_attr","_store_attr","_call0","_call1","_call2","_calln","_call0_kwarg","_call1_kwarg","_js_reflect_construct","_js_get_iter","_js_iter_next","_js_subscr_load","_js_subscr_store","_proxy_js_free_obj","_js_get_error_info","_js_then_resolve","_js_then_reject","_js_then_continue","_create_promise","onRuntimeInitialized"].forEach((prop=>{Object.getOwnPropertyDescriptor(readyPromise,prop)||Object.defineProperty(readyPromise,prop,{get:()=>abort("You are getting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>abort("You are setting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}));var ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url)}var readAsync,readBinary,moduleOverrides=Object.assign({},Module),quit_=(status,toThrow)=>{throw toThrow},scriptDirectory="";if(ENVIRONMENT_IS_NODE){if("undefined"==typeof process||!process.release||"node"!==process.release.name)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var nodeVersion=process.versions.node,numericVersion=nodeVersion.split(".").slice(0,3);if((numericVersion=1e4*numericVersion[0]+100*numericVersion[1]+1*numericVersion[2].split("-")[0])<16e4)throw new Error("This emscripten-generated code requires node v16.0.0 (detected v"+nodeVersion+")");var fs=require("fs"),nodePath=require("path");scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url)),readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return assert(ret.buffer),ret},readAsync=(filename,binary=!0)=>(filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename),new Promise(((resolve,reject)=>{fs.readFile(filename,binary?void 0:"utf8",((err,data)=>{err?reject(err):resolve(binary?data.buffer:data)}))}))),!Module.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),quit_=(status,toThrow)=>{throw process.exitCode=status,toThrow}}else if(ENVIRONMENT_IS_SHELL){if("object"==typeof process&&"function"==typeof require||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw new Error("environment detection error");if(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!=typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptName&&(scriptDirectory=_scriptName),scriptDirectory=scriptDirectory.startsWith("blob:")?"":scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),"object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");ENVIRONMENT_IS_WORKER&&(readBinary=url=>{var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=url=>isFileURI(url)?new Promise(((reject,resolve)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=()=>{(200==xhr.status||0==xhr.status&&xhr.response)&&resolve(xhr.response),reject(xhr.status)},xhr.onerror=reject,xhr.send(null)})):fetch(url,{credentials:"same-origin"}).then((response=>response.ok?response.arrayBuffer():Promise.reject(new Error(response.status+" : "+response.url))))}var prop,wasmBinary,wasmMemory,out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,prop="fetchSettings",Object.getOwnPropertyDescriptor(Module,prop)&&abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`),Module.arguments&&Module.arguments,legacyModuleProp("arguments","arguments_"),Module.thisProgram&&Module.thisProgram,legacyModuleProp("thisProgram","thisProgram"),Module.quit&&(quit_=Module.quit),legacyModuleProp("quit","quit_"),assert(void 0===Module.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),assert(void 0===Module.read,"Module.read option was removed"),assert(void 0===Module.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),assert(void 0===Module.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),assert(void 0===Module.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),assert(void 0===Module.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),legacyModuleProp("asm","wasmExports"),legacyModuleProp("readAsync","readAsync"),legacyModuleProp("readBinary","readBinary"),legacyModuleProp("setWindowTitle","setWindowTitle"),assert(!ENVIRONMENT_IS_SHELL,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable."),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),legacyModuleProp("wasmBinary","wasmBinary"),"object"!=typeof WebAssembly&&err("no native wasm support detected");var EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAP32,HEAPU32,HEAPF32,HEAPF64,ABORT=!1;function assert(condition,text){condition||abort("Assertion failed"+(text?": "+text:""))}function checkStackCookie(){if(!ABORT){var max=_emscripten_stack_get_end();0==max&&(max+=4);var cookie1=HEAPU32[max>>2],cookie2=HEAPU32[max+4>>2];34821223==cookie1&&2310721022==cookie2||abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`),1668509029!=HEAPU32[0]&&abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}}assert(!Module.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),assert("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),assert(!Module.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),assert(!Module.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var h16=new Int16Array(1),h8=new Int8Array(h16.buffer);if(h16[0]=25459,115!==h8[0]||99!==h8[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var __ATPRERUN__=[],__ATINIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;assert(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null,runDependencyTracking={};function getUniqueRunDependency(id){for(var orig=id;;){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++,Module.monitorRunDependencies?.(runDependencies),id?(assert(!runDependencyTracking[id]),runDependencyTracking[id]=1,null===runDependencyWatcher&&"undefined"!=typeof setInterval&&(runDependencyWatcher=setInterval((()=>{if(ABORT)return clearInterval(runDependencyWatcher),void(runDependencyWatcher=null);var shown=!1;for(var dep in runDependencyTracking)shown||(shown=!0,err("still waiting on run dependencies:")),err(`dependency: ${dep}`);shown&&err("(end of list)")}),1e4))):err("warning: run dependency added without ID")}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),id?(assert(runDependencyTracking[id]),delete runDependencyTracking[id]):err("warning: run dependency removed without ID"),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}function abort(what){Module.onAbort?.(what),err(what="Aborted("+what+")"),ABORT=!0,EXITSTATUS=1,what.indexOf("RuntimeError: unreachable")>=0&&(what+='. "unreachable" may be due to ASYNCIFY_STACK_SIZE not being large enough (try increasing it)');var e=new WebAssembly.RuntimeError(what);throw readyPromiseReject(e),e}var wasmBinaryFile,tempDouble,tempI64,isDataURI=filename=>filename.startsWith("data:application/octet-stream;base64,"),isFileURI=filename=>filename.startsWith("file://");function createExportWrapper(name,nargs){return(...args)=>{assert(runtimeInitialized,`native function \`${name}\` called before runtime initialization`);var f=wasmExports[name];return assert(f,`exported native function \`${name}\` not found`),assert(args.length<=nargs,`native function \`${name}\` called with ${args.length} args but expects ${nargs}`),f(...args)}}function findWasmBinary(){if(Module.locateFile){var f="micropython.wasm";return isDataURI(f)?f:(path=f,Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path)}var path;return new URL("micropython.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(file);throw"both async and sync fetching of the wasm failed"}function instantiateArrayBuffer(binaryFile,imports,receiver){return function(binaryFile){return wasmBinary?Promise.resolve().then((()=>getBinarySync(binaryFile))):readAsync(binaryFile).then((response=>new Uint8Array(response)),(()=>getBinarySync(binaryFile)))}(binaryFile).then((binary=>WebAssembly.instantiate(binary,imports))).then(receiver,(reason=>{err(`failed to asynchronously prepare wasm: ${reason}`),isFileURI(wasmBinaryFile)&&err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),abort(reason)}))}function legacyModuleProp(prop,newName,incoming=!0){Object.getOwnPropertyDescriptor(Module,prop)||Object.defineProperty(Module,prop,{configurable:!0,get(){abort(`\`Module.${prop}\` has been replaced by \`${newName}\``+(incoming?" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)":""))}})}function isExportedByForceFilesystem(name){return"FS_createPath"===name||"FS_createDataFile"===name||"FS_createPreloadedFile"===name||"FS_unlink"===name||"addRunDependency"===name||"FS_createLazyFile"===name||"FS_createDevice"===name||"removeRunDependency"===name}function missingGlobal(sym,msg){"undefined"!=typeof globalThis&&Object.defineProperty(globalThis,sym,{configurable:!0,get(){warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`)}})}function unexportedRuntimeSymbol(sym){Object.getOwnPropertyDescriptor(Module,sym)||Object.defineProperty(Module,sym,{configurable:!0,get(){var msg=`'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;isExportedByForceFilesystem(sym)&&(msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),abort(msg)}})}function ExitStatus(status){this.name="ExitStatus",this.message=`Program terminated with exit(${status})`,this.status=status}missingGlobal("buffer","Please use HEAP8.buffer or wasmMemory.buffer"),missingGlobal("asm","Please use wasmExports instead");var callRuntimeCallbacks=callbacks=>{for(;callbacks.length>0;)callbacks.shift()(Module)};function getValue(ptr,type="i8"){switch(type.endsWith("*")&&(type="*"),type){case"i1":case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module.noExitRuntime||!0,ptrToString=ptr=>(assert("number"==typeof ptr),"0x"+(ptr>>>=0).toString(16).padStart(8,"0")),stackRestore=val=>__emscripten_stack_restore(val),stackSave=()=>_emscripten_stack_get_current(),warnOnce=text=>{warnOnce.shown||={},warnOnce.shown[text]||(warnOnce.shown[text]=1,ENVIRONMENT_IS_NODE&&(text="warning: "+text),err(text))},PATH={isAbs:path=>"/"===path.charAt(0),splitPath:filename=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(filename).slice(1),normalizeArray:(parts,allowAboveRoot)=>{for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash="/"===path.substr(-1);return(path=PATH.normalizeArray(path.split("/").filter((p=>!!p)),!isAbsolute).join("/"))||isAbsolute||(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];return root||dir?(dir&&(dir=dir.substr(0,dir.length-1)),root+dir):"."},basename:path=>{if("/"===path)return"/";var lastSlash=(path=(path=PATH.normalize(path)).replace(/\/$/,"")).lastIndexOf("/");return-1===lastSlash?path:path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)},randomFill=view=>(randomFill=(()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return view=>crypto.getRandomValues(view);if(ENVIRONMENT_IS_NODE)try{var crypto_module=require("crypto");if(crypto_module.randomFillSync)return view=>crypto_module.randomFillSync(view);var randomBytes=crypto_module.randomBytes;return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")})())(view),PATH_FS={resolve:(...args)=>{for(var resolvedPath="",resolvedAbsolute=!1,i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if("string"!=typeof path)throw new TypeError("Arguments to path.resolve must be strings");if(!path)return"";resolvedPath=path+"/"+resolvedPath,resolvedAbsolute=PATH.isAbs(path)}return(resolvedAbsolute?"/":"")+(resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((p=>!!p)),!resolvedAbsolute).join("/"))||"."},relative:(from,to)=>{function trim(arr){for(var start=0;start<arr.length&&""===arr[start];start++);for(var end=arr.length-1;end>=0&&""===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=PATH_FS.resolve(from).substr(1),to=PATH_FS.resolve(to).substr(1);for(var fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}var outputParts=[];for(i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return(outputParts=outputParts.concat(toParts.slice(samePartsLength))).join("/")}},UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder:void 0,UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{for(var endIdx=idx+maxBytesToRead,endPtr=idx;heapOrArray[endPtr]&&!(endPtr>=endIdx);)++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder)return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr));for(var str="";idx<endPtr;){var u0=heapOrArray[idx++];if(128&u0){var u1=63&heapOrArray[idx++];if(192!=(224&u0)){var u2=63&heapOrArray[idx++];if(224==(240&u0)?u0=(15&u0)<<12|u1<<6|u2:(240!=(248&u0)&&warnOnce("Invalid UTF-8 leading byte "+ptrToString(u0)+" encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),u0=(7&u0)<<18|u1<<12|u2<<6|63&heapOrArray[idx++]),u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|1023&ch)}}else str+=String.fromCharCode((31&u0)<<6|u1)}else str+=String.fromCharCode(u0)}return str},FS_stdin_getChar_buffer=[],lengthBytesUTF8=str=>{for(var len=0,i=0;i<str.length;++i){var c=str.charCodeAt(i);c<=127?len++:c<=2047?len+=2:c>=55296&&c<=57343?(len+=4,++i):len+=3}return len},stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(assert("string"==typeof str,`stringToUTF8Array expects a string (got ${typeof str})`),!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343&&(u=65536+((1023&u)<<10)|1023&str.charCodeAt(++i)),u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|63&u}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|63&u}else{if(outIdx+3>=endIdx)break;u>1114111&&warnOnce("Invalid Unicode code point "+ptrToString(u)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|63&u}}return heap[outIdx]=0,outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1,u8array=new Array(len),numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);return dontAddNull&&(u8array.length=numBytesWritten),u8array}var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops},FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty)throw new FS.ErrnoError(43);stream.tty=tty,stream.seekable=!1},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char)throw new FS.ErrnoError(60);for(var bytesRead=0,i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.timestamp=Date.now()),bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char)throw new FS.ErrnoError(60);try{for(var i=0;i<length;i++)stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:tty=>(()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var buf=Buffer.alloc(256),bytesRead=0,fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,256)}catch(e){if(!e.toString().includes("EOF"))throw e;bytesRead=0}bytesRead>0&&(result=buf.slice(0,bytesRead).toString("utf-8"))}else"undefined"!=typeof window&&"function"==typeof window.prompt&&null!==(result=window.prompt("Input: "))&&(result+="\n");if(!result)return null;FS_stdin_getChar_buffer=intArrayFromString(result,!0)}return FS_stdin_getChar_buffer.shift()})(),put_char(tty,val){null===val||10===val?(out(UTF8ArrayToString(tty.output,0)),tty.output=[]):0!=val&&tty.output.push(val)},fsync(tty){tty.output&&tty.output.length>0&&(out(UTF8ArrayToString(tty.output,0)),tty.output=[])},ioctl_tcgets:tty=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(tty,optional_actions,data)=>0,ioctl_tiocgwinsz:tty=>[24,80]},default_tty1_ops:{put_char(tty,val){null===val||10===val?(err(UTF8ArrayToString(tty.output,0)),tty.output=[]):0!=val&&tty.output.push(val)},fsync(tty){tty.output&&tty.output.length>0&&(err(UTF8ArrayToString(tty.output,0)),tty.output=[])}}},mmapAlloc=size=>{abort("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},MEMFS={ops_table:null,mount:mount=>MEMFS.createNode(null,"/",16895,0),createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(63);MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);return FS.isDir(node.mode)?(node.node_ops=MEMFS.ops_table.dir.node,node.stream_ops=MEMFS.ops_table.dir.stream,node.contents={}):FS.isFile(node.mode)?(node.node_ops=MEMFS.ops_table.file.node,node.stream_ops=MEMFS.ops_table.file.stream,node.usedBytes=0,node.contents=null):FS.isLink(node.mode)?(node.node_ops=MEMFS.ops_table.link.node,node.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(node.mode)&&(node.node_ops=MEMFS.ops_table.chrdev.node,node.stream_ops=MEMFS.ops_table.chrdev.stream),node.timestamp=Date.now(),parent&&(parent.contents[name]=node,parent.timestamp=node.timestamp),node},getFileDataAsTypedArray:node=>node.contents?node.contents.subarray?node.contents.subarray(0,node.usedBytes):new Uint8Array(node.contents):new Uint8Array(0),expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(!(prevCapacity>=newCapacity)){newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<1048576?2:1.125)>>>0),0!=prevCapacity&&(newCapacity=Math.max(newCapacity,256));var oldContents=node.contents;node.contents=new Uint8Array(newCapacity),node.usedBytes>0&&node.contents.set(oldContents.subarray(0,node.usedBytes),0)}},resizeFileStorage(node,newSize){if(node.usedBytes!=newSize)if(0==newSize)node.contents=null,node.usedBytes=0;else{var oldContents=node.contents;node.contents=new Uint8Array(newSize),oldContents&&node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes))),node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};return attr.dev=FS.isChrdev(node.mode)?node.id:1,attr.ino=node.id,attr.mode=node.mode,attr.nlink=1,attr.uid=0,attr.gid=0,attr.rdev=node.rdev,FS.isDir(node.mode)?attr.size=4096:FS.isFile(node.mode)?attr.size=node.usedBytes:FS.isLink(node.mode)?attr.size=node.link.length:attr.size=0,attr.atime=new Date(node.timestamp),attr.mtime=new Date(node.timestamp),attr.ctime=new Date(node.timestamp),attr.blksize=4096,attr.blocks=Math.ceil(attr.size/attr.blksize),attr},setattr(node,attr){void 0!==attr.mode&&(node.mode=attr.mode),void 0!==attr.timestamp&&(node.timestamp=attr.timestamp),void 0!==attr.size&&MEMFS.resizeFileStorage(node,attr.size)},lookup(parent,name){throw FS.genericErrors[44]},mknod:(parent,name,mode,dev)=>MEMFS.createNode(parent,name,mode,dev),rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node)for(var i in new_node.contents)throw new FS.ErrnoError(55)}delete old_node.parent.contents[old_node.name],old_node.parent.timestamp=Date.now(),old_node.name=new_name,new_dir.contents[new_name]=old_node,new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name],parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents)throw new FS.ErrnoError(55);delete parent.contents[name],parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents))entries.push(key);return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,41471,0);return node.link=oldpath,node},readlink(node){if(!FS.isLink(node.mode))throw new FS.ErrnoError(28);return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(assert(size>=0),size>8&&contents.subarray)buffer.set(contents.subarray(position,position+size),offset);else for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];return size},write(stream,buffer,offset,length,position,canOwn){if(assert(!(buffer instanceof ArrayBuffer)),!length)return 0;var node=stream.node;if(node.timestamp=Date.now(),buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn)return assert(0===position,"canOwn must imply no weird position inside the file"),node.contents=buffer.subarray(offset,offset+length),node.usedBytes=length,length;if(0===node.usedBytes&&0===position)return node.contents=buffer.slice(offset,offset+length),node.usedBytes=length,length;if(position+length<=node.usedBytes)return node.contents.set(buffer.subarray(offset,offset+length),position),length}if(MEMFS.expandFileStorage(node,position+length),node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else for(var i=0;i<length;i++)node.contents[position+i]=buffer[offset+i];return node.usedBytes=Math.max(node.usedBytes,position+length),length},llseek(stream,offset,whence){var position=offset;if(1===whence?position+=stream.position:2===whence&&FS.isFile(stream.node.mode)&&(position+=stream.node.usedBytes),position<0)throw new FS.ErrnoError(28);return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length),stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);var ptr,allocated,contents=stream.node.contents;if(2&flags||contents.buffer!==HEAP8.buffer){if((position>0||position+length<contents.length)&&(contents=contents.subarray?contents.subarray(position,position+length):Array.prototype.slice.call(contents,position,position+length)),allocated=!0,!(ptr=mmapAlloc()))throw new FS.ErrnoError(48);HEAP8.set(contents,ptr)}else allocated=!1,ptr=contents.byteOffset;return{ptr:ptr,allocated:allocated}},msync:(stream,buffer,offset,length,mmapFlags)=>(MEMFS.stream_ops.write(stream,buffer,0,length,offset,!1),0)}},preloadPlugins=Module.preloadPlugins||[],FS_getMode=(canRead,canWrite)=>{var mode=0;return canRead&&(mode|=365),canWrite&&(mode|=146),mode},UTF8ToString=(ptr,maxBytesToRead)=>(assert("number"==typeof ptr,`UTF8ToString expects a number (got ${typeof ptr})`),ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""),ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class extends Error{constructor(errno){for(var key in super(runtimeInitialized?(errno=>UTF8ToString(_strerror(errno)))(errno):""),this.name="ErrnoError",this.errno=errno,ERRNO_CODES)if(ERRNO_CODES[key]===errno){this.code=key;break}}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return!!(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){parent||(parent=this),this.parent=parent,this.mount=parent.mount,this.mounted=null,this.id=FS.nextInode++,this.name=name,this.mode=mode,this.node_ops={},this.stream_ops={},this.rdev=rdev,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!(path=PATH_FS.resolve(path)))return{path:"",node:null};if((opts=Object.assign({follow_mount:!0,recurse_count:0},opts)).recurse_count>8)throw new FS.ErrnoError(32);for(var parts=path.split("/").filter((p=>!!p)),current=FS.root,current_path="/",i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent)break;if(current=FS.lookupNode(current,parts[i]),current_path=PATH.join2(current_path,parts[i]),FS.isMountpoint(current)&&(!islast||islast&&opts.follow_mount)&&(current=current.mounted.root),!islast||opts.follow)for(var count=0;FS.isLink(current.mode);){var link=FS.readlink(current_path);if(current_path=PATH_FS.resolve(PATH.dirname(current_path),link),current=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1}).node,count++>40)throw new FS.ErrnoError(32)}}return{path:current_path,node:current}},getPath(node){for(var path;;){if(FS.isRoot(node)){var mount=node.mount.mountpoint;return path?"/"!==mount[mount.length-1]?`${mount}/${path}`:mount+path:mount}path=path?`${node.name}/${path}`:node.name,node=node.parent}},hashName(parentid,name){for(var hash=0,i=0;i<name.length;i++)hash=(hash<<5)-hash+name.charCodeAt(i)|0;return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash],FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node)FS.nameTable[hash]=node.name_next;else for(var current=FS.nameTable[hash];current;){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode)throw new FS.ErrnoError(errCode);for(var hash=FS.hashName(parent.id,name),node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name)return node}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){assert("object"==typeof parent);var node=new FS.FSNode(parent,name,mode,rdev);return FS.hashAddNode(node),node},destroyNode(node){FS.hashRemoveNode(node)},isRoot:node=>node===node.parent,isMountpoint:node=>!!node.mounted,isFile:mode=>32768==(61440&mode),isDir:mode=>16384==(61440&mode),isLink:mode=>40960==(61440&mode),isChrdev:mode=>8192==(61440&mode),isBlkdev:mode=>24576==(61440&mode),isFIFO:mode=>4096==(61440&mode),isSocket:mode=>!(49152&~mode),flagsToPermissionString(flag){var perms=["r","w","rw"][3&flag];return 512&flag&&(perms+="w"),perms},nodePermissions:(node,perms)=>FS.ignorePermissions||(!perms.includes("r")||292&node.mode)&&(!perms.includes("w")||146&node.mode)&&(!perms.includes("x")||73&node.mode)?0:2,mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");return errCode||(dir.node_ops.lookup?0:2)},mayCreate(dir,name){try{return FS.lookupNode(dir,name),20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode)return errCode;if(isdir){if(!FS.isDir(node.mode))return 54;if(FS.isRoot(node)||FS.getPath(node)===FS.cwd())return 10}else if(FS.isDir(node.mode))return 31;return 0},mayOpen:(node,flags)=>node?FS.isLink(node.mode)?32:FS.isDir(node.mode)&&("r"!==FS.flagsToPermissionString(flags)||512&flags)?31:FS.nodePermissions(node,FS.flagsToPermissionString(flags)):44,MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++)if(!FS.streams[fd])return fd;throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>(assert(fd>=-1),stream=Object.assign(new FS.FSStream,stream),-1==fd&&(fd=FS.nextfd()),stream.fd=fd,FS.streams[fd]=stream,stream),closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);return stream.stream_ops?.dup?.(stream),stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops,stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>255&dev,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){for(var mounts=[],check=[mount];check.length;){var m=check.pop();mounts.push(m),check.push(...m.mounts)}return mounts},syncfs(populate,callback){"function"==typeof populate&&(callback=populate,populate=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var mounts=FS.getMounts(FS.root.mount),completed=0;function doCallback(errCode){return assert(FS.syncFSRequests>0),FS.syncFSRequests--,callback(errCode)}function done(errCode){if(errCode)return done.errored?void 0:(done.errored=!0,doCallback(errCode));++completed>=mounts.length&&doCallback(null)}mounts.forEach((mount=>{if(!mount.type.syncfs)return done(null);mount.type.syncfs(mount,populate,done)}))},mount(type,opts,mountpoint){if("string"==typeof type)throw type;var node,root="/"===mountpoint,pseudo=!mountpoint;if(root&&FS.root)throw new FS.ErrnoError(10);if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:!1});if(mountpoint=lookup.path,node=lookup.node,FS.isMountpoint(node))throw new FS.ErrnoError(10);if(!FS.isDir(node.mode))throw new FS.ErrnoError(54)}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]},mountRoot=type.mount(mount);return mountRoot.mount=mount,mount.root=mountRoot,root?FS.root=mountRoot:node&&(node.mounted=mount,node.mount&&node.mount.mounts.push(mount)),mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:!1});if(!FS.isMountpoint(lookup.node))throw new FS.ErrnoError(28);var node=lookup.node,mount=node.mounted,mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((hash=>{for(var current=FS.nameTable[hash];current;){var next=current.name_next;mounts.includes(current.mount)&&FS.destroyNode(current),current=next}})),node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(-1!==idx),node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>parent.node_ops.lookup(parent,name),mknod(path,mode,dev){var parent=FS.lookupPath(path,{parent:!0}).node,name=PATH.basename(path);if(!name||"."===name||".."===name)throw new FS.ErrnoError(28);var errCode=FS.mayCreate(parent,name);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.mknod)throw new FS.ErrnoError(63);return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>(mode=void 0!==mode?mode:438,mode&=4095,mode|=32768,FS.mknod(path,mode,0)),mkdir:(path,mode)=>(mode=void 0!==mode?mode:511,mode&=1023,mode|=16384,FS.mknod(path,mode,0)),mkdirTree(path,mode){for(var dirs=path.split("/"),d="",i=0;i<dirs.length;++i)if(dirs[i]){d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(20!=e.errno)throw e}}},mkdev:(path,mode,dev)=>(void 0===dev&&(dev=mode,mode=438),mode|=8192,FS.mknod(path,mode,dev)),symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath))throw new FS.ErrnoError(44);var parent=FS.lookupPath(newpath,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var newname=PATH.basename(newpath),errCode=FS.mayCreate(parent,newname);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.symlink)throw new FS.ErrnoError(63);return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dir,new_dir,old_dirname=PATH.dirname(old_path),new_dirname=PATH.dirname(new_path),old_name=PATH.basename(old_path),new_name=PATH.basename(new_path);if(old_dir=FS.lookupPath(old_path,{parent:!0}).node,new_dir=FS.lookupPath(new_path,{parent:!0}).node,!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount)throw new FS.ErrnoError(75);var new_node,old_node=FS.lookupNode(old_dir,old_name),relative=PATH_FS.relative(old_path,new_dirname);if("."!==relative.charAt(0))throw new FS.ErrnoError(28);if("."!==(relative=PATH_FS.relative(new_path,old_dirname)).charAt(0))throw new FS.ErrnoError(55);try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node!==new_node){var isdir=FS.isDir(old_node.mode),errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode)throw new FS.ErrnoError(errCode);if(errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name))throw new FS.ErrnoError(errCode);if(!old_dir.node_ops.rename)throw new FS.ErrnoError(63);if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node))throw new FS.ErrnoError(10);if(new_dir!==old_dir&&(errCode=FS.nodePermissions(old_dir,"w")))throw new FS.ErrnoError(errCode);FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name),old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}}},rmdir(path){var parent=FS.lookupPath(path,{parent:!0}).node,name=PATH.basename(path),node=FS.lookupNode(parent,name),errCode=FS.mayDelete(parent,name,!0);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.rmdir)throw new FS.ErrnoError(63);if(FS.isMountpoint(node))throw new FS.ErrnoError(10);parent.node_ops.rmdir(parent,name),FS.destroyNode(node)},readdir(path){var node=FS.lookupPath(path,{follow:!0}).node;if(!node.node_ops.readdir)throw new FS.ErrnoError(54);return node.node_ops.readdir(node)},unlink(path){var parent=FS.lookupPath(path,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var name=PATH.basename(path),node=FS.lookupNode(parent,name),errCode=FS.mayDelete(parent,name,!1);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.unlink)throw new FS.ErrnoError(63);if(FS.isMountpoint(node))throw new FS.ErrnoError(10);parent.node_ops.unlink(parent,name),FS.destroyNode(node)},readlink(path){var link=FS.lookupPath(path).node;if(!link)throw new FS.ErrnoError(44);if(!link.node_ops.readlink)throw new FS.ErrnoError(28);return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var node=FS.lookupPath(path,{follow:!dontFollow}).node;if(!node)throw new FS.ErrnoError(44);if(!node.node_ops.getattr)throw new FS.ErrnoError(63);return node.node_ops.getattr(node)},lstat:path=>FS.stat(path,!0),chmod(path,mode,dontFollow){var node;if(!(node="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);node.node_ops.setattr(node,{mode:4095&mode|-4096&node.mode,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,!0)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(!(node="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,!0)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0)throw new FS.ErrnoError(28);var node;if(!(node="string"==typeof path?FS.lookupPath(path,{follow:!0}).node:path).node_ops.setattr)throw new FS.ErrnoError(63);if(FS.isDir(node.mode))throw new FS.ErrnoError(31);if(!FS.isFile(node.mode))throw new FS.ErrnoError(28);var errCode=FS.nodePermissions(node,"w");if(errCode)throw new FS.ErrnoError(errCode);node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(!(2097155&stream.flags))throw new FS.ErrnoError(28);FS.truncate(stream.node,len)},utime(path,atime,mtime){var node=FS.lookupPath(path,{follow:!0}).node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(""===path)throw new FS.ErrnoError(44);var node;if(mode=64&(flags="string"==typeof flags?(str=>{var flags={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[str];if(void 0===flags)throw new Error(`Unknown file open mode: ${str}`);return flags})(flags):flags)?4095&(mode=void 0===mode?438:mode)|32768:0,"object"==typeof path)node=path;else{path=PATH.normalize(path);try{node=FS.lookupPath(path,{follow:!(131072&flags)}).node}catch(e){}}var created=!1;if(64&flags)if(node){if(128&flags)throw new FS.ErrnoError(20)}else node=FS.mknod(path,mode,0),created=!0;if(!node)throw new FS.ErrnoError(44);if(FS.isChrdev(node.mode)&&(flags&=-513),65536&flags&&!FS.isDir(node.mode))throw new FS.ErrnoError(54);if(!created){var errCode=FS.mayOpen(node,flags);if(errCode)throw new FS.ErrnoError(errCode)}512&flags&&!created&&FS.truncate(node,0),flags&=-131713;var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:!0,position:0,stream_ops:node.stream_ops,ungotten:[],error:!1});return stream.stream_ops.open&&stream.stream_ops.open(stream),!Module.logReadFiles||1&flags||(FS.readFiles||(FS.readFiles={}),path in FS.readFiles||(FS.readFiles[path]=1)),stream},close(stream){if(FS.isClosed(stream))throw new FS.ErrnoError(8);stream.getdents&&(stream.getdents=null);try{stream.stream_ops.close&&stream.stream_ops.close(stream)}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>null===stream.fd,llseek(stream,offset,whence){if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(!stream.seekable||!stream.stream_ops.llseek)throw new FS.ErrnoError(70);if(0!=whence&&1!=whence&&2!=whence)throw new FS.ErrnoError(28);return stream.position=stream.stream_ops.llseek(stream,offset,whence),stream.ungotten=[],stream.position},read(stream,buffer,offset,length,position){if(assert(offset>=0),length<0||position<0)throw new FS.ErrnoError(28);if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(1==(2097155&stream.flags))throw new FS.ErrnoError(8);if(FS.isDir(stream.node.mode))throw new FS.ErrnoError(31);if(!stream.stream_ops.read)throw new FS.ErrnoError(28);var seeking=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);return seeking||(stream.position+=bytesRead),bytesRead},write(stream,buffer,offset,length,position,canOwn){if(assert(offset>=0),length<0||position<0)throw new FS.ErrnoError(28);if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(!(2097155&stream.flags))throw new FS.ErrnoError(8);if(FS.isDir(stream.node.mode))throw new FS.ErrnoError(31);if(!stream.stream_ops.write)throw new FS.ErrnoError(28);stream.seekable&&1024&stream.flags&&FS.llseek(stream,0,2);var seeking=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);return seeking||(stream.position+=bytesWritten),bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(offset<0||length<=0)throw new FS.ErrnoError(28);if(!(2097155&stream.flags))throw new FS.ErrnoError(8);if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode))throw new FS.ErrnoError(43);if(!stream.stream_ops.allocate)throw new FS.ErrnoError(138);stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if(2&prot&&!(2&flags)&&2!=(2097155&stream.flags))throw new FS.ErrnoError(2);if(1==(2097155&stream.flags))throw new FS.ErrnoError(2);if(!stream.stream_ops.mmap)throw new FS.ErrnoError(43);return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>(assert(offset>=0),stream.stream_ops.msync?stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags):0),ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl)throw new FS.ErrnoError(59);return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){if(opts.flags=opts.flags||0,opts.encoding=opts.encoding||"binary","utf8"!==opts.encoding&&"binary"!==opts.encoding)throw new Error(`Invalid encoding type "${opts.encoding}"`);var ret,stream=FS.open(path,opts.flags),length=FS.stat(path).size,buf=new Uint8Array(length);return FS.read(stream,buf,0,length,0),"utf8"===opts.encoding?ret=UTF8ArrayToString(buf,0):"binary"===opts.encoding&&(ret=buf),FS.close(stream),ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if("string"==typeof data){var buf=new Uint8Array(lengthBytesUTF8(data)+1),actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,void 0,opts.canOwn)}else{if(!ArrayBuffer.isView(data))throw new Error("Unsupported data type");FS.write(stream,data,0,data.byteLength,void 0,opts.canOwn)}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:!0});if(null===lookup.node)throw new FS.ErrnoError(44);if(!FS.isDir(lookup.node.mode))throw new FS.ErrnoError(54);var errCode=FS.nodePermissions(lookup.node,"x");if(errCode)throw new FS.ErrnoError(errCode);FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp"),FS.mkdir("/home"),FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev"),FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length}),FS.mkdev("/dev/null",FS.makedev(1,3)),TTY.register(FS.makedev(5,0),TTY.default_tty_ops),TTY.register(FS.makedev(6,0),TTY.default_tty1_ops),FS.mkdev("/dev/tty",FS.makedev(5,0)),FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0,randomByte=()=>(0===randomLeft&&(randomLeft=randomFill(randomBuffer).byteLength),randomBuffer[--randomLeft]);FS.createDevice("/dev","random",randomByte),FS.createDevice("/dev","urandom",randomByte),FS.mkdir("/dev/shm"),FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd"),FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);return node.node_ops={lookup(parent,name){var fd=+name,stream=FS.getStreamChecked(fd),ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};return ret.parent=ret,ret}},node}},{},"/proc/self/fd")},createStandardStreams(){Module.stdin?FS.createDevice("/dev","stdin",Module.stdin):FS.symlink("/dev/tty","/dev/stdin"),Module.stdout?FS.createDevice("/dev","stdout",null,Module.stdout):FS.symlink("/dev/tty","/dev/stdout"),Module.stderr?FS.createDevice("/dev","stderr",null,Module.stderr):FS.symlink("/dev/tty1","/dev/stderr");var stdin=FS.open("/dev/stdin",0),stdout=FS.open("/dev/stdout",1),stderr=FS.open("/dev/stderr",1);assert(0===stdin.fd,`invalid handle for stdin (${stdin.fd})`),assert(1===stdout.fd,`invalid handle for stdout (${stdout.fd})`),assert(2===stderr.fd,`invalid handle for stderr (${stderr.fd})`)},staticInit(){[44].forEach((code=>{FS.genericErrors[code]=new FS.ErrnoError(code),FS.genericErrors[code].stack="<generic error, no stack>"})),FS.nameTable=new Array(4096),FS.mount(MEMFS,{},"/"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS:MEMFS}},init(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),FS.init.initialized=!0,Module.stdin=input||Module.stdin,Module.stdout=output||Module.stdout,Module.stderr=error||Module.stderr,FS.createStandardStreams()},quit(){FS.init.initialized=!1,_fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];stream&&FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);return ret.exists?ret.object:null},analyzePath(path,dontResolveLastLink){try{path=(lookup=FS.lookupPath(path,{follow:!dontResolveLastLink})).path}catch(e){}var ret={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:!0});ret.parentExists=!0,ret.parentPath=lookup.path,ret.parentObject=lookup.node,ret.name=PATH.basename(path),lookup=FS.lookupPath(path,{follow:!dontResolveLastLink}),ret.exists=!0,ret.path=lookup.path,ret.object=lookup.node,ret.name=lookup.node.name,ret.isRoot="/"===lookup.path}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent="string"==typeof parent?parent:FS.getPath(parent);for(var parts=path.split("/").reverse();parts.length;){var part=parts.pop();if(part){var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;parent&&(parent="string"==typeof parent?parent:FS.getPath(parent),path=name?PATH.join2(parent,name):parent);var mode=FS_getMode(canRead,canWrite),node=FS.create(path,mode);if(data){if("string"==typeof data){for(var arr=new Array(data.length),i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,146|mode);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn),FS.close(stream),FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),mode=FS_getMode(!!input,!!output);FS.createDevice.major||(FS.createDevice.major=64);var dev=FS.makedev(FS.createDevice.major++,0);return FS.registerDevice(dev,{open(stream){stream.seekable=!1},close(stream){output?.buffer?.length&&output(10)},read(stream,buffer,offset,length,pos){for(var bytesRead=0,i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.timestamp=Date.now()),bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++)try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.timestamp=Date.now()),i}}),FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");try{obj.contents=readBinary(obj.url),obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=!1,this.chunks=[]}get(idx){if(!(idx>this.length-1||idx<0)){var chunkOffset=idx%this.chunkSize,chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;if(xhr.open("HEAD",url,!1),xhr.send(null),!(xhr.status>=200&&xhr.status<300||304===xhr.status))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var header,datalength=Number(xhr.getResponseHeader("Content-length")),hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&"bytes"===header,usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&"gzip"===header,chunkSize=1048576;hasByteServing||(chunkSize=datalength);var lazyArray=this;lazyArray.setDataGetter((chunkNum=>{var start=chunkNum*chunkSize,end=(chunkNum+1)*chunkSize-1;if(end=Math.min(end,datalength-1),void 0===lazyArray.chunks[chunkNum]&&(lazyArray.chunks[chunkNum]=((from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;if(xhr.open("GET",url,!1),datalength!==chunkSize&&xhr.setRequestHeader("Range","bytes="+from+"-"+to),xhr.responseType="arraybuffer",xhr.overrideMimeType&&xhr.overrideMimeType("text/plain; charset=x-user-defined"),xhr.send(null),!(xhr.status>=200&&xhr.status<300||304===xhr.status))throw new Error("Couldn't load "+url+". Status: "+xhr.status);return void 0!==xhr.response?new Uint8Array(xhr.response||[]):intArrayFromString(xhr.responseText||"",!0)})(start,end)),void 0===lazyArray.chunks[chunkNum])throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]})),!usesGzip&&datalength||(chunkSize=datalength=1,datalength=this.getter(0).length,chunkSize=datalength,out("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=datalength,this._chunkSize=chunkSize,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if("undefined"!=typeof XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var properties={isDevice:!1,contents:new LazyUint8Array}}else properties={isDevice:!1,url:url};var node=FS.createFile(parent,name,properties,canRead,canWrite);properties.contents?node.contents=properties.contents:properties.url&&(node.contents=null,node.url=properties.url),Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(assert(size>=0),contents.slice)for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];else for(i=0;i<size;i++)buffer[offset+i]=contents.get(position+i);return size}return Object.keys(node.stream_ops).forEach((key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>(FS.forceLoadFile(node),fn(...args))})),stream_ops.read=(stream,buffer,offset,length,position)=>(FS.forceLoadFile(node),writeChunks(stream,buffer,offset,length,position)),stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc();if(!ptr)throw new FS.ErrnoError(48);return writeChunks(stream,HEAP8,ptr,length,position),{ptr:ptr,allocated:!0}},node.stream_ops=stream_ops,node},absolutePath(){abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){abort("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){abort("FS.createLink has been removed; use FS.symlink instead")},joinPath(){abort("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){abort("FS.standardizePath has been removed; use PATH.normalize instead")}},SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path))return path;var dir;if(dir=-100===dirfd?FS.cwd():SYSCALLS.getStreamFromFD(dirfd).path,0==path.length){if(!allowEmpty)throw new FS.ErrnoError(44);return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev,HEAP32[buf+4>>2]=stat.mode,HEAPU32[buf+8>>2]=stat.nlink,HEAP32[buf+12>>2]=stat.uid,HEAP32[buf+16>>2]=stat.gid,HEAP32[buf+20>>2]=stat.rdev,tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1],HEAP32[buf+32>>2]=4096,HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime(),mtime=stat.mtime.getTime(),ctime=stat.ctime.getTime();return tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1],HEAPU32[buf+48>>2]=atime%1e3*1e3,tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1],HEAPU32[buf+64>>2]=mtime%1e3*1e3,tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1],HEAPU32[buf+80>>2]=ctime%1e3*1e3,tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1],0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);if(2&flags)return 0;var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD:fd=>FS.getStreamChecked(fd),varargs:void 0,getStr:ptr=>UTF8ToString(ptr)},stringToUTF8=(str,outPtr,maxBytesToWrite)=>(assert("number"==typeof maxBytesToWrite,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)),handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return EXITSTATUS;checkStackCookie(),e instanceof WebAssembly.RuntimeError&&_emscripten_stack_get_current()<=0&&err("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 65536)"),quit_(1,e)},runtimeKeepaliveCounter=0,keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_exit=(status,implicit)=>{if(EXITSTATUS=status,function(){var oldOut=out,oldErr=err,has=!1;out=err=x=>{has=!0};try{_fflush(0),["stdout","stderr"].forEach((function(name){var info=FS.analyzePath("/dev/"+name);if(info){var rdev=info.object.rdev,tty=TTY.ttys[rdev];tty?.output?.length&&(has=!0)}}))}catch(e){}out=oldOut,err=oldErr,has&&warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.")}(),keepRuntimeAlive()&&!implicit){var msg=`program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;readyPromiseReject(msg),err(msg)}var code;EXITSTATUS=code=status,keepRuntimeAlive()||(Module.onExit?.(code),ABORT=!0),quit_(code,new ExitStatus(code))},callUserCallback=func=>{if(ABORT)err("user callback triggered after runtime exited or application aborted. Ignoring.");else try{func(),(()=>{if(!keepRuntimeAlive())try{_exit(EXITSTATUS)}catch(e){handleException(e)}})()}catch(e){handleException(e)}},_emscripten_scan_registers=func=>Asyncify.handleSleep((wakeUp=>{((func,timeout)=>{setTimeout((()=>{callUserCallback(func)}),timeout)})((()=>{var stackBegin=Asyncify.currData+12,stackEnd=HEAPU32[Asyncify.currData>>2];dynCall_vii(func,stackBegin,stackEnd),wakeUp()}),0)}));_emscripten_scan_registers.isAsync=!0;var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep((wakeUp=>{var mount=stream.node.mount;mount.type.syncfs?mount.type.syncfs(mount,!1,(err=>{wakeUp(err?29:0)})):wakeUp(0)}))}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}};_fd_sync.isAsync=!0;var runAndAbortIfError=func=>{try{return func()}catch(e){abort(e)}},Asyncify={instrumentWasmImports(imports){var importPattern=/^(invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports))if("function"==typeof original){let isAsyncifyImport=original.isAsync||importPattern.test(x);imports[x]=(...args)=>{var originalAsyncifyState=Asyncify.state;try{return original(...args)}finally{var changedToDisabled=originalAsyncifyState===Asyncify.State.Normal&&Asyncify.state===Asyncify.State.Disabled,ignoredInvoke=x.startsWith("invoke_")&&!0;if(Asyncify.state!==originalAsyncifyState&&!isAsyncifyImport&&!changedToDisabled&&!ignoredInvoke)throw new Error(`import ${x} was not in ASYNCIFY_IMPORTS, but changed the state`)}}}},instrumentWasmExports(exports){var ret={};for(let[x,original]of Object.entries(exports))ret[x]="function"==typeof original?(...args)=>{Asyncify.exportCallStack.push(x);try{return original(...args)}finally{ABORT||(assert(Asyncify.exportCallStack.pop()===x),Asyncify.maybeStopUnwind())}}:original;return ret},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId(funcName){var id=Asyncify.callStackNameToId[funcName];return void 0===id&&(id=Asyncify.callStackId++,Asyncify.callStackNameToId[funcName]=id,Asyncify.callStackIdToName[id]=funcName),id},maybeStopUnwind(){Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&0===Asyncify.exportCallStack.length&&(Asyncify.state=Asyncify.State.Normal,runAndAbortIfError(_asyncify_stop_unwind),"undefined"!=typeof Fibers&&Fibers.trampoline())},whenDone:()=>(assert(Asyncify.currData,"Tried to wait for an async operation when none is in progress."),assert(!Asyncify.asyncPromiseHandlers,"Cannot have multiple async operations in flight at once"),new Promise(((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}}))),allocateData(){var ptr=_malloc(12+Asyncify.StackSize);return Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize),Asyncify.setDataRewindFunc(ptr),ptr},setDataHeader(ptr,stack,stackSize){HEAPU32[ptr>>2]=stack,HEAPU32[ptr+4>>2]=stack+stackSize},setDataRewindFunc(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0],rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFuncName(ptr){var id=HEAP32[ptr+8>>2];return Asyncify.callStackIdToName[id]},getDataRewindFunc:name=>wasmExports[name],doRewind(ptr){var name=Asyncify.getDataRewindFuncName(ptr);return Asyncify.getDataRewindFunc(name)()},handleSleep(startAsync){if(assert(Asyncify.state!==Asyncify.State.Disabled,"Asyncify cannot be done during or after the runtime exits"),!ABORT){if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=!1,reachedAfterCallback=!1;startAsync(((handleSleepReturnValue=0)=>{if(assert(!handleSleepReturnValue||"number"==typeof handleSleepReturnValue||"boolean"==typeof handleSleepReturnValue),!ABORT&&(Asyncify.handleSleepReturnValue=handleSleepReturnValue,reachedCallback=!0,reachedAfterCallback)){assert(!Asyncify.exportCallStack.length,"Waking up (starting to rewind) must be done from JS, without compiled code on the stack."),Asyncify.state=Asyncify.State.Rewinding,runAndAbortIfError((()=>_asyncify_start_rewind(Asyncify.currData))),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.resume();var asyncWasmReturnValue,isError=!1;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err,isError=!0}var handled=!1;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;asyncPromiseHandlers&&(Asyncify.asyncPromiseHandlers=null,(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue),handled=!0)}if(isError&&!handled)throw asyncWasmReturnValue}})),reachedAfterCallback=!0,reachedCallback||(Asyncify.state=Asyncify.State.Unwinding,Asyncify.currData=Asyncify.allocateData(),"undefined"!=typeof Browser&&Browser.mainLoop.func&&Browser.mainLoop.pause(),runAndAbortIfError((()=>_asyncify_start_unwind(Asyncify.currData))))}else Asyncify.state===Asyncify.State.Rewinding?(Asyncify.state=Asyncify.State.Normal,runAndAbortIfError(_asyncify_stop_rewind),_free(Asyncify.currData),Asyncify.currData=null,Asyncify.sleepCallbacks.forEach(callUserCallback)):abort(`invalid state: ${Asyncify.state}`);return Asyncify.handleSleepReturnValue}},handleAsync:startAsync=>Asyncify.handleSleep((wakeUp=>{startAsync().then(wakeUp)}))},stackAlloc=sz=>__emscripten_stack_alloc(sz),ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;return null!=str&&0!==str&&(ret=(str=>{var size=lengthBytesUTF8(str)+1,ret=stackAlloc(size);return stringToUTF8(str,ret,size),ret})(str)),ret},array:arr=>{var array,buffer,ret=stackAlloc(arr.length);return buffer=ret,assert((array=arr).length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),HEAP8.set(array,buffer),ret}},func=(ident=>{var func=Module["_"+ident];return assert(func,"Cannot call unknown function "+ident+", make sure it is exported"),func})(ident),cArgs=[],stack=0;if(assert("array"!==returnType,'Return type should not be "array".'),args)for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];converter?(0===stack&&(stack=stackSave()),cArgs[i]=converter(args[i])):cArgs[i]=args[i]}var previousAsync=Asyncify.currData,ret=func(...cArgs);function onDone(ret){return assert(runtimeKeepaliveCounter>0),runtimeKeepaliveCounter-=1,0!==stack&&stackRestore(stack),function(ret){return"string"===returnType?UTF8ToString(ret):"boolean"===returnType?Boolean(ret):ret}(ret)}var asyncMode=opts?.async;return runtimeKeepaliveCounter+=1,Asyncify.currData!=previousAsync?(assert(!(previousAsync&&Asyncify.currData),"We cannot start an async operation when one is already flight"),assert(!(previousAsync&&!Asyncify.currData),"We cannot stop an async operation in flight"),assert(asyncMode,"The call to "+ident+" is running asynchronously. If this was intended, add the async option to the ccall/cwrap call."),Asyncify.whenDone().then(onDone)):(ret=onDone(ret),asyncMode?Promise.resolve(ret):ret)};FS.createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent,dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.(),dontCreateFile||((parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)})(parent,name,byteArray,canRead,canWrite,canOwn),onload?.(),removeRunDependency(dep)}((byteArray,fullname,finish,onerror)=>{"undefined"!=typeof Browser&&Browser.init();var handled=!1;return preloadPlugins.forEach((plugin=>{handled||plugin.canHandle(fullname)&&(plugin.handle(byteArray,fullname,finish,onerror),handled=!0)})),handled})(byteArray,fullname,finish,(()=>{onerror?.(),removeRunDependency(dep)}))||finish(byteArray)}addRunDependency(dep),"string"==typeof url?((url,onload,onerror,noRunDep)=>{var dep=noRunDep?"":getUniqueRunDependency(`al ${url}`);readAsync(url).then((arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`),onload(new Uint8Array(arrayBuffer)),dep&&removeRunDependency(dep)}),(err=>{if(!onerror)throw`Loading data file "${url}" failed.`;onerror()})),dep&&addRunDependency(dep)})(url,processData,onerror):processData(url)},FS.staticInit(),void 0===globalThis.crypto&&(globalThis.crypto=require("crypto"));var calledRun,MP_JS_EPOCH=Date.now(),wasmImports={__syscall_chdir:function(path){try{return path=SYSCALLS.getStr(path),FS.chdir(path),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_fstat64:function(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_getcwd:function(buf,size){try{if(0===size)return-28;var cwd=FS.cwd(),cwdLengthInBytes=lengthBytesUTF8(cwd)+1;return size<cwdLengthInBytes?-68:(stringToUTF8(cwd,buf,size),cwdLengthInBytes)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_getdents64:function(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);stream.getdents||=FS.readdir(stream.path);for(var pos=0,off=FS.llseek(stream,0,1),idx=Math.floor(off/280);idx<stream.getdents.length&&pos+280<=count;){var id,type,name=stream.getdents[idx];if("."===name)id=stream.node.id,type=4;else if(".."===name)id=FS.lookupPath(stream.path,{parent:!0}).node.id,type=4;else{var child=FS.lookupNode(stream.node,name);id=child.id,type=FS.isChrdev(child.mode)?2:FS.isDir(child.mode)?4:FS.isLink(child.mode)?10:8}assert(id),tempI64=[id>>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1],tempI64=[280*(idx+1)>>>0,(tempDouble=280*(idx+1),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1],HEAP16[dirp+pos+16>>1]=280,HEAP8[dirp+pos+18]=type,stringToUTF8(name,dirp+pos+19,256),pos+=280,idx+=1}return FS.llseek(stream,280*idx,0),pos}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_lstat64:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_mkdirat:function(dirfd,path,mode){try{return path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path),"/"===(path=PATH.normalize(path))[path.length-1]&&(path=path.substr(0,path.length-1)),FS.mkdir(path,mode,0),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_newfstatat:function(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=256&flags,allowEmpty=4096&flags;return assert(!(flags&=-6401),`unknown flags in __syscall_newfstatat: ${flags}`),path=SYSCALLS.calculateAt(dirfd,path,allowEmpty),SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_openat:function(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?function(){assert(null!=SYSCALLS.varargs);var ret=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,ret}():0;return FS.open(path,flags,mode).fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_poll:function(fds,nfds,timeout){try{for(var nonzero=0,i=0;i<nfds;i++){var pollfd=fds+8*i,fd=HEAP32[pollfd>>2],events=HEAP16[pollfd+4>>1],mask=32,stream=FS.getStream(fd);stream&&(mask=SYSCALLS.DEFAULT_POLLMASK,stream.stream_ops.poll&&(mask=stream.stream_ops.poll(stream,-1))),(mask&=24|events)&&nonzero++,HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_renameat:function(olddirfd,oldpath,newdirfd,newpath){try{return oldpath=SYSCALLS.getStr(oldpath),newpath=SYSCALLS.getStr(newpath),oldpath=SYSCALLS.calculateAt(olddirfd,oldpath),newpath=SYSCALLS.calculateAt(newdirfd,newpath),FS.rename(oldpath,newpath),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_rmdir:function(path){try{return path=SYSCALLS.getStr(path),FS.rmdir(path),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_stat64:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_statfs64:function(path,size,buf){try{return path=SYSCALLS.getStr(path),assert(64===size),HEAP32[buf+4>>2]=4096,HEAP32[buf+40>>2]=4096,HEAP32[buf+8>>2]=1e6,HEAP32[buf+12>>2]=5e5,HEAP32[buf+16>>2]=5e5,HEAP32[buf+20>>2]=FS.nextInode,HEAP32[buf+24>>2]=1e6,HEAP32[buf+28>>2]=42,HEAP32[buf+44>>2]=2,HEAP32[buf+36>>2]=255,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},__syscall_unlinkat:function(dirfd,path,flags){try{return path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path),0===flags?FS.unlink(path):512===flags?FS.rmdir(path):abort("Invalid flags passed to unlinkat"),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},_emscripten_memcpy_js:(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num),_emscripten_throw_longjmp:()=>{throw 1/0},call0:function(f_ref,out){proxy_convert_js_to_mp_obj_jsside((0,proxy_js_ref[f_ref])(),out)},call0_kwarg:function(f_ref,n_kw,key,value,out){const f=proxy_js_ref[f_ref],a={};for(let i=0;i<n_kw;++i){const k=UTF8ToString(getValue(key+4*i,"i32")),v=proxy_convert_mp_to_js_obj_jsside(value+3*i*4);a[k]=v}proxy_convert_js_to_mp_obj_jsside(f(a),out)},call1:function(f_ref,a0,out){const a0_js=proxy_convert_mp_to_js_obj_jsside(a0);proxy_convert_js_to_mp_obj_jsside((0,proxy_js_ref[f_ref])(a0_js),out)},call1_kwarg:function(f_ref,arg0,n_kw,key,value,out){const f=proxy_js_ref[f_ref],a0=proxy_convert_mp_to_js_obj_jsside(arg0),a={};for(let i=0;i<n_kw;++i){const k=UTF8ToString(getValue(key+4*i,"i32")),v=proxy_convert_mp_to_js_obj_jsside(value+3*i*4);a[k]=v}proxy_convert_js_to_mp_obj_jsside(f(a0,a),out)},call2:function(f_ref,a0,a1,out){const a0_js=proxy_convert_mp_to_js_obj_jsside(a0),a1_js=proxy_convert_mp_to_js_obj_jsside(a1);proxy_convert_js_to_mp_obj_jsside((0,proxy_js_ref[f_ref])(a0_js,a1_js),out)},calln:function(f_ref,n_args,value,out){const f=proxy_js_ref[f_ref],a=[];for(let i=0;i<n_args;++i){const v=proxy_convert_mp_to_js_obj_jsside(value+3*i*4);a.push(v)}proxy_convert_js_to_mp_obj_jsside(f(...a),out)},create_promise:function(out_set,out_promise){const out_set_js=proxy_convert_mp_to_js_obj_jsside(out_set);proxy_convert_js_to_mp_obj_jsside(new Promise(out_set_js),out_promise)},emscripten_resize_heap:requestedSize=>{HEAPU8.length,(requestedSize=>{abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`)})(requestedSize>>>=0)},emscripten_scan_registers:_emscripten_scan_registers,fd_close:function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return FS.close(stream),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},fd_read:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;if(ret+=curr,curr<len)break;void 0!==offset&&(offset+=curr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},fd_seek:function(fd,offset_low,offset_high,whence,newOffset){var lo,hi,offset=(hi=offset_high,assert((lo=offset_low)==lo>>>0||lo==(0|lo)),assert(hi===(0|hi)),hi+2097152>>>0<4194305-!!lo?(lo>>>0)+4294967296*hi:NaN);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);return FS.llseek(stream,offset,whence),tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1],stream.getdents&&0===offset&&0===whence&&(stream.getdents=null),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},fd_sync:_fd_sync,fd_write:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr,void 0!==offset&&(offset+=curr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},has_attr:function(jsref,str){const base=proxy_js_ref[jsref];return UTF8ToString(str)in base},invoke_i:function(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_ii:function(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iii:function(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iiii:function(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iiiii:function(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_iiiiii:function(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_v:function(index){var sp=stackSave();try{dynCall_v(index)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_vi:function(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_vii:function(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_viii:function(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},invoke_viiii:function(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){if(stackRestore(sp),e!==e+0)throw e;_setThrew(1,0)}},js_get_error_info:function(jsref,out_name,out_message){const error=proxy_js_ref[jsref];proxy_convert_js_to_mp_obj_jsside(error.name,out_name),proxy_convert_js_to_mp_obj_jsside(error.message,out_message)},js_get_iter:function(f_ref,out){proxy_convert_js_to_mp_obj_jsside(proxy_js_ref[f_ref][Symbol.iterator](),out)},js_get_proxy_js_ref_info:function(out){let used=0;for(const elem of proxy_js_ref)void 0!==elem&&++used;Module.setValue(out,proxy_js_ref.length,"i32"),Module.setValue(out+4,used,"i32")},js_iter_next:function(f_ref,out){const ret=proxy_js_ref[f_ref].next();return!ret.done&&(proxy_convert_js_to_mp_obj_jsside(ret.value,out),!0)},js_reflect_construct:function(f_ref,n_args,args,out){const f=proxy_js_ref[f_ref],as=[];for(let i=0;i<n_args;++i)as.push(proxy_convert_mp_to_js_obj_jsside(args+3*i*4));proxy_convert_js_to_mp_obj_jsside(Reflect.construct(f,as),out)},js_subscr_load:function(f_ref,index_ref,out){const target=proxy_js_ref[f_ref],index=function(target,index_in){let index=index_in;if("number"==typeof index&&(index<0&&(index+=target.length),index<0||index>=target.length))throw new PythonError("IndexError","index out of range");return index}(target,proxy_convert_mp_to_js_obj_jsside(index_ref));proxy_convert_js_to_mp_obj_jsside(target[index],out)},js_subscr_store:function(f_ref,idx,value){proxy_js_ref[f_ref][proxy_convert_mp_to_js_obj_jsside(idx)]=proxy_convert_mp_to_js_obj_jsside(value)},js_then_continue:function(jsref,py_resume,resolve,reject,out){const py_resume_js=proxy_convert_mp_to_js_obj_jsside(py_resume),resolve_js=proxy_convert_mp_to_js_obj_jsside(resolve),reject_js=proxy_convert_mp_to_js_obj_jsside(reject);proxy_convert_js_to_mp_obj_jsside(proxy_js_ref[jsref].then((result=>{py_resume_js(result,null,resolve_js,reject_js)}),(reason=>{py_resume_js(null,reason,resolve_js,reject_js)})),out)},js_then_reject:function(ret_value,reject){let ret_value_js;try{ret_value_js=proxy_convert_mp_to_js_obj_jsside(ret_value)}catch(error){ret_value_js=error}proxy_convert_mp_to_js_obj_jsside(reject)(ret_value_js)},js_then_resolve:function(ret_value,resolve){const ret_value_js=proxy_convert_mp_to_js_obj_jsside(ret_value);proxy_convert_mp_to_js_obj_jsside(resolve)(ret_value_js)},lookup_attr:function(jsref,str,out){const base=proxy_js_ref[jsref],attr=UTF8ToString(str);let value=base[attr];return(void 0!==value||attr in base)&&("function"==typeof value&&base!==globalThis&&("_ref"in value||(value=value.bind(base))),proxy_convert_js_to_mp_obj_jsside(value,out),!0)},mp_js_hook:()=>{if(ENVIRONMENT_IS_NODE){const mp_interrupt_char=Module.ccall("mp_hal_get_interrupt_char","number",["number"],["null"]),fs=require("fs"),buf=Buffer.alloc(1);try{fs.readSync(process.stdin.fd,buf,0,1)>0&&(buf[0]===mp_interrupt_char?Module.ccall("mp_sched_keyboard_interrupt","null",["null"],["null"]):process.stdout.write(String.fromCharCode(buf[0])))}catch(e){if("EAGAIN"!==e.code)throw e}}},mp_js_random_u32:()=>globalThis.crypto.getRandomValues(new Uint32Array(1))[0],mp_js_ticks_ms:()=>Date.now()-MP_JS_EPOCH,mp_js_time_ms:()=>Date.now(),proxy_convert_mp_to_js_then_js_to_js_then_js_to_mp_obj_jsside:function(out){const ret=proxy_convert_mp_to_js_obj_jsside(out);proxy_convert_js_to_mp_obj_jsside(PyProxy.toJs(ret),out)},proxy_convert_mp_to_js_then_js_to_mp_obj_jsside:function(out){proxy_convert_js_to_mp_obj_jsside_force_double_proxy(proxy_convert_mp_to_js_obj_jsside(out),out)},proxy_js_free_obj:function(js_ref){js_ref>=PROXY_JS_REF_NUM_STATIC&&(proxy_js_ref[js_ref]=void 0,js_ref<proxy_js_ref_next&&(proxy_js_ref_next=js_ref))},store_attr:function(jsref,attr_ptr,value_ref){const attr=UTF8ToString(attr_ptr),value=proxy_convert_mp_to_js_obj_jsside(value_ref);proxy_js_ref[jsref][attr]=value}},wasmExports=function(){var info=(Asyncify.instrumentWasmImports(wasmImports),{env:wasmImports,wasi_snapshot_preview1:wasmImports});function receiveInstance(instance,module){var b,cb;return wasmExports=instance.exports,wasmExports=Asyncify.instrumentWasmExports(wasmExports),assert(wasmMemory=wasmExports.memory,"memory not found in wasm exports"),b=wasmMemory.buffer,Module.HEAP8=HEAP8=new Int8Array(b),Module.HEAP16=HEAP16=new Int16Array(b),Module.HEAPU8=HEAPU8=new Uint8Array(b),Module.HEAPU16=new Uint16Array(b),Module.HEAP32=HEAP32=new Int32Array(b),Module.HEAPU32=HEAPU32=new Uint32Array(b),Module.HEAPF32=HEAPF32=new Float32Array(b),Module.HEAPF64=HEAPF64=new Float64Array(b),assert(wasmExports.__indirect_function_table,"table not found in wasm exports"),cb=wasmExports.__wasm_call_ctors,__ATINIT__.unshift(cb),removeRunDependency("wasm-instantiate"),wasmExports}addRunDependency("wasm-instantiate");var binary,binaryFile,imports,callback,trueModule=Module;if(Module.instantiateWasm)try{return Module.instantiateWasm(info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`),readyPromiseReject(e)}return wasmBinaryFile||(wasmBinaryFile=findWasmBinary()),(binary=wasmBinary,binaryFile=wasmBinaryFile,imports=info,callback=function(result){assert(Module===trueModule,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),trueModule=null,receiveInstance(result.instance)},binary||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(binaryFile)||isFileURI(binaryFile)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(binaryFile,imports,callback):fetch(binaryFile,{credentials:"same-origin"}).then((response=>WebAssembly.instantiateStreaming(response,imports).then(callback,(function(reason){return err(`wasm streaming compile failed: ${reason}`),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(binaryFile,imports,callback)}))))).catch(readyPromiseReject),{}}(),_malloc=(createExportWrapper("__wasm_call_ctors",0),Module._mp_sched_keyboard_interrupt=createExportWrapper("mp_sched_keyboard_interrupt",0),Module._mp_js_init=createExportWrapper("mp_js_init",2),Module._malloc=createExportWrapper("malloc",1)),_free=(Module._mp_js_register_js_module=createExportWrapper("mp_js_register_js_module",2),Module._mp_js_do_import=createExportWrapper("mp_js_do_import",2),Module._proxy_convert_mp_to_js_obj_cside=createExportWrapper("proxy_convert_mp_to_js_obj_cside",2),Module._mp_js_do_exec=createExportWrapper("mp_js_do_exec",3),Module._mp_js_do_exec_async=createExportWrapper("mp_js_do_exec_async",3),Module._mp_js_repl_init=createExportWrapper("mp_js_repl_init",0),Module._mp_js_repl_process_char=createExportWrapper("mp_js_repl_process_char",1),Module._mp_hal_get_interrupt_char=createExportWrapper("mp_hal_get_interrupt_char",0),Module._proxy_c_init=createExportWrapper("proxy_c_init",0),Module._proxy_c_free_obj=createExportWrapper("proxy_c_free_obj",1),Module._free=createExportWrapper("free",1)),_emscripten_stack_get_current=(Module._proxy_c_to_js_call=createExportWrapper("proxy_c_to_js_call",4),Module._proxy_c_to_js_dir=createExportWrapper("proxy_c_to_js_dir",2),Module._proxy_c_to_js_has_attr=createExportWrapper("proxy_c_to_js_has_attr",2),Module._proxy_c_to_js_lookup_attr=createExportWrapper("proxy_c_to_js_lookup_attr",3),Module._proxy_c_to_js_store_attr=createExportWrapper("proxy_c_to_js_store_attr",3),Module._proxy_c_to_js_delete_attr=createExportWrapper("proxy_c_to_js_delete_attr",2),Module._proxy_c_to_js_get_type=createExportWrapper("proxy_c_to_js_get_type",1),Module._proxy_c_to_js_get_array=createExportWrapper("proxy_c_to_js_get_array",2),Module._proxy_c_to_js_get_dict=createExportWrapper("proxy_c_to_js_get_dict",2),Module._proxy_c_to_js_get_iter=createExportWrapper("proxy_c_to_js_get_iter",1),Module._proxy_c_to_js_iternext=createExportWrapper("proxy_c_to_js_iternext",2),Module._proxy_c_to_js_resume=createExportWrapper("proxy_c_to_js_resume",2),()=>(_emscripten_stack_get_current=wasmExports.emscripten_stack_get_current)()),_fflush=createExportWrapper("fflush",1),_strerror=createExportWrapper("strerror",1),_setThrew=createExportWrapper("setThrew",2),_emscripten_stack_init=()=>(_emscripten_stack_init=wasmExports.emscripten_stack_init)(),_emscripten_stack_get_end=()=>(_emscripten_stack_get_end=wasmExports.emscripten_stack_get_end)(),__emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports._emscripten_stack_restore)(a0),__emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports._emscripten_stack_alloc)(a0),dynCall_viii=Module.dynCall_viii=createExportWrapper("dynCall_viii",4),dynCall_vi=Module.dynCall_vi=createExportWrapper("dynCall_vi",2),dynCall_ii=Module.dynCall_ii=createExportWrapper("dynCall_ii",2),dynCall_vii=Module.dynCall_vii=createExportWrapper("dynCall_vii",3),dynCall_iii=Module.dynCall_iii=createExportWrapper("dynCall_iii",3),dynCall_viiii=Module.dynCall_viiii=createExportWrapper("dynCall_viiii",5),dynCall_iiii=Module.dynCall_iiii=createExportWrapper("dynCall_iiii",4),dynCall_iiiii=Module.dynCall_iiiii=createExportWrapper("dynCall_iiiii",5),dynCall_v=Module.dynCall_v=createExportWrapper("dynCall_v",1),dynCall_i=Module.dynCall_i=createExportWrapper("dynCall_i",1),dynCall_iiiiii=(Module.dynCall_dd=createExportWrapper("dynCall_dd",2),Module.dynCall_ddd=createExportWrapper("dynCall_ddd",3),Module.dynCall_viiiiii=createExportWrapper("dynCall_viiiiii",7),Module.dynCall_iiiiii=createExportWrapper("dynCall_iiiiii",6)),_asyncify_start_unwind=(Module.dynCall_iidiiii=createExportWrapper("dynCall_iidiiii",7),createExportWrapper("asyncify_start_unwind",1)),_asyncify_stop_unwind=createExportWrapper("asyncify_stop_unwind",0),_asyncify_start_rewind=createExportWrapper("asyncify_start_rewind",1),_asyncify_stop_rewind=createExportWrapper("asyncify_stop_rewind",0);function stackCheckInit(){var max;_emscripten_stack_init(),assert(!(3&(max=_emscripten_stack_get_end()))),0==max&&(max+=4),HEAPU32[max>>2]=34821223,HEAPU32[max+4>>2]=2310721022,HEAPU32[0]=1668509029}function run(){function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(assert(!runtimeInitialized),runtimeInitialized=!0,checkStackCookie(),Module.noFSInit||FS.init.initialized||FS.init(),FS.ignorePermissions=!1,TTY.init(),callRuntimeCallbacks(__ATINIT__),readyPromiseResolve(Module),Module.onRuntimeInitialized?.(),assert(!Module._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(checkStackCookie(),Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)cb=Module.postRun.shift(),__ATPOSTRUN__.unshift(cb);var cb;callRuntimeCallbacks(__ATPOSTRUN__)}()))}runDependencies>0||(stackCheckInit(),function(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)cb=Module.preRun.shift(),__ATPRERUN__.unshift(cb);var cb;callRuntimeCallbacks(__ATPRERUN__)}(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),doRun()}),1)):doRun(),checkStackCookie()))}if(Module.ccall=ccall,Module.cwrap=(ident,returnType,argTypes,opts)=>(...args)=>ccall(ident,returnType,argTypes,args,opts),Module.setValue=function(ptr,value,type="i8"){switch(type.endsWith("*")&&(type="*"),type){case"i1":case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}},Module.getValue=getValue,Module.PATH=PATH,Module.PATH_FS=PATH_FS,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.FS=FS,["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertU32PairToI53","getTempRet0","setTempRet0","growMemory","isLeapYear","ydayFromDate","arraySum","addDays","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","emscriptenLog","readEmAsmArgs","jstoi_q","getExecutableName","listenOnce","autoResumeAudioContext","dynCallLegacy","getDynCaller","dynCall","asmjsMangle","HandleAllocator","getNativeTypeSize","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","uleb128Encode","generateFuncType","convertJsFunctionToWasm","getEmptyTableSlot","updateTableMap","getFunctionAddress","addFunction","removeFunction","reallyNegative","unSign","strLen","reSign","formatString","intArrayToString","AsciiToString","stringToAscii","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","stringToNewUTF8","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","battery","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","getEnvStrings","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","createDyncallWrapper","setImmediateWrapped","clearImmediateWrapped","polyfillSetImmediate","getPromise","makePromise","idsToPromises","makePromiseCallback","ExceptionInfo","findMatchingCatch","Browser_asyncPrepareDataCounter","setMainLoop","getSocketFromFD","getSocketAddress","FS_unlink","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","setErrNo","demangle","stackTrace"].forEach((function(sym){"undefined"==typeof globalThis||Object.getOwnPropertyDescriptor(globalThis,sym)||Object.defineProperty(globalThis,sym,{configurable:!0,get(){var msg=`\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`,librarySymbol=sym;librarySymbol.startsWith("_")||(librarySymbol="$"+sym),msg+=` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`,isExportedByForceFilesystem(sym)&&(msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),warnOnce(msg)}}),unexportedRuntimeSymbol(sym)})),["run","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","addRunDependency","removeRunDependency","out","err","callMain","abort","wasmMemory","wasmExports","writeStackCookie","checkStackCookie","convertI32PairToI53Checked","stackSave","stackRestore","stackAlloc","ptrToString","zeroMemory","exitJS","getHeapMax","abortOnCannotGrowMemory","ENV","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","ERRNO_CODES","strError","DNS","Protocols","Sockets","initRandomFill","randomFill","timers","warnOnce","readEmAsmArgsArray","jstoi_s","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asyncLoad","alignMemory","mmapAlloc","wasmTable","noExitRuntime","getCFunc","sigToWasmTypes","freeTableIndexes","functionsInTableMap","UTF8Decoder","UTF8ArrayToString","stringToUTF8Array","intArrayFromString","UTF16Decoder","stringToUTF8OnStack","writeArrayToMemory","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","doReadv","doWritev","safeSetTimeout","promiseMap","uncaughtExceptionCount","exceptionLast","exceptionCaught","Browser","getPreloadedImageData__data","wget","SYSCALLS","preloadPlugins","FS_createPreloadedFile","FS_modeStringToFlags","FS_getMode","FS_stdin_getChar_buffer","FS_stdin_getChar","FS_createPath","FS_createDevice","FS_readFile","FS_createDataFile","FS_createLazyFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","runAndAbortIfError","Asyncify","Fibers","SDL","SDL_gfx","allocateUTF8","allocateUTF8OnStack","print","printErr"].forEach(unexportedRuntimeSymbol),dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)},Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();run(),moduleRtn=readyPromise;for(const prop of Object.keys(Module))prop in moduleArg||Object.defineProperty(moduleArg,prop,{configurable:!0,get(){abort(`Access to module property ('${prop}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return moduleRtn});export default _createMicroPythonModule;export async function loadMicroPython(options){const{pystack:pystack,heapsize:heapsize,url:url,stdin:stdin,stdout:stdout,stderr:stderr,linebuffer:linebuffer}=Object.assign({pystack:2048,heapsize:1048576,linebuffer:!0},options);let Module={locateFile:(path,scriptDirectory)=>url||scriptDirectory+path};Module._textDecoder=new TextDecoder,void 0!==stdin&&(Module.stdin=stdin),void 0!==stdout&&(linebuffer?(Module._stdoutBuffer=[],Module.stdout=c=>{10===c?(stdout(Module._textDecoder.decode(new Uint8Array(Module._stdoutBuffer))),Module._stdoutBuffer=[]):Module._stdoutBuffer.push(c)}):Module.stdout=c=>stdout(new Uint8Array([c]))),void 0!==stderr&&(linebuffer?(Module._stderrBuffer=[],Module.stderr=c=>{10===c?(stderr(Module._textDecoder.decode(new Uint8Array(Module._stderrBuffer))),Module._stderrBuffer=[]):Module._stderrBuffer.push(c)}):Module.stderr=c=>stderr(new Uint8Array([c]))),Module=await _createMicroPythonModule(Module),globalThis.Module=Module,proxy_js_init();const pyimport=name=>{const value=Module._malloc(12);return Module.ccall("mp_js_do_import","null",["string","pointer"],[name,value]),proxy_convert_mp_to_js_obj_jsside_with_free(value)};return Module.ccall("mp_js_init","null",["number","number"],[pystack,heapsize]),Module.ccall("proxy_c_init","null",[],[]),{_module:Module,PyProxy:PyProxy,FS:Module.FS,globals:{__dict__:pyimport("__main__").__dict__,get(key){return this.__dict__[key]},set(key,value){this.__dict__[key]=value},delete(key){delete this.__dict__[key]}},registerJsModule(name,module){const value=Module._malloc(12);proxy_convert_js_to_mp_obj_jsside(module,value),Module.ccall("mp_js_register_js_module","null",["string","pointer"],[name,value]),Module._free(value)},pyimport:pyimport,runPython(code){const len=Module.lengthBytesUTF8(code),buf=Module._malloc(len+1);Module.stringToUTF8(code,buf,len+1);const value=Module._malloc(12);return Module.ccall("mp_js_do_exec","number",["pointer","number","pointer"],[buf,len,value]),Module._free(buf),proxy_convert_mp_to_js_obj_jsside_with_free(value)},async runPythonAsync(code){const len=Module.lengthBytesUTF8(code),buf=Module._malloc(len+1);Module.stringToUTF8(code,buf,len+1);const value=Module._malloc(12);Module.ccall("mp_js_do_exec_async","number",["pointer","number","pointer"],[buf,len,value],{async:!0}),Module._free(buf);const ret=proxy_convert_mp_to_js_obj_jsside_with_free(value);return ret instanceof PyProxyThenable?Promise.resolve(ret):ret},replInit(){Module.ccall("mp_js_repl_init","null",["null"])},replProcessChar:chr=>Module.ccall("mp_js_repl_process_char","number",["number"],[chr]),replProcessCharWithAsyncify:async chr=>Module.ccall("mp_js_repl_process_char","number",["number"],[chr],{async:!0})}}if(globalThis.loadMicroPython=loadMicroPython,"object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&process.argv.length>1){const path=await import("path"),url=await import("url"),pathToThisFile=path.resolve(url.fileURLToPath(import.meta.url)),pathPassedToNode=path.resolve(process.argv[1]);pathToThisFile.includes(pathPassedToNode)&&async function(){const fs=await import("fs");let heap_size=131072,contents="",repl=!0;for(let i=2;i<process.argv.length;i++)if("-X"===process.argv[i]&&i<process.argv.length-1){if(process.argv[i+1].includes("heapsize=")){heap_size=parseInt(process.argv[i+1].split("heapsize=")[1]);const suffix=process.argv[i+1].substr(-1).toLowerCase();"k"===suffix?heap_size*=1024:"m"===suffix&&(heap_size*=1048576),++i}}else contents+=fs.readFileSync(process.argv[i],"utf8"),repl=!1;!1===process.stdin.isTTY&&(contents=fs.readFileSync(0,"utf8"),repl=!1);const mp=await loadMicroPython({heapsize:heap_size,stdout:data=>process.stdout.write(data),linebuffer:!1});if(repl)mp.replInit(),process.stdin.setRawMode(!0),process.stdin.on("data",(data=>{for(let i=0;i<data.length;i++)mp.replProcessCharWithAsyncify(data[i]).then((result=>{result&&process.exit()}))}));else{if(contents.endsWith("asyncio.run(main())\n")){const asyncio=mp.pyimport("asyncio");asyncio.run=async task=>{await asyncio.create_task(task)}}try{mp.runPython(contents)}catch(error){if("PythonError"!==error.name)throw error;"SystemExit"===error.type||console.error(error.message)}}}()}class PyProxy{constructor(ref){this._ref=ref}static toJs(js_obj){if(!(js_obj instanceof PyProxy))return js_obj;const type=Module.ccall("proxy_c_to_js_get_type","number",["number"],[js_obj._ref]);if(1===type||2===type){const array_ref=Module._malloc(8),item=Module._malloc(12);Module.ccall("proxy_c_to_js_get_array","null",["number","pointer"],[js_obj._ref,array_ref]);const len=Module.getValue(array_ref,"i32"),items_ptr=Module.getValue(array_ref+4,"i32"),js_array=[];for(let i=0;i<len;++i){Module.ccall("proxy_convert_mp_to_js_obj_cside","null",["pointer","pointer"],[Module.getValue(items_ptr+4*i,"i32"),item]);const js_item=proxy_convert_mp_to_js_obj_jsside(item);js_array.push(PyProxy.toJs(js_item))}return Module._free(array_ref),Module._free(item),js_array}if(3===type){const map_ref=Module._malloc(8),item=Module._malloc(12);Module.ccall("proxy_c_to_js_get_dict","null",["number","pointer"],[js_obj._ref,map_ref]);const alloc=Module.getValue(map_ref,"i32"),table_ptr=Module.getValue(map_ref+4,"i32"),js_dict={};for(let i=0;i<alloc;++i){const mp_key=Module.getValue(table_ptr+8*i,"i32");if(mp_key>8){Module.ccall("proxy_convert_mp_to_js_obj_cside","null",["pointer","pointer"],[mp_key,item]);const js_key=proxy_convert_mp_to_js_obj_jsside(item),mp_value=Module.getValue(table_ptr+8*i+4,"i32");Module.ccall("proxy_convert_mp_to_js_obj_cside","null",["pointer","pointer"],[mp_value,item]);const js_value=proxy_convert_mp_to_js_obj_jsside(item);js_dict[js_key]=PyProxy.toJs(js_value)}}return Module._free(map_ref),Module._free(item),js_dict}return js_obj}}const py_proxy_handler={isExtensible:()=>!0,ownKeys(target){const value=Module._malloc(12);Module.ccall("proxy_c_to_js_dir","null",["number","pointer"],[target._ref,value]);const dir=proxy_convert_mp_to_js_obj_jsside_with_free(value);return PyProxy.toJs(dir).filter((attr=>!attr.startsWith("__")))},getOwnPropertyDescriptor:(target,prop)=>({value:target[prop],enumerable:!0,writable:!0,configurable:!0}),has:(target,prop)=>Module.ccall("proxy_c_to_js_has_attr","number",["number","string"],[target._ref,prop]),get(target,prop){if("_ref"===prop)return target._ref;if("then"===prop)return null;if(prop===Symbol.iterator){const iter_ref=Module.ccall("proxy_c_to_js_get_iter","number",["number"],[target._ref]);return function*(){const value=Module._malloc(12);for(;;){if(!Module.ccall("proxy_c_to_js_iternext","number",["number","pointer"],[iter_ref,value]))break;yield proxy_convert_mp_to_js_obj_jsside(value)}Module._free(value)}}const value=Module._malloc(12);return Module.ccall("proxy_c_to_js_lookup_attr","null",["number","string","pointer"],[target._ref,prop,value]),proxy_convert_mp_to_js_obj_jsside_with_free(value)},set(target,prop,value){const value_conv=Module._malloc(12);proxy_convert_js_to_mp_obj_jsside(value,value_conv);const ret=Module.ccall("proxy_c_to_js_store_attr","number",["number","string","number"],[target._ref,prop,value_conv]);return Module._free(value_conv),ret},deleteProperty:(target,prop)=>Module.ccall("proxy_c_to_js_delete_attr","number",["number","string"],[target._ref,prop])};class PyProxyThenable{constructor(ref){this._ref=ref}then(resolve,reject){const values=Module._malloc(36);return proxy_convert_js_to_mp_obj_jsside(resolve,values+12),proxy_convert_js_to_mp_obj_jsside(reject,values+24),Module.ccall("proxy_c_to_js_resume","null",["number","pointer"],[this._ref,values]),proxy_convert_mp_to_js_obj_jsside_with_free(values)}}const PROXY_JS_REF_NUM_STATIC=2,PROXY_KIND_MP_EXCEPTION=-1,PROXY_KIND_MP_NULL=0,PROXY_KIND_MP_NONE=1,PROXY_KIND_MP_BOOL=2,PROXY_KIND_MP_INT=3,PROXY_KIND_MP_FLOAT=4,PROXY_KIND_MP_STR=5,PROXY_KIND_MP_CALLABLE=6,PROXY_KIND_MP_GENERATOR=7,PROXY_KIND_MP_JSPROXY=9,PROXY_KIND_JS_UNDEFINED=0,PROXY_KIND_JS_NULL=1,PROXY_KIND_JS_BOOLEAN=2,PROXY_KIND_JS_INTEGER=3,PROXY_KIND_JS_DOUBLE=4,PROXY_KIND_JS_STRING=5,PROXY_KIND_JS_OBJECT=6,PROXY_KIND_JS_PYPROXY=7;class PythonError extends Error{constructor(exc_type,exc_details){super(exc_details),this.name="PythonError",this.type=exc_type}}function proxy_js_init(){globalThis.proxy_js_ref=[globalThis,void 0],globalThis.proxy_js_ref_next=PROXY_JS_REF_NUM_STATIC,globalThis.pyProxyFinalizationRegistry=new FinalizationRegistry((cRef=>{Module.ccall("proxy_c_free_obj","null",["number"],[cRef])}))}function proxy_js_add_obj(js_obj){for(;proxy_js_ref_next<proxy_js_ref.length;){if(void 0===proxy_js_ref[proxy_js_ref_next]){const id=proxy_js_ref_next;return++proxy_js_ref_next,proxy_js_ref[id]=js_obj,id}++proxy_js_ref_next}const id=proxy_js_ref.length;return proxy_js_ref[id]=js_obj,proxy_js_ref_next=proxy_js_ref.length,id}function proxy_convert_js_to_mp_obj_jsside(js_obj,out){let kind;if(void 0===js_obj)kind=PROXY_KIND_JS_UNDEFINED;else if(null===js_obj)kind=PROXY_KIND_JS_NULL;else if("boolean"==typeof js_obj)kind=PROXY_KIND_JS_BOOLEAN,Module.setValue(out+4,js_obj,"i32");else if("number"==typeof js_obj)if(Number.isInteger(js_obj))kind=PROXY_KIND_JS_INTEGER,Module.setValue(out+4,js_obj,"i32");else{kind=PROXY_KIND_JS_DOUBLE;const temp=out+4&-8;Module.setValue(temp,js_obj,"double");const double_lo=Module.getValue(temp,"i32"),double_hi=Module.getValue(temp+4,"i32");Module.setValue(out+4,double_lo,"i32"),Module.setValue(out+8,double_hi,"i32")}else if("string"==typeof js_obj){kind=PROXY_KIND_JS_STRING;const len=Module.lengthBytesUTF8(js_obj),buf=Module._malloc(len+1);Module.stringToUTF8(js_obj,buf,len+1),Module.setValue(out+4,len,"i32"),Module.setValue(out+8,buf,"i32")}else if(js_obj instanceof PyProxy||"function"==typeof js_obj&&"_ref"in js_obj||js_obj instanceof PyProxyThenable)kind=PROXY_KIND_JS_PYPROXY,Module.setValue(out+4,js_obj._ref,"i32");else{kind=PROXY_KIND_JS_OBJECT;const id=proxy_js_add_obj(js_obj);Module.setValue(out+4,id,"i32")}Module.setValue(out+0,kind,"i32")}function proxy_convert_js_to_mp_obj_jsside_force_double_proxy(js_obj,out){if(js_obj instanceof PyProxy||"function"==typeof js_obj&&"_ref"in js_obj||js_obj instanceof PyProxyThenable){const kind=PROXY_KIND_JS_OBJECT,id=proxy_js_add_obj(js_obj);Module.setValue(out+4,id,"i32"),Module.setValue(out+0,kind,"i32")}else proxy_convert_js_to_mp_obj_jsside(js_obj,out)}function proxy_convert_mp_to_js_obj_jsside(value){const kind=Module.getValue(value,"i32");let obj;if(kind===PROXY_KIND_MP_EXCEPTION){const str_len=Module.getValue(value+4,"i32"),str_ptr=Module.getValue(value+8,"i32"),str=Module.UTF8ToString(str_ptr,str_len);Module._free(str_ptr);const str_split=str.split("");throw new PythonError(str_split[0],str_split[1])}if(kind===PROXY_KIND_MP_NULL)throw new Error("NULL object");if(kind===PROXY_KIND_MP_NONE)obj=null;else if(kind===PROXY_KIND_MP_BOOL)obj=!!Module.getValue(value+4,"i32");else if(kind===PROXY_KIND_MP_INT)obj=Module.getValue(value+4,"i32");else if(kind===PROXY_KIND_MP_FLOAT){const temp=value+4&-8,double_lo=Module.getValue(value+4,"i32"),double_hi=Module.getValue(value+8,"i32");Module.setValue(temp,double_lo,"i32"),Module.setValue(temp+4,double_hi,"i32"),obj=Module.getValue(temp,"double")}else if(kind===PROXY_KIND_MP_STR){const str_len=Module.getValue(value+4,"i32"),str_ptr=Module.getValue(value+8,"i32");obj=Module.UTF8ToString(str_ptr,str_len)}else if(kind===PROXY_KIND_MP_JSPROXY){const id=Module.getValue(value+4,"i32");obj=proxy_js_ref[id]}else{const id=Module.getValue(value+4,"i32");if(kind===PROXY_KIND_MP_CALLABLE)obj=(...args)=>function(target,argumentsList){let args=0;for(;argumentsList.length>0&&void 0===argumentsList[argumentsList.length-1];)argumentsList.pop();if(argumentsList.length>0){args=Module._malloc(3*argumentsList.length*4);for(const i in argumentsList)proxy_convert_js_to_mp_obj_jsside(argumentsList[i],args+3*i*4)}const value=Module._malloc(12);Module.ccall("proxy_c_to_js_call","null",["number","number","number","pointer"],[target,argumentsList.length,args,value]),argumentsList.length>0&&Module._free(args);const ret=proxy_convert_mp_to_js_obj_jsside_with_free(value);return ret instanceof PyProxyThenable?Promise.resolve(ret):ret}(id,args),obj._ref=id;else if(kind===PROXY_KIND_MP_GENERATOR)obj=new PyProxyThenable(id);else{const target=new PyProxy(id);obj=new Proxy(target,py_proxy_handler)}globalThis.pyProxyFinalizationRegistry.register(obj,id)}return obj}function proxy_convert_mp_to_js_obj_jsside_with_free(value){const ret=proxy_convert_mp_to_js_obj_jsside(value);return Module._free(value),ret}