"use strict";var _createPyodideModule=(()=>{var _scriptDir="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(_scriptDir=_scriptDir||__filename),function(_createPyodideModule={}){var Module=void 0!==_createPyodideModule?_createPyodideModule:{},readyPromiseResolve,readyPromiseReject;if(void 0===globalThis.BigInt64Array){function e(e,t){return BigInt(e)|BigInt(t+2*(2147483648&t))<<32n}function t(e,t){return BigInt(e)|BigInt(t)<<32n}function _(e){return[0|Number(BigInt(e)&BigInt(4294967295)),0|Number(BigInt(e)>>32n)]}function r(e){return function t(r){var n;"number"==typeof r&&(r=new Uint32Array(2*r)),ArrayBuffer.isView(r)||(r.constructor&&"ArrayBuffer"===r.constructor.name?r=new Uint32Array(r):(n=r,r=new Uint32Array(2*r.length)));var o=new Proxy({slice:function(e,_){return void 0===_&&(_=r.length),t(r.slice(2*e,2*_))},subarray:function(e,_){return t(r.subarray(2*e,2*_))},[Symbol.iterator]:function*(){for(var t=0;tr.length)throw new RangeError("offset is out of bounds");for(var n=0;n{throw t},ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER,scriptDirectory="",read_,readAsync,readBinary,setWindowTitle;function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let t=e;e&&"object"==typeof e&&e.stack&&(t=[e,e.stack]),err("exiting due to exception: "+t)}if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(e,t)=>(e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFileSync(e,t?void 0:"utf8")),readBinary=e=>{var t=read_(e,!0);return t.buffer||(t=new Uint8Array(t)),t},readAsync=(e,t,_)=>{e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFile(e,(function(e,r){e?_(e):t(r.buffer)}))},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),quit_=(e,t)=>{if(keepRuntimeAlive())throw process.exitCode=e,t;logExceptionOnExit(t),process.exit(e)},Module.inspect=function(){return"[Emscripten Module object]"}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:"undefined"!=typeof document&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory=0!==scriptDirectory.indexOf("blob:")?scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1):"",read_=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),readAsync=(e,t,_)=>{var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=()=>{200==r.status||0==r.status&&r.response?t(r.response):_()},r.onerror=_,r.send(null)},setWindowTitle=e=>document.title=e);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime=Module.noExitRuntime||!0,wasmMemory;"object"!=typeof WebAssembly&&abort("no native wasm support detected");var ABORT=!1,EXITSTATUS;function assert(e,t){e||abort(t)}var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function UTF8ArrayToString(e,t,_){for(var r=t+_,n=t;e[n]&&!(n>=r);)++n;if(n-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,n));for(var o="";t>10,56320|1023&u)}}else o+=String.fromCharCode((31&l)<<6|i)}else o+=String.fromCharCode(l)}return o}function UTF8ToString(e,t){return e?UTF8ArrayToString(HEAPU8,e,t):""}function stringToUTF8Array(e,t,_,r){if(!(r>0))return 0;for(var n=_,o=_+r-1,l=0;l=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++l);if(i<=127){if(_>=o)break;t[_++]=i}else if(i<=2047){if(_+1>=o)break;t[_++]=192|i>>6,t[_++]=128|63&i}else if(i<=65535){if(_+2>=o)break;t[_++]=224|i>>12,t[_++]=128|i>>6&63,t[_++]=128|63&i}else{if(_+3>=o)break;t[_++]=240|i>>18,t[_++]=128|i>>12&63,t[_++]=128|i>>6&63,t[_++]=128|63&i}}return t[_]=0,_-n}function stringToUTF8(e,t,_){return stringToUTF8Array(e,HEAPU8,t,_)}function lengthBytesUTF8(e){for(var t=0,_=0;_=55296&&r<=57343?(t+=4,++_):t+=3}return t}function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e),Module.HEAP64=HEAP64=new BigInt64Array(e),Module.HEAPU64=HEAPU64=new BigUint64Array(e)}var INITIAL_MEMORY=Module.INITIAL_MEMORY||20971520;assert(INITIAL_MEMORY>=5242880,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE=5242880)"),wasmMemory=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768}),updateMemoryViews(),INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable=new WebAssembly.Table({initial:6377,element:"anyfunc"}),__ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],__RELOC_FUNCS__=[],runtimeInitialized=!1;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),Module.noFSInit||FS.init.initialized||FS.init(),FS.ignorePermissions=!1,TTY.init(),SOCKFS.root=FS.mount(SOCKFS,{},null),PIPEFS.root=FS.mount(PIPEFS,{},null),callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPreMain(e){__ATMAIN__.unshift(e)}function addOnExit(e){}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}function abort(e){Module.onAbort&&Module.onAbort(e),err(e="Aborted("+e+")"),ABORT=!0,EXITSTATUS=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw readyPromiseReject(t),t}var dataURIPrefix="data:application/octet-stream;base64,",wasmBinaryFile,tempDouble,tempI64;function isDataURI(e){return e.startsWith(dataURIPrefix)}function isFileURI(e){return e.startsWith("file://")}function getBinary(e){try{if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}catch(e){abort(e)}}function getBinaryPromise(e){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if("function"==typeof fetch&&!isFileURI(e))return fetch(e,{credentials:"same-origin"}).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((function(){return getBinary(e)}));if(readAsync)return new Promise((function(t,_){readAsync(e,(function(e){t(new Uint8Array(e))}),_)}))}return Promise.resolve().then((function(){return getBinary(e)}))}function instantiateArrayBuffer(e,t,_){return getBinaryPromise(e).then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(_,(function(e){err("failed to asynchronously prepare wasm: "+e),abort(e)}))}function instantiateAsync(e,t,_,r){return e||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(t)||isFileURI(t)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(t,_,r):fetch(t,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,_).then(r,(function(e){return err("wasm streaming compile failed: "+e),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(t,_,r)}))}))}function createWasm(){var e={env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)};function t(e,t){var _=e.exports;_=relocateExports(_,1024);var r=getDylinkMetadata(t);return r.neededDynlibs&&(dynamicLibraries=r.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(_,"main"),Module.asm=_,addOnInit(Module.asm.__wasm_call_ctors),__RELOC_FUNCS__.push(Module.asm.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),_}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(e,t)}catch(e){err("Module.instantiateWasm callback failed with error: "+e),readyPromiseReject(e)}return instantiateAsync(wasmBinary,wasmBinaryFile,e,(function(e){t(e.instance,e.module)})).catch(readyPromiseReject),{}}wasmBinaryFile="pyodide.asm.wasm",isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={3880638:()=>{throw new Error("intentionally triggered fatal error!")},3880695:e=>{Hiwire.get_value(e)()},3880718:()=>{Module.UTF8ToString=UTF8ToString,Module.wasmTable=wasmTable,Module.ERRNO_CODES=ERRNO_CODES},3880822:e=>{API._pyodide=Hiwire.pop_value(e)},3880863:(e,t)=>{Hiwire.get_value(t).push(...Hiwire.get_value(e))},3880919:e=>{for(let t of Hiwire.get_value(e))if("function"==typeof t.destroy)try{t.destroy()}catch(e){console.warn("Weird error:",e)}}};function console_error(e){let t=UTF8ToString(e);console.error(t)}function console_error_obj(e){console.error(Hiwire.get_value(e))}function new_error(e,t,_){try{return Hiwire.new_value(new API.PythonError(UTF8ToString(e),UTF8ToString(t),_))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function fail_test(){API.fail_test=!0}function hiwire_to_bool(e){return!!Hiwire.get_value(e)}function hiwire_init(){try{let e={objects:new Map,obj_to_key:new Map,counter:new Uint32Array([1])};Hiwire.UNDEFINED=HEAPU8[_Js_undefined+0],e.objects.set(Hiwire.UNDEFINED,[void 0,-1]),e.obj_to_key.set(void 0,Hiwire.UNDEFINED),Hiwire.JSNULL=HEAPU8[_Js_null+0],e.objects.set(Hiwire.JSNULL,[null,-1]),e.obj_to_key.set(null,Hiwire.JSNULL),Hiwire.TRUE=HEAPU8[_Js_true+0],e.objects.set(Hiwire.TRUE,[!0,-1]),e.obj_to_key.set(!0,Hiwire.TRUE),Hiwire.FALSE=HEAPU8[_Js_false+0],e.objects.set(Hiwire.FALSE,[!1,-1]),e.obj_to_key.set(!1,Hiwire.FALSE);let t=HEAPU8[_Js_novalue]+2;Hiwire.new_value=function(t){let _=e.obj_to_key.get(t);if(void 0!==_)return e.objects.get(_)[1]++,_;for(;e.objects.has(e.counter[0]);)e.counter[0]+=2;return _=e.counter[0],e.objects.set(_,[t,1]),e.obj_to_key.set(t,_),e.counter[0]+=2,_},Hiwire.intern_object=function(_){let r=t;return t+=2,e.objects.set(r,[_,-1]),r},Hiwire.num_keys=function(){return Array.from(e.objects.keys()).filter((e=>e%2)).length},Hiwire.get_value=function(t){if(!t){if(API.fail_test=!0,_PyErr_Occurred()){let e=_wrap_exception(),_=Hiwire.pop_value(e);throw console.error(`Pyodide internal error: Argument '${t}' to hiwire.get_value is falsy. This was probably because the Python error indicator was set when get_value was called. The Python error that caused this was:`,_),_}throw console.error(`Pyodide internal error: Argument '${t}' to hiwire.get_value is falsy (but error indicator is not set).`),new Error(`Pyodide internal error: Argument '${t}' to hiwire.get_value is falsy (but error indicator is not set).`)}if(!e.objects.has(t))throw API.fail_test=!0,console.error(`Pyodide internal error: Undefined id ${t}`),new Error(`Undefined id ${t}`);return e.objects.get(t)[0]},Hiwire.decref=function(t){if(!(1&t))return;let _=e.objects.get(t);0===--_[1]&&(e.objects.delete(t),e.obj_to_key.delete(_[0]))},Hiwire.incref=function(t){1&t&&e.objects.get(t)[1]++},Hiwire.pop_value=function(e){let t=Hiwire.get_value(e);return Hiwire.decref(e),t},Hiwire.isPromise=function(e){try{return!!e&&"function"==typeof e.then}catch(e){return!1}},API.typedArrayAsUint8Array=function(e){return ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)};{let e=["b","B","h","H","i","I","f","d"].join(String.fromCharCode(0)),t=stringToNewUTF8(e),_={};for(let[r,n]of Object.entries(e))_[n]=t+Number(r);let r=new Map([["Int8Array",[_.b,1,!0]],["Uint8Array",[_.B,1,!0]],["Uint8ClampedArray",[_.B,1,!0]],["Int16Array",[_.h,2,!0]],["Uint16Array",[_.H,2,!0]],["Int32Array",[_.i,4,!0]],["Uint32Array",[_.I,4,!0]],["Float32Array",[_.f,4,!0]],["Float64Array",[_.d,8,!0]],["DataView",[_.B,1,!1]],["ArrayBuffer",[_.B,1,!1]]]);Module.get_buffer_datatype=function(e){return r.get(e.constructor.name)||[0,0,!1]}}return Module.iterObject=function*(e){for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(yield t)},globalThis.BigInt?Module.BigInt=BigInt:Module.BigInt=Number,0}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_incref(e){return 1&e&&Hiwire.incref(e),e}function hiwire_decref(e){Hiwire.decref(e)}function hiwire_int(e){try{return Hiwire.new_value(e)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function hiwire_int_from_digits(e,t){try{let _=BigInt(0);for(let r=0;r>2)+r])<>2)+t-1])<2147483647?-4:t}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_get_length_string(e){try{const t=Hiwire.get_value(e);let _;return"number"==typeof t.size?_=t.size:"number"==typeof t.length&&(_=t.length),stringToNewUTF8(" "+_.toString())}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function hiwire_get_bool(e){try{let t=Hiwire.get_value(e);return!!t&&(0===t.size?!!/HTML[A-Za-z]*Element/.test(getTypeTag(t)):(0!==t.length||!JsArray_Check(e))&&0!==t.byteLength)}catch(e){return!1}}function hiwire_is_function(e){try{return"function"==typeof Hiwire.get_value(e)}catch(e){return!1}}function hiwire_is_generator(e){try{return"[object Generator]"===getTypeTag(Hiwire.get_value(e))}catch(e){return!1}}function hiwire_is_async_generator(e){try{return"[object AsyncGenerator]"===Object.prototype.toString.call(Hiwire.get_value(e))}catch(e){return!1}}function hiwire_is_comlink_proxy(e){try{let t=Hiwire.get_value(e);return!(!API.Comlink||!t[API.Comlink.createEndpoint])}catch(e){return!1}}function hiwire_is_error(e){try{let t=Hiwire.get_value(e);return!(!t||"string"!=typeof t.stack||"string"!=typeof t.message)}catch(e){return!1}}function hiwire_is_promise(e){try{let t=Hiwire.get_value(e);return Hiwire.isPromise(t)}catch(e){return!1}}function hiwire_resolve_promise(e){try{let t=Hiwire.get_value(e),_=Promise.resolve(t);return Hiwire.new_value(_)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function hiwire_to_string(e){try{return Hiwire.new_value(Hiwire.get_value(e).toString())}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function hiwire_typeof(e){return Hiwire.new_value(typeof Hiwire.get_value(e))}function hiwire_constructor_name(e){try{return stringToNewUTF8(Hiwire.get_value(e).constructor.name)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function hiwire_less_than(e,t){try{return!!(Hiwire.get_value(e)Hiwire.get_value(t))}catch(e){return!1}}function hiwire_greater_than_equal(e,t){try{return!!(Hiwire.get_value(e)>=Hiwire.get_value(t))}catch(e){return!1}}function hiwire_reversed_iterator(e){try{Module._reversedIterator||(Module._reversedIterator=class{constructor(e){this._array=e,this._i=e.length-1}__length_hint__(){return this._array.length}[Symbol.toStringTag](){return"ReverseIterator"}next(){const e=this._i,t=this._array,_=e<0,r=_?void 0:t[e];return this._i--,{done:_,value:r}}});let t=Hiwire.get_value(e);return Hiwire.new_value(new Module._reversedIterator(t))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function hiwire_assign_to_ptr(e,t){try{let _=Hiwire.get_value(e);Module.HEAPU8.set(API.typedArrayAsUint8Array(_),t)}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_assign_from_ptr(e,t){try{let _=Hiwire.get_value(e);API.typedArrayAsUint8Array(_).set(Module.HEAPU8.subarray(t,t+_.byteLength))}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_read_from_file(e,t){try{let _=Hiwire.get_value(e),r=API.typedArrayAsUint8Array(_),n=Module.FS.streams[t];Module.FS.read(n,r,0,r.byteLength)}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_write_to_file(e,t){try{let _=Hiwire.get_value(e),r=API.typedArrayAsUint8Array(_),n=Module.FS.streams[t];Module.FS.write(n,r,0,r.byteLength)}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_into_file(e,t){try{let _=Hiwire.get_value(e),r=API.typedArrayAsUint8Array(_),n=Module.FS.streams[t];Module.FS.write(n,r,0,r.byteLength,void 0,!0)}catch(e){return Module.handle_js_error(e),-1}return 0}function hiwire_get_buffer_info(e,t,_,r,n){let o=Hiwire.get_value(e),l=o.byteLength,[i,a,u]=Module.get_buffer_datatype(o);HEAPU32[0+(t>>2)]=l,HEAPU32[0+(_>>2)]=i,HEAPU32[0+(r>>2)]=a,HEAPU8[n+0]=u}function hiwire_subarray(e,t,_){try{let r=Hiwire.get_value(e).subarray(t,_);return Hiwire.new_value(r)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsArray_Check(e){try{let t=Hiwire.get_value(e);if(Array.isArray(t))return!0;let _=getTypeTag(t);return"[object HTMLCollection]"===_||"[object NodeList]"===_||!(!ArrayBuffer.isView(t)||"DataView"===t.constructor.name)}catch(e){return!1}}function JsArray_New(){try{return Hiwire.new_value([])}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsArray_Push(e,t){try{Hiwire.get_value(e).push(Hiwire.get_value(t))}catch(e){return Module.handle_js_error(e),-1}return 0}function JsArray_Push_unchecked(e,t){const _=Hiwire.get_value(e);return _.push(Hiwire.get_value(t)),_.length-1}function JsArray_Get(e,t){try{let _=Hiwire.get_value(e),r=_[t];return void 0!==r||t in _?Hiwire.new_value(r):0}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsArray_Set(e,t,_){try{Hiwire.get_value(e)[t]=Hiwire.get_value(_)}catch(e){return Module.handle_js_error(e),-1}return 0}function JsArray_Delete(e,t){try{let _=Hiwire.get_value(e);if(t<0||t>=_.length)return-1;_.splice(t,1)}catch(e){return Module.handle_js_error(e),-1}return 0}function JsArray_Splice(e,t){try{let _=Hiwire.get_value(e);return t<0||t>=_.length?0:Hiwire.new_value(_.splice(t,1))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsArray_slice(e,t,_,r,n){try{let o,l=Hiwire.get_value(e);return o=1===n?l.slice(_,r):Array.from({length:t},((e,t)=>l[_+t*n])),Hiwire.new_value(o)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsArray_slice_assign(e,t,_,r,n,o,l){try{let r=Hiwire.get_value(e),i=[];for(let e=0;e>2)+e]);if(0===t)return-1;i.push(Hiwire.pop_value(t))}if(1===n)r.splice(_,t,...i);else if(0!==l)for(let e=0;e=0;e--)r.splice(_+e*n,1)}catch(e){return Module.handle_js_error(e),-1}return 0}function JsArray_Clear(e){try{let t=Hiwire.get_value(e);t.splice(0,t.length)}catch(e){return Module.handle_js_error(e),-1}return 0}function JsObject_New(){try{return Hiwire.new_value({})}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function isReservedWord(e){return Module.pythonReservedWords||(Module.pythonReservedWords=new Set(["False","await","else","import","pass","None","break","except","in","raise","True","class","finally","is","return","and","continue","for","lambda","try","as","def","from","nonlocal","while","assert","del","global","not","with","async","elif","if","or","yield"])),Module.pythonReservedWords.has(e)}function normalizeReservedWords(e,t){const _=t.replace(/_*$/,"");if(!isReservedWord(_))return t;if(_!==t)return t.slice(0,-1);let r=stringToNewUTF8(e),n=stringToNewUTF8(t);throw _setReservedError(r,n),_free(r),_free(n),new Module._PropagatePythonError}function JsObject_GetString(e,t){try{let _=Hiwire.get_value(e),r=normalizeReservedWords("get",UTF8ToString(t));return r in _?Hiwire.new_value(_[r]):0}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsObject_SetString(e,t,_){try{let r=Hiwire.get_value(e),n=normalizeReservedWords("set",UTF8ToString(t)),o=Hiwire.get_value(_);r[n]=o}catch(e){return Module.handle_js_error(e),-1}return 0}function JsObject_DeleteString(e,t){try{delete Hiwire.get_value(e)[normalizeReservedWords("delete",UTF8ToString(t))]}catch(e){return Module.handle_js_error(e),-1}return 0}function JsObject_Dir(e){try{let t=Hiwire.get_value(e),_=[];do{const e=Object.getOwnPropertyNames(t);_.push(...e.filter((e=>{let t=e.charCodeAt(0);return t<48||t>57})).map((e=>isReservedWord(e.replace(/_*$/,""))?e+"_":e)))}while(t=Object.getPrototypeOf(t));return Hiwire.new_value(_)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsObject_Entries(e){try{let t=Hiwire.get_value(e);return Hiwire.new_value(Object.entries(t))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsObject_Keys(e){try{let t=Hiwire.get_value(e);return Hiwire.new_value(Object.keys(t))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsObject_Values(e){try{let t=Hiwire.get_value(e);return Hiwire.new_value(Object.values(t))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsString_InternFromCString(e){try{let t=UTF8ToString(e);return Hiwire.intern_object(t)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsMap_New(){try{return Hiwire.new_value(new Map)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsMap_Set(e,t,_){try{let r=Hiwire.get_value(e),n=Hiwire.get_value(t),o=Hiwire.get_value(_);r.set(n,o)}catch(e){return Module.handle_js_error(e),-1}return 0}function JsSet_New(){try{return Hiwire.new_value(new Set)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsSet_Add(e,t){try{let _=Hiwire.get_value(e),r=Hiwire.get_value(t);_.add(r)}catch(e){return Module.handle_js_error(e),-1}return 0}function js2python_immutable(e){try{let t=Hiwire.get_value(e),_=Module.js2python_convertImmutable(t,e);return void 0!==_?_:0}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function js2python(e){try{let t=Hiwire.get_value(e),_=Module.js2python_convertImmutable(t,e);return void 0!==_?_:_JsProxy_create(e)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function js2python_convert(e,t,_){try{let r=_?Module.hiwire.get_value(_):void 0;return Module.js2python_convert(e,{depth:t,defaultConverter:r})}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function js2python_init(){try{{let e=Module._PropagatePythonError;function t(t){let _=0,r=0;for(let e of t){r++;let t=e.codePointAt(0);_=t>_?t:_}let n=_PyUnicode_New(r,_);if(0===n)throw new e;let o=_PyUnicode_Data(n);if(_>65535)for(let e of t)HEAPU32[o/4]=e.codePointAt(0),o+=4;else if(_>255)for(let e of t)HEAPU16[o/2]=e.codePointAt(0),o+=2;else for(let e of t)HEAPU8[o]=e.codePointAt(0),o+=1;return n}function _(e){let t=e,_=0;for(e<0&&(e=-e),e<<=BigInt(1);e;)_++,e>>=BigInt(32);let r=stackSave(),n=stackAlloc(4*_);e=t;for(let t=0;t<_;t++)HEAPU32[(n>>2)+t]=Number(e&BigInt(4294967295)),e>>=BigInt(32);let o=__PyLong_FromByteArray(n,4*_,!0,!0);return stackRestore(r),o}function r(t,_){let r=n(t,_);if(0===r)throw new e;return r}function n(e,r){let n=typeof e;return"string"===n?t(e):"number"===n?Number.isSafeInteger(e)?_PyLong_FromDouble(e):_PyFloat_FromDouble(e):"bigint"===n?_(e):null==e?__js2python_none():!0===e?__js2python_true():!1===e?__js2python_false():API.isPyProxy(e)?(0==e.$$.ptr&&Module.PyProxy_getPtr(e),e.$$props.roundtrip?(void 0===r&&(r=Hiwire.new_value(e)),_JsProxy_create(r)):__js2python_pyproxy(Module.PyProxy_getPtr(e))):void 0}function o(t,_){let r=_PyList_New(t.length);if(0===r)return 0;let n=0,o=0;try{_.cache.set(t,r);for(let l=0;l>2)]=stringToNewUTF8(r),-1;let o=Hiwire.new_value(n.value);return HEAPU32[0+(t>>2)]=o,n.done}catch(e){return Module.handle_js_error(e),-1}return 0}function JsException_new_helper(e,t,_){try{let r=UTF8ToString(e),n=UTF8ToString(t),o=UTF8ToString(_);return Hiwire.new_value(API.deserializeError(r,n,o))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsProxy_GetAsyncIter_js(e){try{let t=Hiwire.get_value(e);return Hiwire.new_value(t[Symbol.asyncIterator]())}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function _agen_handle_result_js(e,t,_,r,n){try{let o,l=Hiwire.get_value(e);return"object"!=typeof l?o="Result of anext() should be object not "+typeof l:"function"!=typeof l.then&&(o="boolean"==typeof l.done?"Result of anext() was not a promise, use next() instead.":"Result of anext() was not a promise."),o?(HEAPU32[0+(t>>2)]=stringToNewUTF8(o),-1):(_Py_IncRef(_),_Py_IncRef(r),l.then((({done:e,value:t})=>{let o=Hiwire.new_value(t);__agen_handle_result_js_c(_,r,e,o,n),Hiwire.decref(o)}),(e=>{let t=Hiwire.new_value(e);__agen_handle_result_js_c(_,r,-1,t,n),Hiwire.decref(t)})).finally((()=>{_Py_DecRef(_),_Py_DecRef(r)})),0)}catch(e){return Module.handle_js_error(e),-1}return 0}function JsArray_index_helper(e,t,_,r){try{let n=Hiwire.get_value(e),o=Hiwire.get_value(t);for(let e=_;eModule.pyproxy_destroy(e,n)))}function l(e){return function(t){let n;API.isPyProxy(t)&&(t=t.copy(),_.add(t));try{n=r[e](t)}catch(e){throw o(),e}return n.done&&(_.delete(n.value),o()),n}}return Hiwire.new_value({get[Symbol.toStringTag](){return"Generator"},[Symbol.iterator](){return this},next:l("next"),throw:l("throw"),return:l("return")})}catch(i){return Module.handle_js_error(i),0}throw new Error("Assertion error: control reached end of function without return")}function wrap_async_generator(e,t){try{const _=new Set(Hiwire.get_value(t)),r=Hiwire.get_value(e),n="This borrowed proxy was automatically destroyed when an asynchronous generator completed execution. Try using create_proxy or create_once_callable.";function o(){_.forEach((e=>Module.pyproxy_destroy(e,n)))}function l(e){return async function(t){let n;API.isPyProxy(t)&&(t=t.copy(),_.add(t));try{n=await r[e](t)}catch(e){throw o(),e}return n.done&&(_.delete(n.value),o()),n}}return Hiwire.new_value({get[Symbol.toStringTag](){return"AsyncGenerator"},[Symbol.asyncIterator](){return this},next:l("next"),throw:l("throw"),return:l("return")})}catch(i){return Module.handle_js_error(i),0}throw new Error("Assertion error: control reached end of function without return")}function JsBuffer_DecodeString_js(e,t){try{let _,r=Hiwire.get_value(e);t&&(_=UTF8ToString(t));let n,o=new TextDecoder(_,{fatal:!0,ignoreBOM:!0});try{n=o.decode(r)}catch(e){if(e instanceof TypeError)return 0;throw e}return Hiwire.new_value(n)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsDoubleProxy_unwrap_helper(e){try{return Module.PyProxy_getPtr(Hiwire.get_value(e))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function JsProxy_compute_typeflags(e){try{let t=Hiwire.get_value(e),_=0;if(API.isPyProxy(t)&&0===t.$$.ptr)return 0;const r=t.constructor?t.constructor.name:"";let n=getTypeTag(t);return"function"==typeof t&&(_|=512),"function"==typeof t.then&&(_|=128),"function"==typeof t[Symbol.iterator]&&(_|=1),"function"==typeof t[Symbol.asyncIterator]&&(_|=32768),"function"!=typeof t.next||"function"!=typeof t[Symbol.iterator]&&"function"==typeof t[Symbol.asyncIterator]||(_|=2),"function"!=typeof t.next||"function"==typeof t[Symbol.iterator]&&"function"!=typeof t[Symbol.asyncIterator]||(_|=1<<18),("number"==typeof t.size||"number"==typeof t.length&&"function"!=typeof t)&&(_|=4),"function"==typeof t.get&&(_|=8),"function"==typeof t.set&&(_|=16),"function"==typeof t.has&&(_|=32),"function"==typeof t.includes&&(_|=64),!ArrayBuffer.isView(t)&&"ArrayBuffer"!==r||512&_||(_|=256),API.isPyProxy(t)&&(_|=8192),Array.isArray(t)&&(_|=1024),"[object HTMLCollection]"!==n&&"[object NodeList]"!==n||(_|=2048),ArrayBuffer.isView(t)&&"DataView"!==t.constructor.name&&(_|=4096),"[object Generator]"===n&&(_|=65536),"[object AsyncGenerator]"===n&&(_|=1<<17),"string"!=typeof t.stack||"string"!=typeof t.message||768&_||(_|=1<<19),_}catch(e){return Module.handle_js_error(e),-1}return 0}function pyproxy_Check(e){if(0==e)return!1;let t=Hiwire.get_value(e);return API.isPyProxy(t)}function pyproxy_AsPyObject(e){if(0==e)return 0;let t=Hiwire.get_value(e);return API.isPyProxy(t)?Module.PyProxy_getPtr(t):0}function destroy_proxies(e,t){let _;t&&(_=UTF8ToString(t));let r=Hiwire.get_value(e);for(let e of r)Module.pyproxy_destroy(e,_,!1)}function destroy_proxy(e,t){let _,r=Module.hiwire.get_value(e);r.$$props.roundtrip||(t&&(_=UTF8ToString(t)),Module.pyproxy_destroy(r,_,!1))}function proxy_cache_get(e,t){let _=Hiwire.get_value(e),r=_.get(t);if(r)return Hiwire.get_value(r).$$.ptr?r:(_.delete(t),void Hiwire.decref(r))}function proxy_cache_set(e,t,_){Hiwire.get_value(e).set(t,_)}function array_to_js(e,t){return Hiwire.new_value(Array.from(HEAP32.subarray(e/4,e/4+t)))}function pyproxy_new_ex(e,t,_){try{return Hiwire.new_value(Module.pyproxy_new(e,{props:{captureThis:!!t,roundtrip:!!_}}))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function pyproxy_new(e){try{return Hiwire.new_value(Module.pyproxy_new(e))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function create_once_callable(e){try{_Py_IncRef(e);let t=!1;function _(...r){if(t)throw new Error("OnceProxy can only be called once");try{return Module.callPyObject(e,r)}finally{_.destroy()}}return _.destroy=function(){if(t)throw new Error("OnceProxy has already been destroyed");t=!0,Module.finalizationRegistry.unregister(_),_Py_DecRef(e)},Module.finalizationRegistry.register(_,[e,void 0],_),Hiwire.new_value(_)}catch(r){return Module.handle_js_error(r),0}throw new Error("Assertion error: control reached end of function without return")}function create_promise_handles(e,t,_){try{e&&_Py_IncRef(e),t&&_Py_IncRef(t);let r=e=>{};_&&(r=Hiwire.get_value(_));let n=!1;function o(){if(n)throw new Error("One of the promise handles has already been called.")}function l(){o(),n=!0,e&&_Py_DecRef(e),t&&_Py_DecRef(t)}function i(t){o();try{if(e)return Module.callPyObject(e,[t])}finally{r(t),l()}}function a(e){o();try{if(t)return Module.callPyObject(t,[e])}finally{r(void 0),l()}}return i.destroy=l,a.destroy=l,Hiwire.new_value([i,a])}catch(u){return Module.handle_js_error(u),0}throw new Error("Assertion error: control reached end of function without return")}function _python2js_buffer_inner(e,t,_,r,n,o,l){try{let i=Module.get_converter(r,t),a=Module._python2js_buffer_recursive(e,0,{ndim:_,format:r,itemsize:t,shape:n,strides:o,suboffsets:l,converter:i});return Hiwire.new_value(a)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function python2js_buffer_init(){try{return Module.processBufferFormatString=function(e,t=""){if(e.length>2)throw new Error(`Expected format string to have length <= 2, got '${e}'.`+t);let _,r,n=e.slice(-1),o=e.slice(0,-1);switch(o){case"!":case">":_=!0;break;case"<":case"@":case"=":case"":_=!1;break;default:throw new Error(`Unrecognized alignment character ${o}.`+t)}switch(n){case"b":r=Int8Array;break;case"s":case"p":case"c":case"B":case"?":r=Uint8Array;break;case"h":r=Int16Array;break;case"H":r=Uint16Array;break;case"i":case"l":case"n":r=Int32Array;break;case"I":case"L":case"N":case"P":r=Uint32Array;break;case"q":if(void 0===globalThis.BigInt64Array)throw new Error("BigInt64Array is not supported on this browser."+t);r=BigInt64Array;break;case"Q":if(void 0===globalThis.BigUint64Array)throw new Error("BigUint64Array is not supported on this browser."+t);r=BigUint64Array;break;case"f":r=Float32Array;break;case"d":r=Float64Array;break;case"e":throw new Error("Javascript has no Float16 support.");default:throw new Error(`Unrecognized format character '${n}'.`+t)}return[r,_]},Module.python2js_buffer_1d_contiguous=function(e,t,_){let r=t*_;return HEAP8.slice(e,e+r).buffer},Module.python2js_buffer_1d_noncontiguous=function(e,t,_,r,n){let o=new Uint8Array(n*r);for(let l=0;l=0&&(r=HEAPU32[0+(r>>2)]+_),o.set(HEAP8.subarray(r,r+n),l*n)}return o.buffer},Module._python2js_buffer_recursive=function(e,t,_){let r=HEAPU32[(_.shape>>2)+t],n=HEAP32[(_.strides>>2)+t],o=-1;if(0!==_.suboffsets&&(o=HEAP32[(_.suboffsets>>2)+t]),t===_.ndim-1){let t;return t=n===_.itemsize&&o<0?Module.python2js_buffer_1d_contiguous(e,n,r):Module.python2js_buffer_1d_noncontiguous(e,n,o,r,_.itemsize),_.converter(t)}let l=[];for(let i=0;i=0&&(curptr=HEAPU32[0+(curptr>>2)]+o),l.push(Module._python2js_buffer_recursive(r,t+1,_))}return l},Module.get_converter=function(e,t){let _,r,n=UTF8ToString(e),[o,l]=Module.processBufferFormatString(n);switch(n.slice(-1)){case"s":let e=new TextDecoder("utf8",{ignoreBOM:!0});return t=>e.decode(t);case"?":return e=>Array.from(new Uint8Array(e),(e=>!!e))}if(!l)return e=>new o(e);switch(t){case 2:_="getUint16",r="setUint16";break;case 4:_="getUint32",r="setUint32";break;case 8:_="getFloat64",r="setFloat64";break;default:throw new Error(`Unexpected size ${t}`)}return e=>new o(function(e){let n=new DataView(e),o=n[_].bind(n),l=n[r].bind(n);for(let e=0;e>1)+r]);return Hiwire.new_value(_)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function _python2js_ucs4(e,t){try{let _="";for(let r=0;r>2)+r]);return Hiwire.new_value(_)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function _python2js_add_to_cache(e,t,_){try{const r=Hiwire.get_value(e),n=r.get(t);void 0!==n&&Hiwire.decref(n),Hiwire.incref(_),r.set(t,_)}catch(e){return Module.handle_js_error(e),-1}return 0}function _python2js_destroy_cache(e){const t=Hiwire.get_value(e);for(const[e,_]of t.entries())Hiwire.decref(_)}function _python2js_cache_lookup(e,t){return Hiwire.get_value(e).get(t)}function _JsArray_PushEntry_helper(e,t,_){try{Hiwire.get_value(e).push([Hiwire.get_value(t),Hiwire.get_value(_)])}catch(e){return Module.handle_js_error(e),-1}return 0}function _JsArray_PostProcess_helper(e,t){try{return Hiwire.new_value(Hiwire.get_value(e).dict_converter(Hiwire.get_value(t)))}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function python2js__default_converter(e,t){try{let _=Hiwire.get_value(e),r=Module.pyproxy_new(t),n=_.default_converter(r,_.converter,_.cacheConversion);return r.destroy(),Hiwire.new_value(n)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function python2js_custom__create_jscontext(e,t,_,r){try{let n={};return 0!==_&&(n.dict_converter=Hiwire.get_value(_)),0!==r&&(n.default_converter=Hiwire.get_value(r),n.cacheConversion=function(e,_){if(!API.isPyProxy(e))throw new TypeError("The first argument to cacheConversion must be a PyProxy.");let r=Module.PyProxy_getPtr(e),n=Hiwire.new_value(_);Hiwire.get_value(t).set(r,n)},n.converter=function(t){if(!API.isPyProxy(t))return t;let _=Module.PyProxy_getPtr(t),r=__python2js(e,_);return Hiwire.pop_value(r)}),Hiwire.new_value(n)}catch(e){return Module.handle_js_error(e),0}throw new Error("Assertion error: control reached end of function without return")}function destroy_proxies_js(e){try{for(let t of Hiwire.get_value(e))t.destroy()}catch(e){return Module.handle_js_error(e),-1}return 0}function pyodide_js_init(){!function(e){function t(e,t,_,r){var n,o=arguments.length,l=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,_):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,_,r);else for(var i=e.length-1;i>=0;i--)(n=e[i])&&(l=(o<3?n(l):o>3?n(t,_,l):n(t,_))||l);return o>3&&l&&Object.defineProperty(t,_,l),l}function _(e){return this instanceof _?(this.v=e,this):new _(e)}const r=!1;let n,o,l,i,a;if(i=r?function(e,t){return o.resolve(t||".",e)}:function(e,t){return void 0===t&&(t=location),new URL(e,t).toString()},a=r?async function(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")){let t=await n(e);if(!t.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await t.arrayBuffer())}{const t=await l.readFile(e);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}}:async function(e,t){const _=new URL(e,location);let r=t?{integrity:t}:{},n=await fetch(_,r);if(!n.ok)throw new Error(`Failed to load '${_}': request failed.`);return new Uint8Array(await n.arrayBuffer())},globalThis.document);else if(globalThis.importScripts);else if(!r)throw new Error("Cannot determine runtime environment");function u(e){let t=!1;return function(){t||(t=!0,console.warn(e))}}function s(e){let t=!1;return function(_,r,n){const o=n.value?"value":"get",l=n[o];return n[o]=function(..._){return t||(t=!0,console.warn(e)),l.call(this,..._)},n}}API.isPyProxy=function(e){return e instanceof P},globalThis.FinalizationRegistry?Module.finalizationRegistry=new FinalizationRegistry((([e,t])=>{t&&(t.leaked=!0,g(t));try{Module._Py_DecRef(e)}catch(e){API.fatal_error(e)}})):Module.finalizationRegistry={register(){},unregister(){}};let c,d,p=new Map;function y(e,{flags:t,cache:_,props:r,$$:n}={}){const o=void 0!==t?t:Module._pyproxy_getflags(e);-1===o&&Module._pythonexc2js();const l=Module.getPyProxyClass(o);let i;256&o?(i=function(){},Object.setPrototypeOf(i,l.prototype),delete i.length,delete i.name,i.prototype=void 0):i=Object.create(l.prototype);const a=!!n;a||(_||(_={cacheId:Hiwire.new_value(new Map),refcnt:0}),_.refcnt++,n={ptr:e,type:"PyProxy",cache:_,flags:o},Module.finalizationRegistry.register(n,[e,_],n),Module._Py_IncRef(e)),Object.defineProperty(i,"$$",{value:n}),r||(r={}),r=Object.assign({isBound:!1,captureThis:!1,boundArgs:[],roundtrip:!1},r),Object.defineProperty(i,"$$props",{value:r});let u=new Proxy(i,H);return a||c(u),u}function m(e){let t=e.$$.ptr;if(0===t)throw new Error(e.$$.destroyed_msg);return t}function f(e,t,_){const{captureThis:r,boundArgs:n,boundThis:o,isBound:l}=e.$$props;return r?l?[o].concat(n,_):[t].concat(_):l?n.concat(_):_}Module.pyproxy_alloc_map=p,Module.enable_pyproxy_allocation_tracing=function(){c=function(e){p.set(e,Error().stack)},d=function(e){p.delete(e)}},Module.disable_pyproxy_allocation_tracing=function(){c=function(e){},d=function(e){}},Module.disable_pyproxy_allocation_tracing(),Module.pyproxy_new=y;let M=new Map;function g(e){if(e&&(e.refcnt--,0===e.refcnt)){let t=Hiwire.pop_value(e.cacheId);for(let _ of t.values()){const t=Hiwire.pop_value(_);e.leaked||Module.pyproxy_destroy(t,"This borrowed attribute proxy was automatically destroyed in the process of destroying the proxy it was borrowed from. Try using the 'copy' method.",!0)}}}Module.getPyProxyClass=function(e){const t=[[1,b],[2,E],[4,v],[8,A],[16,F],[32,G],[2048,D],[512,T],[1024,O],[4096,B],[64,N],[128,J],[256,W]];let _=M.get(e);if(_)return _;let r={};for(let[_,n]of t)e&_&&Object.assign(r,Object.getOwnPropertyDescriptors(n.prototype));r.constructor=Object.getOwnPropertyDescriptor(P.prototype,"constructor"),Object.assign(r,Object.getOwnPropertyDescriptors({$$flags:e}));let n=Object.create(P.prototype,r);function o(){}return o.prototype=n,M.set(e,o),o},Module.PyProxy_getPtr=m,Module.pyproxy_destroy=function(e,t,_){if(0===e.$$.ptr)return;if(!_&&e.$$props.roundtrip)return;let r=m(e);Module.finalizationRegistry.unregister(e.$$),t=t||"Object has already been destroyed";let n,o=e.type;try{n=e.toString()}catch(e){if(e.pyodide_fatal_error)throw e}e.$$.ptr=0,t+=`\nThe object was of type "${o}" and `,t+=n?`had repr "${n}"`:"an error was raised when trying to generate its repr",e.$$.destroyed_msg=t,g(e.$$.cache);try{Module._Py_DecRef(r),d(e)}catch(e){API.fatal_error(e)}},Module.callPyObjectKwargs=function(e,t,_){let r=t.length,n=Object.keys(_),o=Object.values(_),l=n.length;t.push(...o);let i,a=Hiwire.new_value(t),u=Hiwire.new_value(n);try{i=Module.__pyproxy_apply(e,a,r,u,l)}catch(e){return void(API._skip_unwind_fatal_error?API.maybe_fatal_error(e):API.fatal_error(e))}finally{Hiwire.decref(a),Hiwire.decref(u)}0===i&&Module._pythonexc2js();let s=Hiwire.pop_value(i);return s&&"coroutine"===s.type&&s._ensure_future&&s._ensure_future(),s},Module.callPyObject=function(e,t){return Module.callPyObjectKwargs(e,t,{})};class P{constructor(){throw new TypeError("PyProxy is not a constructor")}get[Symbol.toStringTag](){return"PyProxy"}get type(){let e=m(this);return Hiwire.pop_value(Module.__pyproxy_type(e))}toString(){let e,t=m(this);try{e=Module.__pyproxy_repr(t)}catch(e){API.fatal_error(e)}return 0===e&&Module._pythonexc2js(),Hiwire.pop_value(e)}destroy(e={}){e=Object.assign({message:"",destroyRoundtrip:!0},e);const{message:t,destroyRoundtrip:_}=e;Module.pyproxy_destroy(this,t,_)}copy(){return y(m(this),{flags:this.$$flags,cache:this.$$.cache,props:this.$$props})}toJs({depth:e=-1,pyproxies:t,create_pyproxies:_=!0,dict_converter:r,default_converter:n}={}){let o,l,i=m(this),a=0,u=0;l=_?t?Hiwire.new_value(t):Hiwire.new_value([]):0,r&&(a=Hiwire.new_value(r)),n&&(u=Hiwire.new_value(n));try{o=Module._python2js_custom(i,e,l,a,u)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(l),Hiwire.decref(a),Hiwire.decref(u)}return 0===o&&Module._pythonexc2js(),Hiwire.pop_value(o)}supportsLength(){return!!(1&this.$$flags)}supportsGet(){return!!(2&this.$$flags)}supportsSet(){return!!(4&this.$$flags)}supportsHas(){return!!(8&this.$$flags)}isIterable(){return!!(48&this.$$flags)}isIterator(){return!!(32&this.$$flags)}isAwaitable(){return!!(64&this.$$flags)}isBuffer(){return!!(128&this.$$flags)}isCallable(){return!!(256&this.$$flags)}}t([s("supportsLength() is deprecated. Use `instanceof pyodide.ffi.PyProxyWithLength` instead.")],P.prototype,"supportsLength",null),t([s("supportsGet() is deprecated. Use `instanceof pyodide.ffi.PyProxyWithGet` instead.")],P.prototype,"supportsGet",null),t([s("supportsSet() is deprecated. Use `instanceof pyodide.ffi.PyProxyWithSet` instead.")],P.prototype,"supportsSet",null),t([s("supportsHas() is deprecated. Use `instanceof pyodide.ffi.PyProxyWithHas` instead.")],P.prototype,"supportsHas",null),t([s("isIterable() is deprecated. Use `instanceof pyodide.ffi.PyIterable` instead.")],P.prototype,"isIterable",null),t([s("isIterator() is deprecated. Use `instanceof pyodide.ffi.PyIterator` instead.")],P.prototype,"isIterator",null),t([s("isAwaitable() is deprecated. Use `instanceof pyodide.ffi.PyAwaitable` instead.")],P.prototype,"isAwaitable",null),t([s("isBuffer() is deprecated. Use `instanceof pyodide.ffi.PyBuffer` instead.")],P.prototype,"isBuffer",null),t([s("isCallable() is deprecated. Use `instanceof pyodide.ffi.PyCallable` instead.")],P.prototype,"isCallable",null);class h extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(1&e.$$flags)}}class b{get length(){let e,t=m(this);try{e=Module._PyObject_Size(t)}catch(e){API.fatal_error(e)}return-1===e&&Module._pythonexc2js(),e}}class w extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(2&e.$$flags)}}class E{get(e){let t,_=m(this),r=Hiwire.new_value(e);try{t=Module.__pyproxy_getitem(_,r)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(r)}if(0===t){if(!Module._PyErr_Occurred())return;Module._pythonexc2js()}return Hiwire.pop_value(t)}}class S extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(4&e.$$flags)}}class v{set(e,t){let _,r=m(this),n=Hiwire.new_value(e),o=Hiwire.new_value(t);try{_=Module.__pyproxy_setitem(r,n,o)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(n),Hiwire.decref(o)}-1===_&&Module._pythonexc2js()}delete(e){let t,_=m(this),r=Hiwire.new_value(e);try{t=Module.__pyproxy_delitem(_,r)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(r)}-1===t&&Module._pythonexc2js()}}class x extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(8&e.$$flags)}}class A{has(e){let t,_=m(this),r=Hiwire.new_value(e);try{t=Module.__pyproxy_contains(_,r)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(r)}return-1===t&&Module._pythonexc2js(),1===t}}class k extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(48&e.$$flags)}}class F{[Symbol.iterator](){let e,t=m(this),_={};try{e=Module._PyObject_GetIter(t)}catch(e){API.fatal_error(e)}0===e&&Module._pythonexc2js();let r=function*(e,t){try{for(;;){const t=Module.__pyproxy_iter_next(e);if(0===t)break;yield Hiwire.pop_value(t)}}catch(e){API.fatal_error(e)}finally{Module.finalizationRegistry.unregister(t),Module._Py_DecRef(e)}Module._PyErr_Occurred()&&Module._pythonexc2js()}(e,_);return Module.finalizationRegistry.register(r,[e,void 0],_),r}}class I extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(1536&e.$$flags)}}class T{[Symbol.asyncIterator](){let e,t=m(this),r={};try{e=Module._PyObject_GetAIter(t)}catch(e){API.fatal_error(e)}0===e&&Module._pythonexc2js();let n=function(e,t){return function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,o=r.apply(e,t||[]),l=[];return n={},i("next"),i("throw"),i("return"),n[Symbol.asyncIterator]=function(){return this},n;function i(e){o[e]&&(n[e]=function(t){return new Promise((function(_,r){l.push([e,t,_,r])>1||a(e,t)}))})}function a(e,t){try{(r=o[e](t)).value instanceof _?Promise.resolve(r.value.v).then(u,s):c(l[0][2],r)}catch(e){c(l[0][3],e)}var r}function u(e){a("next",e)}function s(e){a("throw",e)}function c(e,t){e(t),l.shift(),l.length&&a(l[0][0],l[0][1])}}(this,arguments,(function*(){try{for(;;){let t,r;try{if(t=Module.__pyproxy_aiter_next(e),0===t)break;r=Hiwire.pop_value(t)}catch(e){API.fatal_error(e)}try{yield yield _(yield _(r))}catch(e){if(e&&"object"==typeof e&&"StopAsyncIteration"===e.type)return yield _(void 0);throw e}finally{r.destroy()}}}finally{Module.finalizationRegistry.unregister(t),Module._Py_DecRef(e)}Module._PyErr_Occurred()&&Module._pythonexc2js()}))}(e,r);return Module.finalizationRegistry.register(n,[e,void 0],r),n}}class C extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(32&e.$$flags)}}class G{[Symbol.iterator](){return this}next(e){let t,_,r=Hiwire.new_value(e),n=stackSave(),o=stackAlloc(4);try{t=Module.__pyproxyGen_Send(m(this),r,o)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(r)}let l=HEAPU32[0+(o>>2)];return stackRestore(n),-1===t&&Module._pythonexc2js(),_=0===t,{done:_,value:Hiwire.pop_value(l)}}}class L extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(2048&e.$$flags)}}class D{throw(e){let t,_,r=Hiwire.new_value(e),n=stackSave(),o=stackAlloc(4);try{t=Module.__pyproxyGen_throw(m(this),r,o)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(r)}let l=HEAPU32[0+(o>>2)];return stackRestore(n),-1===t&&Module._pythonexc2js(),_=0===t,{done:_,value:Hiwire.pop_value(l)}}return(e){let t,_,r=Hiwire.new_value(e),n=stackSave(),o=stackAlloc(4);try{t=Module.__pyproxyGen_return(m(this),r,o)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(r)}let l=HEAPU32[0+(o>>2)];return stackRestore(n),-1===t&&Module._pythonexc2js(),_=0===t,{done:_,value:Hiwire.pop_value(l)}}}class U extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(1024&e.$$flags)}}class O{[Symbol.asyncIterator](){return this}async next(e){let t,_=Hiwire.new_value(e);try{t=Module.__pyproxyGen_asend(m(this),_)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(_)}0===t&&Module._pythonexc2js();const r=Hiwire.pop_value(t);let n;try{n=await r}catch(e){if(e&&"object"==typeof e&&"StopAsyncIteration"===e.type)return{done:!0,value:n};throw e}finally{r.destroy()}return{done:!1,value:n}}}class j extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(4096&e.$$flags)}}class B{async throw(e){let t,_=Hiwire.new_value(e);try{t=Module.__pyproxyGen_athrow(m(this),_)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(_)}0===t&&Module._pythonexc2js();const r=Hiwire.pop_value(t);let n;try{n=await r}catch(e){if(e&&"object"==typeof e){if("StopAsyncIteration"===e.type)return{done:!0,value:n};if("GeneratorExit"===e.type)return{done:!0,value:n}}throw e}finally{r.destroy()}return{done:!1,value:n}}async return(e){let t;try{t=Module.__pyproxyGen_areturn(m(this))}catch(e){API.fatal_error(e)}0===t&&Module._pythonexc2js();const _=Hiwire.pop_value(t);let r;try{r=await _}catch(t){if(t&&"object"==typeof t){if("StopAsyncIteration"===t.type)return{done:!0,value:r};if("GeneratorExit"===t.type)return{done:!0,value:e}}throw t}finally{_.destroy()}return{done:!1,value:r}}}let H={isExtensible:()=>!0,has:(e,t)=>!!Reflect.has(e,t)||"symbol"!=typeof t&&(t.startsWith("$")&&(t=t.slice(1)),function(e,t){let _,r=m(e),n=Hiwire.new_value(t);try{_=Module.__pyproxy_hasattr(r,n)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(n)}return-1===_&&Module._pythonexc2js(),0!==_}(e,t)),get(e,t){if(t in e||"symbol"==typeof t)return Reflect.get(e,t);t.startsWith("$")&&(t=t.slice(1));let _=function(e,t){let _,r=m(e),n=Hiwire.new_value(t),o=e.$$.cache.cacheId;try{_=Module.__pyproxy_getattr(r,n,o)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(n)}return 0===_&&Module._PyErr_Occurred()&&Module._pythonexc2js(),_}(e,t);return 0!==_?Hiwire.pop_value(_):void 0},set(e,t,_){let r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.writable)throw new TypeError(`Cannot set read only field '${t}'`);return"symbol"==typeof t?Reflect.set(e,t,_):(t.startsWith("$")&&(t=t.slice(1)),function(e,t,_){let r,n=m(e),o=Hiwire.new_value(t),l=Hiwire.new_value(_);try{r=Module.__pyproxy_setattr(n,o,l)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(o),Hiwire.decref(l)}-1===r&&Module._pythonexc2js()}(e,t,_),!0)},deleteProperty(e,t){let _=Object.getOwnPropertyDescriptor(e,t);if(_&&!_.writable)throw new TypeError(`Cannot delete read only field '${t}'`);return"symbol"==typeof t?Reflect.deleteProperty(e,t):(t.startsWith("$")&&(t=t.slice(1)),function(e,t){let _,r=m(e),n=Hiwire.new_value(t);try{_=Module.__pyproxy_delattr(r,n)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(n)}-1===_&&Module._pythonexc2js()}(e,t),!_||!!_.configurable)},ownKeys(e){let t,_=m(e);try{t=Module.__pyproxy_ownKeys(_)}catch(e){API.fatal_error(e)}0===t&&Module._pythonexc2js();let r=Hiwire.pop_value(t);return r.push(...Reflect.ownKeys(e)),r},apply:(e,t,_)=>e.apply(t,_)};class R extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(64&e.$$flags)}}class N{_ensure_future(){if(this.$$.promise)return this.$$.promise;let e,t,_,r=m(this),n=new Promise(((_,r)=>{e=_,t=r})),o=Hiwire.new_value(e),l=Hiwire.new_value(t);try{_=Module.__pyproxy_ensure_future(r,o,l)}catch(e){API.fatal_error(e)}finally{Hiwire.decref(l),Hiwire.decref(o)}return-1===_&&Module._pythonexc2js(),this.$$.promise=n,this.destroy(),n}then(e,t){return this._ensure_future().then(e,t)}catch(e){return this._ensure_future().catch(e)}finally(e){return this._ensure_future().finally(e)}}class z extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(256&e.$$flags)}}class W{apply(e,t){return t=f(this,e,t=function(...e){return e}.apply(void 0,t)),Module.callPyObject(m(this),t)}call(e,...t){return t=f(this,e,t),Module.callPyObject(m(this),t)}callKwargs(...e){if(0===e.length)throw new TypeError("callKwargs requires at least one argument (the key word argument object)");let t=e.pop();if(void 0!==t.constructor&&"Object"!==t.constructor.name)throw new TypeError("kwargs argument is not an object");return Module.callPyObjectKwargs(m(this),e,t)}bind(e,...t){const{boundArgs:_,boundThis:r,isBound:n}=this.$$props;let o=e;n&&(o=r);let l=_.concat(t);const i=Object.assign({},this.$$props,{boundArgs:l,isBound:!0,boundThis:o}),a=this.$$;return y(m(this),{$$:a,flags:this.$$flags,props:i})}captureThis(){const e=Object.assign({},this.$$props,{captureThis:!0});return y(m(this),{$$:this.$$,flags:this.$$flags,props:e})}}W.prototype.prototype=Function.prototype;let V=new Map([["i8",Int8Array],["u8",Uint8Array],["u8clamped",Uint8ClampedArray],["i16",Int16Array],["u16",Uint16Array],["i32",Int32Array],["u32",Uint32Array],["i32",Int32Array],["u32",Uint32Array],["i64",globalThis.BigInt64Array],["u64",globalThis.BigUint64Array],["f32",Float32Array],["f64",Float64Array],["dataview",DataView]]);class q extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&!!(128&e.$$flags)}}class J{getBuffer(e){let t;if(e&&(t=V.get(e),void 0===t))throw new Error(`Unknown type ${e}`);let _,r=stackSave(),n=stackAlloc(HEAPU32[0+(Module._buffer_struct_size>>2)]),o=m(this);try{_=Module.__pyproxy_get_buffer(n,o)}catch(e){API.fatal_error(e)}-1===_&&Module._pythonexc2js();let l=HEAPU32[0+(n>>2)],i=HEAPU32[1+(n>>2)],a=HEAPU32[2+(n>>2)],u=!!HEAPU32[3+(n>>2)],s=HEAPU32[4+(n>>2)],c=HEAPU32[5+(n>>2)],d=Hiwire.pop_value(HEAPU32[6+(n>>2)]),p=Hiwire.pop_value(HEAPU32[7+(n>>2)]),y=HEAPU32[8+(n>>2)],f=!!HEAPU32[9+(n>>2)],M=!!HEAPU32[10+(n>>2)],g=Module.UTF8ToString(s);stackRestore(r);let P=!1;try{let e=!1;void 0===t&&([t,e]=Module.processBufferFormatString(g," In this case, you can pass an explicit type argument."));let _=parseInt(t.name.replace(/[^0-9]/g,""))/8||1;if(e&&_>1)throw new Error("Javascript has no native support for big endian buffers. In this case, you can pass an explicit type argument. For instance, `getBuffer('dataview')` will return a `DataView`which has native support for reading big endian data. Alternatively, toJs will automatically convert the buffer to little endian.");let r=a-i;if(0!==r&&(l%_!=0||i%_!=0||a%_!=0))throw new Error(`Buffer does not have valid alignment for a ${t.name}`);let n,o=r/_,s=(l-i)/_;n=0===r?new t:new t(HEAPU32.buffer,i,o);for(let e of p.keys())p[e]/=_;return P=!0,Object.create(X.prototype,Object.getOwnPropertyDescriptors({offset:s,readonly:u,format:g,itemsize:c,ndim:d.length,nbytes:r,shape:d,strides:p,data:n,c_contiguous:f,f_contiguous:M,_view_ptr:y,_released:!1}))}finally{if(!P)try{Module._PyBuffer_Release(y),Module._PyMem_Free(y)}catch(e){API.fatal_error(e)}}}}class K extends P{static[Symbol.hasInstance](e){return API.isPyProxy(e)&&"dict"===e.type}}class X{constructor(){throw new TypeError("PyBufferView is not a constructor")}release(){if(!this._released){try{Module._PyBuffer_Release(this._view_ptr),Module._PyMem_Free(this._view_ptr)}catch(e){API.fatal_error(e)}this._released=!0,this.data=null}}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var Y,Z,Q,$,ee={exports:{}},te={exports:{}};te.exports=function(){function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function t(e){return function(){return this[e]}}var _=["isConstructor","isEval","isNative","isToplevel"],r=["columnNumber","lineNumber"],n=["fileName","functionName","source"],o=_.concat(r,n,["args"],["evalOrigin"]);function l(t){if(t)for(var _=0;_-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),_=t.match(/ (\(.+\)$)/);t=_?t.replace(_[0],""):t;var r=this.extractLocation(_?_[1]:t),n=_&&t||void 0,o=["eval",""].indexOf(r[0])>-1?void 0:r[0];return new Y({functionName:n,fileName:o,lineNumber:r[1],columnNumber:r[2],source:e})}),this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter((function(e){return!e.match($)}),this).map((function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Y({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,_=e.match(t),r=_&&_[1]?_[1]:void 0,n=this.extractLocation(e.replace(t,""));return new Y({functionName:r,fileName:n[0],lineNumber:n[1],columnNumber:n[2],source:e})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,_=e.message.split("\n"),r=[],n=2,o=_.length;n/,"$2").replace(/\([^)]*\)/g,"")||void 0;n.match(/\(([^)]*)\)/)&&(t=n.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var l=void 0===t||"[arguments not available]"===t?void 0:t.split(",");return new Y({functionName:o,args:l,fileName:r[0],lineNumber:r[1],columnNumber:r[2],source:e})}),this)}});var _e=ee.exports;function re(e){if("string"==typeof e)e=new Error(e);else if(e&&"object"==typeof e&&"ExitStatus"===e.name){let t=e.status;(e=new de(e.message)).status=t}else if("object"!=typeof e||null===e||"string"!=typeof e.stack||"string"!=typeof e.message){let t=`A value of type ${typeof e} with tag ${API.getTypeTag(e)} was thrown as an error!`;try{t+=`\nString interpolation of the thrown value gives """${e}""".`}catch(e){t+="\nString interpolation of the thrown value fails."}try{t+=`\nThe thrown value's toString method returns """${e.toString()}""".`}catch(e){t+="\nThe thrown value's toString method fails."}e=new Error(t)}return e}class ne extends Error{constructor(e,t,_){t||(t=`The exception is an object of type ${e} at address ${_} which does not inherit from std::exception`),super(t),this.ty=e}}function oe(e){let[t,_]=Module.getExceptionMessage(e);return new ne(t,_,e)}Object.defineProperty(ne.prototype,"name",{get(){return`${this.constructor.name} ${this.ty}`}}),Tests.convertCppException=oe;let le=!1;API.fatal_error=function(e){if(e&&e.pyodide_fatal_error)return;if(le)return console.error("Recursive call to fatal_error. Inner error was:"),void console.error(e);(e="number"==typeof e?oe(e):re(e)).pyodide_fatal_error=!0,le=!0;const t=e instanceof de;t||(console.error("Pyodide has suffered a fatal error. Please report this to the Pyodide maintainers."),console.error("The cause of the fatal error was:"),API.inTestHoist?(console.error(e.toString()),console.error(e.stack)):console.error(e));try{t||Module._dump_traceback();let _=`Pyodide already ${t?"exited":"fatally failed"} and can no longer be used.`;for(let e of Reflect.ownKeys(API.public_api))"string"==typeof e&&e.startsWith("_")||"version"===e||Object.defineProperty(API.public_api,e,{enumerable:!0,configurable:!0,get:()=>{throw new Error(_)}});API.on_fatal&&API.on_fatal(e)}catch(e){console.error("Another error occurred while handling the fatal error:"),console.error(e)}throw e},API.maybe_fatal_error=function(e){if(!e||"unwind"!=e)return API.fatal_error(e)};let ie=[];function ae(e){if(!e)return!1;const t=e.fileName||"";if(t.includes("wasm-function"))return!0;if(!t.includes("pyodide.asm.js"))return!1;let _=e.functionName||"";return _.startsWith("Object.")&&(_=_.slice(7)),!(_ in API.public_api)||"PythonError"===_||(e.functionName=_,!1)}API.capture_stderr=function(){ie=[];const e=Module.FS;e.createDevice("/dev","capture_stderr",null,(e=>ie.push(e))),e.closeStream(2),e.open("/dev/capture_stderr",1)},API.restore_stderr=function(){const e=Module.FS;return e.closeStream(2),e.unlink("/dev/capture_stderr"),e.open("/dev/stderr",1),(new TextDecoder).decode(new Uint8Array(ie))},API.fatal_loading_error=function(...e){let t=e.join(" ");throw Module._PyErr_Occurred()&&(API.capture_stderr(),Module._PyErr_Print(),t+="\n"+API.restore_stderr()),new ce(t)},Module.handle_js_error=function(e){if(e&&e.pyodide_fatal_error)throw e;if(e instanceof Module._PropagatePythonError)return;let t,_,r=!1;e instanceof API.PythonError&&(r=Module._restore_sys_last_exception(e.__error_address));try{t=_e.parse(e)}catch(e){_=!0}if(_&&(e=re(e)),!r){let t=Hiwire.new_value(e),_=Module._JsProxy_create(t);Module._set_error(_),Module._Py_DecRef(_),Hiwire.decref(t)}if(!_){if(function(e){if(!ae(e))return!1;const t=e.functionName;return"PythonError"===t||"new_error"===t}(t[0]))for(;ae(t[0]);)t.shift();for(const e of t){if(ae(e))break;const t=Module.stringToNewUTF8(e.functionName||"???"),_=Module.stringToNewUTF8(e.fileName||"???.js");Module.__PyTraceback_Add(t,_,e.lineNumber),Module._free(t),Module._free(_)}}};class ue extends Error{constructor(e,t,_){const r=Error.stackTraceLimit;Error.stackTraceLimit=1/0,super(t),Error.stackTraceLimit=r,this.type=e,this.__error_address=_}}API.PythonError=ue;class se extends Error{constructor(){super("If you are seeing this message, an internal Pyodide error has occurred. Please report it to the Pyodide maintainers.")}}class ce extends Error{}class de extends Error{}[se,ce,de,ue].forEach((function(e){Object.defineProperty(e.prototype,"name",{value:e.name})})),Module._PropagatePythonError=se,API.errorConstructors=new Map([EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter((e=>e)).map((e=>[e.constructor.name,e]))),API.deserializeError=function(e,t,_){const r=new(API.errorConstructors.get(e)||Error)(t);return API.errorConstructors.has(e)||(r.name=e),r.message=t,r.stack=_,r};const pe={PyProxy:P,PyProxyWithLength:h,PyProxyWithGet:w,PyProxyWithSet:S,PyProxyWithHas:x,PyDict:K,PyIterable:k,PyAsyncIterable:I,PyIterator:C,PyAsyncIterator:U,PyGenerator:L,PyAsyncGenerator:j,PyAwaitable:R,PyCallable:z,PyBuffer:q,PyBufferView:X,PythonError:ue},ye=e=>{"canvas"!==e.id&&console.warn("If you are using canvas element for SDL library, it should have id 'canvas' to work properly."),Module.canvas=e},me=()=>Module.canvas,fe={setCanvas2D:ye,getCanvas2D:me,setCanvas3D:e=>{ye(e)},getCanvas3D:()=>me()};function Me(){let e=Promise.resolve();return async function(){const t=e;let _;return e=new Promise((e=>_=e)),await t,_}}const ge=Me();async function Pe(e,t,_,r){const n=await ge(),o=function(e,t,_){const r=e.substring(0,e.lastIndexOf("/"));let n=t||[];n=n.concat(API.defaultLdLibraryPath,[r]);const o=e=>{for(const t of n){const _=Module.PATH.join2(t,e);if(null!==Module.FS.findObject(_))return _}return e};let l=e=>Module.FS.readFile(o(e));return void 0!==_&&(l=e=>_(o(e))),{findObject:(e,t)=>Module.FS.findObject(o(e),t),readFile:l}}(e,_,r);try{if(await Module.loadDynamicLibrary(e,{loadAsync:!0,nodelete:!0,allowUndefined:!0,global:t,fs:o}),t&&Module.PATH.isAbs(e)){const t=Module.PATH.basename(e);Module.LDSO.loadedLibsByName[t]||(Module.LDSO.loadedLibsByName[t]=Module.LDSO.loadedLibsByName[e])}}catch(t){if(t&&t.message&&t.message.includes("need to see wasm magic number"))return void console.warn(`Failed to load dynlib ${e}. We probably just tried to load a linux .so file or something.`);throw t}finally{n()}}async function he(e,t){const _=`${API.sitepackages}/${e.file_name.split("-")[0]}.libs`,r=(e=>{let t={};return(..._)=>{let r=_[0];if(r in t)return t[r];{let _=e(r);return t[r]=_,_}}})(Module.FS.readFile);let n;if(e.shared_library)n=t.map((e=>({path:e,global:!0})));else{const _=function(e,t){let _=Module.FS.readFile;void 0!==t&&(_=t);const r=new Set;return e.forEach((e=>{const t=_(e);Module.getDylinkMetadata(t).neededDynlibs.forEach((e=>{r.add(e)}))})),r}(t,r);n=t.map((t=>({path:t,global:_.has(Module.PATH.basename(t))||!!e.shared_library})))}n.sort(((e,t)=>Number(t.global)-Number(e.global)));for(const{path:e,global:t}of n)await Pe(e,t,[_],r)}let be;API.loadDynlib=Pe,API.loadDynlibsFromPackage=he,API.packageIndexReady=async function(e){let t;if(r){await async function(){if(!r)return;if((await import("url")).default,l=await import("fs/promises"),n=globalThis.fetch?fetch:(await import("node-fetch")).default,(await import("vm")).default,o=await import("path"),"undefined"!=typeof require)return;const e={fs:await import("fs"),crypto:await import("crypto"),ws:await import("ws"),child_process:await import("child_process")};globalThis.require=function(t){return e[t]}}();const _=await l.readFile(e);t=JSON.parse(_)}else{let _=await fetch(e);t=await _.json()}if(!t.packages)throw new Error("Loaded repodata.json does not contain the expected key 'packages'.");API.repodata_info=t.info,API.repodata_packages=t.packages,API.repodata_unvendored_stdlibs_and_test=[],API._import_name_to_package_name=new Map;for(let e of Object.keys(API.repodata_packages)){const t=API.repodata_packages[e];for(let _ of t.imports)API._import_name_to_package_name.set(_,e);"cpython_module"===t.package_type&&API.repodata_unvendored_stdlibs_and_test.push(e)}API.repodata_unvendored_stdlibs=API.repodata_unvendored_stdlibs_and_test.filter((e=>"test"!==e))}(API.config.lockFileURL),API.setCdnUrl=function(e){be=e};const we=/^.*?([^\/]*)\.whl$/;function Ee(e){let t=we.exec(e);if(t)return t[1].toLowerCase().split("-").slice(0,-4).join("-")}function Se(){let e=()=>{},t=()=>{};const _=new Promise(((_,r)=>{e=_,t=r}));return _.resolve=e,_.reject=t,_}function ve(e,t){if(e=e.toLowerCase(),t.has(e))return;const _=API.repodata_packages[e];if(!_)throw new Error(`No known package with name '${e}'`);if(t.set(e,{name:e,channel:"default channel",depends:_.depends,installPromise:void 0,done:Se()}),void 0===Ie[e])for(let e of _.depends)ve(e,t)}async function xe(e,t,_,n,o=!0){if(void 0!==Ie[e])return;const u=t.get(e);try{const e=await async function(e,t,_=!0){let n,o,u;if("default channel"===t){if(!(e in API.repodata_packages))throw new Error(`Internal error: no entry for package named ${e}`);n=API.repodata_packages[e].file_name,o=i(n,API.config.indexURL),u=API.package_loader.sub_resource_hash(API.repodata_packages[e].sha256)}else o=t,u=void 0;_||(u=void 0);try{return await a(o,u)}catch(e){if(!r||"default channel"!==t)throw e}console.log(`Didn't find package ${n} locally, attempting to load from ${be}`);let s=await a(be+n);return console.log(`Package ${n} loaded from ${be}, caching the wheel in node_modules for future use.`),await l.writeFile(o,s),s}(u.name,u.channel,o),n=u.depends.map((e=>t.has(e)?t.get(e).done:Promise.resolve()));await Promise.all(n),await async function(e,t,_){let r=API.repodata_packages[e];r||(r={file_name:".whl",shared_library:!1,depends:[],imports:[],install_dir:"site"});const n=r.file_name,o=API.package_loader.unpack_buffer.callKwargs({buffer:t,filename:n,target:r.install_dir,calculate_dynlibs:!0,installer:"pyodide.loadPackage",source:"default channel"===_?"pyodide":_});await he(r,o)}(u.name,e,u.channel),_.add(u.name),Ie[u.name]=u.channel}catch(t){n.set(e,t)}finally{u.done.resolve()}}const Ae=Me(),ke=u("Passing a messageCallback (resp. errorCallback) as the second (resp. third) argument to loadPackage is deprecated and will be removed in v0.24. Instead use:\n { messageCallback : callbackFunc }");async function Fe(e,t={checkIntegrity:!0},_){"function"==typeof t&&(ke(),t={messageCallback:t,errorCallback:_});const r=t.messageCallback||console.log,n=t.errorCallback||console.error;e instanceof P&&(e=e.toJs()),Array.isArray(e)||(e=[e]);const o=function(e,t){const _=new Map;for(let r of e){const e=Ee(r);if(void 0===e){ve(r,_);continue}const n=r;_.has(e)&&_.get(e).channel!==n?t(`Loading same package ${e} from ${n} and ${_.get(e).channel}`):_.set(e,{name:e,channel:n,depends:[],installPromise:void 0,done:Se()})}return _}(e,n);for(const[e,t]of o){const _=Ie[e];void 0!==_&&(o.delete(e),_===t.channel||"default channel"===t.channel?r(`${e} already loaded from ${_}`):n(`URI mismatch, attempting to load package ${e} from ${t.channel} while it is already loaded from ${_}. To override a dependency, load the custom package first.`))}if(0===o.size)return void r("No new packages to load");const l=[...o.keys()].join(", "),i=new Set,a=new Map,u=await Ae();try{r(`Loading ${l}`);for(const[e]of o)Ie[e]?o.delete(e):o.get(e).installPromise=xe(e,o,i,a,t.checkIntegrity);if(await Promise.all(Array.from(o.values()).map((({installPromise:e})=>e))),Module.reportUndefinedSymbols(),i.size>0&&r(`Loaded ${Array.from(i).join(", ")}`),a.size>0){r(`Failed to load ${Array.from(a.keys()).join(", ")}`);for(const[e,t]of a)n(`The following error occurred while loading ${e}:`),n(t.message)}API.importlib.invalidate_caches()}finally{u()}}let Ie={},Te=!1;const Ce={},Ge={},Le={};function De(){Te&&(FS.unlink("/dev/stdin"),FS.unlink("/dev/stdout"),FS.unlink("/dev/stderr"),Le.stdin?FS.symlink("/dev/tty","/dev/stdin"):FS.createDevice("/dev","stdin",Ce.get_char),Le.stdout?FS.symlink("/dev/tty","/dev/stdout"):FS.createDevice("/dev","stdout",null,Ce.put_char.bind(void 0,void 0)),Le.stderr?FS.symlink("/dev/tty","/dev/stderr"):FS.createDevice("/dev","stderr",null,Ge.put_char.bind(void 0,void 0)),FS.closeStream(0),FS.closeStream(1),FS.closeStream(2),FS.open("/dev/stdin",0),FS.open("/dev/stdout",1),FS.open("/dev/stderr",1))}function Ue(){Le.stdin=!1;const e=()=>{throw 0};Ce.get_char=e,Ge.get_char=e,De()}function Oe(e={}){if(e.stdin&&e.error)throw new TypeError("Both a stdin handler provided and the error argument was set");if(e.error)Ue();else{if(e.stdin){let t=e.autoEOF;t=void 0===t||t,Le.stdin=!!e.isatty;const _=function(e,t){let _=0,r=new Uint8Array(0),n=!1;return function(){try{if(_>=r.length){if(n)return n=!1,null;let o=e();if(null==o)return null;if("number"==typeof o)return o;if("string"==typeof o)o.endsWith("\n")||(o+="\n"),r=Ne.encode(o);else if(ArrayBuffer.isView(o)){if(1!==o.BYTES_PER_ELEMENT)throw new Error("Expected BYTES_PER_ELEMENT to be 1");r=o}else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(o))throw new Error("Expected result to be undefined, null, string, array buffer, or array buffer view");r=new Uint8Array(o)}if(0===r.length)return null;t&&(n=!0),_=0}return r[_++]}catch(e){throw console.error("Error thrown in stdin:"),console.error(e),e}}}(e.stdin,t);return Ce.get_char=_,Ge.get_char=_,void De()}!function(){if(r){const e=256,t=Buffer.alloc(e),_=require("fs");Oe({stdin:function(){let r;try{r=_.readSync(process.stdin.fd,t,0,e,-1)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}return 0===r?null:t.subarray(0,r)},isatty:require("tty").isatty(process.stdin.fd)})}else Ue()}()}}function je(){Be(r?{raw:e=>process.stdout.write(Buffer.from([e])),isatty:require("tty").isatty(process.stdout.fd)}:{batched:e=>console.log(e)})}function Be(e={}){if(e.raw&&e.batched)throw new TypeError("Both a batched handler and a raw handler provided");if(!e.raw&&e.isatty)throw new TypeError("Cannot set isatty to true unless a raw handler is provided");return e.raw?(Le.stdout=!!e.isatty,Object.assign(Ce,We(e.raw)),void De()):e.batched?(Le.stdout=!1,Object.assign(Ce,Ve(e.batched)),void De()):void je()}function He(){Re(r?{raw:e=>process.stderr.write(Buffer.from([e])),isatty:require("tty").isatty(process.stderr.fd)}:{batched:e=>console.warn(e)})}function Re(e={}){if(e.raw&&e.batched)throw new TypeError("Both a batched handler and a raw handler provided");if(!e.raw&&e.isatty)throw new TypeError("Cannot set isatty to true unless a raw handler is provided");return e.raw?(Le.stderr=!!e.isatty,Object.assign(Ge,We(e.raw)),void De()):e.batched?(Le.stderr=!1,Object.assign(Ge,Ve(e.batched)),void De()):void He()}API.initializeStreams=function(e,t,_){Oe({stdin:e}),t?Be({batched:t}):je(),_?Re({batched:_}):He();const r=FS.makedev(5,0),n=FS.makedev(6,0);TTY.register(r,Ce),TTY.register(n,Ge),Te=!0,De()};const Ne=new TextEncoder,ze=new TextDecoder;function We(e){return{put_char(t,_){e(_)},fsync(){}}}function Ve(e){let t=[];return{put_char(_,r){null===r||10===r?(e(ze.decode(new Uint8Array(t))),t=[]):0!==r&&t.push(r)},fsync(_){t&&t.length>0&&(e(ze.decode(new Uint8Array(t))),t=[])}}}API.loadBinaryFile=a,API.rawRun=function(e){const t=Module.stringToNewUTF8(e);Module.API.capture_stderr();let _=Module._PyRun_SimpleString(t);return Module._free(t),[_,Module.API.restore_stderr().trim()]},API.runPythonInternal=function(e){return API._pyodide._base.eval_code(e,API.runPythonInternal_dict)};const qe=u("Passing a messageCallback (resp. errorCallback) as the second (resp. third) argument to loadPackageFromImports is deprecated and will be removed in v0.24. Instead use:\n { messageCallback : callbackFunc }");API.saveState=()=>API.pyodide_py._state.save_state(),API.restoreState=e=>API.pyodide_py._state.restore_state(e);class Je{static async loadPackagesFromImports(e,t={checkIntegrity:!0},_){"function"==typeof t&&(qe(),t={messageCallback:t,errorCallback:_});let r,n=API.pyodide_code.find_imports(e);try{r=n.toJs()}finally{n.destroy()}if(0===r.length)return;let o=API._import_name_to_package_name,l=new Set;for(let e of r)o.has(e)&&l.add(o.get(e));l.size&&await Fe(Array.from(l),t)}static runPython(e,t={}){return t.globals||(t.globals=API.globals),API.pyodide_code.eval_code(e,t.globals,t.locals)}static async runPythonAsync(e,t={}){return t.globals||(t.globals=API.globals),await API.pyodide_code.eval_code_async(e,t.globals,t.locals)}static registerJsModule(e,t){API.pyodide_ffi.register_js_module(e,t)}static unregisterJsModule(e){API.pyodide_ffi.unregister_js_module(e)}static toPy(e,{depth:t,defaultConverter:_}={depth:-1}){switch(typeof e){case"string":case"number":case"boolean":case"bigint":case"undefined":return e}if(!e||API.isPyProxy(e))return e;let r=0,n=0,o=0;try{r=Hiwire.new_value(e);try{n=Module.js2python_convert(r,{depth:t,defaultConverter:_})}catch(e){throw e instanceof Module._PropagatePythonError&&Module._pythonexc2js(),e}if(Module._JsProxy_Check(n))return e;o=Module._python2js(n),0===o&&Module._pythonexc2js()}finally{Hiwire.decref(r),Module._Py_DecRef(n)}return Hiwire.pop_value(o)}static pyimport(e){return API.importlib.import_module(e)}static unpackArchive(e,t,_={}){if(!ArrayBuffer.isView(e)&&"[object ArrayBuffer]"!==API.getTypeTag(e))throw new TypeError("Expected argument 'buffer' to be an ArrayBuffer or an ArrayBuffer view");API.typedArrayAsUint8Array(e);let r=_.extractDir;API.package_loader.unpack_buffer.callKwargs({buffer:e,format:t,extract_dir:r,installer:"pyodide.unpackArchive"})}static async mountNativeFS(e,t){if("FileSystemDirectoryHandle"!==t.constructor.name)throw new TypeError("Expected argument 'fileSystemHandle' to be a FileSystemDirectoryHandle");return null==Module.FS.findObject(e)&&Module.FS.mkdirTree(e),Module.FS.mount(Module.FS.filesystems.NATIVEFS_ASYNC,{fileSystemHandle:t},e),await new Promise(((e,t)=>Module.FS.syncfs(!0,e))),{syncfs:async()=>new Promise(((e,t)=>Module.FS.syncfs(!1,e)))}}static registerComlink(e){API._Comlink=e}static setInterruptBuffer(e){Module.HEAP8[Module._Py_EMSCRIPTEN_SIGNAL_HANDLING]=!!e,Module.Py_EmscriptenSignalBuffer=e}static checkInterrupt(){Module.__PyErr_CheckSignals()&&Module._pythonexc2js()}static isPyProxy(e){return console.warn("pyodide.isPyProxy() is deprecated. Use `instanceof pyodide.ffi.PyProxy` instead."),this.isPyProxy=API.isPyProxy,API.isPyProxy(e)}static get PyBuffer(){return console.warn("pyodide.PyBuffer is deprecated. Use `pyodide.ffi.PyBufferView` instead."),Object.defineProperty(this,"PyBuffer",{value:X}),X}static get PyProxyBuffer(){return console.warn("pyodide.PyProxyBuffer is deprecated. Use `pyodide.ffi.PyBuffer` instead."),Object.defineProperty(this,"PyProxyBuffer",{value:q}),q}static get PythonError(){return console.warn("pyodide.PythonError is deprecated. Use `pyodide.ffi.PythonError` instead."),Object.defineProperty(this,"PythonError",{value:ue}),ue}}Je.version="0.23.2",Je.loadPackage=Fe,Je.loadedPackages=Ie,Je.ffi=pe,Je.setStdin=Oe,Je.setStdout=Be,Je.setStderr=Re,Je.globals={},Je.FS={},Je.PATH={},Je.canvas=fe,Je.ERRNO_CODES={},Je.pyodide_py={},API.makePublicAPI=function(){let e=Object.getOwnPropertyDescriptors(Je);delete e.prototype;const t=Object.create({},e);return API.public_api=t,t.FS=Module.FS,t.PATH=Module.PATH,t.ERRNO_CODES=Module.ERRNO_CODES,t._module=Module,t._api=API,t},e.PyodideAPI=Je,Object.defineProperty(e,"__esModule",{value:!0})}({})}console_error_obj.sig="vi",new_error.sig="iiii",fail_test.sig="v",hiwire_to_bool.sig="ii",hiwire_init.sig="i",hiwire_incref.sig="ii",hiwire_decref.sig="vi",hiwire_int.sig="ii",hiwire_int_from_digits.sig="iii",hiwire_double.sig="id",hiwire_string_utf8.sig="ii",hiwire_throw_error.sig="vi",hiwire_call.sig="iii",hiwire_call_OneArg.sig="iii",hiwire_call_bound.sig="iiii",hiwire_HasMethod.sig="iii",hiwire_CallMethodString.sig="iiii",hiwire_CallMethod.sig="iiii",hiwire_CallMethod_NoArgs.sig="iii",hiwire_CallMethod_OneArg.sig="iiii",hiwire_construct.sig="iii",hiwire_get_length_helper.sig="ii",hiwire_get_length_string.sig="ii",hiwire_get_bool.sig="ii",hiwire_is_function.sig="ii",hiwire_is_generator.sig="ii",hiwire_is_async_generator.sig="ii",hiwire_is_comlink_proxy.sig="ii",hiwire_is_promise.sig="ii",hiwire_resolve_promise.sig="ii",hiwire_to_string.sig="ii",hiwire_typeof.sig="ii",hiwire_constructor_name.sig="ii",hiwire_less_than.sig="iii",hiwire_less_than_equal.sig="iii",hiwire_equal.sig="iii",hiwire_not_equal.sig="iii",hiwire_greater_than.sig="iii",hiwire_greater_than_equal.sig="iii",hiwire_reversed_iterator.sig="ii",hiwire_assign_to_ptr.sig="iii",hiwire_assign_from_ptr.sig="iii",hiwire_read_from_file.sig="iii",hiwire_write_to_file.sig="iii",hiwire_into_file.sig="iii",hiwire_get_buffer_info.sig="viiiii",JsArray_Check.sig="ii",JsArray_New.sig="i",JsArray_Push.sig="iii",JsArray_Push_unchecked.sig="iii",JsArray_Get.sig="iii",JsArray_Set.sig="iiii",JsArray_Delete.sig="iii",JsArray_Splice.sig="iii",JsArray_slice.sig="iiiiii",JsArray_slice_assign.sig="iiiiiiii",JsObject_New.sig="i",JsObject_GetString.sig="iii",JsObject_SetString.sig="iiii",JsObject_DeleteString.sig="iii",JsObject_Dir.sig="ii",JsObject_Entries.sig="ii",JsObject_Keys.sig="ii",JsObject_Values.sig="ii",JsString_InternFromCString.sig="ii",JsMap_New.sig="i",JsMap_Set.sig="iiii",JsSet_New.sig="i",JsSet_Add.sig="iii",js2python_immutable.sig="ii",js2python.sig="ii",js2python_convert.sig="iiii",js2python_init.sig="i",JsProxy_GetIter_js.sig="ii",handle_next_result_js.sig="iiii",JsException_new_helper.sig="iiii",JsProxy_GetAsyncIter_js.sig="ii",_agen_handle_result_js.sig="iiiiii",JsArray_index_helper.sig="iiiii",JsArray_count_helper.sig="iii",JsArray_reverse_helper.sig="ii",JsProxy_subscript_js.sig="iii",JsMap_GetIter_js.sig="ii",JsMap_clear_js.sig="ii",JsObjMap_GetIter_js.sig="ii",JsObjMap_length_js.sig="ii",JsObjMap_subscript_js.sig="iii",JsObjMap_ass_subscript_js.sig="iiii",JsObjMap_contains_js.sig="iii",get_async_js_call_done_callback.sig="ii",wrap_generator.sig="iii",wrap_async_generator.sig="iii",JsBuffer_DecodeString_js.sig="iii",JsDoubleProxy_unwrap_helper.sig="ii",JsProxy_compute_typeflags.sig="ii",pyproxy_Check.sig="ii",pyproxy_AsPyObject.sig="ii",destroy_proxies.sig="vii",destroy_proxy.sig="vii",proxy_cache_get.sig="iii",proxy_cache_set.sig="viii",array_to_js.sig="iii",pyproxy_new_ex.sig="iiii",pyproxy_new.sig="ii",create_once_callable.sig="ii",create_promise_handles.sig="iiii",_python2js_buffer_inner.sig="iiiiiiii",python2js_buffer_init.sig="i",_python2js_addto_postprocess_list.sig="viiii",_python2js_handle_postprocess_list.sig="vii",_python2js_ucs1.sig="iii",_python2js_ucs2.sig="iii",_python2js_ucs4.sig="iii",_python2js_add_to_cache.sig="iiii",_python2js_destroy_cache.sig="vi",_python2js_cache_lookup.sig="iii",_JsArray_PushEntry_helper.sig="iiii",_JsArray_PostProcess_helper.sig="iii",python2js__default_converter.sig="iii",python2js_custom__create_jscontext.sig="iiiii",destroy_proxies_js.sig="ii";const API=Module.API,Hiwire={},Tests={};API.tests=Tests,API.version="0.23.2",Module.hiwire=Hiwire;const getTypeTag=e=>Object.prototype.toString.call(e);function descr_set_trampoline_call(e,t,_,r){return wasmTable.get(e)(t,_,r)}function descr_get_trampoline_call(e,t,_){return wasmTable.get(e)(t,_)}function _PyCFunctionWithKeywords_TrampolineCall(e,t,_,r){return wasmTable.get(e)(t,_,r)}function _PyImport_InitFunc_TrampolineCall(e){return wasmTable.get(e)()}function _Py_emscripten_runtime(){var e,t=lengthBytesUTF8(e="object"==typeof navigator?navigator.userAgent:"object"==typeof process?"Node.js ".concat(process.version):"UNKNOWN")+1,_=_malloc(t);return _&&stringToUTF8(e,_,t),_}function _Py_CheckEmscriptenSignals_Helper(){if(!Module.Py_EmscriptenSignalBuffer)return 0;try{let e=Module.Py_EmscriptenSignalBuffer[0];return Module.Py_EmscriptenSignalBuffer[0]=0,e}catch(e){return 0}}function unbox_small_structs(e){for(var t=HEAPU16[0+(e+6>>1)];13===t;){var _=HEAPU32[0+(e+8>>2)],r=HEAPU32[0+(_>>2)];if(0===r){t=0;break}if(0!==HEAPU32[1+(_>>2)])break;e=r,t=HEAPU16[0+(r+6>>1)]}return[e,t]}function ffi_call_js(e,t,_,r){HEAPU32[0+(e>>2)];var n=HEAPU32[1+(e>>2)],o=HEAPU32[6+(e>>2)],l=HEAPU32[2+(e>>2)],i=unbox_small_structs(HEAPU32[3+(e>>2)]),a=(i[0],i[1]),u=stackSave(),s=u,c=[],d=!1;if(15===a)throw new Error("complex ret marshalling nyi");if(a<0||a>15)throw new Error("Unexpected rtype "+a);4!==a&&13!==a||(c.push(_),d=!0);for(var p=0;p>2)+p],m=(M=unbox_small_structs(HEAPU32[(l>>2)+p]))[0];switch(g=M[1]){case 1:case 10:case 9:case 14:c.push(HEAPU32[0+(y>>2)]);break;case 2:c.push(HEAPF32[0+(y>>2)]);break;case 3:c.push(HEAPF64[0+(y>>3)]);break;case 5:c.push(HEAPU8[y+0]);break;case 6:c.push(HEAP8[y+0]);break;case 7:c.push(HEAPU16[0+(y>>1)]);break;case 8:c.push(HEAP16[0+(y>>1)]);break;case 11:case 12:c.push(HEAPU64[0+(y>>3)]);break;case 4:c.push(HEAPU64[0+(y>>3)]),c.push(HEAPU64[1+(y>>3)]);break;case 13:s-=P=HEAPU32[0+(m>>2)],s&=~(HEAPU16[0+(m+4>>1)]-1),HEAP8.subarray(s,s+P).set(HEAP8.subarray(y,y+P)),c.push(s);break;case 15:throw new Error("complex marshalling nyi");default:throw new Error("Unexpected type "+g)}}if(o!=n){var f=[];for(p=n-1;p>=o;p--){var M,g;y=HEAPU32[(r>>2)+p],m=(M=unbox_small_structs(HEAPU32[(l>>2)+p]))[0];switch(g=M[1]){case 5:case 6:s-=1,HEAPU8[(s&=-1)+0]=HEAPU8[y+0];break;case 7:case 8:s-=2,HEAPU16[0+((s&=-2)>>1)]=HEAPU16[0+(y>>1)];break;case 1:case 9:case 10:case 14:case 2:s-=4,HEAPU32[0+((s&=-4)>>2)]=HEAPU32[0+(y>>2)];break;case 3:case 11:case 12:s-=8,HEAPU32[0+((s&=-8)>>2)]=HEAPU32[0+(y>>2)],HEAPU32[1+(s>>2)]=HEAPU32[1+(y>>2)];break;case 4:s-=16,HEAPU32[0+((s&=-8)>>2)]=HEAPU32[0+(y>>2)],HEAPU32[1+(s>>2)]=HEAPU32[1+(y>>2)],HEAPU32[2+(s>>2)]=HEAPU32[2+(y>>2)],HEAPU32[3+(s>>2)]=HEAPU32[3+(y>>2)];break;case 13:s-=4,s&=-4,f.push([s,y,HEAPU32[0+(m>>2)],HEAPU16[0+(m+4>>1)]]);break;case 15:throw new Error("complex arg marshalling nyi");default:throw new Error("Unexpected argtype "+g)}}c.push(s);for(p=0;p>2)]=s}}stackRestore(s),stackAlloc(0);var w=getWasmTableEntry(t).apply(null,c);if(stackRestore(u),!d)switch(a){case 0:break;case 1:case 9:case 10:case 14:HEAPU32[0+(_>>2)]=w;break;case 2:HEAPF32[0+(_>>2)]=w;break;case 3:HEAPF64[0+(_>>3)]=w;break;case 5:case 6:HEAPU8[_+0]=w;break;case 7:case 8:HEAPU16[0+(_>>1)]=w;break;case 11:case 12:HEAPU64[0+(_>>3)]=w;break;case 15:throw new Error("complex ret marshalling nyi");default:throw new Error("Unexpected rtype "+a)}}function ffi_closure_alloc_js(e,t){var _=_malloc(e),r=getEmptyTableSlot();return HEAPU32[0+(t>>2)]=r,HEAPU32[0+(_>>2)]=r,_}function ffi_closure_free_js(e){var t=HEAPU32[0+(e>>2)];freeTableIndexes.push(t),_free(e)}function ffi_prep_closure_loc_js(e,t,_,r,n){HEAPU32[0+(t>>2)];var o,l=HEAPU32[1+(t>>2)],i=HEAPU32[6+(t>>2)],a=HEAPU32[2+(t>>2)],u=unbox_small_structs(HEAPU32[3+(t>>2)]),s=(u[0],u[1]),c=!1;switch(s){case 0:o="v";break;case 13:case 4:o="vi",c=!0;break;case 1:case 5:case 6:case 7:case 8:case 9:case 10:case 14:o="i";break;case 2:o="f";break;case 3:o="d";break;case 11:case 12:o="j";break;case 15:throw new Error("complex ret marshalling nyi");default:throw new Error("Unexpected rtype "+s)}for(var d=[],p=[],y=0;y>2)+y]),f=m[0],M=m[1];d.push(M),p.push([HEAPU32[0+(f>>2)],HEAPU16[0+(f+4>>1)]])}for(y=0;y>2)+s]=n,HEAPU8[n+0]=y;break;case 7:case 8:n-=2,n&=-4,HEAPU32[(u>>2)+s]=n,HEAPU16[0+(n>>1)]=y;break;case 1:case 9:case 10:case 14:n-=4,n&=-4,HEAPU32[(u>>2)+s]=n,HEAPU32[0+(n>>2)]=y;break;case 13:n-=m,n&=~(f-1),HEAP8.subarray(n,n+m).set(HEAP8.subarray(y,y+m)),HEAPU32[(u>>2)+s]=n;break;case 2:n-=4,n&=-4,HEAPU32[(u>>2)+s]=n,HEAPF32[0+(n>>2)]=y;break;case 3:n-=8,n&=-8,HEAPU32[(u>>2)+s]=n,HEAPF64[0+(n>>3)]=y;break;case 11:case 12:n-=8,n&=-8,HEAPU32[(u>>2)+s]=n,HEAPU64[0+(n>>3)]=y;break;case 4:n-=16,n&=-8,HEAPU32[(u>>2)+s]=n,HEAPU64[0+(n>>3)]=y,y=_[a++],HEAPU64[1+(n>>3)]=y}}for(var M=_[_.length-1];s>2)];n-=m,n&=~(f-1),HEAP8.subarray(n,n+m).set(HEAP8.subarray(h,h+m)),HEAPU32[(u>>2)+s]=n}else HEAPU32[(u>>2)+s]=M;M+=4}if(stackRestore(n),stackAlloc(0),getWasmTableEntry(HEAPU32[2+(e>>2)])(HEAPU32[1+(e>>2)],t,u,HEAPU32[3+(e>>2)]),stackRestore(r),!c)switch(o[0]){case"i":return HEAPU32[0+(t>>2)];case"j":return HEAPU64[0+(t>>3)];case"d":return HEAPF64[0+(t>>3)];case"f":return HEAPF32[0+(t>>2)]}}),o)}catch(e){return 1}return setWasmTableEntry(n,g),HEAPU32[1+(e>>2)]=t,HEAPU32[2+(e>>2)]=_,HEAPU32[3+(e>>2)]=r,0}function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}API.getTypeTag=getTypeTag,pyodide_js_init(),descr_set_trampoline_call.sig="iiiii",descr_get_trampoline_call.sig="iiii",_PyCFunctionWithKeywords_TrampolineCall.sig="iiiii",_PyImport_InitFunc_TrampolineCall.sig="ii",_Py_emscripten_runtime.sig="i",_Py_CheckEmscriptenSignals_Helper.sig="i",ffi_call_js.sig="viiii",ffi_closure_alloc_js.sig="iii",ffi_closure_free_js.sig="vi",ffi_prep_closure_loc_js.sig="iiiiii",Module.ExitStatus=ExitStatus;var GOT={};Module.GOT=GOT;var CurrentModuleWeakSymbols=new Set([]);Module.CurrentModuleWeakSymbols=CurrentModuleWeakSymbols;var GOTHandler={get:function(e,t){var _=GOT[t];return _||(_=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),CurrentModuleWeakSymbols.has(t)||(_.required=!0),_}};function callRuntimeCallbacks(e){for(;e.length>0;)e.shift()(Module)}Module.GOTHandler=GOTHandler,Module.callRuntimeCallbacks=callRuntimeCallbacks;var wasmTableMirror=[];function getWasmTableEntry(e){var t=wasmTableMirror[e];return t||(e>=wasmTableMirror.length&&(wasmTableMirror.length=e+1),wasmTableMirror[e]=t=wasmTable.get(e)),t}function exception_decRef(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&getWasmTableEntry(t)(e.excPtr),___cxa_free_exception(e.excPtr)}}function ExceptionInfo(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){HEAPU32[this.ptr+4>>2]=e},this.get_type=function(){return HEAPU32[this.ptr+4>>2]},this.set_destructor=function(e){HEAPU32[this.ptr+8>>2]=e},this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]},this.set_refcount=function(e){HEAP32[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,HEAP8[this.ptr+12|0]=e},this.get_caught=function(){return 0!=HEAP8[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,HEAP8[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=HEAP8[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=e+1},this.release_ref=function(){var e=HEAP32[this.ptr>>2];return HEAP32[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){HEAPU32[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]},this.get_exception_ptr=function(){if(___cxa_is_pointer_type(this.get_type()))return HEAPU32[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function ___cxa_decrement_exception_refcount(e){e&&exception_decRef(new ExceptionInfo(e))}function decrementExceptionRefcount(e){___cxa_decrement_exception_refcount(e)}function withStackSave(e){var t=stackSave(),_=e();return stackRestore(t),_}function demangle(e){return demangle.recursionGuard=1+(0|demangle.recursionGuard),demangle.recursionGuard>1?e:withStackSave((function(){try{var t=e;t.startsWith("__Z")&&(t=t.substr(1));var _=lengthBytesUTF8(t)+1,r=stackAlloc(_);stringToUTF8(t,r,_);var n=stackAlloc(4),o=___cxa_demangle(r,0,0,n);if(0===HEAP32[n>>2]&&o)return UTF8ToString(o)}catch(e){}finally{_free(o),demangle.recursionGuard<2&&--demangle.recursionGuard}return e}))}function getDylinkMetadata(e){var t=0,_=0;function r(){for(var _=0,r=1;;){var n=e[t++];if(_+=(127&n)*r,r*=128,!(128&n))break}return _}function n(){var _=r();return UTF8ArrayToString(e,(t+=_)-_,_)}function o(e,t){if(e)throw new Error(t)}var l="dylink.0";if(e instanceof WebAssembly.Module){var i=WebAssembly.Module.customSections(e,l);0===i.length&&(l="dylink",i=WebAssembly.Module.customSections(e,l)),o(0===i.length,"need dylink section"),_=(e=new Uint8Array(i[0])).length}else{o(!(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),o(0!==e[8],"need the dylink section to be first"),t=9;var a=r();_=t+a,l=n()}var u={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if("dylink"==l){u.memorySize=r(),u.memoryAlign=r(),u.tableSize=r(),u.tableAlign=r();for(var s=r(),c=0;c>2],o=HEAPU32[_>>2],l=UTF8ToString(n);return _free(n),o&&(r=UTF8ToString(o),_free(o)),[l,r]}))}function getExceptionMessage(e){return getExceptionMessageCommon(e)}function getValue(e,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":case"i8":return HEAP8[e|0];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP64[e>>3];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];case"*":return HEAPU32[e>>2];default:abort("invalid type for getValue: "+t)}}function exception_addRef(e){e.add_ref()}function ___cxa_increment_exception_refcount(e){e&&exception_addRef(new ExceptionInfo(e))}function incrementExceptionRefcount(e){___cxa_increment_exception_refcount(e)}function asmjsMangle(e){return 0==e.indexOf("dynCall_")||["stackAlloc","stackSave","stackRestore","getTempRet0","setTempRet0"].includes(e)?e:"_"+e}function isSymbolDefined(e){var t=wasmImports[e];return!(!t||t.stub)}function mergeLibSymbols(e,t){for(var _ in e){if(!e.hasOwnProperty(_))continue;const t=t=>{isSymbolDefined(t)||(wasmImports[t]=e[_])};t(_);const r="__main_argc_argv";"main"==_&&t(r),_==r&&t("main"),_.startsWith("dynCall_")&&!Module.hasOwnProperty(_)&&(Module[_]=e[_])}}function newDSO(e,t,_){var r={refcount:1/0,name:e,module:_,global:!0};return LDSO.loadedLibsByName[e]=r,null!=t&&(LDSO.loadedLibsByHandle[t]=r),r}Module.wasmTableMirror=wasmTableMirror,Module.getWasmTableEntry=getWasmTableEntry,Module.exception_decRef=exception_decRef,Module.ExceptionInfo=ExceptionInfo,Module.___cxa_decrement_exception_refcount=___cxa_decrement_exception_refcount,___cxa_decrement_exception_refcount.sig="vp",Module.decrementExceptionRefcount=decrementExceptionRefcount,Module.withStackSave=withStackSave,Module.demangle=demangle,Module.getDylinkMetadata=getDylinkMetadata,Module.getExceptionMessageCommon=getExceptionMessageCommon,Module.getExceptionMessage=getExceptionMessage,Module.getValue=getValue,Module.exception_addRef=exception_addRef,Module.___cxa_increment_exception_refcount=___cxa_increment_exception_refcount,___cxa_increment_exception_refcount.sig="vp",Module.incrementExceptionRefcount=incrementExceptionRefcount,Module.asmjsMangle=asmjsMangle,Module.isSymbolDefined=isSymbolDefined,Module.mergeLibSymbols=mergeLibSymbols,Module.newDSO=newDSO;var LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init:()=>newDSO("__main__",0,wasmImports)};Module.LDSO=LDSO;var ___heap_base=9186144;function zeroMemory(e,t){return HEAPU8.fill(0,e,e+t),e}function getMemory(e){if(runtimeInitialized)return zeroMemory(_malloc(e),e);var t=___heap_base,_=t+e+15&-16;return ___heap_base=_,GOT.__heap_base.value=_,t}function isInternalSym(e){return["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm"].includes(e)}function uleb128Encode(e,t){e<128?t.push(e):t.push(e%128|128,e>>7)}function sigToWasmTypes(e){for(var t={i:"i32",j:"i32",f:"f32",d:"f64",p:"i32"},_={parameters:[],results:"v"==e[0]?[]:[t[e[0]]]},r=1;r>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length,moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return t||(t=moduleExports[e]),t}tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var proxyHandler={get:function(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub)return wasmImports[t];var _;t in e||(e[t]=function(){return _||(_=resolveSymbol(t)),_.apply(null,arguments)});return e[t]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(instance){function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&-1!=body.indexOf("$"+arity);arity++)args.push("$"+arity);args=args.join(",");var func="("+args+" ) => { "+body+"};";ASM_CONSTS[start]=eval(func)}if(updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols(),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;startt(new Uint8Array(e))),_)}));if(!readBinary)throw new Error(e+": file not found, and synchronous loading of external files is not available");return readBinary(e)}function o(){if(void 0!==preloadedWasm&&preloadedWasm[e]){var r=preloadedWasm[e];return t.loadAsync?Promise.resolve(r):r}return t.loadAsync?n(e).then((function(e){return loadWebAssemblyModule(e,t,_)})):loadWebAssemblyModule(n(e),t,_)}function l(t){r.global&&mergeLibSymbols(t,e),r.module=t}return(r=newDSO(e,_,"loading")).refcount=t.nodelete?1/0:1,r.global=t.global,t.loadAsync?o().then((function(e){return l(e),!0})):(l(o()),!0)}function reportUndefinedSymbols(){for(var e in GOT)if(0==GOT[e].value){var t=resolveGlobalSymbol(e,!0).sym;if(!t&&!GOT[e].required)continue;if("function"==typeof t)GOT[e].value=addFunction(t,t.sig);else{if("number"!=typeof t)throw new Error("bad export type for `"+e+"`: "+typeof t);GOT[e].value=t}}}function preloadDylibs(){dynamicLibraries.length?(addRunDependency("preloadDylibs"),dynamicLibraries.reduce((function(e,t){return e.then((function(){return loadDynamicLibrary(t,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})}))}),Promise.resolve()).then((function(){reportUndefinedSymbols(),removeRunDependency("preloadDylibs")}))):reportUndefinedSymbols()}function setValue(e,t,_="i8"){switch(_.endsWith("*")&&(_="*"),_){case"i1":case"i8":HEAP8[e|0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;case"*":HEAPU32[e>>2]=t;break;default:abort("invalid type for setValue: "+_)}}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function demangleAll(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=demangle(e);return e===t?e:t+" ["+e+"]"}))}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+="\n"+Module.extraStackTrace()),demangleAll(e)}function ___assert_fail(e,t,_,r){abort("Assertion failed: "+UTF8ToString(e)+", at: "+[t?UTF8ToString(t):"unknown filename",_,r?UTF8ToString(r):"unknown function"])}function ___call_sighandler(e,t){getWasmTableEntry(e)(t)}Module.freeTableIndexes=freeTableIndexes,Module.getEmptyTableSlot=getEmptyTableSlot,Module.setWasmTableEntry=setWasmTableEntry,Module.addFunction=addFunction,Module.updateGOT=updateGOT,Module.relocateExports=relocateExports,Module.resolveGlobalSymbol=resolveGlobalSymbol,Module.alignMemory=alignMemory,Module.dynCall=dynCall,Module.createInvokeFunction=createInvokeFunction,Module.loadWebAssemblyModule=loadWebAssemblyModule,Module.loadDynamicLibrary=loadDynamicLibrary,Module.reportUndefinedSymbols=reportUndefinedSymbols,Module.preloadDylibs=preloadDylibs,Module.setValue=setValue,Module.jsStackTrace=jsStackTrace,Module.demangleAll=demangleAll,Module.stackTrace=stackTrace,Module.___assert_fail=___assert_fail,___assert_fail.sig="vppip",Module.___call_sighandler=___call_sighandler,___call_sighandler.sig="vpi";var exceptionCaught=[];Module.exceptionCaught=exceptionCaught;var uncaughtExceptionCount=0;function ___cxa_begin_catch(e){var t=new ExceptionInfo(e);return t.get_caught()||(t.set_caught(!0),uncaughtExceptionCount--),t.set_rethrown(!1),exceptionCaught.push(t),exception_addRef(t),t.get_exception_ptr()}function ___cxa_current_primary_exception(){if(!exceptionCaught.length)return 0;var e=exceptionCaught[exceptionCaught.length-1];return exception_addRef(e),e.excPtr}Module.uncaughtExceptionCount=uncaughtExceptionCount,Module.___cxa_begin_catch=___cxa_begin_catch,___cxa_begin_catch.sig="pp",Module.___cxa_current_primary_exception=___cxa_current_primary_exception;var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0),exception_decRef(exceptionCaught.pop()),exceptionLast=0}function ___resumeException(e){throw exceptionLast||(exceptionLast=e),e}function ___cxa_find_matching_catch(){var e=exceptionLast;if(!e)return setTempRet0(0),0;var t=new ExceptionInfo(e);t.set_adjusted_ptr(e);var _=t.get_type();if(!_)return setTempRet0(0),e;for(var r=0;r"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var _=0,r=e.length-1;r>=0;r--){var n=e[r];"."===n?e.splice(r,1):".."===n?(e.splice(r,1),_++):_&&(e.splice(r,1),_--)}if(t)for(;_;_--)e.unshift("..");return e},normalize:e=>{var t=PATH.isAbs(e),_="/"===e.substr(-1);return(e=PATH.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&_&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=PATH.splitPath(e),_=t[0],r=t[1];return _||r?(r&&(r=r.substr(0,r.length-1)),_+r):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=PATH.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return PATH.normalize(e.join("/"))},join2:(e,t)=>PATH.normalize(e+"/"+t)};function getRandomDevice(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(ENVIRONMENT_IS_NODE)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>abort("randomDevice")}Module.PATH=PATH,Module.getRandomDevice=getRandomDevice;var PATH_FS={resolve:function(){for(var e="",t=!1,_=arguments.length-1;_>=-1&&!t;_--){var r=_>=0?arguments[_]:FS.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");if(!r)return"";e=r+"/"+e,t=PATH.isAbs(r)}return(t?"/":"")+(e=PATH.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function _(e){for(var t=0;t=0&&""===e[_];_--);return t>_?[]:e.slice(t,_-t+1)}e=PATH_FS.resolve(e).substr(1),t=PATH_FS.resolve(t).substr(1);for(var r=_(e.split("/")),n=_(t.split("/")),o=Math.min(r.length,n.length),l=o,i=0;i0?_:lengthBytesUTF8(e)+1,n=new Array(r),o=stringToUTF8Array(e,n,0,n.length);return t&&(n.length=o),n}Module.PATH_FS=PATH_FS,Module.intArrayFromString=intArrayFromString;var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){TTY.ttys[e]={input:[],output:[],ops:t},FS.registerDevice(e,TTY.stream_ops)},stream_ops:{open:function(e){var t=TTY.ttys[e.node.rdev];if(!t)throw new FS.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,t,_,r,n){if(!e.tty||!e.tty.ops.get_char)throw new FS.ErrnoError(60);for(var o=0,l=0;l0?_.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=intArrayFromString(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(out(UTF8ArrayToString(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(out(UTF8ArrayToString(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(err(UTF8ArrayToString(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(err(UTF8ArrayToString(e.output,0)),e.output=[])}}};function mmapAlloc(e){e=alignMemory(e,65536);var t=_emscripten_builtin_memalign(65536,e);return t?zeroMemory(t,e):0}Module.TTY=TTY,Module.mmapAlloc=mmapAlloc;var MEMFS={ops_table:null,mount:function(e){return MEMFS.createNode(null,"/",16895,0)},createNode:function(e,t,_,r){if(FS.isBlkdev(_)||FS.isFIFO(_))throw new FS.ErrnoError(63);MEMFS.ops_table||(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 n=FS.createNode(e,t,_,r);return FS.isDir(n.mode)?(n.node_ops=MEMFS.ops_table.dir.node,n.stream_ops=MEMFS.ops_table.dir.stream,n.contents={}):FS.isFile(n.mode)?(n.node_ops=MEMFS.ops_table.file.node,n.stream_ops=MEMFS.ops_table.file.stream,n.usedBytes=0,n.contents=null):FS.isLink(n.mode)?(n.node_ops=MEMFS.ops_table.link.node,n.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(n.mode)&&(n.node_ops=MEMFS.ops_table.chrdev.node,n.stream_ops=MEMFS.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var _=e.contents?e.contents.length:0;if(!(_>=t)){t=Math.max(t,_*(_<1048576?2:1.125)>>>0),0!=_&&(t=Math.max(t,256));var r=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(r.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var _=e.contents;e.contents=new Uint8Array(t),_&&e.contents.set(_.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=FS.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,FS.isDir(e.mode)?t.size=4096:FS.isFile(e.mode)?t.size=e.usedBytes:FS.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&MEMFS.resizeFileStorage(e,t.size)},lookup:function(e,t){throw FS.genericErrors[44]},mknod:function(e,t,_,r){return MEMFS.createNode(e,t,_,r)},rename:function(e,t,_){if(FS.isDir(e.mode)){var r;try{r=FS.lookupNode(t,_)}catch(e){}if(r)for(var n in r.contents)throw new FS.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=_,t.contents[_]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var _=FS.lookupNode(e,t);for(var r in _.contents)throw new FS.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var _ in e.contents)e.contents.hasOwnProperty(_)&&t.push(_);return t},symlink:function(e,t,_){var r=MEMFS.createNode(e,t,41471,0);return r.link=_,r},readlink:function(e){if(!FS.isLink(e.mode))throw new FS.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,_,r,n){var o=e.node.contents;if(n>=e.node.usedBytes)return 0;var l=Math.min(e.node.usedBytes-n,r);if(l>8&&o.subarray)t.set(o.subarray(n,n+l),_);else for(var i=0;i0||_+t{assert(_,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(_)),n&&removeRunDependency(n)}),(t=>{if(!_)throw'Loading data file "'+e+'" failed.';_()})),n&&addRunDependency(n)}Module.MEMFS=MEMFS,Module.asyncLoad=asyncLoad;var IDBFS={dbs:{},indexedDB:()=>{if("undefined"!=typeof indexedDB)return indexedDB;var e=null;return"object"==typeof window&&(e=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB),assert(e,"IDBFS used, but indexedDB not supported"),e},DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function(e){return MEMFS.mount.apply(null,arguments)},syncfs:(e,t,_)=>{IDBFS.getLocalSet(e,((r,n)=>{if(r)return _(r);IDBFS.getRemoteSet(e,((e,r)=>{if(e)return _(e);var o=t?r:n,l=t?n:r;IDBFS.reconcile(o,l,_)}))}))},quit:()=>{Object.values(IDBFS.dbs).forEach((e=>e.close())),IDBFS.dbs={}},getDB:(e,t)=>{var _,r=IDBFS.dbs[e];if(r)return t(null,r);try{_=IDBFS.indexedDB().open(e,IDBFS.DB_VERSION)}catch(e){return t(e)}if(!_)return t("Unable to connect to IndexedDB");_.onupgradeneeded=e=>{var t,_=e.target.result,r=e.target.transaction;(t=_.objectStoreNames.contains(IDBFS.DB_STORE_NAME)?r.objectStore(IDBFS.DB_STORE_NAME):_.createObjectStore(IDBFS.DB_STORE_NAME)).indexNames.contains("timestamp")||t.createIndex("timestamp","timestamp",{unique:!1})},_.onsuccess=()=>{r=_.result,IDBFS.dbs[e]=r,t(null,r)},_.onerror=e=>{t(this.error),e.preventDefault()}},getLocalSet:(e,t)=>{var _={};function r(e){return"."!==e&&".."!==e}function n(e){return t=>PATH.join2(e,t)}for(var o=FS.readdir(e.mountpoint).filter(r).map(n(e.mountpoint));o.length;){var l,i=o.pop();try{l=FS.stat(i)}catch(e){return t(e)}FS.isDir(l.mode)&&o.push.apply(o,FS.readdir(i).filter(r).map(n(i))),_[i]={timestamp:l.mtime}}return t(null,{type:"local",entries:_})},getRemoteSet:(e,t)=>{var _={};IDBFS.getDB(e.mountpoint,((e,r)=>{if(e)return t(e);try{var n=r.transaction([IDBFS.DB_STORE_NAME],"readonly");n.onerror=e=>{t(this.error),e.preventDefault()},n.objectStore(IDBFS.DB_STORE_NAME).index("timestamp").openKeyCursor().onsuccess=e=>{var n=e.target.result;if(!n)return t(null,{type:"remote",db:r,entries:_});_[n.primaryKey]={timestamp:n.key},n.continue()}}catch(e){return t(e)}}))},loadLocalEntry:(e,t)=>{var _,r;try{r=FS.lookupPath(e).node,_=FS.stat(e)}catch(e){return t(e)}return FS.isDir(_.mode)?t(null,{timestamp:_.mtime,mode:_.mode}):FS.isFile(_.mode)?(r.contents=MEMFS.getFileDataAsTypedArray(r),t(null,{timestamp:_.mtime,mode:_.mode,contents:r.contents})):t(new Error("node type not supported"))},storeLocalEntry:(e,t,_)=>{try{if(FS.isDir(t.mode))FS.mkdirTree(e,t.mode);else{if(!FS.isFile(t.mode))return _(new Error("node type not supported"));FS.writeFile(e,t.contents,{canOwn:!0})}FS.chmod(e,t.mode),FS.utime(e,t.timestamp,t.timestamp)}catch(e){return _(e)}_(null)},removeLocalEntry:(e,t)=>{try{var _=FS.stat(e);FS.isDir(_.mode)?FS.rmdir(e):FS.isFile(_.mode)&&FS.unlink(e)}catch(e){return t(e)}t(null)},loadRemoteEntry:(e,t,_)=>{var r=e.get(t);r.onsuccess=e=>{_(null,e.target.result)},r.onerror=e=>{_(this.error),e.preventDefault()}},storeRemoteEntry:(e,t,_,r)=>{try{var n=e.put(_,t)}catch(e){return void r(e)}n.onsuccess=()=>{r(null)},n.onerror=e=>{r(this.error),e.preventDefault()}},removeRemoteEntry:(e,t,_)=>{var r=e.delete(t);r.onsuccess=()=>{_(null)},r.onerror=e=>{_(this.error),e.preventDefault()}},reconcile:(e,t,_)=>{var r=0,n=[];Object.keys(e.entries).forEach((function(_){var o=e.entries[_],l=t.entries[_];l&&o.timestamp.getTime()==l.timestamp.getTime()||(n.push(_),r++)}));var o=[];if(Object.keys(t.entries).forEach((function(t){e.entries[t]||(o.push(t),r++)})),!r)return _(null);var l=!1,i=("remote"===e.type?e.db:t.db).transaction([IDBFS.DB_STORE_NAME],"readwrite"),a=i.objectStore(IDBFS.DB_STORE_NAME);function u(e){if(e&&!l)return l=!0,_(e)}i.onerror=e=>{u(this.error),e.preventDefault()},i.oncomplete=e=>{l||_(null)},n.sort().forEach((e=>{"local"===t.type?IDBFS.loadRemoteEntry(a,e,((t,_)=>{if(t)return u(t);IDBFS.storeLocalEntry(e,_,u)})):IDBFS.loadLocalEntry(e,((t,_)=>{if(t)return u(t);IDBFS.storeRemoteEntry(a,e,_,u)}))})),o.sort().reverse().forEach((e=>{"local"===t.type?IDBFS.removeLocalEntry(e,u):IDBFS.removeRemoteEntry(a,e,u)}))}};Module.IDBFS=IDBFS;var ERRNO_CODES={};Module.ERRNO_CODES=ERRNO_CODES;var NODEFS={isWindows:!1,staticInit:()=>{NODEFS.isWindows=!!process.platform.match(/^win/);var e=process.binding("constants");e.fs&&(e=e.fs),NODEFS.flagsForNodeMap={1024:e.O_APPEND,64:e.O_CREAT,128:e.O_EXCL,256:e.O_NOCTTY,0:e.O_RDONLY,2:e.O_RDWR,4096:e.O_SYNC,512:e.O_TRUNC,1:e.O_WRONLY,131072:e.O_NOFOLLOW}},convertNodeCode:e=>{var t=e.code;return ERRNO_CODES[t]},mount:e=>NODEFS.createNode(null,"/",NODEFS.getMode(e.opts.root),0),createNode:(e,t,_,r)=>{if(!FS.isDir(_)&&!FS.isFile(_)&&!FS.isLink(_))throw new FS.ErrnoError(28);var n=FS.createNode(e,t,_);return n.node_ops=NODEFS.node_ops,n.stream_ops=NODEFS.stream_ops,n},getMode:e=>{var t;try{t=fs.lstatSync(e),NODEFS.isWindows&&(t.mode=t.mode|(292&t.mode)>>2)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return t.mode},realPath:e=>{for(var t=[];e.parent!==e;)t.push(e.name),e=e.parent;return t.push(e.mount.opts.root),t.reverse(),PATH.join.apply(null,t)},flagsForNode:e=>{e&=-2097153,e&=-2049,e&=-32769,e&=-524289,e&=-65537;var t=0;for(var _ in NODEFS.flagsForNodeMap)e&_&&(t|=NODEFS.flagsForNodeMap[_],e^=_);if(e)throw new FS.ErrnoError(28);return t},node_ops:{getattr:e=>{var t,_=NODEFS.realPath(e);try{t=fs.lstatSync(_)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return NODEFS.isWindows&&!t.blksize&&(t.blksize=4096),NODEFS.isWindows&&!t.blocks&&(t.blocks=(t.size+t.blksize-1)/t.blksize|0),{dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,size:t.size,atime:t.atime,mtime:t.mtime,ctime:t.ctime,blksize:t.blksize,blocks:t.blocks}},setattr:(e,t)=>{var _=NODEFS.realPath(e);try{if(void 0!==t.mode&&(fs.chmodSync(_,t.mode),e.mode=t.mode),void 0!==t.timestamp){var r=new Date(t.timestamp);fs.utimesSync(_,r,r)}void 0!==t.size&&fs.truncateSync(_,t.size)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},lookup:(e,t)=>{var _=PATH.join2(NODEFS.realPath(e),t),r=NODEFS.getMode(_);return NODEFS.createNode(e,t,r)},mknod:(e,t,_,r)=>{var n=NODEFS.createNode(e,t,_,r),o=NODEFS.realPath(n);try{FS.isDir(n.mode)?fs.mkdirSync(o,n.mode):fs.writeFileSync(o,"",{mode:n.mode})}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return n},rename:(e,t,_)=>{var r=NODEFS.realPath(e),n=PATH.join2(NODEFS.realPath(t),_);try{fs.renameSync(r,n)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}e.name=_},unlink:(e,t)=>{var _=PATH.join2(NODEFS.realPath(e),t);try{fs.unlinkSync(_)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},rmdir:(e,t)=>{var _=PATH.join2(NODEFS.realPath(e),t);try{fs.rmdirSync(_)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readdir:e=>{var t=NODEFS.realPath(e);try{return fs.readdirSync(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},symlink:(e,t,_)=>{var r=PATH.join2(NODEFS.realPath(e),t);try{fs.symlinkSync(_,r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readlink:e=>{var t=NODEFS.realPath(e);try{return t=fs.readlinkSync(t),t=nodePath.relative(nodePath.resolve(e.mount.opts.root),t)}catch(e){if(!e.code)throw e;if("UNKNOWN"===e.code)throw new FS.ErrnoError(28);throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}},stream_ops:{open:e=>{var t=NODEFS.realPath(e.node);try{FS.isFile(e.node.mode)&&(e.nfd=fs.openSync(t,NODEFS.flagsForNode(e.flags)))}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},close:e=>{try{FS.isFile(e.node.mode)&&e.nfd&&fs.closeSync(e.nfd)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},read:(e,t,_,r,n)=>{if(0===r)return 0;try{return fs.readSync(e.nfd,Buffer.from(t.buffer),_,r,n)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},write:(e,t,_,r,n)=>{try{return fs.writeSync(e.nfd,Buffer.from(t.buffer),_,r,n)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},llseek:(e,t,_)=>{var r=t;if(1===_)r+=e.position;else if(2===_&&FS.isFile(e.node.mode))try{r+=fs.fstatSync(e.nfd).size}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}if(r<0)throw new FS.ErrnoError(28);return r},mmap:(e,t,_,r,n)=>{if(!FS.isFile(e.node.mode))throw new FS.ErrnoError(43);var o=mmapAlloc(t);return NODEFS.stream_ops.read(e,HEAP8,o,t,_),{ptr:o,allocated:!0}},msync:(e,t,_,r,n)=>(NODEFS.stream_ops.write(e,t,0,r,_,!1),0)}};Module.NODEFS=NODEFS;var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(e){assert(ENVIRONMENT_IS_WORKER),WORKERFS.reader||(WORKERFS.reader=new FileReaderSync);var t=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0),_={};function r(e){for(var r=e.split("/"),n=t,o=0;o=e.node.size)return 0;var o=e.node.contents.slice(n,n+r),l=WORKERFS.reader.readAsArrayBuffer(o);return t.set(new Uint8Array(l),_),o.size},write:function(e,t,_,r,n){throw new FS.ErrnoError(29)},llseek:function(e,t,_){var r=t;if(1===_?r+=e.position:2===_&&FS.isFile(e.node.mode)&&(r+=e.node.size),r<0)throw new FS.ErrnoError(28);return r}}};Module.WORKERFS=WORKERFS;var PROXYFS={mount:function(e){return PROXYFS.createNode(null,"/",e.opts.fs.lstat(e.opts.root).mode,0)},createNode:function(e,t,_,r){if(!FS.isDir(_)&&!FS.isFile(_)&&!FS.isLink(_))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var n=FS.createNode(e,t,_);return n.node_ops=PROXYFS.node_ops,n.stream_ops=PROXYFS.stream_ops,n},realPath:function(e){for(var t=[];e.parent!==e;)t.push(e.name),e=e.parent;return t.push(e.mount.opts.root),t.reverse(),PATH.join.apply(null,t)},node_ops:{getattr:function(e){var t,_=PROXYFS.realPath(e);try{t=e.mount.opts.fs.lstat(_)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return{dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,size:t.size,atime:t.atime,mtime:t.mtime,ctime:t.ctime,blksize:t.blksize,blocks:t.blocks}},setattr:function(e,t){var _=PROXYFS.realPath(e);try{if(void 0!==t.mode&&(e.mount.opts.fs.chmod(_,t.mode),e.mode=t.mode),void 0!==t.timestamp){var r=new Date(t.timestamp);e.mount.opts.fs.utime(_,r,r)}void 0!==t.size&&e.mount.opts.fs.truncate(_,t.size)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},lookup:function(e,t){try{var _=PATH.join2(PROXYFS.realPath(e),t),r=e.mount.opts.fs.lstat(_).mode;return PROXYFS.createNode(e,t,r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},mknod:function(e,t,_,r){var n=PROXYFS.createNode(e,t,_,r),o=PROXYFS.realPath(n);try{FS.isDir(n.mode)?n.mount.opts.fs.mkdir(o,n.mode):n.mount.opts.fs.writeFile(o,"",{mode:n.mode})}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return n},rename:function(e,t,_){var r=PROXYFS.realPath(e),n=PATH.join2(PROXYFS.realPath(t),_);try{e.mount.opts.fs.rename(r,n),e.name=_,e.parent=t}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},unlink:function(e,t){var _=PATH.join2(PROXYFS.realPath(e),t);try{e.mount.opts.fs.unlink(_)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},rmdir:function(e,t){var _=PATH.join2(PROXYFS.realPath(e),t);try{e.mount.opts.fs.rmdir(_)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readdir:function(e){var t=PROXYFS.realPath(e);try{return e.mount.opts.fs.readdir(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},symlink:function(e,t,_){var r=PATH.join2(PROXYFS.realPath(e),t);try{e.mount.opts.fs.symlink(_,r)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},readlink:function(e){var t=PROXYFS.realPath(e);try{return e.mount.opts.fs.readlink(t)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}},stream_ops:{open:function(e){var t=PROXYFS.realPath(e.node);try{e.nfd=e.node.mount.opts.fs.open(t,e.flags)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},close:function(e){try{e.node.mount.opts.fs.close(e.nfd)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},read:function(e,t,_,r,n){try{return e.node.mount.opts.fs.read(e.nfd,t,_,r,n)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},write:function(e,t,_,r,n){try{return e.node.mount.opts.fs.write(e.nfd,t,_,r,n)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}},llseek:function(e,t,_){var r=t;if(1===_)r+=e.position;else if(2===_&&FS.isFile(e.node.mode))try{r+=e.node.node_ops.getattr(e.node).size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(r<0)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return r}}};Module.PROXYFS=PROXYFS;var LZ4={DIR_MODE:16895,FILE_MODE:33279,CHUNK_SIZE:-1,codec:null,init:function(){var e;LZ4.codec||(LZ4.codec=(e=function(){var e={uncompress:function(e,t,_,r){for(var n=_=_||0,o=r=r||e.length-_,l=0;n>4;if(a>0){for(var u=a+240;255===u;)a+=u=e[n++];for(var s=n+a;nl)return-(n-2);var d=15&i;for(u=d+240;255===u;)d+=u=e[n++];var p=l-c;for(s=l+d+4;lt?0:e+e/255+16|0},e.compress=function(i,a,u,s){return o.set(l),function(l,i,a,u,s){var c=u,d=s-u,p=0;if(l.length>=t)throw new Error("input too large");if(l.length>12){var y=e.compressBound(l.length);if(d>>16,h=o[P]-1;if(o[P]=a+1,h<0||a-h>>>16>0||(l[h+3]<<8|l[h+2])!=g||(l[h+1]<<8|l[h])!=M)a+=m++>>6;else{m=67;var b=a-p,w=a-h;h+=4;for(var E=a+=4;a=r){i[c++]=240+S;for(var v=b-r;v>254;v-=255)i[c++]=255;i[c++]=v}else i[c++]=(b<<4)+S;for(var x=0;x>8,E>=_){for(E-=_;E>=255;)E-=255,i[c++]=255;i[c++]=E}p=a}}}if(0==p)return 0;if((b=l.length-p)>=r){i[c++]=240;for(var A=b-r;A>254;A-=255)i[c++]=255;i[c++]=A}else i[c++]=b<<4;for(a=p;a0){if(assert(c<=u),s=s.subarray(0,c),n.push(s),i+=c,o.push(1),_){var d=e.uncompress(s,r);assert(d===a.length,[d,a.length]);for(var p=0;p=0)a=l.cachedChunks[y];else{l.cachedIndexes.pop(),l.cachedIndexes.unshift(c),a=l.cachedChunks.pop(),l.cachedChunks.unshift(a),l.debug&&(out("decompressing chunk "+c),Module.decompressedChunks=(Module.decompressedChunks||0)+1);var m=l.data.subarray(d,d+p),f=LZ4.codec.uncompress(m,a);c{if(!(e=PATH_FS.resolve(e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new FS.ErrnoError(32);for(var _=e.split("/").filter((e=>!!e)),r=FS.root,n="/",o=0;o<_.length;o++){var l=o===_.length-1;if(l&&t.parent)break;if(r=FS.lookupNode(r,_[o]),n=PATH.join2(n,_[o]),FS.isMountpoint(r)&&(!l||l&&t.follow_mount)&&(r=r.mounted.root),!l||t.follow)for(var i=0;FS.isLink(r.mode);){var a=FS.readlink(n);if(n=PATH_FS.resolve(PATH.dirname(n),a),r=FS.lookupPath(n,{recurse_count:t.recurse_count+1}).node,i++>40)throw new FS.ErrnoError(32)}}return{path:n,node:r}},getPath:e=>{for(var t;;){if(FS.isRoot(e)){var _=e.mount.mountpoint;return t?"/"!==_[_.length-1]?_+"/"+t:_+t:_}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var _=0,r=0;r>>0)%FS.nameTable.length},hashAddNode:e=>{var t=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[t],FS.nameTable[t]=e},hashRemoveNode:e=>{var t=FS.hashName(e.parent.id,e.name);if(FS.nameTable[t]===e)FS.nameTable[t]=e.name_next;else for(var _=FS.nameTable[t];_;){if(_.name_next===e){_.name_next=e.name_next;break}_=_.name_next}},lookupNode:(e,t)=>{var _=FS.mayLookup(e);if(_)throw new FS.ErrnoError(_,e);for(var r=FS.hashName(e.id,t),n=FS.nameTable[r];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===t)return n}return FS.lookup(e,t)},createNode:(e,t,_,r)=>{var n=new FS.FSNode(e,t,_,r);return FS.hashAddNode(n),n},destroyNode:e=>{FS.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=FS.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>FS.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=FS.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{FS.lookupNode(e,t);return 20}catch(e){}return FS.nodePermissions(e,"wx")},mayDelete:(e,t,_)=>{var r;try{r=FS.lookupNode(e,t)}catch(e){return e.errno}var n=FS.nodePermissions(e,"wx");if(n)return n;if(_){if(!FS.isDir(r.mode))return 54;if(FS.isRoot(r)||FS.getPath(r)===FS.cwd())return 10}else if(FS.isDir(r.mode))return 31;return 0},mayOpen:(e,t)=>e?FS.isLink(e.mode)?32:FS.isDir(e.mode)&&("r"!==FS.flagsToPermissionString(t)||512&t)?31:FS.nodePermissions(e,FS.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=FS.MAX_OPEN_FDS)=>{for(var _=e;_<=t;_++)if(!FS.streams[_])return _;throw new FS.ErrnoError(33)},getStream:e=>FS.streams[e],createStream:(e,t,_)=>{FS.FSStream||(FS.FSStream=function(){this.shared={}},FS.FSStream.prototype={},Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new FS.FSStream,e);var r=FS.nextfd(t,_);return e.fd=r,FS.streams[r]=e,e},closeStream:e=>{FS.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=FS.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new FS.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{FS.devices[e]={stream_ops:t}},getDevice:e=>FS.devices[e],getMounts:e=>{for(var t=[],_=[e];_.length;){var r=_.pop();t.push(r),_.push.apply(_,r.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var _=FS.getMounts(FS.root.mount),r=0;function n(e){return FS.syncFSRequests--,t(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,n(e));++r>=_.length&&n(null)}_.forEach((t=>{if(!t.type.syncfs)return o(null);t.type.syncfs(t,e,o)}))},mount:(e,t,_)=>{var r,n="/"===_,o=!_;if(n&&FS.root)throw new FS.ErrnoError(10);if(!n&&!o){var l=FS.lookupPath(_,{follow_mount:!1});if(_=l.path,r=l.node,FS.isMountpoint(r))throw new FS.ErrnoError(10);if(!FS.isDir(r.mode))throw new FS.ErrnoError(54)}var i={type:e,opts:t,mountpoint:_,mounts:[]},a=e.mount(i);return a.mount=i,i.root=a,n?FS.root=a:r&&(r.mounted=i,r.mount&&r.mount.mounts.push(i)),a},unmount:e=>{var t=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(t.node))throw new FS.ErrnoError(28);var _=t.node,r=_.mounted,n=FS.getMounts(r);Object.keys(FS.nameTable).forEach((e=>{for(var t=FS.nameTable[e];t;){var _=t.name_next;n.includes(t.mount)&&FS.destroyNode(t),t=_}})),_.mounted=null;var o=_.mount.mounts.indexOf(r);_.mount.mounts.splice(o,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,_)=>{var r=FS.lookupPath(e,{parent:!0}).node,n=PATH.basename(e);if(!n||"."===n||".."===n)throw new FS.ErrnoError(28);var o=FS.mayCreate(r,n);if(o)throw new FS.ErrnoError(o);if(!r.node_ops.mknod)throw new FS.ErrnoError(63);return r.node_ops.mknod(r,n,t,_)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,FS.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,FS.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var _=e.split("/"),r="",n=0;n<_.length;++n)if(_[n]){r+="/"+_[n];try{FS.mkdir(r,t)}catch(e){if(20!=e.errno)throw e}}},mkdev:(e,t,_)=>(void 0===_&&(_=t,t=438),t|=8192,FS.mknod(e,t,_)),symlink:(e,t)=>{if(!PATH_FS.resolve(e))throw new FS.ErrnoError(44);var _=FS.lookupPath(t,{parent:!0}).node;if(!_)throw new FS.ErrnoError(44);var r=PATH.basename(t),n=FS.mayCreate(_,r);if(n)throw new FS.ErrnoError(n);if(!_.node_ops.symlink)throw new FS.ErrnoError(63);return _.node_ops.symlink(_,r,e)},rename:(e,t)=>{var _,r,n=PATH.dirname(e),o=PATH.dirname(t),l=PATH.basename(e),i=PATH.basename(t);if(_=FS.lookupPath(e,{parent:!0}).node,r=FS.lookupPath(t,{parent:!0}).node,!_||!r)throw new FS.ErrnoError(44);if(_.mount!==r.mount)throw new FS.ErrnoError(75);var a,u=FS.lookupNode(_,l),s=PATH_FS.relative(e,o);if("."!==s.charAt(0))throw new FS.ErrnoError(28);if("."!==(s=PATH_FS.relative(t,n)).charAt(0))throw new FS.ErrnoError(55);try{a=FS.lookupNode(r,i)}catch(e){}if(u!==a){var c=FS.isDir(u.mode),d=FS.mayDelete(_,l,c);if(d)throw new FS.ErrnoError(d);if(d=a?FS.mayDelete(r,i,c):FS.mayCreate(r,i))throw new FS.ErrnoError(d);if(!_.node_ops.rename)throw new FS.ErrnoError(63);if(FS.isMountpoint(u)||a&&FS.isMountpoint(a))throw new FS.ErrnoError(10);if(r!==_&&(d=FS.nodePermissions(_,"w")))throw new FS.ErrnoError(d);FS.hashRemoveNode(u);try{_.node_ops.rename(u,r,i)}catch(e){throw e}finally{FS.hashAddNode(u)}}},rmdir:e=>{var t=FS.lookupPath(e,{parent:!0}).node,_=PATH.basename(e),r=FS.lookupNode(t,_),n=FS.mayDelete(t,_,!0);if(n)throw new FS.ErrnoError(n);if(!t.node_ops.rmdir)throw new FS.ErrnoError(63);if(FS.isMountpoint(r))throw new FS.ErrnoError(10);t.node_ops.rmdir(t,_),FS.destroyNode(r)},readdir:e=>{var t=FS.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new FS.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=FS.lookupPath(e,{parent:!0}).node;if(!t)throw new FS.ErrnoError(44);var _=PATH.basename(e),r=FS.lookupNode(t,_),n=FS.mayDelete(t,_,!1);if(n)throw new FS.ErrnoError(n);if(!t.node_ops.unlink)throw new FS.ErrnoError(63);if(FS.isMountpoint(r))throw new FS.ErrnoError(10);t.node_ops.unlink(t,_),FS.destroyNode(r)},readlink:e=>{var t=FS.lookupPath(e).node;if(!t)throw new FS.ErrnoError(44);if(!t.node_ops.readlink)throw new FS.ErrnoError(28);return PATH_FS.resolve(FS.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var _=FS.lookupPath(e,{follow:!t}).node;if(!_)throw new FS.ErrnoError(44);if(!_.node_ops.getattr)throw new FS.ErrnoError(63);return _.node_ops.getattr(_)},lstat:e=>FS.stat(e,!0),chmod:(e,t,_)=>{var r;"string"==typeof e?r=FS.lookupPath(e,{follow:!_}).node:r=e;if(!r.node_ops.setattr)throw new FS.ErrnoError(63);r.node_ops.setattr(r,{mode:4095&t|-4096&r.mode,timestamp:Date.now()})},lchmod:(e,t)=>{FS.chmod(e,t,!0)},fchmod:(e,t)=>{var _=FS.getStream(e);if(!_)throw new FS.ErrnoError(8);FS.chmod(_.node,t)},chown:(e,t,_,r)=>{var n;"string"==typeof e?n=FS.lookupPath(e,{follow:!r}).node:n=e;if(!n.node_ops.setattr)throw new FS.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,_)=>{FS.chown(e,t,_,!0)},fchown:(e,t,_)=>{var r=FS.getStream(e);if(!r)throw new FS.ErrnoError(8);FS.chown(r.node,t,_)},truncate:(e,t)=>{if(t<0)throw new FS.ErrnoError(28);var _;"string"==typeof e?_=FS.lookupPath(e,{follow:!0}).node:_=e;if(!_.node_ops.setattr)throw new FS.ErrnoError(63);if(FS.isDir(_.mode))throw new FS.ErrnoError(31);if(!FS.isFile(_.mode))throw new FS.ErrnoError(28);var r=FS.nodePermissions(_,"w");if(r)throw new FS.ErrnoError(r);_.node_ops.setattr(_,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var _=FS.getStream(e);if(!_)throw new FS.ErrnoError(8);if(!(2097155&_.flags))throw new FS.ErrnoError(28);FS.truncate(_.node,t)},utime:(e,t,_)=>{var r=FS.lookupPath(e,{follow:!0}).node;r.node_ops.setattr(r,{timestamp:Math.max(t,_)})},open:(e,t,_)=>{if(""===e)throw new FS.ErrnoError(44);var r;if(_=void 0===_?438:_,_=64&(t="string"==typeof t?FS.modeStringToFlags(t):t)?4095&_|32768:0,"object"==typeof e)r=e;else{e=PATH.normalize(e);try{r=FS.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(r){if(128&t)throw new FS.ErrnoError(20)}else r=FS.mknod(e,_,0),n=!0;if(!r)throw new FS.ErrnoError(44);if(FS.isChrdev(r.mode)&&(t&=-513),65536&t&&!FS.isDir(r.mode))throw new FS.ErrnoError(54);if(!n){var o=FS.mayOpen(r,t);if(o)throw new FS.ErrnoError(o)}512&t&&!n&&FS.truncate(r,0),t&=-131713;var l=FS.createStream({node:r,path:FS.getPath(r),flags:t,seekable:!0,position:0,stream_ops:r.stream_ops,ungotten:[],error:!1});return l.stream_ops.open&&l.stream_ops.open(l),!Module.logReadFiles||1&t||(FS.readFiles||(FS.readFiles={}),e in FS.readFiles||(FS.readFiles[e]=1)),l},close:e=>{if(FS.isClosed(e))throw new FS.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{FS.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,_)=>{if(FS.isClosed(e))throw new FS.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new FS.ErrnoError(70);if(0!=_&&1!=_&&2!=_)throw new FS.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,_),e.ungotten=[],e.position},read:(e,t,_,r,n)=>{if(r<0||n<0)throw new FS.ErrnoError(28);if(FS.isClosed(e))throw new FS.ErrnoError(8);if(1==(2097155&e.flags))throw new FS.ErrnoError(8);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(31);if(!e.stream_ops.read)throw new FS.ErrnoError(28);var o=void 0!==n;if(o){if(!e.seekable)throw new FS.ErrnoError(70)}else n=e.position;var l=e.stream_ops.read(e,t,_,r,n);return o||(e.position+=l),l},write:(e,t,_,r,n,o)=>{if(r<0||n<0)throw new FS.ErrnoError(28);if(FS.isClosed(e))throw new FS.ErrnoError(8);if(!(2097155&e.flags))throw new FS.ErrnoError(8);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(31);if(!e.stream_ops.write)throw new FS.ErrnoError(28);e.seekable&&1024&e.flags&&FS.llseek(e,0,2);var l=void 0!==n;if(l){if(!e.seekable)throw new FS.ErrnoError(70)}else n=e.position;var i=e.stream_ops.write(e,t,_,r,n,o);return l||(e.position+=i),i},allocate:(e,t,_)=>{if(FS.isClosed(e))throw new FS.ErrnoError(8);if(t<0||_<=0)throw new FS.ErrnoError(28);if(!(2097155&e.flags))throw new FS.ErrnoError(8);if(!FS.isFile(e.node.mode)&&!FS.isDir(e.node.mode))throw new FS.ErrnoError(43);if(!e.stream_ops.allocate)throw new FS.ErrnoError(138);e.stream_ops.allocate(e,t,_)},mmap:(e,t,_,r,n)=>{if(2&r&&!(2&n)&&2!=(2097155&e.flags))throw new FS.ErrnoError(2);if(1==(2097155&e.flags))throw new FS.ErrnoError(2);if(!e.stream_ops.mmap)throw new FS.ErrnoError(43);return e.stream_ops.mmap(e,t,_,r,n)},msync:(e,t,_,r,n)=>e.stream_ops.msync?e.stream_ops.msync(e,t,_,r,n):0,munmap:e=>0,ioctl:(e,t,_)=>{if(!e.stream_ops.ioctl)throw new FS.ErrnoError(59);return e.stream_ops.ioctl(e,t,_)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var _,r=FS.open(e,t.flags),n=FS.stat(e).size,o=new Uint8Array(n);return FS.read(r,o,0,n,0),"utf8"===t.encoding?_=UTF8ArrayToString(o,0):"binary"===t.encoding&&(_=o),FS.close(r),_},writeFile:(e,t,_={})=>{_.flags=_.flags||577;var r=FS.open(e,_.flags,_.mode);if("string"==typeof t){var n=new Uint8Array(lengthBytesUTF8(t)+1),o=stringToUTF8Array(t,n,0,n.length);FS.write(r,n,0,o,void 0,_.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");FS.write(r,t,0,t.byteLength,void 0,_.canOwn)}FS.close(r)},cwd:()=>FS.currentPath,chdir:e=>{var t=FS.lookupPath(e,{follow:!0});if(null===t.node)throw new FS.ErrnoError(44);if(!FS.isDir(t.node.mode))throw new FS.ErrnoError(54);var _=FS.nodePermissions(t.node,"x");if(_)throw new FS.ErrnoError(_);FS.currentPath=t.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:(e,t,_,r,n)=>r}),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 e=getRandomDevice();FS.createDevice("/dev","random",e),FS.createDevice("/dev","urandom",e),FS.mkdir("/dev/shm"),FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var e=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd"),FS.mount({mount:()=>{var t=FS.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var _=+t,r=FS.getStream(_);if(!r)throw new FS.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>r.path}};return n.parent=n,n}},t}},{},"/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");FS.open("/dev/stdin",0),FS.open("/dev/stdout",1),FS.open("/dev/stderr",1)},ensureErrnoError:()=>{FS.ErrnoError||(FS.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},FS.ErrnoError.prototype=new Error,FS.ErrnoError.prototype.constructor=FS.ErrnoError,[44].forEach((e=>{FS.genericErrors[e]=new FS.ErrnoError(e),FS.genericErrors[e].stack=""})))},staticInit:()=>{FS.ensureErrnoError(),FS.nameTable=new Array(4096),FS.mount(MEMFS,{},"/"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS,IDBFS,NODEFS,WORKERFS,PROXYFS}},init:(e,t,_)=>{FS.init.initialized=!0,FS.ensureErrnoError(),Module.stdin=e||Module.stdin,Module.stdout=t||Module.stdout,Module.stderr=_||Module.stderr,FS.createStandardStreams()},quit:()=>{FS.init.initialized=!1,_fflush(0);for(var e=0;e{var _=0;return e&&(_|=365),t&&(_|=146),_},findObject:(e,t)=>{var _=FS.analyzePath(e,t);return _.exists?_.object:null},analyzePath:(e,t)=>{try{e=(r=FS.lookupPath(e,{follow:!t})).path}catch(e){}var _={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var r=FS.lookupPath(e,{parent:!0});_.parentExists=!0,_.parentPath=r.path,_.parentObject=r.node,_.name=PATH.basename(e),r=FS.lookupPath(e,{follow:!t}),_.exists=!0,_.path=r.path,_.object=r.node,_.name=r.node.name,_.isRoot="/"===r.path}catch(e){_.error=e.errno}return _},createPath:(e,t,_,r)=>{e="string"==typeof e?e:FS.getPath(e);for(var n=t.split("/").reverse();n.length;){var o=n.pop();if(o){var l=PATH.join2(e,o);try{FS.mkdir(l)}catch(e){}e=l}}return l},createFile:(e,t,_,r,n)=>{var o=PATH.join2("string"==typeof e?e:FS.getPath(e),t),l=FS.getMode(r,n);return FS.create(o,l)},createDataFile:(e,t,_,r,n,o)=>{var l=t;e&&(e="string"==typeof e?e:FS.getPath(e),l=t?PATH.join2(e,t):e);var i=FS.getMode(r,n),a=FS.create(l,i);if(_){if("string"==typeof _){for(var u=new Array(_.length),s=0,c=_.length;s{var n=PATH.join2("string"==typeof e?e:FS.getPath(e),t),o=FS.getMode(!!_,!!r);FS.createDevice.major||(FS.createDevice.major=64);var l=FS.makedev(FS.createDevice.major++,0);return FS.registerDevice(l,{open:e=>{e.seekable=!1},close:e=>{r&&r.buffer&&r.buffer.length&&r(10)},read:(e,t,r,n,o)=>{for(var l=0,i=0;i{for(var l=0;l{if(e.isDevice||e.isFolder||e.link||e.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.");if(!read_)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=intArrayFromString(read_(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new FS.ErrnoError(29)}},createLazyFile:(e,t,_,r,n)=>{function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,_=e/this.chunkSize|0;return this.getter(_)[t]}},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",_,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+_+". Status: "+e.status);var t,r=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,o=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,l=1048576;n||(l=r);var i=this;i.setDataGetter((e=>{var t=e*l,n=(e+1)*l-1;if(n=Math.min(n,r-1),void 0===i.chunks[e]&&(i.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>r-1)throw new Error("only "+r+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",_,!1),r!==l&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+_+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):intArrayFromString(n.responseText||"",!0)})(t,n)),void 0===i.chunks[e])throw new Error("doXHR failed!");return i.chunks[e]})),!o&&r||(l=r=1,r=this.getter(0).length,l=r,out("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=r,this._chunkSize=l,this.lengthKnown=!0},"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 l=new o;Object.defineProperties(l,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var i={isDevice:!1,contents:l}}else i={isDevice:!1,url:_};var a=FS.createFile(e,t,i,r,n);i.contents?a.contents=i.contents:i.url&&(a.contents=null,a.url=i.url),Object.defineProperties(a,{usedBytes:{get:function(){return this.contents.length}}});var u={};function s(e,t,_,r,n){var o=e.node.contents;if(n>=o.length)return 0;var l=Math.min(o.length-n,r);if(o.slice)for(var i=0;i{var t=a.stream_ops[e];u[e]=function(){return FS.forceLoadFile(a),t.apply(null,arguments)}})),u.read=(e,t,_,r,n)=>(FS.forceLoadFile(a),s(e,t,_,r,n)),u.mmap=(e,t,_,r,n)=>{FS.forceLoadFile(a);var o=mmapAlloc(t);if(!o)throw new FS.ErrnoError(48);return s(e,HEAP8,o,t,_),{ptr:o,allocated:!0}},a.stream_ops=u,a},createPreloadedFile:(e,t,_,r,n,o,l,i,a,u)=>{var s=t?PATH_FS.resolve(PATH.join2(e,t)):e,c=getUniqueRunDependency("cp "+s);function d(_){function d(_){u&&u(),i||FS.createDataFile(e,t,_,r,n,a),o&&o(),removeRunDependency(c)}Browser.handledByPreloadPlugin(_,s,d,(()=>{l&&l(),removeRunDependency(c)}))||d(_)}addRunDependency(c),"string"==typeof _?asyncLoad(_,(e=>d(e)),l):d(_)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t=()=>{},_=()=>{})=>{var r=FS.indexedDB();try{var n=r.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return _(e)}n.onupgradeneeded=()=>{out("creating db"),n.result.createObjectStore(FS.DB_STORE_NAME)},n.onsuccess=()=>{var r=n.result.transaction([FS.DB_STORE_NAME],"readwrite"),o=r.objectStore(FS.DB_STORE_NAME),l=0,i=0,a=e.length;function u(){0==i?t():_()}e.forEach((e=>{var t=o.put(FS.analyzePath(e).object.contents,e);t.onsuccess=()=>{++l+i==a&&u()},t.onerror=()=>{i++,l+i==a&&u()}})),r.onerror=_},n.onerror=_},loadFilesFromDB:(e,t=()=>{},_=()=>{})=>{var r=FS.indexedDB();try{var n=r.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return _(e)}n.onupgradeneeded=_,n.onsuccess=()=>{var r=n.result;try{var o=r.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){return void _(e)}var l=o.objectStore(FS.DB_STORE_NAME),i=0,a=0,u=e.length;function s(){0==a?t():_()}e.forEach((e=>{var t=l.get(e);t.onsuccess=()=>{FS.analyzePath(e).exists&&FS.unlink(e),FS.createDataFile(PATH.dirname(e),PATH.basename(e),t.result,!0,!0,!0),++i+a==u&&s()},t.onerror=()=>{a++,i+a==u&&s()}})),o.onerror=_},n.onerror=_}};Module.FS=FS;var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(e,t,_){if(PATH.isAbs(t))return t;var r;-100===e?r=FS.cwd():r=SYSCALLS.getStreamFromFD(e).path;if(0==t.length){if(!_)throw new FS.ErrnoError(44);return r}return PATH.join2(r,t)},doStat:function(e,t,_){try{var r=e(t)}catch(e){if(e&&e.node&&PATH.normalize(t)!==PATH.normalize(FS.getPath(e.node)))return-54;throw e}HEAP32[_>>2]=r.dev,HEAP32[_+8>>2]=r.ino,HEAP32[_+12>>2]=r.mode,HEAPU32[_+16>>2]=r.nlink,HEAP32[_+20>>2]=r.uid,HEAP32[_+24>>2]=r.gid,HEAP32[_+28>>2]=r.rdev,tempI64=[r.size>>>0,(tempDouble=r.size,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[_+40>>2]=tempI64[0],HEAP32[_+44>>2]=tempI64[1],HEAP32[_+48>>2]=4096,HEAP32[_+52>>2]=r.blocks;var n=r.atime.getTime(),o=r.mtime.getTime(),l=r.ctime.getTime();return tempI64=[Math.floor(n/1e3)>>>0,(tempDouble=Math.floor(n/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[_+56>>2]=tempI64[0],HEAP32[_+60>>2]=tempI64[1],HEAPU32[_+64>>2]=n%1e3*1e3,tempI64=[Math.floor(o/1e3)>>>0,(tempDouble=Math.floor(o/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[_+72>>2]=tempI64[0],HEAP32[_+76>>2]=tempI64[1],HEAPU32[_+80>>2]=o%1e3*1e3,tempI64=[Math.floor(l/1e3)>>>0,(tempDouble=Math.floor(l/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[_+88>>2]=tempI64[0],HEAP32[_+92>>2]=tempI64[1],HEAPU32[_+96>>2]=l%1e3*1e3,tempI64=[r.ino>>>0,(tempDouble=r.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[_+104>>2]=tempI64[0],HEAP32[_+108>>2]=tempI64[1],0},doMsync:function(e,t,_,r,n){if(!FS.isFile(t.node.mode))throw new FS.ErrnoError(43);if(2&r)return 0;var o=HEAPU8.slice(e,e+_);FS.msync(t,o,n,_,r)},varargs:void 0,get:function(){return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(e){return UTF8ToString(e)},getStreamFromFD:function(e){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(8);return t}};function ___syscall__newselect(e,t,_,r,n){try{for(var o=0,l=t?HEAP32[t>>2]:0,i=t?HEAP32[t+4>>2]:0,a=_?HEAP32[_>>2]:0,u=_?HEAP32[_+4>>2]:0,s=r?HEAP32[r>>2]:0,c=r?HEAP32[r+4>>2]:0,d=0,p=0,y=0,m=0,f=0,M=0,g=(t?HEAP32[t>>2]:0)|(_?HEAP32[_>>2]:0)|(r?HEAP32[r>>2]:0),P=(t?HEAP32[t+4>>2]:0)|(_?HEAP32[_+4>>2]:0)|(r?HEAP32[r+4>>2]:0),h=function(e,t,_,r){return e<32?t&r:_&r},b=0;b>2]=d,HEAP32[t+4>>2]=p),_&&(HEAP32[_>>2]=y,HEAP32[_+4>>2]=m),r&&(HEAP32[r>>2]=f,HEAP32[r+4>>2]=M),o}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}Module.SYSCALLS=SYSCALLS,Module.___syscall__newselect=___syscall__newselect;var SOCKFS={mount:function(e){return Module.websocket=Module.websocket&&"object"==typeof Module.websocket?Module.websocket:{},Module.websocket._callbacks={},Module.websocket.on=function(e,t){return"function"==typeof t&&(this._callbacks[e]=t),this},Module.websocket.emit=function(e,t){"function"==typeof this._callbacks[e]&&this._callbacks[e].call(this,t)},FS.createNode(null,"/",16895,0)},createSocket:function(e,t,_){if(1==(t&=-526337)&&_&&6!=_)throw new FS.ErrnoError(66);var r={family:e,type:t,protocol:_,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops},n=SOCKFS.nextname(),o=FS.createNode(SOCKFS.root,n,49152,0);o.sock=r;var l=FS.createStream({path:n,node:o,flags:2,seekable:!1,stream_ops:SOCKFS.stream_ops});return r.stream=l,r},getSocket:function(e){var t=FS.getStream(e);return t&&FS.isSocket(t.node.mode)?t.node.sock:null},stream_ops:{poll:function(e){var t=e.node.sock;return t.sock_ops.poll(t)},ioctl:function(e,t,_){var r=e.node.sock;return r.sock_ops.ioctl(r,t,_)},read:function(e,t,_,r,n){var o=e.node.sock,l=o.sock_ops.recvmsg(o,r);return l?(t.set(l.buffer,_),l.buffer.length):0},write:function(e,t,_,r,n){var o=e.node.sock;return o.sock_ops.sendmsg(o,t,_,r)},close:function(e){var t=e.node.sock;t.sock_ops.close(t)}},nextname:function(){return SOCKFS.nextname.current||(SOCKFS.nextname.current=0),"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(e,t,_){var r;if("object"==typeof t&&(r=t,t=null,_=null),r)if(r._socket)t=r._socket.remoteAddress,_=r._socket.remotePort;else{var n=/ws[s]?:\/\/([^:]+):(\d+)/.exec(r.url);if(!n)throw new Error("WebSocket URL must be in the format ws(s)://address:port");t=n[1],_=parseInt(n[2],10)}else try{var o=Module.websocket&&"object"==typeof Module.websocket,l="ws:#".replace("#","//");if(o&&"string"==typeof Module.websocket.url&&(l=Module.websocket.url),"ws://"===l||"wss://"===l){var i=t.split("/");l=l+i[0]+":"+_+"/"+i.slice(1).join("/")}var a="binary";o&&"string"==typeof Module.websocket.subprotocol&&(a=Module.websocket.subprotocol);var u=void 0;"null"!==a&&(u=a=a.replace(/^ +| +$/g,"").split(/ *, */)),o&&null===Module.websocket.subprotocol&&(a="null",u=void 0),(r=new(ENVIRONMENT_IS_NODE?require("ws"):WebSocket)(l,u)).binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}var s={addr:t,port:_,socket:r,dgram_send_queue:[]};return SOCKFS.websocket_sock_ops.addPeer(e,s),SOCKFS.websocket_sock_ops.handlePeerEvents(e,s),2===e.type&&void 0!==e.sport&&s.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(65280&e.sport)>>8,255&e.sport])),s},getPeer:function(e,t,_){return e.peers[t+":"+_]},addPeer:function(e,t){e.peers[t.addr+":"+t.port]=t},removePeer:function(e,t){delete e.peers[t.addr+":"+t.port]},handlePeerEvents:function(e,t){var _=!0,r=function(){Module.websocket.emit("open",e.stream.fd);try{for(var _=t.dgram_send_queue.shift();_;)t.socket.send(_),_=t.dgram_send_queue.shift()}catch(e){t.socket.close()}};function n(r){if("string"==typeof r){r=(new TextEncoder).encode(r)}else{if(assert(void 0!==r.byteLength),0==r.byteLength)return;r=new Uint8Array(r)}var n=_;if(_=!1,n&&10===r.length&&255===r[0]&&255===r[1]&&255===r[2]&&255===r[3]&&r[4]==="p".charCodeAt(0)&&r[5]==="o".charCodeAt(0)&&r[6]==="r".charCodeAt(0)&&r[7]==="t".charCodeAt(0)){var o=r[8]<<8|r[9];return SOCKFS.websocket_sock_ops.removePeer(e,t),t.port=o,void SOCKFS.websocket_sock_ops.addPeer(e,t)}e.recv_queue.push({addr:t.addr,port:t.port,data:r}),Module.websocket.emit("message",e.stream.fd)}ENVIRONMENT_IS_NODE?(t.socket.on("open",r),t.socket.on("message",(function(e,t){t&&n(new Uint8Array(e).buffer)})),t.socket.on("close",(function(){Module.websocket.emit("close",e.stream.fd)})),t.socket.on("error",(function(t){e.error=14,Module.websocket.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])}))):(t.socket.onopen=r,t.socket.onclose=function(){Module.websocket.emit("close",e.stream.fd)},t.socket.onmessage=function(e){n(e.data)},t.socket.onerror=function(t){e.error=14,Module.websocket.emit("error",[e.stream.fd,e.error,"ECONNREFUSED: Connection refused"])})},poll:function(e){if(1===e.type&&e.server)return e.pending.length?65:0;var t=0,_=1===e.type?SOCKFS.websocket_sock_ops.getPeer(e,e.daddr,e.dport):null;return(e.recv_queue.length||!_||_&&_.socket.readyState===_.socket.CLOSING||_&&_.socket.readyState===_.socket.CLOSED)&&(t|=65),(!_||_&&_.socket.readyState===_.socket.OPEN)&&(t|=4),(_&&_.socket.readyState===_.socket.CLOSING||_&&_.socket.readyState===_.socket.CLOSED)&&(t|=16),t},ioctl:function(e,t,_){if(21531===t){var r=0;return e.recv_queue.length&&(r=e.recv_queue[0].data.length),HEAP32[_>>2]=r,0}return 28},close:function(e){if(e.server){try{e.server.close()}catch(e){}e.server=null}for(var t=Object.keys(e.peers),_=0;_>2]=e,e}Module.SOCKFS=SOCKFS,Module.getSocketFromFD=getSocketFromFD,Module.setErrNo=setErrNo;var Sockets={BUFFER_SIZE:10240,MAX_BUFFER_SIZE:10485760,nextFd:1,fds:{},nextport:1,maxport:65535,peer:null,connections:{},portmap:{},localAddr:4261412874,addrPool:[33554442,50331658,67108874,83886090,100663306,117440522,134217738,150994954,167772170,184549386,201326602,218103818,234881034]};function inetPton4(e){for(var t=e.split("."),_=0;_<4;_++){var r=Number(t[_]);if(isNaN(r))return null;t[_]=r}return(t[0]|t[1]<<8|t[2]<<16|t[3]<<24)>>>0}function jstoi_q(e){return parseInt(e)}function inetPton6(e){var t,_,r,n,o=[];if(!/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i.test(e))return null;if("::"===e)return[0,0,0,0,0,0,0,0];for((e=e.startsWith("::")?e.replace("::","Z:"):e.replace("::",":Z:")).indexOf(".")>0?((t=(e=e.replace(new RegExp("[.]","g"),":")).split(":"))[t.length-4]=jstoi_q(t[t.length-4])+256*jstoi_q(t[t.length-3]),t[t.length-3]=jstoi_q(t[t.length-2])+256*jstoi_q(t[t.length-1]),t=t.slice(0,t.length-2)):t=e.split(":"),r=0,n=0,_=0;_>2]=16),HEAP16[e>>1]=t,HEAP32[e+4>>2]=_,HEAP16[e+2>>1]=_htons(r);break;case 10:_=inetPton6(_),zeroMemory(e,28),n&&(HEAP32[n>>2]=28),HEAP32[e>>2]=t,HEAP32[e+8>>2]=_[0],HEAP32[e+12>>2]=_[1],HEAP32[e+16>>2]=_[2],HEAP32[e+20>>2]=_[3],HEAP16[e+2>>1]=_htons(r);break;default:return 5}return 0}Module.Sockets=Sockets,Module.inetPton4=inetPton4,Module.jstoi_q=jstoi_q,Module.inetPton6=inetPton6,Module.writeSockaddr=writeSockaddr;var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(e){var t,_=inetPton4(e);if(null!==_)return e;if(null!==(_=inetPton6(e)))return e;if(DNS.address_map.addrs[e])t=DNS.address_map.addrs[e];else{var r=DNS.address_map.id++;assert(r<65535,"exceeded max address mappings of 65535"),t="172.29."+(255&r)+"."+(65280&r),DNS.address_map.names[t]=e,DNS.address_map.addrs[e]=t}return t},lookup_addr:function(e){return DNS.address_map.names[e]?DNS.address_map.names[e]:null}};function ___syscall_accept4(e,t,_,r){try{var n=getSocketFromFD(e),o=n.sock_ops.accept(n);if(t)writeSockaddr(t,o.family,DNS.lookup_name(o.daddr),o.dport,_);return o.stream.fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function inetNtop4(e){return(255&e)+"."+(e>>8&255)+"."+(e>>16&255)+"."+(e>>24&255)}function inetNtop6(e){var t="",_=0,r=0,n=0,o=0,l=0,i=0,a=[65535&e[0],e[0]>>16,65535&e[1],e[1]>>16,65535&e[2],e[2]>>16,65535&e[3],e[3]>>16],u=!0,s="";for(i=0;i<5;i++)if(0!==a[i]){u=!1;break}if(u){if(s=inetNtop4(a[6]|a[7]<<16),-1===a[5])return t="::ffff:",t+=s;if(0===a[5])return t="::","0.0.0.0"===s&&(s=""),"0.0.0.1"===s&&(s="1"),t+=s}for(_=0;_<8;_++)0===a[_]&&(_-n>1&&(l=0),n=_,l++),l>r&&(o=_-(r=l)+1);for(_=0;_<8;_++)r>1&&0===a[_]&&_>=o&&_>1],n=_ntohs(HEAPU16[e+2>>1]);switch(r){case 2:if(16!==t)return{errno:28};_=inetNtop4(_=HEAP32[e+4>>2]);break;case 10:if(28!==t)return{errno:28};_=inetNtop6(_=[HEAP32[e+8>>2],HEAP32[e+12>>2],HEAP32[e+16>>2],HEAP32[e+20>>2]]);break;default:return{errno:5}}return{family:r,addr:_,port:n}}function getSocketAddress(e,t,_){if(_&&0===e)return null;var r=readSockaddr(e,t);if(r.errno)throw new FS.ErrnoError(r.errno);return r.addr=DNS.lookup_addr(r.addr)||r.addr,r}function ___syscall_bind(e,t,_){try{var r=getSocketFromFD(e),n=getSocketAddress(t,_);return r.sock_ops.bind(r,n.addr,n.port),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_chdir(e){try{return e=SYSCALLS.getStr(e),FS.chdir(e),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_chmod(e,t){try{return e=SYSCALLS.getStr(e),FS.chmod(e,t),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_connect(e,t,_){try{var r=getSocketFromFD(e),n=getSocketAddress(t,_);return r.sock_ops.connect(r,n.addr,n.port),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_dup(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.createStream(t,0).fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_dup3(e,t,_){try{var r=SYSCALLS.getStreamFromFD(e);if(r.fd===t)return-28;var n=FS.getStream(t);return n&&FS.close(n),FS.createStream(r,t,t+1).fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_faccessat(e,t,_,r){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),-8&_)return-28;var n=FS.lookupPath(t,{follow:!0}).node;if(!n)return-44;var o="";return 4&_&&(o+="r"),2&_&&(o+="w"),1&_&&(o+="x"),o&&FS.nodePermissions(n,o)?-2:0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fadvise64(e,t,_,r){return 0}Module.DNS=DNS,Module.___syscall_accept4=___syscall_accept4,Module.inetNtop4=inetNtop4,Module.inetNtop6=inetNtop6,Module.readSockaddr=readSockaddr,Module.getSocketAddress=getSocketAddress,Module.___syscall_bind=___syscall_bind,___syscall_bind.sig="iipi",Module.___syscall_chdir=___syscall_chdir,___syscall_chdir.sig="ip",Module.___syscall_chmod=___syscall_chmod,___syscall_chmod.sig="ipi",Module.___syscall_connect=___syscall_connect,___syscall_connect.sig="iipi",Module.___syscall_dup=___syscall_dup,___syscall_dup.sig="ii",Module.___syscall_dup3=___syscall_dup3,Module.___syscall_faccessat=___syscall_faccessat,___syscall_faccessat.sig="iipii",Module.___syscall_fadvise64=___syscall_fadvise64;var MAX_INT53=9007199254740992;Module.MAX_INT53=MAX_INT53;var MIN_INT53=-9007199254740992;function bigintToI53Checked(e){return eMAX_INT53?NaN:Number(e)}function ___syscall_fallocate(e,t,_,r){try{if(_=bigintToI53Checked(_),isNaN(_))return-61;if(r=bigintToI53Checked(r),isNaN(r))return-61;var n=SYSCALLS.getStreamFromFD(e);return FS.allocate(n,_,r),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fchdir(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.chdir(t.path),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fchmod(e,t){try{return FS.fchmod(e,t),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fchmodat(e,t,_,r){SYSCALLS.varargs=r;try{return t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),FS.chmod(t,_),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fchown32(e,t,_){try{return FS.fchown(e,t,_),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fchownat(e,t,_,r,n){try{t=SYSCALLS.getStr(t);var o=256&n;return n&=-257,t=SYSCALLS.calculateAt(e,t),(o?FS.lchown:FS.chown)(t,_,r),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fcntl64(e,t,_){SYSCALLS.varargs=_;try{var r=SYSCALLS.getStreamFromFD(e);switch(t){case 0:return(n=SYSCALLS.get())<0?-28:FS.createStream(r,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return r.flags;case 4:var n=SYSCALLS.get();return r.flags|=n,0;case 5:n=SYSCALLS.get();return HEAP16[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return setErrNo(28),-1}}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fdatasync(e){try{SYSCALLS.getStreamFromFD(e);return 0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fstat64(e,t){try{var _=SYSCALLS.getStreamFromFD(e);return SYSCALLS.doStat(FS.stat,_.path,t)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_statfs64(e,t,_){try{return e=SYSCALLS.getStr(e),HEAP32[_+4>>2]=4096,HEAP32[_+40>>2]=4096,HEAP32[_+8>>2]=1e6,HEAP32[_+12>>2]=5e5,HEAP32[_+16>>2]=5e5,HEAP32[_+20>>2]=FS.nextInode,HEAP32[_+24>>2]=1e6,HEAP32[_+28>>2]=42,HEAP32[_+44>>2]=2,HEAP32[_+36>>2]=255,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_fstatfs64(e,t,_){try{SYSCALLS.getStreamFromFD(e);return ___syscall_statfs64(0,t,_)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_ftruncate64(e,t){try{return t=bigintToI53Checked(t),isNaN(t)?-61:(FS.ftruncate(e,t),0)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_getcwd(e,t){try{if(0===t)return-28;var _=FS.cwd(),r=lengthBytesUTF8(_)+1;return t>>0,(tempDouble=a,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t+o>>2]=tempI64[0],HEAP32[t+o+4>>2]=tempI64[1],tempI64=[(i+1)*n>>>0,(tempDouble=(i+1)*n,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t+o+8>>2]=tempI64[0],HEAP32[t+o+12>>2]=tempI64[1],HEAP16[t+o+16>>1]=280,HEAP8[t+o+18|0]=u,stringToUTF8(s,t+o+19,256),o+=n,i+=1}return FS.llseek(r,i*n,0),o}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_getpeername(e,t,_){try{var r=getSocketFromFD(e);if(!r.daddr)return-53;writeSockaddr(t,r.family,DNS.lookup_name(r.daddr),r.dport,_);return 0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_getsockname(e,t,_){try{err("__syscall_getsockname "+e);var r=getSocketFromFD(e);writeSockaddr(t,r.family,DNS.lookup_name(r.saddr||"0.0.0.0"),r.sport,_);return 0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_getsockopt(e,t,_,r,n){try{var o=getSocketFromFD(e);return 1===t&&4===_?(HEAP32[r>>2]=o.error,HEAP32[n>>2]=4,o.error=null,0):-50}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_ioctl(e,t,_){SYSCALLS.varargs=_;try{var r=SYSCALLS.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return r.tty?0:-59;case 21519:if(!r.tty)return-59;var n=SYSCALLS.get();return HEAP32[n>>2]=0,0;case 21520:return r.tty?-28:-59;case 21531:n=SYSCALLS.get();return FS.ioctl(r,t,n);default:return-28}}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_linkat(e,t,_,r,n){return-34}function ___syscall_listen(e,t){try{var _=getSocketFromFD(e);return _.sock_ops.listen(_,t),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_lstat64(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.lstat,e,t)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_mkdirat(e,t,_){try{return t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),"/"===(t=PATH.normalize(t))[t.length-1]&&(t=t.substr(0,t.length-1)),FS.mkdir(t,_,0),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_mknodat(e,t,_,r){try{switch(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),61440&_){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return FS.mknod(t,_,r),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_newfstatat(e,t,_,r){try{t=SYSCALLS.getStr(t);var n=256&r,o=4096&r;return r&=-6401,t=SYSCALLS.calculateAt(e,t,o),SYSCALLS.doStat(n?FS.lstat:FS.stat,t,_)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_openat(e,t,_,r){SYSCALLS.varargs=r;try{t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t);var n=r?SYSCALLS.get():0;return FS.open(t,_,n).fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}Module.MIN_INT53=MIN_INT53,Module.bigintToI53Checked=bigintToI53Checked,Module.___syscall_fallocate=___syscall_fallocate,Module.___syscall_fchdir=___syscall_fchdir,Module.___syscall_fchmod=___syscall_fchmod,Module.___syscall_fchmodat=___syscall_fchmodat,___syscall_fchmodat.sig="iipip",Module.___syscall_fchown32=___syscall_fchown32,Module.___syscall_fchownat=___syscall_fchownat,___syscall_fchownat.sig="iipiii",Module.___syscall_fcntl64=___syscall_fcntl64,___syscall_fcntl64.sig="iiip",Module.___syscall_fdatasync=___syscall_fdatasync,Module.___syscall_fstat64=___syscall_fstat64,___syscall_fstat64.sig="iip",Module.___syscall_statfs64=___syscall_statfs64,___syscall_statfs64.sig="ippp",Module.___syscall_fstatfs64=___syscall_fstatfs64,Module.___syscall_ftruncate64=___syscall_ftruncate64,___syscall_ftruncate64.sig="iij",Module.___syscall_getcwd=___syscall_getcwd,___syscall_getcwd.sig="ipp",Module.___syscall_getdents64=___syscall_getdents64,___syscall_getdents64.sig="iipi",Module.___syscall_getpeername=___syscall_getpeername,Module.___syscall_getsockname=___syscall_getsockname,Module.___syscall_getsockopt=___syscall_getsockopt,Module.___syscall_ioctl=___syscall_ioctl,___syscall_ioctl.sig="iiip",Module.___syscall_linkat=___syscall_linkat,Module.___syscall_listen=___syscall_listen,Module.___syscall_lstat64=___syscall_lstat64,___syscall_lstat64.sig="ipp",Module.___syscall_mkdirat=___syscall_mkdirat,___syscall_mkdirat.sig="iipi",Module.___syscall_mknodat=___syscall_mknodat,___syscall_mknodat.sig="iipii",Module.___syscall_newfstatat=___syscall_newfstatat,___syscall_newfstatat.sig="iippi",Module.___syscall_openat=___syscall_openat,___syscall_openat.sig="iipip";var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount:function(e){return FS.createNode(null,"/",16895,0)},createPipe:function(){var e={buckets:[],refcnt:2};e.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var t=PIPEFS.nextname(),_=PIPEFS.nextname(),r=FS.createNode(PIPEFS.root,t,4096,0),n=FS.createNode(PIPEFS.root,_,4096,0);r.pipe=e,n.pipe=e;var o=FS.createStream({path:t,node:r,flags:0,seekable:!1,stream_ops:PIPEFS.stream_ops});r.stream=o;var l=FS.createStream({path:_,node:n,flags:1,seekable:!1,stream_ops:PIPEFS.stream_ops});return n.stream=l,{readable_fd:o.fd,writable_fd:l.fd}},stream_ops:{poll:function(e){var t=e.node.pipe;if(1==(2097155&e.flags))return 260;if(t.buckets.length>0)for(var _=0;_0)return 65}return 0},ioctl:function(e,t,_){return 28},fsync:function(e){return 28},read:function(e,t,_,r,n){for(var o=e.node.pipe,l=0,i=0;i=i)return a.buffer.set(l,a.offset),a.offset+=i,i;u>0&&(a.buffer.set(l.subarray(0,u),a.offset),a.offset+=u,l=l.subarray(u,l.byteLength));for(var s=l.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0,c=l.byteLength%PIPEFS.BUCKET_BUFFER_SIZE,d=0;d0){p={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:l.byteLength,roffset:0};o.buckets.push(p),p.buffer.set(l)}return i},close:function(e){var t=e.node.pipe;t.refcnt--,0===t.refcnt&&(t.buckets=null)}},nextname:function(){return PIPEFS.nextname.current||(PIPEFS.nextname.current=0),"pipe["+PIPEFS.nextname.current+++"]"}};function ___syscall_pipe(e){try{if(0==e)throw new FS.ErrnoError(21);var t=PIPEFS.createPipe();return HEAP32[e>>2]=t.readable_fd,HEAP32[e+4>>2]=t.writable_fd,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_poll(e,t,_){try{for(var r=0,n=0;n>2],i=HEAP16[o+4>>1],a=32,u=FS.getStream(l);u&&(a=SYSCALLS.DEFAULT_POLLMASK,u.stream_ops.poll&&(a=u.stream_ops.poll(u))),(a&=24|i)&&r++,HEAP16[o+6>>1]=a}return r}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_readlinkat(e,t,_,r){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),r<=0)return-28;var n=FS.readlink(t),o=Math.min(r,lengthBytesUTF8(n)),l=HEAP8[_+o];return stringToUTF8(n,_,r+1),HEAP8[_+o]=l,o}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_recvfrom(e,t,_,r,n,o){try{var l=getSocketFromFD(e),i=l.sock_ops.recvmsg(l,_);if(!i)return 0;if(n)writeSockaddr(n,l.family,DNS.lookup_name(i.addr),i.port,o);return HEAPU8.set(i.buffer,t),i.buffer.byteLength}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_recvmsg(e,t,_){try{for(var r=getSocketFromFD(e),n=HEAPU32[t+8>>2],o=HEAP32[t+12>>2],l=0,i=0;i>2];var a=r.sock_ops.recvmsg(r,l);if(!a)return 0;var u=HEAPU32[t>>2];if(u)writeSockaddr(u,r.family,DNS.lookup_name(a.addr),a.port);var s=0,c=a.buffer.byteLength;for(i=0;c>0&&i>2],p=HEAP32[n+(8*i+4)>>2];if(p){var y=Math.min(p,c),m=a.buffer.subarray(s,s+y);HEAPU8.set(m,d+s),s+=y,c-=y}}return s}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_renameat(e,t,_,r){try{return t=SYSCALLS.getStr(t),r=SYSCALLS.getStr(r),t=SYSCALLS.calculateAt(e,t),r=SYSCALLS.calculateAt(_,r),FS.rename(t,r),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_rmdir(e){try{return e=SYSCALLS.getStr(e),FS.rmdir(e),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function ___syscall_sendmsg(e,t,_){try{var r,n,o=getSocketFromFD(e),l=HEAPU32[t+8>>2],i=HEAP32[t+12>>2],a=HEAPU32[t>>2],u=HEAP32[t+4>>2];if(a){var s=readSockaddr(a,u);if(s.errno)return-s.errno;n=s.port,r=DNS.lookup_addr(s.addr)||s.addr}for(var c=0,d=0;d>2];var p=new Uint8Array(c),y=0;for(d=0;d>2],f=HEAP32[l+(8*d+4)>>2],M=0;M>2]+4294967296*HEAP32[e+4>>2]}function ___syscall_utimensat(e,t,_,r){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t,!0),_){var n=readI53FromI64(_),o=HEAP32[_+8>>2];l=1e3*n+o/1e6,i=1e3*(n=readI53FromI64(_+=16))+(o=HEAP32[_+8>>2])/1e6}else var l=Date.now(),i=l;return FS.utime(t,l,i),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}Module.PIPEFS=PIPEFS,Module.___syscall_pipe=___syscall_pipe,___syscall_pipe.sig="ip",Module.___syscall_poll=___syscall_poll,___syscall_poll.sig="ipii",Module.___syscall_readlinkat=___syscall_readlinkat,___syscall_readlinkat.sig="vippp",Module.___syscall_recvfrom=___syscall_recvfrom,Module.___syscall_recvmsg=___syscall_recvmsg,Module.___syscall_renameat=___syscall_renameat,___syscall_renameat.sig="iipip",Module.___syscall_rmdir=___syscall_rmdir,___syscall_rmdir.sig="ip",Module.___syscall_sendmsg=___syscall_sendmsg,Module.___syscall_sendto=___syscall_sendto,___syscall_sendto.sig="iipiipi",Module.___syscall_socket=___syscall_socket,Module.___syscall_stat64=___syscall_stat64,___syscall_stat64.sig="ipp",Module.___syscall_symlink=___syscall_symlink,___syscall_symlink.sig="ipp",Module.___syscall_symlinkat=___syscall_symlinkat,Module.___syscall_truncate64=___syscall_truncate64,___syscall_truncate64.sig="ipj",Module.___syscall_unlinkat=___syscall_unlinkat,___syscall_unlinkat.sig="iipi",Module.readI53FromI64=readI53FromI64,Module.___syscall_utimensat=___syscall_utimensat,___syscall_utimensat.sig="iippi";var ___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1);Module.___table_base=___table_base;var ENV={};function allocateUTF8OnStack(e){var t=lengthBytesUTF8(e)+1,_=stackAlloc(t);return stringToUTF8Array(e,HEAP8,_,t),_}function dlSetError(e){withStackSave((function(){var t=allocateUTF8OnStack(e);___dl_seterr(t,0)}))}function dlopenInternal(e,t){var _=UTF8ToString(e+28),r=HEAP32[e+4>>2],n=[],o=e=>{var t=FS.findObject(e);return t&&!t.isFolder&&!t.isDevice};if(!o(_=PATH.normalize(_)))for(var l in ENV.LD_LIBRARY_PATH&&(n=ENV.LD_LIBRARY_PATH.split(":")),n){var i=PATH.join2(n[l],_);if(o(i)){_=i;break}}var a={global:Boolean(256&r),nodelete:Boolean(4096&r),loadAsync:t.loadAsync,fs:t.fs};if(t.loadAsync)return loadDynamicLibrary(_,a,e);try{return loadDynamicLibrary(_,a,e)}catch(e){return dlSetError("Could not load dynamic lib: "+_+"\n"+e),0}}function __dlopen_js(e){return dlopenInternal(e,{loadAsync:!1,fs:FS})}function __dlsym_js(e,t,_){var r,n;t=UTF8ToString(t);var o=LDSO.loadedLibsByHandle[e];if(!o.module.hasOwnProperty(t))return dlSetError('Tried to lookup unknown symbol "'+t+'" in dynamic lib: '+o.name),0;if(n=Object.keys(o.module).indexOf(t),"function"==typeof(r=o.module[t])){var l=getFunctionAddress(r);l?r=l:(r=addFunction(r,r.sig),HEAPU32[_>>2]=n)}return r}function handleException(e){if(e instanceof ExitStatus||"unwind"==e)return EXITSTATUS;quit_(1,e)}function callUserCallback(e){if(!ABORT)try{e()}catch(e){handleException(e)}}function __emscripten_dlopen_js(e,t,_,r){function n(t){dlSetError("Could not load dynamic lib: "+UTF8ToString(HEAPU32[e+28>>2])+"\n"+t),callUserCallback((function(){getWasmTableEntry(_)(e,r)}))}var o=dlopenInternal(e,{loadAsync:!0});o?o.then((function(){callUserCallback((function(){getWasmTableEntry(t)(e,r)}))}),n):n()}function __emscripten_err(e){err(UTF8ToString(e))}Module.ENV=ENV,Module.allocateUTF8OnStack=allocateUTF8OnStack,Module.dlSetError=dlSetError,Module.dlopenInternal=dlopenInternal,Module.__dlopen_js=__dlopen_js,__dlopen_js.sig="pp",Module.__dlsym_js=__dlsym_js,__dlsym_js.sig="pppp",Module.handleException=handleException,Module.callUserCallback=callUserCallback,Module.__emscripten_dlopen_js=__emscripten_dlopen_js,__emscripten_dlopen_js.sig="vppp",Module.__emscripten_err=__emscripten_err,__emscripten_err.sig="vp";var nowIsMonotonic=!0;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_get_progname(e,t){stringToUTF8(thisProgram,e,t)}function __emscripten_out(e){out(UTF8ToString(e))}function __emscripten_throw_longjmp(){throw 1/0}function __gmtime_js(e,t){var _=new Date(1e3*readI53FromI64(e));HEAP32[t>>2]=_.getUTCSeconds(),HEAP32[t+4>>2]=_.getUTCMinutes(),HEAP32[t+8>>2]=_.getUTCHours(),HEAP32[t+12>>2]=_.getUTCDate(),HEAP32[t+16>>2]=_.getUTCMonth(),HEAP32[t+20>>2]=_.getUTCFullYear()-1900,HEAP32[t+24>>2]=_.getUTCDay();var r=Date.UTC(_.getUTCFullYear(),0,1,0,0,0,0),n=(_.getTime()-r)/864e5|0;HEAP32[t+28>>2]=n}function __isLeapYear(e){return e%4==0&&(e%100!=0||e%400==0)}Module.nowIsMonotonic=nowIsMonotonic,Module.__emscripten_get_now_is_monotonic=__emscripten_get_now_is_monotonic,__emscripten_get_now_is_monotonic.sig="i",Module.__emscripten_get_progname=__emscripten_get_progname,__emscripten_get_progname.sig="vpp",Module.__emscripten_out=__emscripten_out,__emscripten_out.sig="vp",Module.__emscripten_throw_longjmp=__emscripten_throw_longjmp,__emscripten_throw_longjmp.sig="v",Module.__gmtime_js=__gmtime_js,__gmtime_js.sig="ipp",Module.__isLeapYear=__isLeapYear;var __MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];Module.__MONTH_DAYS_LEAP_CUMULATIVE=__MONTH_DAYS_LEAP_CUMULATIVE;var __MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function __yday_from_date(e){return(__isLeapYear(e.getFullYear())?__MONTH_DAYS_LEAP_CUMULATIVE:__MONTH_DAYS_REGULAR_CUMULATIVE)[e.getMonth()]+e.getDate()-1}function __localtime_js(e,t){var _=new Date(1e3*readI53FromI64(e));HEAP32[t>>2]=_.getSeconds(),HEAP32[t+4>>2]=_.getMinutes(),HEAP32[t+8>>2]=_.getHours(),HEAP32[t+12>>2]=_.getDate(),HEAP32[t+16>>2]=_.getMonth(),HEAP32[t+20>>2]=_.getFullYear()-1900,HEAP32[t+24>>2]=_.getDay();var r=0|__yday_from_date(_);HEAP32[t+28>>2]=r,HEAP32[t+36>>2]=-60*_.getTimezoneOffset();var n=new Date(_.getFullYear(),0,1),o=new Date(_.getFullYear(),6,1).getTimezoneOffset(),l=n.getTimezoneOffset(),i=0|(o!=l&&_.getTimezoneOffset()==Math.min(l,o));HEAP32[t+32>>2]=i}function __mktime_js(e){var t=new Date(HEAP32[e+20>>2]+1900,HEAP32[e+16>>2],HEAP32[e+12>>2],HEAP32[e+8>>2],HEAP32[e+4>>2],HEAP32[e>>2],0),_=HEAP32[e+32>>2],r=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),o=new Date(t.getFullYear(),6,1).getTimezoneOffset(),l=n.getTimezoneOffset(),i=Math.min(l,o);if(_<0)HEAP32[e+32>>2]=Number(o!=l&&i==r);else if(_>0!=(i==r)){var a=Math.max(l,o),u=_>0?i:a;t.setTime(t.getTime()+6e4*(u-r))}HEAP32[e+24>>2]=t.getDay();var s=0|__yday_from_date(t);return HEAP32[e+28>>2]=s,HEAP32[e>>2]=t.getSeconds(),HEAP32[e+4>>2]=t.getMinutes(),HEAP32[e+8>>2]=t.getHours(),HEAP32[e+12>>2]=t.getDate(),HEAP32[e+16>>2]=t.getMonth(),HEAP32[e+20>>2]=t.getYear(),t.getTime()/1e3|0}function __mmap_js(e,t,_,r,n,o,l){try{var i=SYSCALLS.getStreamFromFD(r),a=FS.mmap(i,e,n,t,_),u=a.ptr;return HEAP32[o>>2]=a.allocated,HEAPU32[l>>2]=u,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function __msync_js(e,t,_,r,n,o){try{return SYSCALLS.doMsync(e,SYSCALLS.getStreamFromFD(n),t,r,0),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}function __munmap_js(e,t,_,r,n,o){try{var l=SYSCALLS.getStreamFromFD(n);2&_&&SYSCALLS.doMsync(e,l,t,r,o),FS.munmap(l)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}Module.__MONTH_DAYS_REGULAR_CUMULATIVE=__MONTH_DAYS_REGULAR_CUMULATIVE,Module.__yday_from_date=__yday_from_date,Module.__localtime_js=__localtime_js,__localtime_js.sig="ipp",Module.__mktime_js=__mktime_js,__mktime_js.sig="ip",Module.__mmap_js=__mmap_js,__mmap_js.sig="ipiiippp",Module.__msync_js=__msync_js,__msync_js.sig="ippiiip",Module.__munmap_js=__munmap_js,__munmap_js.sig="ippiiip";var timers={},_emscripten_get_now;function __setitimer_js(e,t){if(timers[e]&&(clearTimeout(timers[e].id),delete timers[e]),!t)return 0;var _=setTimeout((()=>{delete timers[e],callUserCallback((()=>__emscripten_timeout(e,_emscripten_get_now())))}),t);return timers[e]={id:_,timeout_ms:t},0}function __timegm_js(e){var t=Date.UTC(HEAP32[e+20>>2]+1900,HEAP32[e+16>>2],HEAP32[e+12>>2],HEAP32[e+8>>2],HEAP32[e+4>>2],HEAP32[e>>2],0),_=new Date(t);HEAP32[e+24>>2]=_.getUTCDay();var r=Date.UTC(_.getUTCFullYear(),0,1,0,0,0,0),n=(_.getTime()-r)/864e5|0;return HEAP32[e+28>>2]=n,_.getTime()/1e3|0}function allocateUTF8(e){var t=lengthBytesUTF8(e)+1,_=_malloc(t);return _&&stringToUTF8Array(e,HEAP8,_,t),_}function __tzset_js(e,t,_){var r=(new Date).getFullYear(),n=new Date(r,0,1),o=new Date(r,6,1),l=n.getTimezoneOffset(),i=o.getTimezoneOffset(),a=Math.max(l,i);function u(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}HEAPU32[e>>2]=60*a,HEAP32[t>>2]=Number(l!=i);var s=u(n),c=u(o),d=allocateUTF8(s),p=allocateUTF8(c);i>2]=d,HEAPU32[_+4>>2]=p):(HEAPU32[_>>2]=p,HEAPU32[_+4>>2]=d)}function _abort(){abort("")}Module.timers=timers,_emscripten_get_now=ENVIRONMENT_IS_NODE?()=>{var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:()=>performance.now(),Module._emscripten_get_now=_emscripten_get_now,_emscripten_get_now.sig="d",Module.__setitimer_js=__setitimer_js,__setitimer_js.sig="iid",Module.__timegm_js=__timegm_js,__timegm_js.sig="ip",Module.allocateUTF8=allocateUTF8,Module.__tzset_js=__tzset_js,__tzset_js.sig="vppp",Module._abort=_abort,_abort.sig="v";var readEmAsmArgsArray=[];function readEmAsmArgs(e,t){var _;for(readEmAsmArgsArray.length=0,t>>=2;_=HEAPU8[e++];)t+=105!=_&t,readEmAsmArgsArray.push(105==_?HEAP32[t]:(106==_?HEAP64:HEAPF64)[t++>>1]),++t;return readEmAsmArgsArray}function runEmAsmFunction(e,t,_){var r=readEmAsmArgs(t,_);return ASM_CONSTS[e].apply(null,r)}function _emscripten_asm_const_int(e,t,_){return runEmAsmFunction(e,t,_)}function _emscripten_console_error(e){console.error(UTF8ToString(e))}function _emscripten_console_log(e){console.log(UTF8ToString(e))}function _emscripten_console_warn(e){console.warn(UTF8ToString(e))}function _emscripten_date_now(){return Date.now()}function _emscripten_exit_with_live_runtime(){throw"unwind"}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}function _emscripten_get_now_res(){return ENVIRONMENT_IS_NODE?1:1e3}function __webgl_enable_ANGLE_instanced_arrays(e){var t=e.getExtension("ANGLE_instanced_arrays");if(t)return e.vertexAttribDivisor=function(e,_){t.vertexAttribDivisorANGLE(e,_)},e.drawArraysInstanced=function(e,_,r,n){t.drawArraysInstancedANGLE(e,_,r,n)},e.drawElementsInstanced=function(e,_,r,n,o){t.drawElementsInstancedANGLE(e,_,r,n,o)},1}function __webgl_enable_OES_vertex_array_object(e){var t=e.getExtension("OES_vertex_array_object");if(t)return e.createVertexArray=function(){return t.createVertexArrayOES()},e.deleteVertexArray=function(e){t.deleteVertexArrayOES(e)},e.bindVertexArray=function(e){t.bindVertexArrayOES(e)},e.isVertexArray=function(e){return t.isVertexArrayOES(e)},1}function __webgl_enable_WEBGL_draw_buffers(e){var t=e.getExtension("WEBGL_draw_buffers");if(t)return e.drawBuffers=function(e,_){t.drawBuffersWEBGL(e,_)},1}function __webgl_enable_WEBGL_multi_draw(e){return!!(e.multiDrawWebgl=e.getExtension("WEBGL_multi_draw"))}Module.readEmAsmArgsArray=readEmAsmArgsArray,Module.readEmAsmArgs=readEmAsmArgs,Module.runEmAsmFunction=runEmAsmFunction,runEmAsmFunction.sig="ippp",Module._emscripten_asm_const_int=_emscripten_asm_const_int,_emscripten_asm_const_int.sig="ippp",Module._emscripten_console_error=_emscripten_console_error,_emscripten_console_error.sig="vp",Module._emscripten_console_log=_emscripten_console_log,_emscripten_console_log.sig="vp",Module._emscripten_console_warn=_emscripten_console_warn,_emscripten_console_warn.sig="vp",Module._emscripten_date_now=_emscripten_date_now,_emscripten_date_now.sig="d",Module._emscripten_exit_with_live_runtime=_emscripten_exit_with_live_runtime,_emscripten_exit_with_live_runtime.sig="v",Module.getHeapMax=getHeapMax,Module._emscripten_get_heap_max=_emscripten_get_heap_max,_emscripten_get_heap_max.sig="p",Module._emscripten_get_now_res=_emscripten_get_now_res,Module.__webgl_enable_ANGLE_instanced_arrays=__webgl_enable_ANGLE_instanced_arrays,Module.__webgl_enable_OES_vertex_array_object=__webgl_enable_OES_vertex_array_object,Module.__webgl_enable_WEBGL_draw_buffers=__webgl_enable_WEBGL_draw_buffers,Module.__webgl_enable_WEBGL_multi_draw=__webgl_enable_WEBGL_multi_draw;var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],stringCache:{},unpackAlignment:4,recordError:function(e){GL.lastError||(GL.lastError=e)},getNewId:function(e){for(var t=GL.counter++,_=e.length;_>2]:-1;n+=UTF8ToString(HEAP32[_+4*o>>2],l<0?void 0:l)}return n},createContext:function(e,t){var _=e.getContext("webgl",t);return _?GL.registerContext(_,t):0},registerContext:function(e,t){var _=GL.getNewId(GL.contexts),r={handle:_,attributes:t,version:t.majorVersion,GLctx:e};return e.canvas&&(e.canvas.GLctxObject=r),GL.contexts[_]=r,(void 0===t.enableExtensionsByDefault||t.enableExtensionsByDefault)&&GL.initExtensions(r),_},makeContextCurrent:function(e){return GL.currentContext=GL.contexts[e],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(e&&!GLctx)},getContext:function(e){return GL.contexts[e]},deleteContext:function(e){GL.currentContext===GL.contexts[e]&&(GL.currentContext=null),"object"==typeof JSEvents&&JSEvents.removeAllHandlersOnTarget(GL.contexts[e].GLctx.canvas),GL.contexts[e]&&GL.contexts[e].GLctx.canvas&&(GL.contexts[e].GLctx.canvas.GLctxObject=void 0),GL.contexts[e]=null},initExtensions:function(e){if(e||(e=GL.currentContext),!e.initExtensionsDone){e.initExtensionsDone=!0;var t=e.GLctx;__webgl_enable_ANGLE_instanced_arrays(t),__webgl_enable_OES_vertex_array_object(t),__webgl_enable_WEBGL_draw_buffers(t),t.disjointTimerQueryExt=t.getExtension("EXT_disjoint_timer_query"),__webgl_enable_WEBGL_multi_draw(t),(t.getSupportedExtensions()||[]).forEach((function(e){e.includes("lose_context")||e.includes("debug")||t.getExtension(e)}))}}};function _emscripten_glActiveTexture(e){GLctx.activeTexture(e)}function _emscripten_glAttachShader(e,t){GLctx.attachShader(GL.programs[e],GL.shaders[t])}function _emscripten_glBeginQueryEXT(e,t){GLctx.disjointTimerQueryExt.beginQueryEXT(e,GL.queries[t])}function _emscripten_glBindAttribLocation(e,t,_){GLctx.bindAttribLocation(GL.programs[e],t,UTF8ToString(_))}function _emscripten_glBindBuffer(e,t){GLctx.bindBuffer(e,GL.buffers[t])}function _emscripten_glBindFramebuffer(e,t){GLctx.bindFramebuffer(e,GL.framebuffers[t])}function _emscripten_glBindRenderbuffer(e,t){GLctx.bindRenderbuffer(e,GL.renderbuffers[t])}function _emscripten_glBindTexture(e,t){GLctx.bindTexture(e,GL.textures[t])}function _emscripten_glBindVertexArrayOES(e){GLctx.bindVertexArray(GL.vaos[e])}function _emscripten_glBlendColor(e,t,_,r){GLctx.blendColor(e,t,_,r)}function _emscripten_glBlendEquation(e){GLctx.blendEquation(e)}function _emscripten_glBlendEquationSeparate(e,t){GLctx.blendEquationSeparate(e,t)}function _emscripten_glBlendFunc(e,t){GLctx.blendFunc(e,t)}function _emscripten_glBlendFuncSeparate(e,t,_,r){GLctx.blendFuncSeparate(e,t,_,r)}function _emscripten_glBufferData(e,t,_,r){GLctx.bufferData(e,_?HEAPU8.subarray(_,_+t):t,r)}function _emscripten_glBufferSubData(e,t,_,r){GLctx.bufferSubData(e,t,HEAPU8.subarray(r,r+_))}function _emscripten_glCheckFramebufferStatus(e){return GLctx.checkFramebufferStatus(e)}function _emscripten_glClear(e){GLctx.clear(e)}function _emscripten_glClearColor(e,t,_,r){GLctx.clearColor(e,t,_,r)}function _emscripten_glClearDepthf(e){GLctx.clearDepth(e)}function _emscripten_glClearStencil(e){GLctx.clearStencil(e)}function _emscripten_glColorMask(e,t,_,r){GLctx.colorMask(!!e,!!t,!!_,!!r)}function _emscripten_glCompileShader(e){GLctx.compileShader(GL.shaders[e])}function _emscripten_glCompressedTexImage2D(e,t,_,r,n,o,l,i){GLctx.compressedTexImage2D(e,t,_,r,n,o,i?HEAPU8.subarray(i,i+l):null)}function _emscripten_glCompressedTexSubImage2D(e,t,_,r,n,o,l,i,a){GLctx.compressedTexSubImage2D(e,t,_,r,n,o,l,a?HEAPU8.subarray(a,a+i):null)}function _emscripten_glCopyTexImage2D(e,t,_,r,n,o,l,i){GLctx.copyTexImage2D(e,t,_,r,n,o,l,i)}function _emscripten_glCopyTexSubImage2D(e,t,_,r,n,o,l,i){GLctx.copyTexSubImage2D(e,t,_,r,n,o,l,i)}function _emscripten_glCreateProgram(){var e=GL.getNewId(GL.programs),t=GLctx.createProgram();return t.name=e,t.maxUniformLength=t.maxAttributeLength=t.maxUniformBlockNameLength=0,t.uniformIdCounter=1,GL.programs[e]=t,e}function _emscripten_glCreateShader(e){var t=GL.getNewId(GL.shaders);return GL.shaders[t]=GLctx.createShader(e),t}function _emscripten_glCullFace(e){GLctx.cullFace(e)}function _emscripten_glDeleteBuffers(e,t){for(var _=0;_>2],n=GL.buffers[r];n&&(GLctx.deleteBuffer(n),n.name=0,GL.buffers[r]=null)}}function _emscripten_glDeleteFramebuffers(e,t){for(var _=0;_>2],n=GL.framebuffers[r];n&&(GLctx.deleteFramebuffer(n),n.name=0,GL.framebuffers[r]=null)}}function _emscripten_glDeleteProgram(e){if(e){var t=GL.programs[e];t?(GLctx.deleteProgram(t),t.name=0,GL.programs[e]=null):GL.recordError(1281)}}function _emscripten_glDeleteQueriesEXT(e,t){for(var _=0;_>2],n=GL.queries[r];n&&(GLctx.disjointTimerQueryExt.deleteQueryEXT(n),GL.queries[r]=null)}}function _emscripten_glDeleteRenderbuffers(e,t){for(var _=0;_>2],n=GL.renderbuffers[r];n&&(GLctx.deleteRenderbuffer(n),n.name=0,GL.renderbuffers[r]=null)}}function _emscripten_glDeleteShader(e){if(e){var t=GL.shaders[e];t?(GLctx.deleteShader(t),GL.shaders[e]=null):GL.recordError(1281)}}function _emscripten_glDeleteTextures(e,t){for(var _=0;_>2],n=GL.textures[r];n&&(GLctx.deleteTexture(n),n.name=0,GL.textures[r]=null)}}function _emscripten_glDeleteVertexArraysOES(e,t){for(var _=0;_>2];GLctx.deleteVertexArray(GL.vaos[r]),GL.vaos[r]=null}}function _emscripten_glDepthFunc(e){GLctx.depthFunc(e)}function _emscripten_glDepthMask(e){GLctx.depthMask(!!e)}function _emscripten_glDepthRangef(e,t){GLctx.depthRange(e,t)}function _emscripten_glDetachShader(e,t){GLctx.detachShader(GL.programs[e],GL.shaders[t])}function _emscripten_glDisable(e){GLctx.disable(e)}function _emscripten_glDisableVertexAttribArray(e){GLctx.disableVertexAttribArray(e)}function _emscripten_glDrawArrays(e,t,_){GLctx.drawArrays(e,t,_)}function _emscripten_glDrawArraysInstancedANGLE(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}Module.GL=GL,Module._emscripten_glActiveTexture=_emscripten_glActiveTexture,_emscripten_glActiveTexture.sig="vi",Module._emscripten_glAttachShader=_emscripten_glAttachShader,_emscripten_glAttachShader.sig="vii",Module._emscripten_glBeginQueryEXT=_emscripten_glBeginQueryEXT,_emscripten_glBeginQueryEXT.sig="vii",Module._emscripten_glBindAttribLocation=_emscripten_glBindAttribLocation,_emscripten_glBindAttribLocation.sig="viii",Module._emscripten_glBindBuffer=_emscripten_glBindBuffer,_emscripten_glBindBuffer.sig="vii",Module._emscripten_glBindFramebuffer=_emscripten_glBindFramebuffer,_emscripten_glBindFramebuffer.sig="vii",Module._emscripten_glBindRenderbuffer=_emscripten_glBindRenderbuffer,_emscripten_glBindRenderbuffer.sig="vii",Module._emscripten_glBindTexture=_emscripten_glBindTexture,_emscripten_glBindTexture.sig="vii",Module._emscripten_glBindVertexArrayOES=_emscripten_glBindVertexArrayOES,_emscripten_glBindVertexArrayOES.sig="vi",Module._emscripten_glBlendColor=_emscripten_glBlendColor,_emscripten_glBlendColor.sig="vffff",Module._emscripten_glBlendEquation=_emscripten_glBlendEquation,_emscripten_glBlendEquation.sig="vi",Module._emscripten_glBlendEquationSeparate=_emscripten_glBlendEquationSeparate,_emscripten_glBlendEquationSeparate.sig="vii",Module._emscripten_glBlendFunc=_emscripten_glBlendFunc,_emscripten_glBlendFunc.sig="vii",Module._emscripten_glBlendFuncSeparate=_emscripten_glBlendFuncSeparate,_emscripten_glBlendFuncSeparate.sig="viiii",Module._emscripten_glBufferData=_emscripten_glBufferData,_emscripten_glBufferData.sig="viiii",Module._emscripten_glBufferSubData=_emscripten_glBufferSubData,_emscripten_glBufferSubData.sig="viiii",Module._emscripten_glCheckFramebufferStatus=_emscripten_glCheckFramebufferStatus,_emscripten_glCheckFramebufferStatus.sig="ii",Module._emscripten_glClear=_emscripten_glClear,_emscripten_glClear.sig="vi",Module._emscripten_glClearColor=_emscripten_glClearColor,_emscripten_glClearColor.sig="vffff",Module._emscripten_glClearDepthf=_emscripten_glClearDepthf,_emscripten_glClearDepthf.sig="vf",Module._emscripten_glClearStencil=_emscripten_glClearStencil,_emscripten_glClearStencil.sig="vi",Module._emscripten_glColorMask=_emscripten_glColorMask,_emscripten_glColorMask.sig="viiii",Module._emscripten_glCompileShader=_emscripten_glCompileShader,_emscripten_glCompileShader.sig="vi",Module._emscripten_glCompressedTexImage2D=_emscripten_glCompressedTexImage2D,_emscripten_glCompressedTexImage2D.sig="viiiiiiii",Module._emscripten_glCompressedTexSubImage2D=_emscripten_glCompressedTexSubImage2D,_emscripten_glCompressedTexSubImage2D.sig="viiiiiiiii",Module._emscripten_glCopyTexImage2D=_emscripten_glCopyTexImage2D,_emscripten_glCopyTexImage2D.sig="viiiiiiii",Module._emscripten_glCopyTexSubImage2D=_emscripten_glCopyTexSubImage2D,_emscripten_glCopyTexSubImage2D.sig="viiiiiiii",Module._emscripten_glCreateProgram=_emscripten_glCreateProgram,_emscripten_glCreateProgram.sig="i",Module._emscripten_glCreateShader=_emscripten_glCreateShader,_emscripten_glCreateShader.sig="ii",Module._emscripten_glCullFace=_emscripten_glCullFace,_emscripten_glCullFace.sig="vi",Module._emscripten_glDeleteBuffers=_emscripten_glDeleteBuffers,_emscripten_glDeleteBuffers.sig="vii",Module._emscripten_glDeleteFramebuffers=_emscripten_glDeleteFramebuffers,_emscripten_glDeleteFramebuffers.sig="vii",Module._emscripten_glDeleteProgram=_emscripten_glDeleteProgram,_emscripten_glDeleteProgram.sig="vi",Module._emscripten_glDeleteQueriesEXT=_emscripten_glDeleteQueriesEXT,_emscripten_glDeleteQueriesEXT.sig="vii",Module._emscripten_glDeleteRenderbuffers=_emscripten_glDeleteRenderbuffers,_emscripten_glDeleteRenderbuffers.sig="vii",Module._emscripten_glDeleteShader=_emscripten_glDeleteShader,_emscripten_glDeleteShader.sig="vi",Module._emscripten_glDeleteTextures=_emscripten_glDeleteTextures,_emscripten_glDeleteTextures.sig="vii",Module._emscripten_glDeleteVertexArraysOES=_emscripten_glDeleteVertexArraysOES,_emscripten_glDeleteVertexArraysOES.sig="vii",Module._emscripten_glDepthFunc=_emscripten_glDepthFunc,_emscripten_glDepthFunc.sig="vi",Module._emscripten_glDepthMask=_emscripten_glDepthMask,_emscripten_glDepthMask.sig="vi",Module._emscripten_glDepthRangef=_emscripten_glDepthRangef,_emscripten_glDepthRangef.sig="vii",Module._emscripten_glDetachShader=_emscripten_glDetachShader,_emscripten_glDetachShader.sig="vii",Module._emscripten_glDisable=_emscripten_glDisable,_emscripten_glDisable.sig="vi",Module._emscripten_glDisableVertexAttribArray=_emscripten_glDisableVertexAttribArray,_emscripten_glDisableVertexAttribArray.sig="vi",Module._emscripten_glDrawArrays=_emscripten_glDrawArrays,_emscripten_glDrawArrays.sig="viii",Module._emscripten_glDrawArraysInstancedANGLE=_emscripten_glDrawArraysInstancedANGLE,_emscripten_glDrawArraysInstancedANGLE.sig="viiii";var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(e,t){for(var _=tempFixedLengthArray[e],r=0;r>2];GLctx.drawBuffers(_)}function _emscripten_glDrawElements(e,t,_,r){GLctx.drawElements(e,t,_,r)}function _emscripten_glDrawElementsInstancedANGLE(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _emscripten_glEnable(e){GLctx.enable(e)}function _emscripten_glEnableVertexAttribArray(e){GLctx.enableVertexAttribArray(e)}function _emscripten_glEndQueryEXT(e){GLctx.disjointTimerQueryExt.endQueryEXT(e)}function _emscripten_glFinish(){GLctx.finish()}function _emscripten_glFlush(){GLctx.flush()}function _emscripten_glFramebufferRenderbuffer(e,t,_,r){GLctx.framebufferRenderbuffer(e,t,_,GL.renderbuffers[r])}function _emscripten_glFramebufferTexture2D(e,t,_,r,n){GLctx.framebufferTexture2D(e,t,_,GL.textures[r],n)}function _emscripten_glFrontFace(e){GLctx.frontFace(e)}function __glGenObject(e,t,_,r){for(var n=0;n>2]=l}}function _emscripten_glGenBuffers(e,t){__glGenObject(e,t,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(e,t){__glGenObject(e,t,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(e,t){for(var _=0;_>2]=0;return}var n=GL.getNewId(GL.queries);r.name=n,GL.queries[n]=r,HEAP32[t+4*_>>2]=n}}function _emscripten_glGenRenderbuffers(e,t){__glGenObject(e,t,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(e,t){__glGenObject(e,t,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(e,t){__glGenObject(e,t,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(e){GLctx.generateMipmap(e)}function __glGetActiveAttribOrUniform(e,t,_,r,n,o,l,i){t=GL.programs[t];var a=GLctx[e](t,_);if(a){var u=i&&stringToUTF8(a.name,i,r);n&&(HEAP32[n>>2]=u),o&&(HEAP32[o>>2]=a.size),l&&(HEAP32[l>>2]=a.type)}}function _emscripten_glGetActiveAttrib(e,t,_,r,n,o,l){__glGetActiveAttribOrUniform("getActiveAttrib",e,t,_,r,n,o,l)}function _emscripten_glGetActiveUniform(e,t,_,r,n,o,l){__glGetActiveAttribOrUniform("getActiveUniform",e,t,_,r,n,o,l)}function _emscripten_glGetAttachedShaders(e,t,_,r){var n=GLctx.getAttachedShaders(GL.programs[e]),o=n.length;o>t&&(o=t),HEAP32[_>>2]=o;for(var l=0;l>2]=i}}function _emscripten_glGetAttribLocation(e,t){return GLctx.getAttribLocation(GL.programs[e],UTF8ToString(t))}function writeI53ToI64(e,t){HEAPU32[e>>2]=t,HEAPU32[e+4>>2]=(t-HEAPU32[e>>2])/4294967296}function emscriptenWebGLGet(e,t,_){if(t){var r=void 0;switch(e){case 36346:r=1;break;case 36344:return void(0!=_&&1!=_&&GL.recordError(1280));case 36345:r=0;break;case 34466:var n=GLctx.getParameter(34467);r=n?n.length:0}if(void 0===r){var o=GLctx.getParameter(e);switch(typeof o){case"number":r=o;break;case"boolean":r=o?1:0;break;case"string":return void GL.recordError(1280);case"object":if(null===o)switch(e){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:r=0;break;default:return void GL.recordError(1280)}else{if(o instanceof Float32Array||o instanceof Uint32Array||o instanceof Int32Array||o instanceof Array){for(var l=0;l>2]=o[l];break;case 2:HEAPF32[t+4*l>>2]=o[l];break;case 4:HEAP8[t+l|0]=o[l]?1:0}return}try{r=0|o.name}catch(t){return GL.recordError(1280),void err("GL_INVALID_ENUM in glGet"+_+"v: Unknown object returned from WebGL getParameter("+e+")! (error: "+t+")")}}break;default:return GL.recordError(1280),void err("GL_INVALID_ENUM in glGet"+_+"v: Native code calling glGet"+_+"v("+e+") and it returns "+o+" of type "+typeof o+"!")}}switch(_){case 1:writeI53ToI64(t,r);break;case 0:HEAP32[t>>2]=r;break;case 2:HEAPF32[t>>2]=r;break;case 4:HEAP8[t|0]=r?1:0}}else GL.recordError(1281)}function _emscripten_glGetBooleanv(e,t){emscriptenWebGLGet(e,t,4)}function _emscripten_glGetBufferParameteriv(e,t,_){_?HEAP32[_>>2]=GLctx.getBufferParameter(e,t):GL.recordError(1281)}function _emscripten_glGetError(){var e=GLctx.getError()||GL.lastError;return GL.lastError=0,e}function _emscripten_glGetFloatv(e,t){emscriptenWebGLGet(e,t,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(e,t,_,r){var n=GLctx.getFramebufferAttachmentParameter(e,t,_);(n instanceof WebGLRenderbuffer||n instanceof WebGLTexture)&&(n=0|n.name),HEAP32[r>>2]=n}function _emscripten_glGetIntegerv(e,t){emscriptenWebGLGet(e,t,0)}function _emscripten_glGetProgramInfoLog(e,t,_,r){var n=GLctx.getProgramInfoLog(GL.programs[e]);null===n&&(n="(unknown error)");var o=t>0&&r?stringToUTF8(n,r,t):0;_&&(HEAP32[_>>2]=o)}function _emscripten_glGetProgramiv(e,t,_){if(_)if(e>=GL.counter)GL.recordError(1281);else if(e=GL.programs[e],35716==t){var r=GLctx.getProgramInfoLog(e);null===r&&(r="(unknown error)"),HEAP32[_>>2]=r.length+1}else if(35719==t){if(!e.maxUniformLength)for(var n=0;n>2]=e.maxUniformLength}else if(35722==t){if(!e.maxAttributeLength)for(n=0;n>2]=e.maxAttributeLength}else if(35381==t){if(!e.maxUniformBlockNameLength)for(n=0;n>2]=e.maxUniformBlockNameLength}else HEAP32[_>>2]=GLctx.getProgramParameter(e,t);else GL.recordError(1281)}function _emscripten_glGetQueryObjecti64vEXT(e,t,_){if(_){var r,n=GL.queries[e];writeI53ToI64(_,"boolean"==typeof(r=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t))?r?1:0:r)}else GL.recordError(1281)}function _emscripten_glGetQueryObjectivEXT(e,t,_){if(_){var r,n=GL.queries[e],o=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t);r="boolean"==typeof o?o?1:0:o,HEAP32[_>>2]=r}else GL.recordError(1281)}function _emscripten_glGetQueryObjectui64vEXT(e,t,_){if(_){var r,n=GL.queries[e];writeI53ToI64(_,"boolean"==typeof(r=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t))?r?1:0:r)}else GL.recordError(1281)}function _emscripten_glGetQueryObjectuivEXT(e,t,_){if(_){var r,n=GL.queries[e],o=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t);r="boolean"==typeof o?o?1:0:o,HEAP32[_>>2]=r}else GL.recordError(1281)}function _emscripten_glGetQueryivEXT(e,t,_){_?HEAP32[_>>2]=GLctx.disjointTimerQueryExt.getQueryEXT(e,t):GL.recordError(1281)}function _emscripten_glGetRenderbufferParameteriv(e,t,_){_?HEAP32[_>>2]=GLctx.getRenderbufferParameter(e,t):GL.recordError(1281)}function _emscripten_glGetShaderInfoLog(e,t,_,r){var n=GLctx.getShaderInfoLog(GL.shaders[e]);null===n&&(n="(unknown error)");var o=t>0&&r?stringToUTF8(n,r,t):0;_&&(HEAP32[_>>2]=o)}function _emscripten_glGetShaderPrecisionFormat(e,t,_,r){var n=GLctx.getShaderPrecisionFormat(e,t);HEAP32[_>>2]=n.rangeMin,HEAP32[_+4>>2]=n.rangeMax,HEAP32[r>>2]=n.precision}function _emscripten_glGetShaderSource(e,t,_,r){var n=GLctx.getShaderSource(GL.shaders[e]);if(n){var o=t>0&&r?stringToUTF8(n,r,t):0;_&&(HEAP32[_>>2]=o)}}function _emscripten_glGetShaderiv(e,t,_){if(_)if(35716==t){var r=GLctx.getShaderInfoLog(GL.shaders[e]);null===r&&(r="(unknown error)");var n=r?r.length+1:0;HEAP32[_>>2]=n}else if(35720==t){var o=GLctx.getShaderSource(GL.shaders[e]),l=o?o.length+1:0;HEAP32[_>>2]=l}else HEAP32[_>>2]=GLctx.getShaderParameter(GL.shaders[e],t);else GL.recordError(1281)}function stringToNewUTF8(e){var t=lengthBytesUTF8(e)+1,_=_malloc(t);return stringToUTF8(e,_,t),_}function _emscripten_glGetString(e){var t=GL.stringCache[e];if(!t){switch(e){case 7939:var _=GLctx.getSupportedExtensions()||[];t=stringToNewUTF8((_=_.concat(_.map((function(e){return"GL_"+e})))).join(" "));break;case 7936:case 7937:case 37445:case 37446:var r=GLctx.getParameter(e);r||GL.recordError(1280),t=r&&stringToNewUTF8(r);break;case 7938:var n=GLctx.getParameter(7938);t=stringToNewUTF8(n="OpenGL ES 2.0 ("+n+")");break;case 35724:var o=GLctx.getParameter(35724),l=o.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==l&&(3==l[1].length&&(l[1]=l[1]+"0"),o="OpenGL ES GLSL ES "+l[1]+" ("+o+")"),t=stringToNewUTF8(o);break;default:GL.recordError(1280)}GL.stringCache[e]=t}return t}function _emscripten_glGetTexParameterfv(e,t,_){_?HEAPF32[_>>2]=GLctx.getTexParameter(e,t):GL.recordError(1281)}function _emscripten_glGetTexParameteriv(e,t,_){_?HEAP32[_>>2]=GLctx.getTexParameter(e,t):GL.recordError(1281)}function webglGetLeftBracePos(e){return"]"==e.slice(-1)&&e.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(e){var t,_,r=e.uniformLocsById,n=e.uniformSizeAndIdsByName;if(!r)for(e.uniformLocsById=r={},e.uniformArrayNamesById={},t=0;t0?l.slice(0,a):l,s=e.uniformIdCounter;for(e.uniformIdCounter+=i,n[u]=[i,s],_=0;_0&&(r=jstoi_q(t.slice(o+1))>>>0,n=t.slice(0,o));var l=e.uniformSizeAndIdsByName[n];if(l&&r0?"["+_+"]":""))),_}GL.recordError(1282)}function emscriptenWebGLGetUniform(e,t,_,r){if(_){webglPrepareUniformLocationsBeforeFirstUse(e=GL.programs[e]);var n=GLctx.getUniform(e,webglGetUniformLocation(t));if("number"==typeof n||"boolean"==typeof n)switch(r){case 0:HEAP32[_>>2]=n;break;case 2:HEAPF32[_>>2]=n}else for(var o=0;o>2]=n[o];break;case 2:HEAPF32[_+4*o>>2]=n[o]}}else GL.recordError(1281)}function _emscripten_glGetUniformfv(e,t,_){emscriptenWebGLGetUniform(e,t,_,2)}function _emscripten_glGetUniformiv(e,t,_){emscriptenWebGLGetUniform(e,t,_,0)}function _emscripten_glGetVertexAttribPointerv(e,t,_){_?HEAP32[_>>2]=GLctx.getVertexAttribOffset(e,t):GL.recordError(1281)}function emscriptenWebGLGetVertexAttrib(e,t,_,r){if(_){var n=GLctx.getVertexAttrib(e,t);if(34975==t)HEAP32[_>>2]=n&&n.name;else if("number"==typeof n||"boolean"==typeof n)switch(r){case 0:HEAP32[_>>2]=n;break;case 2:HEAPF32[_>>2]=n;break;case 5:HEAP32[_>>2]=Math.fround(n)}else for(var o=0;o>2]=n[o];break;case 2:HEAPF32[_+4*o>>2]=n[o];break;case 5:HEAP32[_+4*o>>2]=Math.fround(n[o])}}else GL.recordError(1281)}function _emscripten_glGetVertexAttribfv(e,t,_){emscriptenWebGLGetVertexAttrib(e,t,_,2)}function _emscripten_glGetVertexAttribiv(e,t,_){emscriptenWebGLGetVertexAttrib(e,t,_,5)}function _emscripten_glHint(e,t){GLctx.hint(e,t)}function _emscripten_glIsBuffer(e){var t=GL.buffers[e];return t?GLctx.isBuffer(t):0}function _emscripten_glIsEnabled(e){return GLctx.isEnabled(e)}function _emscripten_glIsFramebuffer(e){var t=GL.framebuffers[e];return t?GLctx.isFramebuffer(t):0}function _emscripten_glIsProgram(e){return(e=GL.programs[e])?GLctx.isProgram(e):0}function _emscripten_glIsQueryEXT(e){var t=GL.queries[e];return t?GLctx.disjointTimerQueryExt.isQueryEXT(t):0}function _emscripten_glIsRenderbuffer(e){var t=GL.renderbuffers[e];return t?GLctx.isRenderbuffer(t):0}function _emscripten_glIsShader(e){var t=GL.shaders[e];return t?GLctx.isShader(t):0}function _emscripten_glIsTexture(e){var t=GL.textures[e];return t?GLctx.isTexture(t):0}function _emscripten_glIsVertexArrayOES(e){var t=GL.vaos[e];return t?GLctx.isVertexArray(t):0}function _emscripten_glLineWidth(e){GLctx.lineWidth(e)}function _emscripten_glLinkProgram(e){e=GL.programs[e],GLctx.linkProgram(e),e.uniformLocsById=0,e.uniformSizeAndIdsByName={}}function _emscripten_glPixelStorei(e,t){3317==e&&(GL.unpackAlignment=t),GLctx.pixelStorei(e,t)}function _emscripten_glPolygonOffset(e,t){GLctx.polygonOffset(e,t)}function _emscripten_glQueryCounterEXT(e,t){GLctx.disjointTimerQueryExt.queryCounterEXT(GL.queries[e],t)}function computeUnpackAlignedImageSize(e,t,_,r){var n;return t*(e*_+(n=r)-1&-n)}function __colorChannelsInGlTextureFormat(e){return{5:3,6:4,8:2,29502:3,29504:4}[e-6402]||1}function heapObjectForWebGLType(e){return 1==(e-=5120)?HEAPU8:4==e?HEAP32:6==e?HEAPF32:5==e||28922==e?HEAPU32:HEAPU16}function heapAccessShiftForWebGLHeap(e){return 31-Math.clz32(e.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(e,t,_,r,n,o){var l=heapObjectForWebGLType(e),i=heapAccessShiftForWebGLHeap(l),a=1<>i,n+u>>i)}function _emscripten_glReadPixels(e,t,_,r,n,o,l){var i=emscriptenWebGLGetTexPixelData(o,n,_,r,l,n);i?GLctx.readPixels(e,t,_,r,n,o,i):GL.recordError(1280)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(e,t,_,r){GLctx.renderbufferStorage(e,t,_,r)}function _emscripten_glSampleCoverage(e,t){GLctx.sampleCoverage(e,!!t)}function _emscripten_glScissor(e,t,_,r){GLctx.scissor(e,t,_,r)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(e,t,_,r){var n=GL.getSource(e,t,_,r);GLctx.shaderSource(GL.shaders[e],n)}function _emscripten_glStencilFunc(e,t,_){GLctx.stencilFunc(e,t,_)}function _emscripten_glStencilFuncSeparate(e,t,_,r){GLctx.stencilFuncSeparate(e,t,_,r)}function _emscripten_glStencilMask(e){GLctx.stencilMask(e)}function _emscripten_glStencilMaskSeparate(e,t){GLctx.stencilMaskSeparate(e,t)}function _emscripten_glStencilOp(e,t,_){GLctx.stencilOp(e,t,_)}function _emscripten_glStencilOpSeparate(e,t,_,r){GLctx.stencilOpSeparate(e,t,_,r)}function _emscripten_glTexImage2D(e,t,_,r,n,o,l,i,a){GLctx.texImage2D(e,t,_,r,n,o,l,i,a?emscriptenWebGLGetTexPixelData(i,l,r,n,a,_):null)}function _emscripten_glTexParameterf(e,t,_){GLctx.texParameterf(e,t,_)}function _emscripten_glTexParameterfv(e,t,_){var r=HEAPF32[_>>2];GLctx.texParameterf(e,t,r)}function _emscripten_glTexParameteri(e,t,_){GLctx.texParameteri(e,t,_)}function _emscripten_glTexParameteriv(e,t,_){var r=HEAP32[_>>2];GLctx.texParameteri(e,t,r)}function _emscripten_glTexSubImage2D(e,t,_,r,n,o,l,i,a){var u=null;a&&(u=emscriptenWebGLGetTexPixelData(i,l,n,o,a,0)),GLctx.texSubImage2D(e,t,_,r,n,o,l,i,u)}function _emscripten_glUniform1f(e,t){GLctx.uniform1f(webglGetUniformLocation(e),t)}Module.tempFixedLengthArray=tempFixedLengthArray,Module._emscripten_glDrawBuffersWEBGL=_emscripten_glDrawBuffersWEBGL,_emscripten_glDrawBuffersWEBGL.sig="vii",Module._emscripten_glDrawElements=_emscripten_glDrawElements,_emscripten_glDrawElements.sig="viiii",Module._emscripten_glDrawElementsInstancedANGLE=_emscripten_glDrawElementsInstancedANGLE,_emscripten_glDrawElementsInstancedANGLE.sig="viiiii",Module._emscripten_glEnable=_emscripten_glEnable,_emscripten_glEnable.sig="vi",Module._emscripten_glEnableVertexAttribArray=_emscripten_glEnableVertexAttribArray,_emscripten_glEnableVertexAttribArray.sig="vi",Module._emscripten_glEndQueryEXT=_emscripten_glEndQueryEXT,_emscripten_glEndQueryEXT.sig="vi",Module._emscripten_glFinish=_emscripten_glFinish,_emscripten_glFinish.sig="v",Module._emscripten_glFlush=_emscripten_glFlush,_emscripten_glFlush.sig="v",Module._emscripten_glFramebufferRenderbuffer=_emscripten_glFramebufferRenderbuffer,_emscripten_glFramebufferRenderbuffer.sig="viiii",Module._emscripten_glFramebufferTexture2D=_emscripten_glFramebufferTexture2D,_emscripten_glFramebufferTexture2D.sig="viiiii",Module._emscripten_glFrontFace=_emscripten_glFrontFace,_emscripten_glFrontFace.sig="vi",Module.__glGenObject=__glGenObject,__glGenObject.sig="vii",Module._emscripten_glGenBuffers=_emscripten_glGenBuffers,_emscripten_glGenBuffers.sig="vii",Module._emscripten_glGenFramebuffers=_emscripten_glGenFramebuffers,_emscripten_glGenFramebuffers.sig="vii",Module._emscripten_glGenQueriesEXT=_emscripten_glGenQueriesEXT,_emscripten_glGenQueriesEXT.sig="vii",Module._emscripten_glGenRenderbuffers=_emscripten_glGenRenderbuffers,_emscripten_glGenRenderbuffers.sig="vii",Module._emscripten_glGenTextures=_emscripten_glGenTextures,_emscripten_glGenTextures.sig="vii",Module._emscripten_glGenVertexArraysOES=_emscripten_glGenVertexArraysOES,_emscripten_glGenVertexArraysOES.sig="vii",Module._emscripten_glGenerateMipmap=_emscripten_glGenerateMipmap,_emscripten_glGenerateMipmap.sig="vi",Module.__glGetActiveAttribOrUniform=__glGetActiveAttribOrUniform,Module._emscripten_glGetActiveAttrib=_emscripten_glGetActiveAttrib,_emscripten_glGetActiveAttrib.sig="viiiiiii",Module._emscripten_glGetActiveUniform=_emscripten_glGetActiveUniform,_emscripten_glGetActiveUniform.sig="viiiiiii",Module._emscripten_glGetAttachedShaders=_emscripten_glGetAttachedShaders,_emscripten_glGetAttachedShaders.sig="viiii",Module._emscripten_glGetAttribLocation=_emscripten_glGetAttribLocation,_emscripten_glGetAttribLocation.sig="iii",Module.writeI53ToI64=writeI53ToI64,Module.emscriptenWebGLGet=emscriptenWebGLGet,Module._emscripten_glGetBooleanv=_emscripten_glGetBooleanv,_emscripten_glGetBooleanv.sig="vii",Module._emscripten_glGetBufferParameteriv=_emscripten_glGetBufferParameteriv,_emscripten_glGetBufferParameteriv.sig="viii",Module._emscripten_glGetError=_emscripten_glGetError,_emscripten_glGetError.sig="i",Module._emscripten_glGetFloatv=_emscripten_glGetFloatv,_emscripten_glGetFloatv.sig="vii",Module._emscripten_glGetFramebufferAttachmentParameteriv=_emscripten_glGetFramebufferAttachmentParameteriv,_emscripten_glGetFramebufferAttachmentParameteriv.sig="viiii",Module._emscripten_glGetIntegerv=_emscripten_glGetIntegerv,_emscripten_glGetIntegerv.sig="vii",Module._emscripten_glGetProgramInfoLog=_emscripten_glGetProgramInfoLog,_emscripten_glGetProgramInfoLog.sig="viiii",Module._emscripten_glGetProgramiv=_emscripten_glGetProgramiv,_emscripten_glGetProgramiv.sig="viii",Module._emscripten_glGetQueryObjecti64vEXT=_emscripten_glGetQueryObjecti64vEXT,_emscripten_glGetQueryObjecti64vEXT.sig="viii",Module._emscripten_glGetQueryObjectivEXT=_emscripten_glGetQueryObjectivEXT,_emscripten_glGetQueryObjectivEXT.sig="viii",Module._emscripten_glGetQueryObjectui64vEXT=_emscripten_glGetQueryObjectui64vEXT,_emscripten_glGetQueryObjectui64vEXT.sig="viii",Module._emscripten_glGetQueryObjectuivEXT=_emscripten_glGetQueryObjectuivEXT,_emscripten_glGetQueryObjectuivEXT.sig="viii",Module._emscripten_glGetQueryivEXT=_emscripten_glGetQueryivEXT,_emscripten_glGetQueryivEXT.sig="viii",Module._emscripten_glGetRenderbufferParameteriv=_emscripten_glGetRenderbufferParameteriv,_emscripten_glGetRenderbufferParameteriv.sig="viii",Module._emscripten_glGetShaderInfoLog=_emscripten_glGetShaderInfoLog,_emscripten_glGetShaderInfoLog.sig="viiii",Module._emscripten_glGetShaderPrecisionFormat=_emscripten_glGetShaderPrecisionFormat,_emscripten_glGetShaderPrecisionFormat.sig="viiii",Module._emscripten_glGetShaderSource=_emscripten_glGetShaderSource,_emscripten_glGetShaderSource.sig="viiii",Module._emscripten_glGetShaderiv=_emscripten_glGetShaderiv,_emscripten_glGetShaderiv.sig="viii",Module.stringToNewUTF8=stringToNewUTF8,Module._emscripten_glGetString=_emscripten_glGetString,_emscripten_glGetString.sig="ii",Module._emscripten_glGetTexParameterfv=_emscripten_glGetTexParameterfv,_emscripten_glGetTexParameterfv.sig="viii",Module._emscripten_glGetTexParameteriv=_emscripten_glGetTexParameteriv,_emscripten_glGetTexParameteriv.sig="viii",Module.webglGetLeftBracePos=webglGetLeftBracePos,Module.webglPrepareUniformLocationsBeforeFirstUse=webglPrepareUniformLocationsBeforeFirstUse,Module._emscripten_glGetUniformLocation=_emscripten_glGetUniformLocation,_emscripten_glGetUniformLocation.sig="iii",Module.webglGetUniformLocation=webglGetUniformLocation,Module.emscriptenWebGLGetUniform=emscriptenWebGLGetUniform,Module._emscripten_glGetUniformfv=_emscripten_glGetUniformfv,_emscripten_glGetUniformfv.sig="viii",Module._emscripten_glGetUniformiv=_emscripten_glGetUniformiv,_emscripten_glGetUniformiv.sig="viii",Module._emscripten_glGetVertexAttribPointerv=_emscripten_glGetVertexAttribPointerv,_emscripten_glGetVertexAttribPointerv.sig="viii",Module.emscriptenWebGLGetVertexAttrib=emscriptenWebGLGetVertexAttrib,Module._emscripten_glGetVertexAttribfv=_emscripten_glGetVertexAttribfv,_emscripten_glGetVertexAttribfv.sig="viii",Module._emscripten_glGetVertexAttribiv=_emscripten_glGetVertexAttribiv,_emscripten_glGetVertexAttribiv.sig="viii",Module._emscripten_glHint=_emscripten_glHint,_emscripten_glHint.sig="vii",Module._emscripten_glIsBuffer=_emscripten_glIsBuffer,_emscripten_glIsBuffer.sig="ii",Module._emscripten_glIsEnabled=_emscripten_glIsEnabled,_emscripten_glIsEnabled.sig="ii",Module._emscripten_glIsFramebuffer=_emscripten_glIsFramebuffer,_emscripten_glIsFramebuffer.sig="ii",Module._emscripten_glIsProgram=_emscripten_glIsProgram,_emscripten_glIsProgram.sig="ii",Module._emscripten_glIsQueryEXT=_emscripten_glIsQueryEXT,_emscripten_glIsQueryEXT.sig="ii",Module._emscripten_glIsRenderbuffer=_emscripten_glIsRenderbuffer,_emscripten_glIsRenderbuffer.sig="ii",Module._emscripten_glIsShader=_emscripten_glIsShader,_emscripten_glIsShader.sig="ii",Module._emscripten_glIsTexture=_emscripten_glIsTexture,_emscripten_glIsTexture.sig="ii",Module._emscripten_glIsVertexArrayOES=_emscripten_glIsVertexArrayOES,_emscripten_glIsVertexArrayOES.sig="ii",Module._emscripten_glLineWidth=_emscripten_glLineWidth,_emscripten_glLineWidth.sig="vf",Module._emscripten_glLinkProgram=_emscripten_glLinkProgram,_emscripten_glLinkProgram.sig="vi",Module._emscripten_glPixelStorei=_emscripten_glPixelStorei,_emscripten_glPixelStorei.sig="vii",Module._emscripten_glPolygonOffset=_emscripten_glPolygonOffset,_emscripten_glPolygonOffset.sig="vff",Module._emscripten_glQueryCounterEXT=_emscripten_glQueryCounterEXT,_emscripten_glQueryCounterEXT.sig="vii",Module.computeUnpackAlignedImageSize=computeUnpackAlignedImageSize,Module.__colorChannelsInGlTextureFormat=__colorChannelsInGlTextureFormat,Module.heapObjectForWebGLType=heapObjectForWebGLType,Module.heapAccessShiftForWebGLHeap=heapAccessShiftForWebGLHeap,Module.emscriptenWebGLGetTexPixelData=emscriptenWebGLGetTexPixelData,Module._emscripten_glReadPixels=_emscripten_glReadPixels,_emscripten_glReadPixels.sig="viiiiiii",Module._emscripten_glReleaseShaderCompiler=_emscripten_glReleaseShaderCompiler,_emscripten_glReleaseShaderCompiler.sig="v",Module._emscripten_glRenderbufferStorage=_emscripten_glRenderbufferStorage,_emscripten_glRenderbufferStorage.sig="viiii",Module._emscripten_glSampleCoverage=_emscripten_glSampleCoverage,_emscripten_glSampleCoverage.sig="vii",Module._emscripten_glScissor=_emscripten_glScissor,_emscripten_glScissor.sig="viiii",Module._emscripten_glShaderBinary=_emscripten_glShaderBinary,_emscripten_glShaderBinary.sig="v",Module._emscripten_glShaderSource=_emscripten_glShaderSource,_emscripten_glShaderSource.sig="viiii",Module._emscripten_glStencilFunc=_emscripten_glStencilFunc,_emscripten_glStencilFunc.sig="viii",Module._emscripten_glStencilFuncSeparate=_emscripten_glStencilFuncSeparate,_emscripten_glStencilFuncSeparate.sig="viiii",Module._emscripten_glStencilMask=_emscripten_glStencilMask,_emscripten_glStencilMask.sig="vi",Module._emscripten_glStencilMaskSeparate=_emscripten_glStencilMaskSeparate,_emscripten_glStencilMaskSeparate.sig="vii",Module._emscripten_glStencilOp=_emscripten_glStencilOp,_emscripten_glStencilOp.sig="viii",Module._emscripten_glStencilOpSeparate=_emscripten_glStencilOpSeparate,_emscripten_glStencilOpSeparate.sig="viiii",Module._emscripten_glTexImage2D=_emscripten_glTexImage2D,_emscripten_glTexImage2D.sig="viiiiiiiii",Module._emscripten_glTexParameterf=_emscripten_glTexParameterf,_emscripten_glTexParameterf.sig="viii",Module._emscripten_glTexParameterfv=_emscripten_glTexParameterfv,_emscripten_glTexParameterfv.sig="viii",Module._emscripten_glTexParameteri=_emscripten_glTexParameteri,_emscripten_glTexParameteri.sig="viii",Module._emscripten_glTexParameteriv=_emscripten_glTexParameteriv,_emscripten_glTexParameteriv.sig="viii",Module._emscripten_glTexSubImage2D=_emscripten_glTexSubImage2D,_emscripten_glTexSubImage2D.sig="viiiiiiiii",Module._emscripten_glUniform1f=_emscripten_glUniform1f,_emscripten_glUniform1f.sig="vif";var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(e,t,_){if(t<=288)for(var r=miniTempWebGLFloatBuffers[t-1],n=0;n>2];else r=HEAPF32.subarray(_>>2,_+4*t>>2);GLctx.uniform1fv(webglGetUniformLocation(e),r)}function _emscripten_glUniform1i(e,t){GLctx.uniform1i(webglGetUniformLocation(e),t)}Module.miniTempWebGLFloatBuffers=miniTempWebGLFloatBuffers,Module._emscripten_glUniform1fv=_emscripten_glUniform1fv,_emscripten_glUniform1fv.sig="viii",Module._emscripten_glUniform1i=_emscripten_glUniform1i,_emscripten_glUniform1i.sig="vii";var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(e,t,_){if(t<=288)for(var r=__miniTempWebGLIntBuffers[t-1],n=0;n>2];else r=HEAP32.subarray(_>>2,_+4*t>>2);GLctx.uniform1iv(webglGetUniformLocation(e),r)}function _emscripten_glUniform2f(e,t,_){GLctx.uniform2f(webglGetUniformLocation(e),t,_)}function _emscripten_glUniform2fv(e,t,_){if(t<=144)for(var r=miniTempWebGLFloatBuffers[2*t-1],n=0;n<2*t;n+=2)r[n]=HEAPF32[_+4*n>>2],r[n+1]=HEAPF32[_+(4*n+4)>>2];else r=HEAPF32.subarray(_>>2,_+8*t>>2);GLctx.uniform2fv(webglGetUniformLocation(e),r)}function _emscripten_glUniform2i(e,t,_){GLctx.uniform2i(webglGetUniformLocation(e),t,_)}function _emscripten_glUniform2iv(e,t,_){if(t<=144)for(var r=__miniTempWebGLIntBuffers[2*t-1],n=0;n<2*t;n+=2)r[n]=HEAP32[_+4*n>>2],r[n+1]=HEAP32[_+(4*n+4)>>2];else r=HEAP32.subarray(_>>2,_+8*t>>2);GLctx.uniform2iv(webglGetUniformLocation(e),r)}function _emscripten_glUniform3f(e,t,_,r){GLctx.uniform3f(webglGetUniformLocation(e),t,_,r)}function _emscripten_glUniform3fv(e,t,_){if(t<=96)for(var r=miniTempWebGLFloatBuffers[3*t-1],n=0;n<3*t;n+=3)r[n]=HEAPF32[_+4*n>>2],r[n+1]=HEAPF32[_+(4*n+4)>>2],r[n+2]=HEAPF32[_+(4*n+8)>>2];else r=HEAPF32.subarray(_>>2,_+12*t>>2);GLctx.uniform3fv(webglGetUniformLocation(e),r)}function _emscripten_glUniform3i(e,t,_,r){GLctx.uniform3i(webglGetUniformLocation(e),t,_,r)}function _emscripten_glUniform3iv(e,t,_){if(t<=96)for(var r=__miniTempWebGLIntBuffers[3*t-1],n=0;n<3*t;n+=3)r[n]=HEAP32[_+4*n>>2],r[n+1]=HEAP32[_+(4*n+4)>>2],r[n+2]=HEAP32[_+(4*n+8)>>2];else r=HEAP32.subarray(_>>2,_+12*t>>2);GLctx.uniform3iv(webglGetUniformLocation(e),r)}function _emscripten_glUniform4f(e,t,_,r,n){GLctx.uniform4f(webglGetUniformLocation(e),t,_,r,n)}function _emscripten_glUniform4fv(e,t,_){if(t<=72){var r=miniTempWebGLFloatBuffers[4*t-1],n=HEAPF32;_>>=2;for(var o=0;o<4*t;o+=4){var l=_+o;r[o]=n[l],r[o+1]=n[l+1],r[o+2]=n[l+2],r[o+3]=n[l+3]}}else r=HEAPF32.subarray(_>>2,_+16*t>>2);GLctx.uniform4fv(webglGetUniformLocation(e),r)}function _emscripten_glUniform4i(e,t,_,r,n){GLctx.uniform4i(webglGetUniformLocation(e),t,_,r,n)}function _emscripten_glUniform4iv(e,t,_){if(t<=72)for(var r=__miniTempWebGLIntBuffers[4*t-1],n=0;n<4*t;n+=4)r[n]=HEAP32[_+4*n>>2],r[n+1]=HEAP32[_+(4*n+4)>>2],r[n+2]=HEAP32[_+(4*n+8)>>2],r[n+3]=HEAP32[_+(4*n+12)>>2];else r=HEAP32.subarray(_>>2,_+16*t>>2);GLctx.uniform4iv(webglGetUniformLocation(e),r)}function _emscripten_glUniformMatrix2fv(e,t,_,r){if(t<=72)for(var n=miniTempWebGLFloatBuffers[4*t-1],o=0;o<4*t;o+=4)n[o]=HEAPF32[r+4*o>>2],n[o+1]=HEAPF32[r+(4*o+4)>>2],n[o+2]=HEAPF32[r+(4*o+8)>>2],n[o+3]=HEAPF32[r+(4*o+12)>>2];else n=HEAPF32.subarray(r>>2,r+16*t>>2);GLctx.uniformMatrix2fv(webglGetUniformLocation(e),!!_,n)}function _emscripten_glUniformMatrix3fv(e,t,_,r){if(t<=32)for(var n=miniTempWebGLFloatBuffers[9*t-1],o=0;o<9*t;o+=9)n[o]=HEAPF32[r+4*o>>2],n[o+1]=HEAPF32[r+(4*o+4)>>2],n[o+2]=HEAPF32[r+(4*o+8)>>2],n[o+3]=HEAPF32[r+(4*o+12)>>2],n[o+4]=HEAPF32[r+(4*o+16)>>2],n[o+5]=HEAPF32[r+(4*o+20)>>2],n[o+6]=HEAPF32[r+(4*o+24)>>2],n[o+7]=HEAPF32[r+(4*o+28)>>2],n[o+8]=HEAPF32[r+(4*o+32)>>2];else n=HEAPF32.subarray(r>>2,r+36*t>>2);GLctx.uniformMatrix3fv(webglGetUniformLocation(e),!!_,n)}function _emscripten_glUniformMatrix4fv(e,t,_,r){if(t<=18){var n=miniTempWebGLFloatBuffers[16*t-1],o=HEAPF32;r>>=2;for(var l=0;l<16*t;l+=16){var i=r+l;n[l]=o[i],n[l+1]=o[i+1],n[l+2]=o[i+2],n[l+3]=o[i+3],n[l+4]=o[i+4],n[l+5]=o[i+5],n[l+6]=o[i+6],n[l+7]=o[i+7],n[l+8]=o[i+8],n[l+9]=o[i+9],n[l+10]=o[i+10],n[l+11]=o[i+11],n[l+12]=o[i+12],n[l+13]=o[i+13],n[l+14]=o[i+14],n[l+15]=o[i+15]}}else n=HEAPF32.subarray(r>>2,r+64*t>>2);GLctx.uniformMatrix4fv(webglGetUniformLocation(e),!!_,n)}function _emscripten_glUseProgram(e){e=GL.programs[e],GLctx.useProgram(e),GLctx.currentProgram=e}function _emscripten_glValidateProgram(e){GLctx.validateProgram(GL.programs[e])}function _emscripten_glVertexAttrib1f(e,t){GLctx.vertexAttrib1f(e,t)}function _emscripten_glVertexAttrib1fv(e,t){GLctx.vertexAttrib1f(e,HEAPF32[t>>2])}function _emscripten_glVertexAttrib2f(e,t,_){GLctx.vertexAttrib2f(e,t,_)}function _emscripten_glVertexAttrib2fv(e,t){GLctx.vertexAttrib2f(e,HEAPF32[t>>2],HEAPF32[t+4>>2])}function _emscripten_glVertexAttrib3f(e,t,_,r){GLctx.vertexAttrib3f(e,t,_,r)}function _emscripten_glVertexAttrib3fv(e,t){GLctx.vertexAttrib3f(e,HEAPF32[t>>2],HEAPF32[t+4>>2],HEAPF32[t+8>>2])}function _emscripten_glVertexAttrib4f(e,t,_,r,n){GLctx.vertexAttrib4f(e,t,_,r,n)}function _emscripten_glVertexAttrib4fv(e,t){GLctx.vertexAttrib4f(e,HEAPF32[t>>2],HEAPF32[t+4>>2],HEAPF32[t+8>>2],HEAPF32[t+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(e,t){GLctx.vertexAttribDivisor(e,t)}function _emscripten_glVertexAttribPointer(e,t,_,r,n,o){GLctx.vertexAttribPointer(e,t,_,!!r,n,o)}function _emscripten_glViewport(e,t,_,r){GLctx.viewport(e,t,_,r)}function _emscripten_memcpy_big(e,t,_){HEAPU8.copyWithin(e,t,t+_)}function HandleAllocator(){this.allocated=[],this.freelist=[],this.get=function(e){return this.allocated[e]},this.allocate=function(e){let t;return this.freelist.length>0?(t=this.freelist.pop(),this.allocated[t]=e):(t=this.allocated.length,this.allocated.push(e)),t},this.free=function(e){delete this.allocated[e],this.freelist.push(e)}}Module.__miniTempWebGLIntBuffers=__miniTempWebGLIntBuffers,Module._emscripten_glUniform1iv=_emscripten_glUniform1iv,_emscripten_glUniform1iv.sig="viii",Module._emscripten_glUniform2f=_emscripten_glUniform2f,_emscripten_glUniform2f.sig="viff",Module._emscripten_glUniform2fv=_emscripten_glUniform2fv,_emscripten_glUniform2fv.sig="viii",Module._emscripten_glUniform2i=_emscripten_glUniform2i,_emscripten_glUniform2i.sig="viii",Module._emscripten_glUniform2iv=_emscripten_glUniform2iv,_emscripten_glUniform2iv.sig="viii",Module._emscripten_glUniform3f=_emscripten_glUniform3f,_emscripten_glUniform3f.sig="vifff",Module._emscripten_glUniform3fv=_emscripten_glUniform3fv,_emscripten_glUniform3fv.sig="viii",Module._emscripten_glUniform3i=_emscripten_glUniform3i,_emscripten_glUniform3i.sig="viiii",Module._emscripten_glUniform3iv=_emscripten_glUniform3iv,_emscripten_glUniform3iv.sig="viii",Module._emscripten_glUniform4f=_emscripten_glUniform4f,_emscripten_glUniform4f.sig="viffff",Module._emscripten_glUniform4fv=_emscripten_glUniform4fv,_emscripten_glUniform4fv.sig="viii",Module._emscripten_glUniform4i=_emscripten_glUniform4i,_emscripten_glUniform4i.sig="viiiii",Module._emscripten_glUniform4iv=_emscripten_glUniform4iv,_emscripten_glUniform4iv.sig="viii",Module._emscripten_glUniformMatrix2fv=_emscripten_glUniformMatrix2fv,_emscripten_glUniformMatrix2fv.sig="viiii",Module._emscripten_glUniformMatrix3fv=_emscripten_glUniformMatrix3fv,_emscripten_glUniformMatrix3fv.sig="viiii",Module._emscripten_glUniformMatrix4fv=_emscripten_glUniformMatrix4fv,_emscripten_glUniformMatrix4fv.sig="viiii",Module._emscripten_glUseProgram=_emscripten_glUseProgram,_emscripten_glUseProgram.sig="vi",Module._emscripten_glValidateProgram=_emscripten_glValidateProgram,_emscripten_glValidateProgram.sig="vi",Module._emscripten_glVertexAttrib1f=_emscripten_glVertexAttrib1f,_emscripten_glVertexAttrib1f.sig="vif",Module._emscripten_glVertexAttrib1fv=_emscripten_glVertexAttrib1fv,_emscripten_glVertexAttrib1fv.sig="vii",Module._emscripten_glVertexAttrib2f=_emscripten_glVertexAttrib2f,_emscripten_glVertexAttrib2f.sig="viff",Module._emscripten_glVertexAttrib2fv=_emscripten_glVertexAttrib2fv,_emscripten_glVertexAttrib2fv.sig="vii",Module._emscripten_glVertexAttrib3f=_emscripten_glVertexAttrib3f,_emscripten_glVertexAttrib3f.sig="vifff",Module._emscripten_glVertexAttrib3fv=_emscripten_glVertexAttrib3fv,_emscripten_glVertexAttrib3fv.sig="vii",Module._emscripten_glVertexAttrib4f=_emscripten_glVertexAttrib4f,_emscripten_glVertexAttrib4f.sig="viffff",Module._emscripten_glVertexAttrib4fv=_emscripten_glVertexAttrib4fv,_emscripten_glVertexAttrib4fv.sig="vii",Module._emscripten_glVertexAttribDivisorANGLE=_emscripten_glVertexAttribDivisorANGLE,_emscripten_glVertexAttribDivisorANGLE.sig="vii",Module._emscripten_glVertexAttribPointer=_emscripten_glVertexAttribPointer,_emscripten_glVertexAttribPointer.sig="viiiiii",Module._emscripten_glViewport=_emscripten_glViewport,_emscripten_glViewport.sig="viiii",Module._emscripten_memcpy_big=_emscripten_memcpy_big,_emscripten_memcpy_big.sig="vppp",Module.HandleAllocator=HandleAllocator;var promiseMap=new HandleAllocator;function makePromise(){var e={};return e.promise=new Promise(((t,_)=>{e.reject=_,e.resolve=t})),e.id=promiseMap.allocate(e),e}function _emscripten_promise_create(){return makePromise().id}function _emscripten_promise_destroy(e){promiseMap.free(e)}function getPromise(e){return promiseMap.get(e).promise}function _emscripten_promise_resolve(e,t,_){var r=promiseMap.get(e);switch(t){case 0:return void r.resolve(_);case 1:return void r.resolve(getPromise(_));case 2:return r.resolve(getPromise(_)),void _emscripten_promise_destroy(_);case 3:return void r.reject(_)}}function emscripten_realloc_buffer(e){var t=wasmMemory.buffer;try{return wasmMemory.grow(e-t.byteLength+65535>>>16),updateMemoryViews(),1}catch(e){}}function _emscripten_resize_heap(e){var t=HEAPU8.length;e>>>=0;var _=getHeapMax();if(e>_)return!1;for(var r=1;r<=4;r*=2){var n=t*(1+.2/r);if(n=Math.min(n,e+100663296),emscripten_realloc_buffer(Math.min(_,(o=Math.max(e,n))+((l=65536)-o%l)%l)))return!0}var o,l;return!1}function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:getExecutableName()};for(var t in ENV)void 0===ENV[t]?delete e[t]:e[t]=ENV[t];var _=[];for(var t in e)_.push(t+"="+e[t]);getEnvStrings.strings=_}return getEnvStrings.strings}function writeAsciiToMemory(e,t,_){for(var r=0;r>2]=o,writeAsciiToMemory(r,o),_+=r.length+1})),0}function _environ_sizes_get(e,t){var _=getEnvStrings();HEAPU32[e>>2]=_.length;var r=0;return _.forEach((function(e){r+=e.length+1})),HEAPU32[t>>2]=r,0}function _proc_exit(e){EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit&&Module.onExit(e),ABORT=!0),quit_(e,new ExitStatus(e))}function exitJS(e,t){EXITSTATUS=e,_proc_exit(e)}Module.promiseMap=promiseMap,Module.makePromise=makePromise,Module._emscripten_promise_create=_emscripten_promise_create,_emscripten_promise_create.sig="p",Module._emscripten_promise_destroy=_emscripten_promise_destroy,_emscripten_promise_destroy.sig="vp",Module.getPromise=getPromise,Module._emscripten_promise_resolve=_emscripten_promise_resolve,_emscripten_promise_resolve.sig="vpip",Module.emscripten_realloc_buffer=emscripten_realloc_buffer,Module._emscripten_resize_heap=_emscripten_resize_heap,_emscripten_resize_heap.sig="ip",Module.getExecutableName=getExecutableName,Module.getEnvStrings=getEnvStrings,Module.writeAsciiToMemory=writeAsciiToMemory,Module._environ_get=_environ_get,_environ_get.sig="ipp",Module._environ_sizes_get=_environ_sizes_get,_environ_sizes_get.sig="ipp",Module._proc_exit=_proc_exit,_proc_exit.sig="vi",Module.exitJS=exitJS;var _exit=exitJS;function _fd_close(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.close(t),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _fd_fdstat_get(e,t){try{var _=SYSCALLS.getStreamFromFD(e),r=_.tty?2:FS.isDir(_.mode)?3:FS.isLink(_.mode)?7:4;return HEAP8[t|0]=r,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function doReadv(e,t,_,r){for(var n=0,o=0;o<_;o++){var l=HEAPU32[t>>2],i=HEAPU32[t+4>>2];t+=8;var a=FS.read(e,HEAP8,l,i,r);if(a<0)return-1;if(n+=a,a>2]=o,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function doWritev(e,t,_,r){for(var n=0,o=0;o<_;o++){var l=HEAPU32[t>>2],i=HEAPU32[t+4>>2];t+=8;var a=FS.write(e,HEAP8,l,i,r);if(a<0)return-1;n+=a,void 0!==r&&(r+=a)}return n}function _fd_pwrite(e,t,_,r,n){try{if(r=bigintToI53Checked(r),isNaN(r))return 61;var o=doWritev(SYSCALLS.getStreamFromFD(e),t,_,r);return HEAPU32[n>>2]=o,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _fd_read(e,t,_,r){try{var n=doReadv(SYSCALLS.getStreamFromFD(e),t,_);return HEAPU32[r>>2]=n,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _fd_seek(e,t,_,r){try{if(t=bigintToI53Checked(t),isNaN(t))return 61;var n=SYSCALLS.getStreamFromFD(e);return FS.llseek(n,t,_),tempI64=[n.position>>>0,(tempDouble=n.position,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[r>>2]=tempI64[0],HEAP32[r+4>>2]=tempI64[1],n.getdents&&0===t&&0===_&&(n.getdents=null),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _fd_sync(e){try{var t=SYSCALLS.getStreamFromFD(e);return t.stream_ops&&t.stream_ops.fsync?t.stream_ops.fsync(t):0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _fd_write(e,t,_,r){try{var n=doWritev(SYSCALLS.getStreamFromFD(e),t,_);return HEAPU32[r>>2]=n,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}function _getaddrinfo(e,t,_,r){var n,o=0,l=0,i=0,a=0,u=0,s=0;function c(e,t,_,r,n,o){var l,i,a;return i=10===e?28:16,n=10===e?inetNtop6(n):inetNtop4(n),assert(!writeSockaddr(l=_malloc(i),e,n,o)),a=_malloc(32),HEAP32[a+4>>2]=e,HEAP32[a+8>>2]=t,HEAP32[a+12>>2]=_,HEAP32[a+24>>2]=r,HEAPU32[a+20>>2]=l,HEAP32[a+16>>2]=10===e?28:16,HEAP32[a+28>>2]=0,a}if(_&&(i=HEAP32[_>>2],a=HEAP32[_+4>>2],u=HEAP32[_+8>>2],s=HEAP32[_+12>>2]),u&&!s&&(s=2===u?17:6),!u&&s&&(u=17===s?2:1),0===s&&(s=6),0===u&&(u=1),!e&&!t)return-2;if(-1088&i)return-1;if(0!==_&&2&HEAP32[_>>2]&&!e)return-1;if(32&i)return-2;if(0!==u&&1!==u&&2!==u)return-7;if(0!==a&&2!==a&&10!==a)return-6;if(t&&(t=UTF8ToString(t),l=parseInt(t,10),isNaN(l)))return 1024&i?-2:-8;if(!e)return 0===a&&(a=2),1&i||(o=2===a?_htonl(2130706433):[0,0,0,1]),n=c(a,u,s,null,o,l),HEAPU32[r>>2]=n,0;if(null!==(o=inetPton4(e=UTF8ToString(e))))if(0===a||2===a)a=2;else{if(!(10===a&&8&i))return-2;o=[0,0,_htonl(65535),o],a=10}else if(null!==(o=inetPton6(e))){if(0!==a&&10!==a)return-2;a=10}return null!=o?(n=c(a,u,s,e,o,l),HEAPU32[r>>2]=n,0):4&i?-2:(o=inetPton4(e=DNS.lookup_name(e)),0===a?a=2:10===a&&(o=[0,0,_htonl(65535),o]),n=c(a,u,s,null,o,l),HEAPU32[r>>2]=n,0)}function _getentropy(e,t){_getentropy.randomDevice||(_getentropy.randomDevice=getRandomDevice());for(var _=0;_>2]=_;var r=_malloc(4);HEAPU32[r>>2]=0,HEAPU32[t+4>>2]=r;HEAP32[t+8>>2]=2,HEAP32[t+12>>2]=4;var n=_malloc(12);return HEAPU32[n>>2]=n+8,HEAPU32[n+4>>2]=0,HEAP32[n+8>>2]=inetPton4(DNS.lookup_name(e)),HEAPU32[t+16>>2]=n,t}function _gethostbyaddr(e,t,_){if(2!==_)return setErrNo(5),null;var r=inetNtop4(e=HEAP32[e>>2]),n=DNS.lookup_addr(r);return n&&(r=n),getHostByName(r)}function _gethostbyname(e){return getHostByName(UTF8ToString(e))}function _getloadavg(e,t){for(var _=Math.min(t,3),r=0;r<_;r++)HEAPF64[e+8*r>>3]=.1;return _}function _getnameinfo(e,t,_,r,n,o,l){var i=readSockaddr(e,t);if(i.errno)return-6;var a=i.port,u=i.addr,s=!1;if(_&&r){var c;if(1&l||!(c=DNS.lookup_addr(u))){if(8&l)return-2}else u=c;stringToUTF8(u,_,r)+1>=r&&(s=!0)}n&&o&&(stringToUTF8(a=""+a,n,o)+1>=o&&(s=!0));return s?-12:0}Module._exit=_exit,_exit.sig="vi",Module._fd_close=_fd_close,_fd_close.sig="ii",Module._fd_fdstat_get=_fd_fdstat_get,_fd_fdstat_get.sig="iip",Module.doReadv=doReadv,Module._fd_pread=_fd_pread,_fd_pread.sig="iippjp",Module.doWritev=doWritev,Module._fd_pwrite=_fd_pwrite,_fd_pwrite.sig="iippjp",Module._fd_read=_fd_read,_fd_read.sig="iippp",Module._fd_seek=_fd_seek,_fd_seek.sig="iijip",Module._fd_sync=_fd_sync,_fd_sync.sig="ii",Module._fd_write=_fd_write,_fd_write.sig="iippp",Module._getaddrinfo=_getaddrinfo,_getaddrinfo.sig="ipppp",Module._getentropy=_getentropy,_getentropy.sig="ipp",Module.getHostByName=getHostByName,Module._gethostbyaddr=_gethostbyaddr,_gethostbyaddr.sig="ipii",Module._gethostbyname=_gethostbyname,_gethostbyname.sig="pp",Module._getloadavg=_getloadavg,_getloadavg.sig="ipi",Module._getnameinfo=_getnameinfo,_getnameinfo.sig="ipipipii";var Protocols={list:[],map:{}};function _setprotoent(e){function t(e,t,_){var r=_malloc(e.length+1);writeAsciiToMemory(e,r);for(var n=0,o=_.length,l=_malloc(4*(o+1)),i=0;i>2]=u}HEAPU32[l+n>>2]=0;var s=_malloc(12);return HEAPU32[s>>2]=r,HEAPU32[s+4>>2]=l,HEAP32[s+8>>2]=t,s}var _=Protocols.list,r=Protocols.map;if(0===_.length){var n=t("tcp",6,["TCP"]);_.push(n),r.tcp=r[6]=n,n=t("udp",17,["UDP"]),_.push(n),r.udp=r[17]=n}_setprotoent.index=0}function _getprotobyname(e){return e=UTF8ToString(e),_setprotoent(!0),Protocols.map[e]}function __arraySum(e,t){for(var _=0,r=0;r<=t;_+=e[r++]);return _}Module.Protocols=Protocols,Module._setprotoent=_setprotoent,Module._getprotobyname=_getprotobyname,Module.__arraySum=__arraySum;var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];Module.__MONTH_DAYS_LEAP=__MONTH_DAYS_LEAP;var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(e,t){for(var _=new Date(e.getTime());t>0;){var r=__isLeapYear(_.getFullYear()),n=_.getMonth(),o=(r?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[n];if(!(t>o-_.getDate()))return _.setDate(_.getDate()+t),_;t-=o-_.getDate()+1,_.setDate(1),n<11?_.setMonth(n+1):(_.setMonth(0),_.setFullYear(_.getFullYear()+1))}return _}function writeArrayToMemory(e,t){HEAP8.set(e,t)}function _strftime(e,t,_,r){var n=HEAP32[r+40>>2],o={tm_sec:HEAP32[r>>2],tm_min:HEAP32[r+4>>2],tm_hour:HEAP32[r+8>>2],tm_mday:HEAP32[r+12>>2],tm_mon:HEAP32[r+16>>2],tm_year:HEAP32[r+20>>2],tm_wday:HEAP32[r+24>>2],tm_yday:HEAP32[r+28>>2],tm_isdst:HEAP32[r+32>>2],tm_gmtoff:HEAP32[r+36>>2],tm_zone:n?UTF8ToString(n):""},l=UTF8ToString(_),i={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var a in i)l=l.replace(new RegExp(a,"g"),i[a]);var u=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],s=["January","February","March","April","May","June","July","August","September","October","November","December"];function c(e,t,_){for(var r="number"==typeof e?e.toString():e||"";r.length0?1:0}var r;return 0===(r=_(e.getFullYear()-t.getFullYear()))&&0===(r=_(e.getMonth()-t.getMonth()))&&(r=_(e.getDate()-t.getDate())),r}function y(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=__addDays(new Date(e.tm_year+1900,0,1),e.tm_yday),_=new Date(t.getFullYear(),0,4),r=new Date(t.getFullYear()+1,0,4),n=y(_),o=y(r);return p(n,t)<=0?p(o,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var f={"%a":function(e){return u[e.tm_wday].substring(0,3)},"%A":function(e){return u[e.tm_wday]},"%b":function(e){return s[e.tm_mon].substring(0,3)},"%B":function(e){return s[e.tm_mon]},"%C":function(e){return d((e.tm_year+1900)/100|0,2)},"%d":function(e){return d(e.tm_mday,2)},"%e":function(e){return c(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return d(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(e){return d(e.tm_mday+__arraySum(__isLeapYear(e.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,e.tm_mon-1),3)},"%m":function(e){return d(e.tm_mon+1,2)},"%M":function(e){return d(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return d(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=e.tm_yday+7-e.tm_wday;return d(Math.floor(t/7),2)},"%V":function(e){var t=Math.floor((e.tm_yday+7-(e.tm_wday+6)%7)/7);if((e.tm_wday+371-e.tm_yday-2)%7<=2&&t++,t){if(53==t){var _=(e.tm_wday+371-e.tm_yday)%7;4==_||3==_&&__isLeapYear(e.tm_year)||(t=1)}}else{t=52;var r=(e.tm_wday+7-e.tm_yday-1)%7;(4==r||5==r&&__isLeapYear(e.tm_year%400-1))&&t++}return d(t,2)},"%w":function(e){return e.tm_wday},"%W":function(e){var t=e.tm_yday+7-(e.tm_wday+6)%7;return d(Math.floor(t/7),2)},"%y":function(e){return(e.tm_year+1900).toString().substring(2)},"%Y":function(e){return e.tm_year+1900},"%z":function(e){var t=e.tm_gmtoff,_=t>=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(_?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var a in l=l.replace(/%%/g,"\0\0"),f)l.includes(a)&&(l=l.replace(new RegExp(a,"g"),f[a](o)));var M=intArrayFromString(l=l.replace(/\0\0/g,"%"),!1);return M.length>t?0:(writeArrayToMemory(M,e),M.length-1)}function _strftime_l(e,t,_,r,n){return _strftime(e,t,_,r)}function _system(e){if(ENVIRONMENT_IS_NODE){if(!e)return 1;var t=UTF8ToString(e);if(!t.length)return 0;var _=require("child_process").spawnSync(t,[],{shell:!0,stdio:"inherit"}),r=(e,t)=>e<<8|t;if(null===_.status){return r(0,(e=>{switch(e){case"SIGHUP":return 1;case"SIGINT":return 2;case"SIGQUIT":return 3;case"SIGFPE":return 8;case"SIGKILL":return 9;case"SIGALRM":return 14;case"SIGTERM":return 15}return 2})(_.signal))}return r(_.status,0)}return e?(setErrNo(52),-1):0}function ptrToString(e){return"0x"+e.toString(16).padStart(8,"0")}function _emscripten_notify_memory_growth(e){updateMemoryViews()}function ___asctime_r(e,t){var _=HEAP32[e>>2],r=HEAP32[e+4>>2],n=HEAP32[e+8>>2],o=HEAP32[e+12>>2],l=HEAP32[e+16>>2],i=HEAP32[e+20>>2];return stringToUTF8(["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][HEAP32[e+24>>2]]+" "+["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][l]+(o<10?" ":" ")+o+(n<10?" 0":" ")+n+(r<10?":0":":")+r+(_<10?":0":":")+_+" "+(1900+i)+"\n",t,26),t}function _strptime(e,t,_){for(var r=UTF8ToString(t),n="\\!@#$^&*()+=-[]/{}|:<>?,.",o=0;o<25;++o)r=r.replace(new RegExp("\\"+n[o],"g"),"\\"+n[o]);var l={"%A":"%a","%B":"%b","%c":"%a %b %d %H:%M:%S %Y","%D":"%m\\/%d\\/%y","%e":"%d","%F":"%Y-%m-%d","%h":"%b","%R":"%H\\:%M","%r":"%I\\:%M\\:%S\\s%p","%T":"%H\\:%M\\:%S","%x":"%m\\/%d\\/(?:%y|%Y)","%X":"%H\\:%M\\:%S"};for(var i in l)r=r.replace(i,l[i]);var a={"%a":"(?:Sun(?:day)?)|(?:Mon(?:day)?)|(?:Tue(?:sday)?)|(?:Wed(?:nesday)?)|(?:Thu(?:rsday)?)|(?:Fri(?:day)?)|(?:Sat(?:urday)?)","%b":"(?:Jan(?:uary)?)|(?:Feb(?:ruary)?)|(?:Mar(?:ch)?)|(?:Apr(?:il)?)|May|(?:Jun(?:e)?)|(?:Jul(?:y)?)|(?:Aug(?:ust)?)|(?:Sep(?:tember)?)|(?:Oct(?:ober)?)|(?:Nov(?:ember)?)|(?:Dec(?:ember)?)","%C":"\\d\\d","%d":"0[1-9]|[1-9](?!\\d)|1\\d|2\\d|30|31","%H":"\\d(?!\\d)|[0,1]\\d|20|21|22|23","%I":"\\d(?!\\d)|0\\d|10|11|12","%j":"00[1-9]|0?[1-9](?!\\d)|0?[1-9]\\d(?!\\d)|[1,2]\\d\\d|3[0-6]\\d","%m":"0[1-9]|[1-9](?!\\d)|10|11|12","%M":"0\\d|\\d(?!\\d)|[1-5]\\d","%n":"\\s","%p":"AM|am|PM|pm|A\\.M\\.|a\\.m\\.|P\\.M\\.|p\\.m\\.","%S":"0\\d|\\d(?!\\d)|[1-5]\\d|60","%U":"0\\d|\\d(?!\\d)|[1-4]\\d|50|51|52|53","%W":"0\\d|\\d(?!\\d)|[1-4]\\d|50|51|52|53","%w":"[0-6]","%y":"\\d\\d","%Y":"\\d\\d\\d\\d","%%":"%","%t":"\\s"};for(var u in a)r=r.replace(u,"("+u+a[u]+")");var s=[];for(o=r.indexOf("%");o>=0;o=r.indexOf("%"))s.push(r[o+1]),r=r.replace(new RegExp("\\%"+r[o+1],"g"),"");var c=new RegExp("^"+r,"i").exec(UTF8ToString(e));if(c){var d,p=function(){function e(e,t,_){return"number"!=typeof e||isNaN(e)?t:e>=t?e<=_?e:_:t}return{year:e(HEAP32[_+20>>2]+1900,1970,9999),month:e(HEAP32[_+16>>2],0,11),day:e(HEAP32[_+12>>2],1,31),hour:e(HEAP32[_+8>>2],0,23),min:e(HEAP32[_+4>>2],0,59),sec:e(HEAP32[_>>2],0,59)}}(),y=e=>{var t=s.indexOf(e);if(t>=0)return c[t+1]};if((d=y("S"))&&(p.sec=jstoi_q(d)),(d=y("M"))&&(p.min=jstoi_q(d)),d=y("H"))p.hour=jstoi_q(d);else if(d=y("I")){var m=jstoi_q(d);(d=y("p"))&&(m+="P"===d.toUpperCase()[0]?12:0),p.hour=m}if(d=y("Y"))p.year=jstoi_q(d);else if(d=y("y")){var f=jstoi_q(d);(d=y("C"))?f+=100*jstoi_q(d):f+=f<69?2e3:1900,p.year=f}if((d=y("m"))?p.month=jstoi_q(d)-1:(d=y("b"))&&(p.month={JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11}[d.substring(0,3).toUpperCase()]||0),d=y("d"))p.day=jstoi_q(d);else if(d=y("j"))for(var M=jstoi_q(d),g=__isLeapYear(p.year),P=0;P<12;++P){var h=__arraySum(g?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,P-1);M<=h+(g?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[P]&&(p.day=M-h)}else if(d=y("a")){var b=d.substring(0,3).toUpperCase();if(d=y("U")){var w={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6}[b],E=jstoi_q(d);v=0===(S=new Date(p.year,0,1)).getDay()?__addDays(S,w+7*(E-1)):__addDays(S,7-S.getDay()+w+7*(E-1)),p.day=v.getDate(),p.month=v.getMonth()}else if(d=y("W")){var S,v;w={MON:0,TUE:1,WED:2,THU:3,FRI:4,SAT:5,SUN:6}[b],E=jstoi_q(d);v=1===(S=new Date(p.year,0,1)).getDay()?__addDays(S,w+7*(E-1)):__addDays(S,7-S.getDay()+1+w+7*(E-1)),p.day=v.getDate(),p.month=v.getMonth()}}var x=new Date(p.year,p.month,p.day,p.hour,p.min,p.sec,0);return HEAP32[_>>2]=x.getSeconds(),HEAP32[_+4>>2]=x.getMinutes(),HEAP32[_+8>>2]=x.getHours(),HEAP32[_+12>>2]=x.getDate(),HEAP32[_+16>>2]=x.getMonth(),HEAP32[_+20>>2]=x.getFullYear()-1900,HEAP32[_+24>>2]=x.getDay(),HEAP32[_+28>>2]=__arraySum(__isLeapYear(x.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,x.getMonth()-1)+x.getDate()-1,HEAP32[_+32>>2]=0,e+intArrayFromString(c[0]).length-1}return 0}function _strptime_l(e,t,_){return _strptime(e,t,_)}Module.__MONTH_DAYS_REGULAR=__MONTH_DAYS_REGULAR,Module.__addDays=__addDays,Module.writeArrayToMemory=writeArrayToMemory,Module._strftime=_strftime,_strftime.sig="ppppp",Module._strftime_l=_strftime_l,_strftime_l.sig="pppppp",Module._system=_system,_system.sig="ip",Module.ptrToString=ptrToString,Module._emscripten_notify_memory_growth=_emscripten_notify_memory_growth,Module.___asctime_r=___asctime_r,___asctime_r.sig="ppp",Module._strptime=_strptime,_strptime.sig="pppp",Module._strptime_l=_strptime_l,_strptime_l.sig="pppp";var ERRNO_MESSAGES={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"};function _gethostbyname_r(e,t,_,r,n,o){var l=_gethostbyname(e);return _memcpy(t,l,20),_free(l),HEAP32[o>>2]=0,HEAPU32[n>>2]=t,0}function _endprotoent(){}function _getprotoent(e){return _setprotoent.index===Protocols.list.length?0:Protocols.list[_setprotoent.index++]}function _getprotobynumber(e){return _setprotoent(!0),Protocols.map[e]}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_run_script_int(ptr){return 0|eval(UTF8ToString(ptr))}function _emscripten_run_script_string(ptr){var s=eval(UTF8ToString(ptr));if(null==s)return 0;s+="";var me=_emscripten_run_script_string,len=lengthBytesUTF8(s);return(!me.bufferSize||me.bufferSize=4)){t+=c+"\n";continue}d=f[1],p=f[2],y=f[3],m=0|f[4]}var M=!1;if(8&e){var g=emscripten_source_map.originalPositionFor({line:y,column:m});(M=g&&g.source)&&(64&e&&(g.source=g.source.substring(g.source.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=" at "+d+" ("+g.source+":"+g.line+":"+g.column+")\n")}(16&e||!M)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=(M?" = "+d:" at "+d)+" ("+p+":"+y+":"+m+")\n"),128&e&&o[0]&&(o[1]==d&&o[2].length>0&&(t=t.replace(/\s+$/,""),t+=" with values: "+o[1]+o[2]+"\n"),o=traverseStack(o[0]))}return t=t.replace(/\s+$/,"")}function _emscripten_get_callstack(e,t,_){var r=_emscripten_get_callstack_js(e);return!t||_<=0?lengthBytesUTF8(r)+1:stringToUTF8(r,t,_)+1}function _emscripten_log_js(e,t){24&e&&(t=t.replace(/\s+$/,""),t+=(t.length>0?"\n":"")+_emscripten_get_callstack_js(e)),1&e?4&e?console.error(t):2&e?console.warn(t):512&e?console.info(t):256&e?console.debug(t):console.log(t):6&e?err(t):out(t)}function reallyNegative(e){return e<0||0===e&&1/e==-1/0}function convertI32PairToI53(e,t){return(e>>>0)+4294967296*t}function convertU32PairToI53(e,t){return(e>>>0)+4294967296*(t>>>0)}function reSign(e,t){if(e<=0)return e;var _=t<=32?Math.abs(1<=_&&(t<=32||e>_)&&(e=-2*_+e),e}function unSign(e,t){return e>=0?e:t<=32?2*Math.abs(1<>3],r+=8):"i64"==e?(t=[HEAP32[r>>2],HEAP32[r+4>>2]],r+=8):(e="i32",t=HEAP32[r>>2],r+=4),t}for(var o,l,i,a=[];;){var u=_;if(0===(o=HEAP8[_|0]))break;if(l=HEAP8[_+1|0],37==o){var s=!1,c=!1,d=!1,p=!1,y=!1;e:for(;;){switch(l){case 43:s=!0;break;case 45:c=!0;break;case 35:d=!0;break;case 48:if(p)break e;p=!0;break;case 32:y=!0;break;default:break e}_++,l=HEAP8[_+1|0]}var m=0;if(42==l)m=n("i32"),_++,l=HEAP8[_+1|0];else for(;l>=48&&l<=57;)m=10*m+(l-48),_++,l=HEAP8[_+1|0];var f,M=!1,g=-1;if(46==l){if(g=0,M=!0,_++,42==(l=HEAP8[_+1|0]))g=n("i32"),_++;else for(;;){var P=HEAP8[_+1|0];if(P<48||P>57)break;g=10*g+(P-48),_++}l=HEAP8[_+1|0]}switch(g<0&&(g=6,M=!1),String.fromCharCode(l)){case"h":104==HEAP8[_+2|0]?(_++,f=1):f=2;break;case"l":108==HEAP8[_+2|0]?(_++,f=8):f=4;break;case"L":case"q":case"j":f=8;break;case"z":case"t":case"I":f=4;break;default:f=null}switch(f&&_++,l=HEAP8[_+1|0],String.fromCharCode(l)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var h=100==l||105==l;if(i=n("i"+8*(f=f||4)),8==f&&(i=117==l?convertU32PairToI53(i[0],i[1]):convertI32PairToI53(i[0],i[1])),f<=4)i=(h?reSign:unSign)(i&Math.pow(256,f)-1,8*f);var b=Math.abs(i),w="";if(100==l||105==l)v=reSign(i,8*f).toString(10);else if(117==l)v=unSign(i,8*f).toString(10),i=Math.abs(i);else if(111==l)v=(d?"0":"")+b.toString(8);else if(120==l||88==l){if(w=d&&0!=i?"0x":"",i<0){i=-i,v=(b-1).toString(16);for(var E=[],S=0;S=0&&(s?w="+"+w:y&&(w=" "+w)),"-"==v.charAt(0)&&(w="-"+w,v=v.substr(1));w.length+v.lengthk&&k>=-4?(l=(103==l?"f":"F").charCodeAt(0),g-=k+1):(l=(103==l?"e":"E").charCodeAt(0),g--),A=Math.min(g,20)}101==l||69==l?(v=i.toExponential(A),/[eE][-+]\d$/.test(v)&&(v=v.slice(0,-1)+"0"+v.slice(-1))):102!=l&&70!=l||(v=i.toFixed(A),0===i&&reallyNegative(i)&&(v="-"+v));var F=v.split("e");if(x&&!d)for(;F[0].length>1&&F[0].includes(".")&&("0"==F[0].slice(-1)||"."==F[0].slice(-1));)F[0]=F[0].slice(0,-1);else for(d&&-1==v.indexOf(".")&&(F[0]+=".");g>A++;)F[0]+="0";v=F[0]+(F.length>1?"e"+F[1]:""),69==l&&(v=v.toUpperCase()),i>=0&&(s?v="+"+v:y&&(v=" "+v))}else v=(i<0?"-":"")+"inf",p=!1;for(;v.length0;)a.push(32);c||a.push(n("i8"));break;case"n":var C=n("i32*");HEAP32[C>>2]=a.length;break;case"%":a.push(o);break;default:for(S=u;S<_+2;S++)a.push(HEAP8[S|0])}_+=2}else a.push(o),_+=1}return a}function _emscripten_log(e,t,_){_emscripten_log_js(e,UTF8ArrayToString(formatString(t,_),0))}function _emscripten_get_compiler_setting(e){throw"You must build with -sRETAIN_COMPILER_SETTINGS for getCompilerSetting or emscripten_get_compiler_setting to work"}function _emscripten_has_asyncify(){return 0}function _emscripten_debugger(){}function _emscripten_print_double(e,t,_){var r=e+"";return t?stringToUTF8(r,t,_):lengthBytesUTF8(r)}function convertFrameToPC(e){return abort("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER"),0}function _emscripten_return_address(e){var t=jsStackTrace().split("\n");return"Error"==t[0]&&t.shift(),convertFrameToPC(t[e+3])}Module.ERRNO_MESSAGES=ERRNO_MESSAGES,Module._gethostbyname_r=_gethostbyname_r,_gethostbyname_r.sig="ipppipp",Module._endprotoent=_endprotoent,Module._getprotoent=_getprotoent,Module._getprotobynumber=_getprotobynumber,Module._emscripten_run_script=_emscripten_run_script,_emscripten_run_script.sig="vp",Module._emscripten_run_script_int=_emscripten_run_script_int,_emscripten_run_script_int.sig="ip",Module._emscripten_run_script_string=_emscripten_run_script_string,_emscripten_run_script_string.sig="pp",Module._emscripten_random=_emscripten_random,Module.warnOnce=warnOnce,Module.traverseStack=traverseStack,Module._emscripten_get_callstack_js=_emscripten_get_callstack_js,Module._emscripten_get_callstack=_emscripten_get_callstack,Module._emscripten_log_js=_emscripten_log_js,Module.reallyNegative=reallyNegative,Module.convertI32PairToI53=convertI32PairToI53,Module.convertU32PairToI53=convertU32PairToI53,Module.reSign=reSign,Module.unSign=unSign,Module.strLen=strLen,Module.formatString=formatString,Module._emscripten_log=_emscripten_log,_emscripten_log.sig="vipp",Module._emscripten_get_compiler_setting=_emscripten_get_compiler_setting,_emscripten_get_compiler_setting.sig="pp",Module._emscripten_has_asyncify=_emscripten_has_asyncify,Module._emscripten_debugger=_emscripten_debugger,Module._emscripten_print_double=_emscripten_print_double,_emscripten_print_double.sig="iipi",Module.convertFrameToPC=convertFrameToPC,Module._emscripten_return_address=_emscripten_return_address,_emscripten_return_address.sig="pi";var UNWIND_CACHE={};function saveInUnwindCache(e){e.forEach((e=>{var t=convertFrameToPC(e);t&&(UNWIND_CACHE[t]=e)}))}function _emscripten_stack_snapshot(){var e=jsStackTrace().split("\n");return"Error"==e[0]&&e.shift(),saveInUnwindCache(e),UNWIND_CACHE.last_addr=convertFrameToPC(e[3]),UNWIND_CACHE.last_stack=e,UNWIND_CACHE.last_addr}function _emscripten_stack_unwind_buffer(e,t,_){var r;UNWIND_CACHE.last_addr==e?r=UNWIND_CACHE.last_stack:("Error"==(r=jsStackTrace().split("\n"))[0]&&r.shift(),saveInUnwindCache(r));for(var n=3;r[n]&&convertFrameToPC(r[n])!=e;)++n;for(var o=0;o<_&&r[o+n];++o)HEAP32[t+4*o>>2]=convertFrameToPC(r[o+n]);return o}function _emscripten_pc_get_function(e){abort("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER")}function convertPCtoSourceLocation(e){if(UNWIND_CACHE.last_get_source_pc==e)return UNWIND_CACHE.last_source;var t,_;if(!_){var r=UNWIND_CACHE[e];if(!r)return null;((t=/\((.*):(\d+):(\d+)\)$/.exec(r))||(t=/@(.*):(\d+):(\d+)/.exec(r)))&&(_={file:t[1],line:t[2],column:t[3]})}return UNWIND_CACHE.last_get_source_pc=e,UNWIND_CACHE.last_source=_,_}function _emscripten_pc_get_file(e){var t=convertPCtoSourceLocation(e);return t?(_emscripten_pc_get_file.ret&&_free(_emscripten_pc_get_file.ret),_emscripten_pc_get_file.ret=allocateUTF8(t.file),_emscripten_pc_get_file.ret):0}function _emscripten_pc_get_line(e){var t=convertPCtoSourceLocation(e);return t?t.line:0}function _emscripten_pc_get_column(e){var t=convertPCtoSourceLocation(e);return t&&t.column||0}function _emscripten_get_module_name(e,t){return stringToUTF8(wasmBinaryFile,e,t)}function _emscripten_asm_const_double(e,t,_){return runEmAsmFunction(e,t,_)}Module.UNWIND_CACHE=UNWIND_CACHE,Module.saveInUnwindCache=saveInUnwindCache,Module._emscripten_stack_snapshot=_emscripten_stack_snapshot,_emscripten_stack_snapshot.sig="p",Module._emscripten_stack_unwind_buffer=_emscripten_stack_unwind_buffer,_emscripten_stack_unwind_buffer.sig="ippi",Module._emscripten_pc_get_function=_emscripten_pc_get_function,Module.convertPCtoSourceLocation=convertPCtoSourceLocation,Module._emscripten_pc_get_file=_emscripten_pc_get_file,_emscripten_pc_get_file.sig="pp",Module._emscripten_pc_get_line=_emscripten_pc_get_line,_emscripten_pc_get_line.sig="ip",Module._emscripten_pc_get_column=_emscripten_pc_get_column,_emscripten_pc_get_column.sig="ip",Module._emscripten_get_module_name=_emscripten_get_module_name,_emscripten_get_module_name.sig="ppp",Module._emscripten_asm_const_double=_emscripten_asm_const_double,_emscripten_asm_const_double.sig="dppp";var _emscripten_asm_const_ptr=_emscripten_asm_const_int;function runMainThreadEmAsm(e,t,_,r){var n=readEmAsmArgs(t,_);return ASM_CONSTS[e].apply(null,n)}function _emscripten_asm_const_int_sync_on_main_thread(e,t,_){return runMainThreadEmAsm(e,t,_,1)}Module._emscripten_asm_const_ptr=_emscripten_asm_const_ptr,Module.runMainThreadEmAsm=runMainThreadEmAsm,runMainThreadEmAsm.sig="iippi",Module._emscripten_asm_const_int_sync_on_main_thread=_emscripten_asm_const_int_sync_on_main_thread,_emscripten_asm_const_int_sync_on_main_thread.sig="iiii";var _emscripten_asm_const_double_sync_on_main_thread=_emscripten_asm_const_int_sync_on_main_thread;function _emscripten_asm_const_async_on_main_thread(e,t,_){return runMainThreadEmAsm(e,t,_,0)}function jstoi_s(e){return Number(e)}function __Unwind_Backtrace(e,t){for(var _=_emscripten_get_callstack_js().split("\n"),r=0;r<_.length;r++){if(0!==getWasmTableEntry(e)(0,t))return}}function __Unwind_GetIPInfo(){abort("Unwind_GetIPInfo")}function __Unwind_FindEnclosingFunction(){return 0}function __Unwind_RaiseException(e){return err("Warning: _Unwind_RaiseException is not correctly implemented"),___cxa_throw(e,0,0)}function __Unwind_DeleteException(e){err("TODO: Unwind_DeleteException")}function _emscripten_autodebug_i64(e,t,_){out("AD:"+[e,t,_])}function _emscripten_autodebug_i32(e,t){out("AD:"+[e,t])}function _emscripten_autodebug_i16(e,t){out("AD:"+[e,t])}function _emscripten_autodebug_i8(e,t){out("AD:"+[e,t])}function _emscripten_autodebug_float(e,t){out("AD:"+[e,t])}function _emscripten_autodebug_double(e,t){out("AD:"+[e,t])}function listenOnce(e,t,_){e.addEventListener(t,_,{once:!0})}function autoResumeAudioContext(e,t){t||(t=[document,document.getElementById("canvas")]),["keydown","mousedown","touchstart"].forEach((function(_){t.forEach((function(t){t&&listenOnce(t,_,(()=>{"suspended"===e.state&&e.resume()}))}))}))}function getDynCaller(e,t){var _=[];return function(){return _.length=0,Object.assign(_,arguments),dynCall(e,t,_)}}function _emscripten_force_exit(e){noExitRuntime=!1,_exit(e)}function _emscripten_throw_number(e){throw e}function _emscripten_throw_string(e){throw UTF8ToString(e)}function runtimeKeepalivePush(){}function runtimeKeepalivePop(){}Module._emscripten_asm_const_double_sync_on_main_thread=_emscripten_asm_const_double_sync_on_main_thread,Module._emscripten_asm_const_async_on_main_thread=_emscripten_asm_const_async_on_main_thread,Module.jstoi_s=jstoi_s,Module.__Unwind_Backtrace=__Unwind_Backtrace,Module.__Unwind_GetIPInfo=__Unwind_GetIPInfo,Module.__Unwind_FindEnclosingFunction=__Unwind_FindEnclosingFunction,Module.__Unwind_RaiseException=__Unwind_RaiseException,Module.__Unwind_DeleteException=__Unwind_DeleteException,Module._emscripten_autodebug_i64=_emscripten_autodebug_i64,Module._emscripten_autodebug_i32=_emscripten_autodebug_i32,Module._emscripten_autodebug_i16=_emscripten_autodebug_i16,Module._emscripten_autodebug_i8=_emscripten_autodebug_i8,Module._emscripten_autodebug_float=_emscripten_autodebug_float,Module._emscripten_autodebug_double=_emscripten_autodebug_double,Module.listenOnce=listenOnce,Module.autoResumeAudioContext=autoResumeAudioContext,Module.getDynCaller=getDynCaller,Module._emscripten_force_exit=_emscripten_force_exit,_emscripten_force_exit.sig="vi",Module._emscripten_throw_number=_emscripten_throw_number,Module._emscripten_throw_string=_emscripten_throw_string,Module.runtimeKeepalivePush=runtimeKeepalivePush,runtimeKeepalivePush.sig="v",Module.runtimeKeepalivePop=runtimeKeepalivePop,runtimeKeepalivePop.sig="v";var _emscripten_runtime_keepalive_push=runtimeKeepalivePush;Module._emscripten_runtime_keepalive_push=_emscripten_runtime_keepalive_push;var _emscripten_runtime_keepalive_pop=runtimeKeepalivePop;function _emscripten_runtime_keepalive_check(){return keepRuntimeAlive()}function maybeExit(){}function safeSetTimeout(e,t){return setTimeout((function(){callUserCallback(e)}),t)}Module._emscripten_runtime_keepalive_pop=_emscripten_runtime_keepalive_pop,Module._emscripten_runtime_keepalive_check=_emscripten_runtime_keepalive_check,Module.maybeExit=maybeExit,Module.safeSetTimeout=safeSetTimeout;var ___global_base=1024;function __emscripten_fs_load_embedded_files(e){do{var t=HEAPU32[e>>2],_=HEAPU32[(e+=4)>>2],r=HEAPU32[(e+=4)>>2];e+=4;var n=UTF8ToString(t);FS.createPath("/",PATH.dirname(n),!0,!0),FS.createDataFile(n,null,HEAP8.subarray(r,r+_),!0,!0,!0)}while(HEAPU32[e>>2])}Module.___global_base=___global_base,Module.__emscripten_fs_load_embedded_files=__emscripten_fs_load_embedded_files,__emscripten_fs_load_embedded_files.sig="vp";var POINTER_SIZE=4;function getNativeTypeSize(e){switch(e){case"i1":case"i8":case"u8":return 1;case"i16":case"u16":return 2;case"i32":case"u32":case"float":return 4;case"i64":case"u64":case"double":return 8;default:if("*"===e[e.length-1])return POINTER_SIZE;if("i"===e[0]){const t=Number(e.substr(1));return assert(t%8==0,"getNativeTypeSize invalid bits "+t+", type "+e),t/8}return 0}}Module.POINTER_SIZE=POINTER_SIZE,Module.getNativeTypeSize=getNativeTypeSize;var STACK_SIZE=5242880;Module.STACK_SIZE=STACK_SIZE;var STACK_ALIGN=16;Module.STACK_ALIGN=STACK_ALIGN;var ASSERTIONS=0;function writeI53ToI64Clamped(e,t){t>0x8000000000000000?(HEAPU32[e>>2]=4294967295,HEAPU32[e+4>>2]=2147483647):t<-0x8000000000000000?(HEAPU32[e>>2]=0,HEAPU32[e+4>>2]=2147483648):(HEAPU32[e>>2]=t,HEAPU32[e+4>>2]=(t-HEAPU32[e>>2])/4294967296)}function writeI53ToI64Signaling(e,t){if(t>0x8000000000000000||t<-0x8000000000000000)throw"RangeError:"+t;HEAPU32[e>>2]=t,HEAPU32[e+4>>2]=(t-HEAPU32[e>>2])/4294967296}function writeI53ToU64Clamped(e,t){t>0x10000000000000000?HEAPU32[e>>2]=HEAPU32[e+4>>2]=4294967295:t<0?HEAPU32[e>>2]=HEAPU32[e+4>>2]=0:(HEAPU32[e>>2]=t,HEAPU32[e+4>>2]=(t-HEAPU32[e>>2])/4294967296)}function writeI53ToU64Signaling(e,t){if(t<0||t>0x10000000000000000)throw"RangeError:"+t;HEAPU32[e>>2]=t,HEAPU32[e+4>>2]=(t-HEAPU32[e>>2])/4294967296}function readI53FromU64(e){return HEAPU32[e>>2]+4294967296*HEAPU32[e+4>>2]}function convertI32PairToI53Checked(e,t){return t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN}function getCFunc(e){return Module["_"+e]}function ccall(e,t,_,r,n){var o={string:e=>{var t=0;if(null!=e&&0!==e){var _=1+(e.length<<2);stringToUTF8(e,t=stackAlloc(_),_)}return t},array:e=>{var t=stackAlloc(e.length);return writeArrayToMemory(e,t),t}};var l=getCFunc(e),i=[],a=0;if(r)for(var u=0;u"number"===e||"boolean"===e));return"string"!==t&&n&&!r?getCFunc(e):function(){return ccall(e,t,_,arguments,r)}}function removeFunction(e){functionsInTableMap.delete(getWasmTableEntry(e)),freeTableIndexes.push(e)}function _emscripten_math_cbrt(e){return Math.cbrt(e)}function _emscripten_math_pow(e,t){return Math.pow(e,t)}function _emscripten_math_random(){return Math.random()}function _emscripten_math_sign(e){return Math.sign(e)}function _emscripten_math_sqrt(e){return Math.sqrt(e)}function _emscripten_math_exp(e){return Math.exp(e)}function _emscripten_math_expm1(e){return Math.expm1(e)}function _emscripten_math_fmod(e,t){return e%t}function _emscripten_math_log(e){return Math.log(e)}function _emscripten_math_log1p(e){return Math.log1p(e)}function _emscripten_math_log10(e){return Math.log10(e)}function _emscripten_math_log2(e){return Math.log2(e)}function _emscripten_math_round(e){return Math.round(e)}function _emscripten_math_acos(e){return Math.acos(e)}function _emscripten_math_acosh(e){return Math.acosh(e)}function _emscripten_math_asin(e){return Math.asin(e)}function _emscripten_math_asinh(e){return Math.asinh(e)}function _emscripten_math_atan(e){return Math.atan(e)}function _emscripten_math_atanh(e){return Math.atanh(e)}function _emscripten_math_atan2(e,t){return Math.atan2(e,t)}function _emscripten_math_cos(e){return Math.cos(e)}function _emscripten_math_cosh(e){return Math.cosh(e)}function _emscripten_math_hypot(e,t){for(var _=[],r=0;r>3)+r]);return Math.hypot.apply(null,_)}function _emscripten_math_sin(e){return Math.sin(e)}function _emscripten_math_sinh(e){return Math.sinh(e)}function _emscripten_math_tan(e){return Math.tan(e)}function _emscripten_math_tanh(e){return Math.tanh(e)}function intArrayToString(e){for(var t=[],_=0;_255&&(r&=255),t.push(String.fromCharCode(r))}return t.join("")}function AsciiToString(e){for(var t="";;){var _=HEAPU8[e++|0];if(!_)return t;t+=String.fromCharCode(_)}}function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.ASSERTIONS=ASSERTIONS,Module.writeI53ToI64Clamped=writeI53ToI64Clamped,Module.writeI53ToI64Signaling=writeI53ToI64Signaling,Module.writeI53ToU64Clamped=writeI53ToU64Clamped,Module.writeI53ToU64Signaling=writeI53ToU64Signaling,Module.readI53FromU64=readI53FromU64,Module.convertI32PairToI53Checked=convertI32PairToI53Checked,Module.getCFunc=getCFunc,Module.ccall=ccall,Module.cwrap=cwrap,Module.removeFunction=removeFunction,Module._emscripten_math_cbrt=_emscripten_math_cbrt,Module._emscripten_math_pow=_emscripten_math_pow,Module._emscripten_math_random=_emscripten_math_random,Module._emscripten_math_sign=_emscripten_math_sign,Module._emscripten_math_sqrt=_emscripten_math_sqrt,Module._emscripten_math_exp=_emscripten_math_exp,Module._emscripten_math_expm1=_emscripten_math_expm1,Module._emscripten_math_fmod=_emscripten_math_fmod,Module._emscripten_math_log=_emscripten_math_log,Module._emscripten_math_log1p=_emscripten_math_log1p,Module._emscripten_math_log10=_emscripten_math_log10,Module._emscripten_math_log2=_emscripten_math_log2,Module._emscripten_math_round=_emscripten_math_round,Module._emscripten_math_acos=_emscripten_math_acos,Module._emscripten_math_acosh=_emscripten_math_acosh,Module._emscripten_math_asin=_emscripten_math_asin,Module._emscripten_math_asinh=_emscripten_math_asinh,Module._emscripten_math_atan=_emscripten_math_atan,Module._emscripten_math_atanh=_emscripten_math_atanh,Module._emscripten_math_atan2=_emscripten_math_atan2,Module._emscripten_math_cos=_emscripten_math_cos,Module._emscripten_math_cosh=_emscripten_math_cosh,Module._emscripten_math_hypot=_emscripten_math_hypot,_emscripten_math_hypot.sig="iip",Module._emscripten_math_sin=_emscripten_math_sin,Module._emscripten_math_sinh=_emscripten_math_sinh,Module._emscripten_math_tan=_emscripten_math_tan,Module._emscripten_math_tanh=_emscripten_math_tanh,Module.intArrayToString=intArrayToString,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii;var UTF16Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function UTF16ToString(e,t){for(var _=e,r=_>>1,n=r+t/2;!(r>=n)&&HEAPU16[r];)++r;if((_=r<<1)-e>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(e,_));for(var o="",l=0;!(l>=t/2);++l){var i=HEAP16[e+2*l>>1];if(0==i)break;o+=String.fromCharCode(i)}return o}function stringToUTF16(e,t,_){if(void 0===_&&(_=2147483647),_<2)return 0;for(var r=t,n=(_-=2)<2*e.length?_/2:e.length,o=0;o>1]=l,t+=2}return HEAP16[t>>1]=0,t-r}function lengthBytesUTF16(e){return 2*e.length}function UTF32ToString(e,t){for(var _=0,r="";!(_>=t/4);){var n=HEAP32[e+4*_>>2];if(0==n)break;if(++_,n>=65536){var o=n-65536;r+=String.fromCharCode(55296|o>>10,56320|1023&o)}else r+=String.fromCharCode(n)}return r}function stringToUTF32(e,t,_){if(void 0===_&&(_=2147483647),_<4)return 0;for(var r=t,n=r+_-4,o=0;o=55296&&l<=57343)l=65536+((1023&l)<<10)|1023&e.charCodeAt(++o);if(HEAP32[t>>2]=l,(t+=4)+4>n)break}return HEAP32[t>>2]=0,t-r}function lengthBytesUTF32(e){for(var t=0,_=0;_=55296&&r<=57343&&++_,t+=4}return t}function writeStringToMemory(e,t,_){var r,n;warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),_&&(n=t+lengthBytesUTF8(e),r=HEAP8[n]),stringToUTF8(e,t,1/0),_&&(HEAP8[n]=r)}function ___syscall_rename(e,t){try{return e=SYSCALLS.getStr(e),t=SYSCALLS.getStr(t),FS.rename(e,t),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}}Module.UTF16Decoder=UTF16Decoder,Module.UTF16ToString=UTF16ToString,Module.stringToUTF16=stringToUTF16,Module.lengthBytesUTF16=lengthBytesUTF16,Module.UTF32ToString=UTF32ToString,Module.stringToUTF32=stringToUTF32,Module.lengthBytesUTF32=lengthBytesUTF32,Module.writeStringToMemory=writeStringToMemory,Module.___syscall_rename=___syscall_rename,___syscall_rename.sig="ipp";var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var e=JSEvents.eventHandlers.length-1;e>=0;--e)JSEvents._removeHandler(e);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(e,t,_){function r(e,t){if(e.length!=t.length)return!1;for(var _ in e)if(e[_]!=t[_])return!1;return!0}for(var n in JSEvents.deferredCalls){var o=JSEvents.deferredCalls[n];if(o.targetFunction==e&&r(o.argsList,_))return}JSEvents.deferredCalls.push({targetFunction:e,precedence:t,argsList:_}),JSEvents.deferredCalls.sort((function(e,t){return e.precedence2?UTF8ToString(e):e}Module.JSEvents=JSEvents,Module.maybeCStringToJsString=maybeCStringToJsString;var specialHTMLTargets=[0,"undefined"!=typeof document?document:0,"undefined"!=typeof window?window:0];function findEventTarget(e){return e=maybeCStringToJsString(e),specialHTMLTargets[e]||("undefined"!=typeof document?document.querySelector(e):void 0)}function registerKeyEventCallback(e,t,_,r,n,o,l){JSEvents.keyEvent||(JSEvents.keyEvent=_malloc(176));var i={target:findEventTarget(e),allowsDeferredCalls:!0,eventTypeString:o,callbackfunc:r,handlerFunc:function(e){var _=JSEvents.keyEvent;HEAPF64[_>>3]=e.timeStamp;var o=_>>2;HEAP32[o+2]=e.location,HEAP32[o+3]=e.ctrlKey,HEAP32[o+4]=e.shiftKey,HEAP32[o+5]=e.altKey,HEAP32[o+6]=e.metaKey,HEAP32[o+7]=e.repeat,HEAP32[o+8]=e.charCode,HEAP32[o+9]=e.keyCode,HEAP32[o+10]=e.which,stringToUTF8(e.key||"",_+44,32),stringToUTF8(e.code||"",_+76,32),stringToUTF8(e.char||"",_+108,32),stringToUTF8(e.locale||"",_+140,32),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function findCanvasEventTarget(e){return findEventTarget(e)}function _emscripten_set_keypress_callback_on_thread(e,t,_,r,n){return registerKeyEventCallback(e,t,_,r,1,"keypress",n),0}function _emscripten_set_keydown_callback_on_thread(e,t,_,r,n){return registerKeyEventCallback(e,t,_,r,2,"keydown",n),0}function _emscripten_set_keyup_callback_on_thread(e,t,_,r,n){return registerKeyEventCallback(e,t,_,r,3,"keyup",n),0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{left:0,top:0}}function fillMouseEventData(e,t,_){HEAPF64[e>>3]=t.timeStamp;var r=e>>2;HEAP32[r+2]=t.screenX,HEAP32[r+3]=t.screenY,HEAP32[r+4]=t.clientX,HEAP32[r+5]=t.clientY,HEAP32[r+6]=t.ctrlKey,HEAP32[r+7]=t.shiftKey,HEAP32[r+8]=t.altKey,HEAP32[r+9]=t.metaKey,HEAP16[2*r+20]=t.button,HEAP16[2*r+21]=t.buttons,HEAP32[r+11]=t.movementX,HEAP32[r+12]=t.movementY;var n=getBoundingClientRect(_);HEAP32[r+13]=t.clientX-n.left,HEAP32[r+14]=t.clientY-n.top}function registerMouseEventCallback(e,t,_,r,n,o,l){JSEvents.mouseEvent||(JSEvents.mouseEvent=_malloc(72));var i={target:e=findEventTarget(e),allowsDeferredCalls:"mousemove"!=o&&"mouseenter"!=o&&"mouseleave"!=o,eventTypeString:o,callbackfunc:r,handlerFunc:function(_=event){fillMouseEventData(JSEvents.mouseEvent,_,e),getWasmTableEntry(r)(n,JSEvents.mouseEvent,t)&&_.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_click_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,4,"click",n),0}function _emscripten_set_mousedown_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,5,"mousedown",n),0}function _emscripten_set_mouseup_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,6,"mouseup",n),0}function _emscripten_set_dblclick_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,7,"dblclick",n),0}function _emscripten_set_mousemove_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,8,"mousemove",n),0}function _emscripten_set_mouseenter_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,33,"mouseenter",n),0}function _emscripten_set_mouseleave_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,34,"mouseleave",n),0}function _emscripten_set_mouseover_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,35,"mouseover",n),0}function _emscripten_set_mouseout_callback_on_thread(e,t,_,r,n){return registerMouseEventCallback(e,t,_,r,36,"mouseout",n),0}function _emscripten_get_mouse_status(e){return JSEvents.mouseEvent?(HEAP8.set(HEAP8.subarray(JSEvents.mouseEvent,JSEvents.mouseEvent+72),e),0):-7}function registerWheelEventCallback(e,t,_,r,n,o,l){JSEvents.wheelEvent||(JSEvents.wheelEvent=_malloc(104));var i={target:e,allowsDeferredCalls:!0,eventTypeString:o,callbackfunc:r,handlerFunc:function(_=event){var o=JSEvents.wheelEvent;fillMouseEventData(o,_,e),HEAPF64[o+72>>3]=_.deltaX,HEAPF64[o+80>>3]=_.deltaY,HEAPF64[o+88>>3]=_.deltaZ,HEAP32[o+96>>2]=_.deltaMode,getWasmTableEntry(r)(n,o,t)&&_.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_wheel_callback_on_thread(e,t,_,r,n){return void 0!==(e=findEventTarget(e)).onwheel?(registerWheelEventCallback(e,t,_,r,9,"wheel",n),0):-1}function registerUiEventCallback(e,t,_,r,n,o,l){JSEvents.uiEvent||(JSEvents.uiEvent=_malloc(36));var i={target:e=findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(_=event){if(_.target==e){var o=document.body;if(o){var l=JSEvents.uiEvent;HEAP32[l>>2]=_.detail,HEAP32[l+4>>2]=o.clientWidth,HEAP32[l+8>>2]=o.clientHeight,HEAP32[l+12>>2]=innerWidth,HEAP32[l+16>>2]=innerHeight,HEAP32[l+20>>2]=outerWidth,HEAP32[l+24>>2]=outerHeight,HEAP32[l+28>>2]=pageXOffset,HEAP32[l+32>>2]=pageYOffset,getWasmTableEntry(r)(n,l,t)&&_.preventDefault()}}},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_resize_callback_on_thread(e,t,_,r,n){return registerUiEventCallback(e,t,_,r,10,"resize",n),0}function _emscripten_set_scroll_callback_on_thread(e,t,_,r,n){return registerUiEventCallback(e,t,_,r,11,"scroll",n),0}function registerFocusEventCallback(e,t,_,r,n,o,l){JSEvents.focusEvent||(JSEvents.focusEvent=_malloc(256));var i={target:findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.getNodeNameForTarget(e.target),o=e.target.id?e.target.id:"",l=JSEvents.focusEvent;stringToUTF8(_,l+0,128),stringToUTF8(o,l+128,128),getWasmTableEntry(r)(n,l,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_blur_callback_on_thread(e,t,_,r,n){return registerFocusEventCallback(e,t,_,r,12,"blur",n),0}function _emscripten_set_focus_callback_on_thread(e,t,_,r,n){return registerFocusEventCallback(e,t,_,r,13,"focus",n),0}function _emscripten_set_focusin_callback_on_thread(e,t,_,r,n){return registerFocusEventCallback(e,t,_,r,14,"focusin",n),0}function _emscripten_set_focusout_callback_on_thread(e,t,_,r,n){return registerFocusEventCallback(e,t,_,r,15,"focusout",n),0}function fillDeviceOrientationEventData(e,t,_){HEAPF64[e>>3]=t.alpha,HEAPF64[e+8>>3]=t.beta,HEAPF64[e+16>>3]=t.gamma,HEAP32[e+24>>2]=t.absolute}function registerDeviceOrientationEventCallback(e,t,_,r,n,o,l){JSEvents.deviceOrientationEvent||(JSEvents.deviceOrientationEvent=_malloc(32));var i={target:findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(_=event){fillDeviceOrientationEventData(JSEvents.deviceOrientationEvent,_,e),getWasmTableEntry(r)(n,JSEvents.deviceOrientationEvent,t)&&_.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_deviceorientation_callback_on_thread(e,t,_,r){return registerDeviceOrientationEventCallback(2,e,t,_,16,"deviceorientation",r),0}function _emscripten_get_deviceorientation_status(e){return JSEvents.deviceOrientationEvent?(HEAP32.set(HEAP32.subarray(JSEvents.deviceOrientationEvent,32),e),0):-7}function fillDeviceMotionEventData(e,t,_){var r=t.acceleration;var n=t.accelerationIncludingGravity;var o=t.rotationRate;r=r||{},n=n||{},o=o||{},HEAPF64[e>>3]=r.x,HEAPF64[e+8>>3]=r.y,HEAPF64[e+16>>3]=r.z,HEAPF64[e+24>>3]=n.x,HEAPF64[e+32>>3]=n.y,HEAPF64[e+40>>3]=n.z,HEAPF64[e+48>>3]=o.alpha,HEAPF64[e+56>>3]=o.beta,HEAPF64[e+64>>3]=o.gamma}function registerDeviceMotionEventCallback(e,t,_,r,n,o,l){JSEvents.deviceMotionEvent||(JSEvents.deviceMotionEvent=_malloc(80));var i={target:findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(_=event){fillDeviceMotionEventData(JSEvents.deviceMotionEvent,_,e),getWasmTableEntry(r)(n,JSEvents.deviceMotionEvent,t)&&_.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_devicemotion_callback_on_thread(e,t,_,r){return registerDeviceMotionEventCallback(2,e,t,_,17,"devicemotion",r),0}function _emscripten_get_devicemotion_status(e){return JSEvents.deviceMotionEvent?(HEAP32.set(HEAP32.subarray(JSEvents.deviceMotionEvent,80),e),0):-7}function screenOrientation(){if(screen)return screen.orientation||screen.mozOrientation||screen.webkitOrientation||screen.msOrientation}function fillOrientationChangeEventData(e){var t=screenOrientation(),_=["portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"].indexOf(t);-1==_&&(_=["portrait","portrait","landscape","landscape"].indexOf(t)),HEAP32[e>>2]=1<<_,HEAP32[e+4>>2]=_}function registerOrientationChangeEventCallback(e,t,_,r,n,o,l){JSEvents.orientationChangeEvent||(JSEvents.orientationChangeEvent=_malloc(8));"orientationchange"==o&&void 0!==screen.mozOrientation&&(o="mozorientationchange");var i={target:e,eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.orientationChangeEvent;fillOrientationChangeEventData(_),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_orientationchange_callback_on_thread(e,t,_,r){return screen&&screen.addEventListener?(registerOrientationChangeEventCallback(screen,e,t,_,18,"orientationchange",r),0):-1}function _emscripten_get_orientation_status(e){return screenOrientation()||"undefined"!=typeof orientation?(fillOrientationChangeEventData(e),0):-1}function _emscripten_lock_orientation(e){var t,_=[];if(1&e&&_.push("portrait-primary"),2&e&&_.push("portrait-secondary"),4&e&&_.push("landscape-primary"),8&e&&_.push("landscape-secondary"),screen.lockOrientation)t=screen.lockOrientation(_);else if(screen.mozLockOrientation)t=screen.mozLockOrientation(_);else if(screen.webkitLockOrientation)t=screen.webkitLockOrientation(_);else{if(!screen.msLockOrientation)return-1;t=screen.msLockOrientation(_)}return t?0:-6}function _emscripten_unlock_orientation(){if(screen.unlockOrientation)screen.unlockOrientation();else if(screen.mozUnlockOrientation)screen.mozUnlockOrientation();else if(screen.webkitUnlockOrientation)screen.webkitUnlockOrientation();else{if(!screen.msUnlockOrientation)return-1;screen.msUnlockOrientation()}return 0}function fillFullscreenChangeEventData(e){var t=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement,_=!!t;HEAP32[e>>2]=_,HEAP32[e+4>>2]=JSEvents.fullscreenEnabled();var r=_?t:JSEvents.previousFullscreenElement,n=JSEvents.getNodeNameForTarget(r),o=r&&r.id?r.id:"";stringToUTF8(n,e+8,128),stringToUTF8(o,e+136,128),HEAP32[e+264>>2]=r?r.clientWidth:0,HEAP32[e+268>>2]=r?r.clientHeight:0,HEAP32[e+272>>2]=screen.width,HEAP32[e+276>>2]=screen.height,_&&(JSEvents.previousFullscreenElement=t)}function registerFullscreenChangeEventCallback(e,t,_,r,n,o,l){JSEvents.fullscreenChangeEvent||(JSEvents.fullscreenChangeEvent=_malloc(280));var i={target:e,eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(_),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_fullscreenchange_callback_on_thread(e,t,_,r,n){return JSEvents.fullscreenEnabled()?(e=findEventTarget(e))?(registerFullscreenChangeEventCallback(e,t,_,r,19,"fullscreenchange",n),registerFullscreenChangeEventCallback(e,t,_,r,19,"webkitfullscreenchange",n),0):-4:-1}function _emscripten_get_fullscreen_status(e){return JSEvents.fullscreenEnabled()?(fillFullscreenChangeEventData(e),0):-1}function _emscripten_get_canvas_element_size(e,t,_){var r=findCanvasEventTarget(e);if(!r)return-4;HEAP32[t>>2]=r.width,HEAP32[_>>2]=r.height}function getCanvasElementSize(e){return withStackSave((function(){var t=stackAlloc(8),_=t+4,r=stackAlloc(e.id.length+1);stringToUTF8(e.id,r,e.id.length+1);_emscripten_get_canvas_element_size(r,t,_);return[HEAP32[t>>2],HEAP32[_>>2]]}))}function _emscripten_set_canvas_element_size(e,t,_){var r=findCanvasEventTarget(e);return r?(r.width=t,r.height=_,0):-4}function setCanvasElementSize(e,t,_){e.controlTransferredOffscreen?withStackSave((function(){var r=stackAlloc(e.id.length+1);stringToUTF8(e.id,r,e.id.length+1),_emscripten_set_canvas_element_size(r,t,_)})):(e.width=t,e.height=_)}function registerRestoreOldStyle(e){var t=getCanvasElementSize(e),_=t[0],r=t[1],n=e.style.width,o=e.style.height,l=e.style.backgroundColor,i=document.body.style.backgroundColor,a=e.style.paddingLeft,u=e.style.paddingRight,s=e.style.paddingTop,c=e.style.paddingBottom,d=e.style.marginLeft,p=e.style.marginRight,y=e.style.marginTop,m=e.style.marginBottom,f=document.body.style.margin,M=document.documentElement.style.overflow,g=document.body.scroll,P=e.style.imageRendering;function h(){document.fullscreenElement||document.webkitFullscreenElement||(document.removeEventListener("fullscreenchange",h),document.removeEventListener("webkitfullscreenchange",h),setCanvasElementSize(e,_,r),e.style.width=n,e.style.height=o,e.style.backgroundColor=l,i||(document.body.style.backgroundColor="white"),document.body.style.backgroundColor=i,e.style.paddingLeft=a,e.style.paddingRight=u,e.style.paddingTop=s,e.style.paddingBottom=c,e.style.marginLeft=d,e.style.marginRight=p,e.style.marginTop=y,e.style.marginBottom=m,document.body.style.margin=f,document.documentElement.style.overflow=M,document.body.scroll=g,e.style.imageRendering=P,e.GLctxObject&&e.GLctxObject.GLctx.viewport(0,0,_,r),currentFullscreenStrategy.canvasResizedCallback&&getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData))}return document.addEventListener("fullscreenchange",h),document.addEventListener("webkitfullscreenchange",h),h}function setLetterbox(e,t,_){e.style.paddingLeft=e.style.paddingRight=_+"px",e.style.paddingTop=e.style.paddingBottom=t+"px"}function JSEvents_resizeCanvasForFullscreen(e,t){var _=registerRestoreOldStyle(e),r=t.softFullscreen?innerWidth:screen.width,n=t.softFullscreen?innerHeight:screen.height,o=getBoundingClientRect(e),l=o.width,i=o.height,a=getCanvasElementSize(e),u=a[0],s=a[1];if(3==t.scaleMode)setLetterbox(e,(n-i)/2,(r-l)/2),r=l,n=i;else if(2==t.scaleMode)if(r*sd*u&&(a=u*d/p|0),e=(i-u)/2|0),n&&(setCanvasElementSize(s,a,u),s.GLctxObject&&s.GLctxObject.GLctx.viewport(0,0,a,u)),_&&(e/=t,a/=t,u/=t,a=Math.round(1e4*a)/1e4,u=Math.round(1e4*u)/1e4,e=Math.round(1e4*e)/1e4),o)?setLetterbox(s,(innerHeight-jstoi_q(s.style.height))/2,(innerWidth-jstoi_q(s.style.width))/2):(s.style.width=a+"px",s.style.height=u+"px",setLetterbox(s,e,(innerWidth-a)/2));!o&¤tFullscreenStrategy.canvasResizedCallback&&getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}function doRequestFullscreen(e,t){return JSEvents.fullscreenEnabled()?(e=findEventTarget(e))?e.requestFullscreen||e.webkitRequestFullscreen?JSEvents.canPerformEventHandlerRequests()?JSEvents_requestFullscreen(e,t):t.deferUntilInEventHandler?(JSEvents.deferCall(JSEvents_requestFullscreen,1,[e,t]),1):-2:-3:-4:-1}function _emscripten_request_fullscreen(e,t){return doRequestFullscreen(e,{scaleMode:0,canvasResolutionScaleMode:0,filteringMode:0,deferUntilInEventHandler:t,canvasResizedCallbackTargetThread:2})}function _emscripten_request_fullscreen_strategy(e,t,_){return doRequestFullscreen(e,{scaleMode:HEAP32[_>>2],canvasResolutionScaleMode:HEAP32[_+4>>2],filteringMode:HEAP32[_+8>>2],deferUntilInEventHandler:t,canvasResizedCallback:HEAP32[_+12>>2],canvasResizedCallbackUserData:HEAP32[_+16>>2]})}function _emscripten_enter_soft_fullscreen(e,t){if(!(e=findEventTarget(e)))return-4;var _={scaleMode:HEAP32[t>>2],canvasResolutionScaleMode:HEAP32[t+4>>2],filteringMode:HEAP32[t+8>>2],canvasResizedCallback:HEAP32[t+12>>2],canvasResizedCallbackUserData:HEAP32[t+16>>2],target:e,softFullscreen:!0},r=JSEvents_resizeCanvasForFullscreen(e,_);document.documentElement.style.overflow="hidden",document.body.scroll="no",document.body.style.margin="0px";var n=hideEverythingExceptGivenElement(e);return restoreOldWindowedStyle=function(){r(),restoreHiddenElements(n),removeEventListener("resize",softFullscreenResizeWebGLRenderTarget),_.canvasResizedCallback&&getWasmTableEntry(_.canvasResizedCallback)(37,0,_.canvasResizedCallbackUserData),currentFullscreenStrategy=0},currentFullscreenStrategy=_,addEventListener("resize",softFullscreenResizeWebGLRenderTarget),_.canvasResizedCallback&&getWasmTableEntry(_.canvasResizedCallback)(37,0,_.canvasResizedCallbackUserData),0}function _emscripten_exit_soft_fullscreen(){return restoreOldWindowedStyle&&restoreOldWindowedStyle(),restoreOldWindowedStyle=null,0}function _emscripten_exit_fullscreen(){if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var e=specialHTMLTargets[1];if(e.exitFullscreen)e.fullscreenElement&&e.exitFullscreen();else{if(!e.webkitExitFullscreen)return-1;e.webkitFullscreenElement&&e.webkitExitFullscreen()}return 0}function fillPointerlockChangeEventData(e){var t=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement,_=!!t;HEAP32[e>>2]=_;var r=JSEvents.getNodeNameForTarget(t),n=t&&t.id?t.id:"";stringToUTF8(r,e+4,128),stringToUTF8(n,e+132,128)}function registerPointerlockChangeEventCallback(e,t,_,r,n,o,l){JSEvents.pointerlockChangeEvent||(JSEvents.pointerlockChangeEvent=_malloc(260));var i={target:e,eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(_),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_pointerlockchange_callback_on_thread(e,t,_,r,n){return document&&document.body&&(document.body.requestPointerLock||document.body.mozRequestPointerLock||document.body.webkitRequestPointerLock||document.body.msRequestPointerLock)?(e=findEventTarget(e))?(registerPointerlockChangeEventCallback(e,t,_,r,20,"pointerlockchange",n),registerPointerlockChangeEventCallback(e,t,_,r,20,"mozpointerlockchange",n),registerPointerlockChangeEventCallback(e,t,_,r,20,"webkitpointerlockchange",n),registerPointerlockChangeEventCallback(e,t,_,r,20,"mspointerlockchange",n),0):-4:-1}function registerPointerlockErrorEventCallback(e,t,_,r,n,o,l){var i={target:e,eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){getWasmTableEntry(r)(n,0,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_pointerlockerror_callback_on_thread(e,t,_,r,n){return document&&(document.body.requestPointerLock||document.body.mozRequestPointerLock||document.body.webkitRequestPointerLock||document.body.msRequestPointerLock)?(e=findEventTarget(e))?(registerPointerlockErrorEventCallback(e,t,_,r,38,"pointerlockerror",n),registerPointerlockErrorEventCallback(e,t,_,r,38,"mozpointerlockerror",n),registerPointerlockErrorEventCallback(e,t,_,r,38,"webkitpointerlockerror",n),registerPointerlockErrorEventCallback(e,t,_,r,38,"mspointerlockerror",n),0):-4:-1}function _emscripten_get_pointerlock_status(e){return e&&fillPointerlockChangeEventData(e),document.body&&(document.body.requestPointerLock||document.body.mozRequestPointerLock||document.body.webkitRequestPointerLock||document.body.msRequestPointerLock)?0:-1}function requestPointerLock(e){return e.requestPointerLock?(e.requestPointerLock(),0):document.body.requestPointerLock?-3:-1}function _emscripten_request_pointerlock(e,t){return(e=findEventTarget(e))?e.requestPointerLock?JSEvents.canPerformEventHandlerRequests()?requestPointerLock(e):t?(JSEvents.deferCall(requestPointerLock,2,[e]),1):-2:-1:-4}function _emscripten_exit_pointerlock(){return JSEvents.removeDeferredCalls(requestPointerLock),document.exitPointerLock?(document.exitPointerLock(),0):-1}function _emscripten_vibrate(e){return navigator.vibrate?(navigator.vibrate(e),0):-1}function _emscripten_vibrate_pattern(e,t){if(!navigator.vibrate)return-1;for(var _=[],r=0;r>2];_.push(n)}return navigator.vibrate(_),0}function fillVisibilityChangeEventData(e){var t=["hidden","visible","prerender","unloaded"].indexOf(document.visibilityState);HEAP32[e>>2]=document.hidden,HEAP32[e+4>>2]=t}function registerVisibilityChangeEventCallback(e,t,_,r,n,o,l){JSEvents.visibilityChangeEvent||(JSEvents.visibilityChangeEvent=_malloc(8));var i={target:e,eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(_),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_visibilitychange_callback_on_thread(e,t,_,r){return specialHTMLTargets[1]?(registerVisibilityChangeEventCallback(specialHTMLTargets[1],e,t,_,21,"visibilitychange",r),0):-4}function _emscripten_get_visibility_status(e){return void 0===document.visibilityState&&void 0===document.hidden?-1:(fillVisibilityChangeEventData(e),0)}function registerTouchEventCallback(e,t,_,r,n,o,l){JSEvents.touchEvent||(JSEvents.touchEvent=_malloc(1696));var i={target:e=findEventTarget(e),allowsDeferredCalls:"touchstart"==o||"touchend"==o,eventTypeString:o,callbackfunc:r,handlerFunc:function(_){for(var o,l={},i=_.touches,a=0;a>3]=_.timeStamp;var s=u>>2;HEAP32[s+3]=_.ctrlKey,HEAP32[s+4]=_.shiftKey,HEAP32[s+5]=_.altKey,HEAP32[s+6]=_.metaKey,s+=7;var c=getBoundingClientRect(e),d=0;for(var a in l)if(o=l[a],HEAP32[s+0]=o.identifier,HEAP32[s+1]=o.screenX,HEAP32[s+2]=o.screenY,HEAP32[s+3]=o.clientX,HEAP32[s+4]=o.clientY,HEAP32[s+5]=o.pageX,HEAP32[s+6]=o.pageY,HEAP32[s+7]=o.isChanged,HEAP32[s+8]=o.onTarget,HEAP32[s+9]=o.clientX-c.left,HEAP32[s+10]=o.clientY-c.top,s+=13,++d>31)break;HEAP32[u+8>>2]=d,getWasmTableEntry(r)(n,u,t)&&_.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_touchstart_callback_on_thread(e,t,_,r,n){return registerTouchEventCallback(e,t,_,r,22,"touchstart",n),0}function _emscripten_set_touchend_callback_on_thread(e,t,_,r,n){return registerTouchEventCallback(e,t,_,r,23,"touchend",n),0}function _emscripten_set_touchmove_callback_on_thread(e,t,_,r,n){return registerTouchEventCallback(e,t,_,r,24,"touchmove",n),0}function _emscripten_set_touchcancel_callback_on_thread(e,t,_,r,n){return registerTouchEventCallback(e,t,_,r,25,"touchcancel",n),0}function fillGamepadEventData(e,t){HEAPF64[e>>3]=t.timestamp;for(var _=0;_>3]=t.axes[_];for(_=0;_>3]=t.buttons[_].value:HEAPF64[e+8*_+528>>3]=t.buttons[_];for(_=0;_>2]=t.buttons[_].pressed:HEAP32[e+4*_+1040>>2]=1==t.buttons[_];HEAP32[e+1296>>2]=t.connected,HEAP32[e+1300>>2]=t.index,HEAP32[e+8>>2]=t.axes.length,HEAP32[e+12>>2]=t.buttons.length,stringToUTF8(t.id,e+1304,64),stringToUTF8(t.mapping,e+1368,64)}function registerGamepadEventCallback(e,t,_,r,n,o,l){JSEvents.gamepadEvent||(JSEvents.gamepadEvent=_malloc(1432));var i={target:findEventTarget(e),allowsDeferredCalls:!0,eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.gamepadEvent;fillGamepadEventData(_,e.gamepad),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_gamepadconnected_callback_on_thread(e,t,_,r){return navigator.getGamepads||navigator.webkitGetGamepads?(registerGamepadEventCallback(2,e,t,_,26,"gamepadconnected",r),0):-1}function _emscripten_set_gamepaddisconnected_callback_on_thread(e,t,_,r){return navigator.getGamepads||navigator.webkitGetGamepads?(registerGamepadEventCallback(2,e,t,_,27,"gamepaddisconnected",r),0):-1}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_get_gamepad_status(e,t){return e<0||e>=JSEvents.lastGamepadState.length?-5:JSEvents.lastGamepadState[e]?(fillGamepadEventData(t,JSEvents.lastGamepadState[e]),0):-7}function registerBeforeUnloadEventCallback(e,t,_,r,n,o){var l={target:findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=getWasmTableEntry(r)(n,0,t);if(_&&(_=UTF8ToString(_)),_)return e.preventDefault(),e.returnValue=_,_},useCapture:_};JSEvents.registerOrRemoveHandler(l)}function _emscripten_set_beforeunload_callback_on_thread(e,t,_){return"undefined"==typeof onbeforeunload?-1:1!==_?-5:(registerBeforeUnloadEventCallback(2,e,!0,t,28,"beforeunload"),0)}function fillBatteryEventData(e,t){HEAPF64[e>>3]=t.chargingTime,HEAPF64[e+8>>3]=t.dischargingTime,HEAPF64[e+16>>3]=t.level,HEAP32[e+24>>2]=t.charging}function battery(){return navigator.battery||navigator.mozBattery||navigator.webkitBattery}function registerBatteryEventCallback(e,t,_,r,n,o,l){JSEvents.batteryEvent||(JSEvents.batteryEvent=_malloc(32));var i={target:findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){var _=JSEvents.batteryEvent;fillBatteryEventData(_,battery()),getWasmTableEntry(r)(n,_,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_batterychargingchange_callback_on_thread(e,t,_){return battery()?(registerBatteryEventCallback(battery(),e,!0,t,29,"chargingchange",_),0):-1}function _emscripten_set_batterylevelchange_callback_on_thread(e,t,_){return battery()?(registerBatteryEventCallback(battery(),e,!0,t,30,"levelchange",_),0):-1}function _emscripten_get_battery_status(e){return battery()?(fillBatteryEventData(e,battery()),0):-1}function _emscripten_set_element_css_size(e,t,_){return(e=findEventTarget(e))?(e.style.width=t+"px",e.style.height=_+"px",0):-4}function _emscripten_get_element_css_size(e,t,_){if(!(e=findEventTarget(e)))return-4;var r=getBoundingClientRect(e);return HEAPF64[t>>3]=r.width,HEAPF64[_>>3]=r.height,0}function _emscripten_html5_remove_all_event_listeners(){JSEvents.removeAllEventListeners()}function _emscripten_request_animation_frame(e,t){return requestAnimationFrame((function(_){getWasmTableEntry(e)(_,t)}))}function _emscripten_cancel_animation_frame(e){cancelAnimationFrame(e)}function _emscripten_request_animation_frame_loop(e,t){return requestAnimationFrame((function _(r){getWasmTableEntry(e)(r,t)&&requestAnimationFrame(_)}))}function _emscripten_performance_now(){return performance.now()}function _emscripten_get_device_pixel_ratio(){return"number"==typeof devicePixelRatio&&devicePixelRatio||1}function checkWasiClock(e){return 0==e||1==e||2==e||3==e}function _clock_time_get(e,t,_){if(!checkWasiClock(e))return 28;var r;if(0===e)r=Date.now();else{if(!nowIsMonotonic)return 52;r=_emscripten_get_now()}var n=Math.round(1e3*r*1e3);return HEAP32[_>>2]=n>>>0,HEAP32[_+4>>2]=n/Math.pow(2,32)>>>0,0}function _clock_res_get(e,t){if(!checkWasiClock(e))return 28;var _;if(0===e)_=1e6;else{if(!nowIsMonotonic)return 52;_=_emscripten_get_now_res()}return HEAP32[t>>2]=_>>>0,HEAP32[t+4>>2]=_/Math.pow(2,32)>>>0,0}function __dlsym_catchup_js(e,t){var _=LDSO.loadedLibsByHandle[e].module,r=_[Object.keys(_)[t]];return addFunction(r,r.sig)}function createDyncallWrapper(e){var t=[];t.push([0,97,115,109,1,0,0,0]);var _=[3];generateFuncType([e[0].replace("j","i"),"i",e.slice(1).replace(/j/g,"ii")].join(""),_),generateFuncType(e,_),generateFuncType("vi",_);var r=[1];uleb128Encode(_.length,r),r.push.apply(r,_),t.push(r);t.push([2,15,2,1,101,1,116,1,112,0,0,1,101,1,114,0,2]);t.push([3,2,1,0]);t.push([7,5,1,1,102,0,1]);var n=[];function o(e){n.push(32),uleb128Encode(e,n)}"j"===e[0]?n=[1,1,126]:n.push(0);for(var l=1,i=1;i{setImmediateWrapped.mapping[t]=void 0,e()})),t}function clearImmediateWrapped(e){clearImmediate(setImmediateWrapped.mapping[e]),setImmediateWrapped.mapping[e]=void 0}function polyfillSetImmediate(){}function _emscripten_set_immediate(e,t){return polyfillSetImmediate(),emSetImmediate((function(){callUserCallback((function(){getWasmTableEntry(e)(t)}))}))}function _emscripten_clear_immediate(e){emClearImmediate(e)}function _emscripten_set_immediate_loop(e,t){polyfillSetImmediate(),emSetImmediate((function _(){callUserCallback((function(){getWasmTableEntry(e)(t)&&emSetImmediate(_)}))}))}function _emscripten_set_timeout(e,t,_){return safeSetTimeout((()=>getWasmTableEntry(e)(_)),t)}function _emscripten_clear_timeout(e){clearTimeout(e)}function _emscripten_set_timeout_loop(e,t,_){return setTimeout((function r(){var n=performance.now(),o=n+t;callUserCallback((function(){getWasmTableEntry(e)(n,_)&&setTimeout(r,o-performance.now())}))}),0)}function _emscripten_set_interval(e,t,_){return setInterval((function(){callUserCallback((function(){getWasmTableEntry(e)(_)}))}),t)}function _emscripten_clear_interval(e){clearInterval(e)}function makePromiseCallback(e,t){return _=>{var r=stackSave(),n=stackAlloc(POINTER_SIZE);HEAPU32[n>>2]=0;try{var o=getWasmTableEntry(e)(n,t,_),l=HEAPU32[n>>2]}catch(e){if("number"!=typeof e)throw 0;throw e}finally{stackRestore(r)}switch(o){case 0:return l;case 1:return getPromise(l);case 2:var i=getPromise(l);return _emscripten_promise_destroy(l),i;case 3:throw l}}}function _emscripten_promise_then(e,t,_,r){var n=getPromise(e);return promiseMap.allocate({promise:n.then(makePromiseCallback(t,r),makePromiseCallback(_,r))})}function _emscripten_promise_all(e,t,_){for(var r=[],n=0;n<_;n++){var o=HEAP32[e+4*n>>2];r[n]=getPromise(o)}o=promiseMap.allocate({promise:Promise.all(r).then((e=>{if(t)for(var r=0;r<_;r++){var n=e[r];HEAPU32[t+4*r>>2]=n}return t}))});return o}function _llvm_eh_typeid_for(e){return e}function ___cxa_get_exception_ptr(e){return new ExceptionInfo(e).get_exception_ptr()}function ___cxa_call_unexpected(e){throw err("Unexpected exception thrown, this is not properly supported - aborting"),ABORT=!0,e}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(Browser.mainLoop.running||(Browser.mainLoop.running=!0),0==e)Browser.mainLoop.scheduler=function(){var e=0|Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now());setTimeout(Browser.mainLoop.runner,e)},Browser.mainLoop.method="timeout";else if(1==e)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(2==e){if("undefined"==typeof setImmediate){var _=[],r="setimmediate";addEventListener("message",(e=>{e.data!==r&&e.data.target!==r||(e.stopPropagation(),_.shift()())}),!0),setImmediate=function(e){_.push(e),ENVIRONMENT_IS_WORKER?(void 0===Module.setImmediates&&(Module.setImmediates=[]),Module.setImmediates.push(e),postMessage({target:r})):postMessage(r,"*")}}Browser.mainLoop.scheduler=function(){setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function setMainLoop(e,t,_,r,n){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=e,Browser.mainLoop.arg=r;var o=Browser.mainLoop.currentlyRunningMainloop;function l(){return!(o0){var t=Date.now(),_=Browser.mainLoop.queue.shift();if(_.func(_.arg),Browser.mainLoop.remainingBlockers){var r=Browser.mainLoop.remainingBlockers,n=r%1==0?r-1:Math.floor(r);_.counted?Browser.mainLoop.remainingBlockers=n:(n+=.5,Browser.mainLoop.remainingBlockers=(8*r+n)/9)}if(out('main loop blocker "'+_.name+'" took '+(Date.now()-t)+" ms"),Browser.mainLoop.updateStatus(),!l())return;setTimeout(Browser.mainLoop.runner,0)}else l()&&(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,1==Browser.mainLoop.timingMode&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0?Browser.mainLoop.scheduler():(0==Browser.mainLoop.timingMode&&(Browser.mainLoop.tickStartTime=_emscripten_get_now()),Browser.mainLoop.runIter(e),l()&&("object"==typeof SDL&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())))},n||(t&&t>0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),_)throw"unwind"}Module.restoreOldWindowedStyle=restoreOldWindowedStyle,Module.softFullscreenResizeWebGLRenderTarget=softFullscreenResizeWebGLRenderTarget,Module.doRequestFullscreen=doRequestFullscreen,Module._emscripten_request_fullscreen=_emscripten_request_fullscreen,_emscripten_request_fullscreen.sig="iii",Module._emscripten_request_fullscreen_strategy=_emscripten_request_fullscreen_strategy,_emscripten_request_fullscreen_strategy.sig="iiii",Module._emscripten_enter_soft_fullscreen=_emscripten_enter_soft_fullscreen,_emscripten_enter_soft_fullscreen.sig="iii",Module._emscripten_exit_soft_fullscreen=_emscripten_exit_soft_fullscreen,_emscripten_exit_soft_fullscreen.sig="i",Module._emscripten_exit_fullscreen=_emscripten_exit_fullscreen,_emscripten_exit_fullscreen.sig="i",Module.fillPointerlockChangeEventData=fillPointerlockChangeEventData,Module.registerPointerlockChangeEventCallback=registerPointerlockChangeEventCallback,Module._emscripten_set_pointerlockchange_callback_on_thread=_emscripten_set_pointerlockchange_callback_on_thread,_emscripten_set_pointerlockchange_callback_on_thread.sig="iiiiii",Module.registerPointerlockErrorEventCallback=registerPointerlockErrorEventCallback,Module._emscripten_set_pointerlockerror_callback_on_thread=_emscripten_set_pointerlockerror_callback_on_thread,_emscripten_set_pointerlockerror_callback_on_thread.sig="iiiiii",Module._emscripten_get_pointerlock_status=_emscripten_get_pointerlock_status,_emscripten_get_pointerlock_status.sig="ii",Module.requestPointerLock=requestPointerLock,Module._emscripten_request_pointerlock=_emscripten_request_pointerlock,_emscripten_request_pointerlock.sig="iii",Module._emscripten_exit_pointerlock=_emscripten_exit_pointerlock,_emscripten_exit_pointerlock.sig="i",Module._emscripten_vibrate=_emscripten_vibrate,_emscripten_vibrate.sig="ii",Module._emscripten_vibrate_pattern=_emscripten_vibrate_pattern,_emscripten_vibrate_pattern.sig="iii",Module.fillVisibilityChangeEventData=fillVisibilityChangeEventData,Module.registerVisibilityChangeEventCallback=registerVisibilityChangeEventCallback,Module._emscripten_set_visibilitychange_callback_on_thread=_emscripten_set_visibilitychange_callback_on_thread,_emscripten_set_visibilitychange_callback_on_thread.sig="iiiii",Module._emscripten_get_visibility_status=_emscripten_get_visibility_status,_emscripten_get_visibility_status.sig="ii",Module.registerTouchEventCallback=registerTouchEventCallback,Module._emscripten_set_touchstart_callback_on_thread=_emscripten_set_touchstart_callback_on_thread,_emscripten_set_touchstart_callback_on_thread.sig="iiiiii",Module._emscripten_set_touchend_callback_on_thread=_emscripten_set_touchend_callback_on_thread,_emscripten_set_touchend_callback_on_thread.sig="iiiiii",Module._emscripten_set_touchmove_callback_on_thread=_emscripten_set_touchmove_callback_on_thread,_emscripten_set_touchmove_callback_on_thread.sig="iiiiii",Module._emscripten_set_touchcancel_callback_on_thread=_emscripten_set_touchcancel_callback_on_thread,_emscripten_set_touchcancel_callback_on_thread.sig="iiiiii",Module.fillGamepadEventData=fillGamepadEventData,Module.registerGamepadEventCallback=registerGamepadEventCallback,Module._emscripten_set_gamepadconnected_callback_on_thread=_emscripten_set_gamepadconnected_callback_on_thread,_emscripten_set_gamepadconnected_callback_on_thread.sig="iiiii",Module._emscripten_set_gamepaddisconnected_callback_on_thread=_emscripten_set_gamepaddisconnected_callback_on_thread,_emscripten_set_gamepaddisconnected_callback_on_thread.sig="iiiii",Module._emscripten_sample_gamepad_data=_emscripten_sample_gamepad_data,_emscripten_sample_gamepad_data.sig="i",Module._emscripten_get_num_gamepads=_emscripten_get_num_gamepads,_emscripten_get_num_gamepads.sig="i",Module._emscripten_get_gamepad_status=_emscripten_get_gamepad_status,_emscripten_get_gamepad_status.sig="iii",Module.registerBeforeUnloadEventCallback=registerBeforeUnloadEventCallback,Module._emscripten_set_beforeunload_callback_on_thread=_emscripten_set_beforeunload_callback_on_thread,_emscripten_set_beforeunload_callback_on_thread.sig="iii",Module.fillBatteryEventData=fillBatteryEventData,Module.battery=battery,Module.registerBatteryEventCallback=registerBatteryEventCallback,Module._emscripten_set_batterychargingchange_callback_on_thread=_emscripten_set_batterychargingchange_callback_on_thread,_emscripten_set_batterychargingchange_callback_on_thread.sig="iii",Module._emscripten_set_batterylevelchange_callback_on_thread=_emscripten_set_batterylevelchange_callback_on_thread,_emscripten_set_batterylevelchange_callback_on_thread.sig="iii",Module._emscripten_get_battery_status=_emscripten_get_battery_status,_emscripten_get_battery_status.sig="ii",Module._emscripten_set_element_css_size=_emscripten_set_element_css_size,_emscripten_set_element_css_size.sig="iiii",Module._emscripten_get_element_css_size=_emscripten_get_element_css_size,_emscripten_get_element_css_size.sig="iiii",Module._emscripten_html5_remove_all_event_listeners=_emscripten_html5_remove_all_event_listeners,_emscripten_html5_remove_all_event_listeners.sig="v",Module._emscripten_request_animation_frame=_emscripten_request_animation_frame,Module._emscripten_cancel_animation_frame=_emscripten_cancel_animation_frame,Module._emscripten_request_animation_frame_loop=_emscripten_request_animation_frame_loop,Module._emscripten_performance_now=_emscripten_performance_now,Module._emscripten_get_device_pixel_ratio=_emscripten_get_device_pixel_ratio,_emscripten_get_device_pixel_ratio.sig="d",Module.checkWasiClock=checkWasiClock,Module._clock_time_get=_clock_time_get,_clock_time_get.sig="iijp",Module._clock_res_get=_clock_res_get,_clock_res_get.sig="iip",Module.__dlsym_catchup_js=__dlsym_catchup_js,__dlsym_catchup_js.sig="ppp",Module.createDyncallWrapper=createDyncallWrapper,Module._emscripten_unwind_to_js_event_loop=_emscripten_unwind_to_js_event_loop,Module.setImmediateWrapped=setImmediateWrapped,Module.clearImmediateWrapped=clearImmediateWrapped,Module.polyfillSetImmediate=polyfillSetImmediate,Module._emscripten_set_immediate=_emscripten_set_immediate,_emscripten_set_immediate.sig="ipp",Module._emscripten_clear_immediate=_emscripten_clear_immediate,_emscripten_clear_immediate.sig="vi",Module._emscripten_set_immediate_loop=_emscripten_set_immediate_loop,_emscripten_set_immediate_loop.sig="ipp",Module._emscripten_set_timeout=_emscripten_set_timeout,_emscripten_set_timeout.sig="ipdp",Module._emscripten_clear_timeout=_emscripten_clear_timeout,_emscripten_clear_timeout.sig="vi",Module._emscripten_set_timeout_loop=_emscripten_set_timeout_loop,_emscripten_set_timeout_loop.sig="vpdp",Module._emscripten_set_interval=_emscripten_set_interval,_emscripten_set_interval.sig="ipdp",Module._emscripten_clear_interval=_emscripten_clear_interval,_emscripten_clear_interval.sig="vi",Module.makePromiseCallback=makePromiseCallback,Module._emscripten_promise_then=_emscripten_promise_then,_emscripten_promise_then.sig="ppppp",Module._emscripten_promise_all=_emscripten_promise_all,_emscripten_promise_all.sig="pppp",Module._llvm_eh_typeid_for=_llvm_eh_typeid_for,_llvm_eh_typeid_for.sig="ip",Module.___cxa_get_exception_ptr=___cxa_get_exception_ptr,___cxa_get_exception_ptr.sig="pp",Module.___cxa_call_unexpected=___cxa_call_unexpected,Module._emscripten_set_main_loop_timing=_emscripten_set_main_loop_timing,_emscripten_set_main_loop_timing.sig="iii",Module.setMainLoop=setMainLoop;var Browser={mainLoop:{running:!1,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,_=Browser.mainLoop.func;Browser.mainLoop.func=null,setMainLoop(_,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=Browser.mainLoop.remainingBlockers,_=Browser.mainLoop.expectedBlockers;t?t<_?Module.setStatus(e+" ("+(_-t)+"/"+_+")"):Module.setStatus(e):Module.setStatus("")}},runIter:function(e){if(!ABORT){if(Module.preMainLoop)if(!1===Module.preMainLoop())return;callUserCallback(e),Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),!Browser.initted){Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch(e){Browser.hasBlobConstructor=!1,err("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder="undefined"!=typeof MozBlobBuilder?MozBlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:Browser.hasBlobConstructor?null:err("warning: no BlobBuilder"),Browser.URLObject="undefined"!=typeof window?window.URL?window.URL:window.webkitURL:void 0,Module.noImageDecoding||void 0!==Browser.URLObject||(err("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var e={canHandle:function(e){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(e)},handle:function(e,t,_,r){var n=null;if(Browser.hasBlobConstructor)try{(n=new Blob([e],{type:Browser.getMimetype(t)})).size!==e.length&&(n=new Blob([new Uint8Array(e).buffer],{type:Browser.getMimetype(t)}))}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}if(!n){var o=new Browser.BlobBuilder;o.append(new Uint8Array(e).buffer),n=o.getBlob()}var l=Browser.URLObject.createObjectURL(n),i=new Image;i.onload=()=>{assert(i.complete,"Image "+t+" could not be decoded");var r=document.createElement("canvas");r.width=i.width,r.height=i.height,r.getContext("2d").drawImage(i,0,0),preloadedImages[t]=r,Browser.URLObject.revokeObjectURL(l),_&&_(e)},i.onerror=e=>{out("Image "+l+" could not be decoded"),r&&r()},i.src=l}};Module.preloadPlugins.push(e);var t={canHandle:function(e){return!Module.noAudioDecoding&&e.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},handle:function(e,t,_,r){var n=!1;function o(r){n||(n=!0,preloadedAudios[t]=r,_&&_(e))}function l(){n||(n=!0,preloadedAudios[t]=new Audio,r&&r())}if(!Browser.hasBlobConstructor)return l();try{var i=new Blob([e],{type:Browser.getMimetype(t)})}catch(e){return l()}var a=Browser.URLObject.createObjectURL(i),u=new Audio;u.addEventListener("canplaythrough",(()=>o(u)),!1),u.onerror=function(_){n||(err("warning: browser could not fully decode audio "+t+", trying slower base64 approach"),u.src="data:audio/x-"+t.substr(-3)+";base64,"+function(e){for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_="",r=0,n=0,o=0;o=6;){var l=r>>n-6&63;n-=6,_+=t[l]}return 2==n?(_+=t[(3&r)<<4],_+="=="):4==n&&(_+=t[(15&r)<<2],_+="="),_}(e),o(u))},u.src=a,safeSetTimeout((function(){o(u)}),1e4)}};Module.preloadPlugins.push(t);var _={asyncWasmLoadPromise:new Promise((function(e,t){return e()})),canHandle:function(e){return!Module.noWasmDecoding&&e.endsWith(".so")},handle:function(e,t,r,n){_.asyncWasmLoadPromise=_.asyncWasmLoadPromise.then((()=>loadWebAssemblyModule(e,{loadAsync:!0,nodelete:!0}))).then((e=>{preloadedWasm[t]=e,r()}),(e=>{console.warn("Couldn't instantiate wasm: "+t+" '"+e+"'"),n()}))}};Module.preloadPlugins.push(_);var r=Module.canvas;r&&(r.requestPointerLock=r.requestPointerLock||r.mozRequestPointerLock||r.webkitRequestPointerLock||r.msRequestPointerLock||(()=>{}),r.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||(()=>{}),r.exitPointerLock=r.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",n,!1),document.addEventListener("mozpointerlockchange",n,!1),document.addEventListener("webkitpointerlockchange",n,!1),document.addEventListener("mspointerlockchange",n,!1),Module.elementPointerLock&&r.addEventListener("click",(e=>{!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),e.preventDefault())}),!1))}function n(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}},handledByPreloadPlugin:function(e,t,_,r){Browser.init();var n=!1;return Module.preloadPlugins.forEach((function(o){n||o.canHandle(t)&&(o.handle(e,t,_,r),n=!0)})),n},createContext:function(e,t,_,r){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var n,o;if(t){var l={antialias:!1,alpha:!1,majorVersion:1};if(r)for(var i in r)l[i]=r[i];void 0!==GL&&(o=GL.createContext(e,l))&&(n=GL.getContext(o).GLctx)}else n=e.getContext("2d");return n?(_&&(t||assert(void 0===GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=n,t&&GL.makeContextCurrent(o),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach((function(e){e()})),Browser.init()),n):null},destroyContext:function(e,t,_){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t){Browser.lockPointer=e,Browser.resizeCanvas=t,void 0===Browser.lockPointer&&(Browser.lockPointer=!0),void 0===Browser.resizeCanvas&&(Browser.resizeCanvas=!1);var _=Module.canvas;function r(){Browser.isFullscreen=!1;var e=_.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===e?(_.exitFullscreen=Browser.exitFullscreen,Browser.lockPointer&&_.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas?Browser.setFullscreenCanvasSize():Browser.updateCanvasDimensions(_)):(e.parentNode.insertBefore(_,e),e.parentNode.removeChild(e),Browser.resizeCanvas?Browser.setWindowedCanvasSize():Browser.updateCanvasDimensions(_)),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",r,!1),document.addEventListener("mozfullscreenchange",r,!1),document.addEventListener("webkitfullscreenchange",r,!1),document.addEventListener("MSFullscreenChange",r,!1));var n=document.createElement("div");_.parentNode.insertBefore(n,_),n.appendChild(_),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?()=>n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):null)||(n.webkitRequestFullScreen?()=>n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):null),n.requestFullscreen()},exitFullscreen:function(){return!!Browser.isFullscreen&&((document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){}).apply(document,[]),!0)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(0===Browser.nextRAF)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var _=Math.max(Browser.nextRAF-t,0);setTimeout(e,_)},requestAnimationFrame:function(e){"function"!=typeof requestAnimationFrame?(0,Browser.fakeRequestAnimationFrame)(e):requestAnimationFrame(e)},safeSetTimeout:function(e,t){return safeSetTimeout(e,t)},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame((function(){callUserCallback(e)}))},getMimetype:function(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case"DOMMouseScroll":t=e.detail/3;break;case"mousewheel":t=e.wheelDelta/120;break;case"wheel":switch(t=e.deltaY,e.deltaMode){case 0:t/=100;break;case 1:t/=3;break;case 2:t*=80;break;default:throw"unrecognized mouse wheel delta mode: "+e.deltaMode}break;default:throw"unrecognized mouse wheel event: "+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)"mousemove"!=e.type&&"mozMovementX"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),"undefined"!=typeof SDL?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),_=Module.canvas.width,r=Module.canvas.height,n=void 0!==window.scrollX?window.scrollX:window.pageXOffset,o=void 0!==window.scrollY?window.scrollY:window.pageYOffset;if("touchstart"===e.type||"touchend"===e.type||"touchmove"===e.type){var l=e.touch;if(void 0===l)return;var i=l.pageX-(n+t.left),a=l.pageY-(o+t.top),u={x:i*=_/t.width,y:a*=r/t.height};if("touchstart"===e.type)Browser.lastTouches[l.identifier]=u,Browser.touches[l.identifier]=u;else if("touchend"===e.type||"touchmove"===e.type){var s=Browser.touches[l.identifier];s||(s=u),Browser.lastTouches[l.identifier]=s,Browser.touches[l.identifier]=u}return}var c=e.pageX-(n+t.left),d=e.pageY-(o+t.top);c*=_/t.width,d*=r/t.height,Browser.mouseMovementX=c-Browser.mouseX,Browser.mouseMovementY=d-Browser.mouseY,Browser.mouseX=c,Browser.mouseY=d}},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach((function(t){t(e.width,e.height)}))},setCanvasSize:function(e,t,_){var r=Module.canvas;Browser.updateCanvasDimensions(r,e,t),_||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if("undefined"!=typeof SDL){var e=HEAPU32[SDL.screen>>2];e|=8388608,HEAP32[SDL.screen>>2]=e}Browser.updateCanvasDimensions(Module.canvas),Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if("undefined"!=typeof SDL){var e=HEAPU32[SDL.screen>>2];e&=-8388609,HEAP32[SDL.screen>>2]=e}Browser.updateCanvasDimensions(Module.canvas),Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,_){t&&_?(e.widthNative=t,e.heightNative=_):(t=e.widthNative,_=e.heightNative);var r=t,n=_;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(r/n{t&&getWasmTableEntry(t)(e)}),(()=>{_&&getWasmTableEntry(_)(e)}),!0),0):-1}function _emscripten_run_preload_plugins_data(e,t,_,r,n,o){var l=UTF8ToString(_);Browser.asyncPrepareDataCounter||(Browser.asyncPrepareDataCounter=0);var i="prepare_data_"+Browser.asyncPrepareDataCounter+++"."+l,a=lengthBytesUTF8(i),u=_malloc(a+1);stringToUTF8(i,u,a+1),FS.createPreloadedFile("/",i,HEAPU8.subarray(e,e+t),!0,!0,(()=>{n&&getWasmTableEntry(n)(r,u)}),(()=>{o&&getWasmTableEntry(o)(r)}),!0)}function _emscripten_async_run_script(e,t){safeSetTimeout((function(){_emscripten_run_script(e)}),t)}function _emscripten_async_load_script(e,t,_){t=getWasmTableEntry(t),_=getWasmTableEntry(_),assert(0===runDependencies,"async_load_script must be run when no other dependencies are active");var r=document.createElement("script");r.onload=function(){t&&(runDependencies>0?dependenciesFulfilled=t:t())},r.onerror=()=>{_&&_()},r.src=UTF8ToString(e),document.body.appendChild(r)}function _emscripten_get_main_loop_timing(e,t){e&&(HEAP32[e>>2]=Browser.mainLoop.timingMode),t&&(HEAP32[t>>2]=Browser.mainLoop.timingValue)}function _emscripten_set_main_loop(e,t,_){setMainLoop(getWasmTableEntry(e),t,_)}function _emscripten_set_main_loop_arg(e,t,_,r){setMainLoop((()=>getWasmTableEntry(e)(t)),_,r,t)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause(),Browser.mainLoop.func=null}function _emscripten_pause_main_loop(){Browser.mainLoop.pause()}function _emscripten_resume_main_loop(){Browser.mainLoop.resume()}function __emscripten_push_main_loop_blocker(e,t,_){Browser.mainLoop.queue.push({func:function(){getWasmTableEntry(e)(t)},name:UTF8ToString(_),counted:!0}),Browser.mainLoop.updateStatus()}function __emscripten_push_uncounted_main_loop_blocker(e,t,_){Browser.mainLoop.queue.push({func:function(){getWasmTableEntry(e)(t)},name:UTF8ToString(_),counted:!1}),Browser.mainLoop.updateStatus()}function _emscripten_set_main_loop_expected_blockers(e){Browser.mainLoop.expectedBlockers=e,Browser.mainLoop.remainingBlockers=e,Browser.mainLoop.updateStatus()}function _emscripten_async_call(e,t,_){function r(){getWasmTableEntry(e)(t)}_>=0||ENVIRONMENT_IS_NODE?safeSetTimeout(r,_):Browser.safeRequestAnimationFrame(r)}function _emscripten_get_window_title(){return _emscripten_get_window_title.buffer||(_emscripten_get_window_title.buffer=_malloc(256)),stringToUTF8(document.title,_emscripten_get_window_title.buffer,256),_emscripten_get_window_title.buffer}function _emscripten_set_window_title(e){setWindowTitle(UTF8ToString(e))}function _emscripten_get_screen_size(e,t){HEAP32[e>>2]=screen.width,HEAP32[t>>2]=screen.height}function _emscripten_hide_mouse(){for(var e=document.styleSheets[0],t=e.cssRules,_=0;_>2]=r.width,HEAP32[t>>2]=r.height,HEAP32[_>>2]=Browser.isFullscreen?1:0}function _emscripten_create_worker(e){e=UTF8ToString(e);var t=Browser.workers.length,_={worker:new Worker(e),callbacks:[],awaited:0,buffer:0,bufferSize:0};return _.worker.onmessage=function(e){if(!ABORT){var _=Browser.workers[t];if(_){var r=e.data.callbackId,n=_.callbacks[r];if(n){e.data.finalResponse&&(_.awaited--,_.callbacks[r]=null);var o=e.data.data;o?(o.byteLength||(o=new Uint8Array(o)),(!_.buffer||_.bufferSize>2]=r.width,HEAP32[_>>2]=r.height,o}return 0}function _emscripten_get_preloaded_image_data_from_FILE(e,t,_){var r=_fileno(e),n=FS.getStream(r);return n?_emscripten_get_preloaded_image_data(n.path,t,_):0}Module.Browser=Browser,Module._emscripten_run_preload_plugins=_emscripten_run_preload_plugins,_emscripten_run_preload_plugins.sig="iiii",Module._emscripten_run_preload_plugins_data=_emscripten_run_preload_plugins_data,_emscripten_run_preload_plugins_data.sig="viiiiii",Module._emscripten_async_run_script=_emscripten_async_run_script,Module._emscripten_async_load_script=_emscripten_async_load_script,Module._emscripten_get_main_loop_timing=_emscripten_get_main_loop_timing,_emscripten_get_main_loop_timing.sig="vii",Module._emscripten_set_main_loop=_emscripten_set_main_loop,_emscripten_set_main_loop.sig="viii",Module._emscripten_set_main_loop_arg=_emscripten_set_main_loop_arg,_emscripten_set_main_loop_arg.sig="viiii",Module._emscripten_cancel_main_loop=_emscripten_cancel_main_loop,_emscripten_cancel_main_loop.sig="v",Module._emscripten_pause_main_loop=_emscripten_pause_main_loop,_emscripten_pause_main_loop.sig="v",Module._emscripten_resume_main_loop=_emscripten_resume_main_loop,_emscripten_resume_main_loop.sig="v",Module.__emscripten_push_main_loop_blocker=__emscripten_push_main_loop_blocker,Module.__emscripten_push_uncounted_main_loop_blocker=__emscripten_push_uncounted_main_loop_blocker,Module._emscripten_set_main_loop_expected_blockers=_emscripten_set_main_loop_expected_blockers,_emscripten_set_main_loop_expected_blockers.sig="vi",Module._emscripten_async_call=_emscripten_async_call,_emscripten_async_call.sig="vppi",Module._emscripten_get_window_title=_emscripten_get_window_title,_emscripten_get_window_title.sig="iv",Module._emscripten_set_window_title=_emscripten_set_window_title,_emscripten_set_window_title.sig="vi",Module._emscripten_get_screen_size=_emscripten_get_screen_size,_emscripten_get_screen_size.sig="vii",Module._emscripten_hide_mouse=_emscripten_hide_mouse,_emscripten_hide_mouse.sig="v",Module._emscripten_set_canvas_size=_emscripten_set_canvas_size,_emscripten_set_canvas_size.sig="vii",Module._emscripten_get_canvas_size=_emscripten_get_canvas_size,_emscripten_get_canvas_size.sig="viii",Module._emscripten_create_worker=_emscripten_create_worker,_emscripten_create_worker.sig="ii",Module._emscripten_destroy_worker=_emscripten_destroy_worker,_emscripten_destroy_worker.sig="vi",Module._emscripten_call_worker=_emscripten_call_worker,_emscripten_call_worker.sig="viiiiii",Module._emscripten_get_worker_queue_size=_emscripten_get_worker_queue_size,_emscripten_get_worker_queue_size.sig="i",Module._emscripten_get_preloaded_image_data=_emscripten_get_preloaded_image_data,_emscripten_get_preloaded_image_data.sig="iiii",Module._emscripten_get_preloaded_image_data_from_FILE=_emscripten_get_preloaded_image_data_from_FILE,_emscripten_get_preloaded_image_data_from_FILE.sig="iiii";var wget={wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var e=wget.nextWgetRequestHandle;return wget.nextWgetRequestHandle++,e}};function _emscripten_async_wget(e,t,_,r){var n=UTF8ToString(e),o=UTF8ToString(t);function l(e){e&&callUserCallback((function(){withStackSave((function(){getWasmTableEntry(e)(allocateUTF8OnStack(o))}))}))}o=PATH_FS.resolve(o);var i=PATH.dirname(o);FS.createPreloadedFile(i,PATH.basename(o),n,!0,!0,(function(){l(_)}),(function(){l(r)}),!1,!1,(function(){try{FS.unlink(o)}catch(e){}FS.mkdirTree(i)}))}function _emscripten_async_wget_data(e,t,_,r){asyncLoad(UTF8ToString(e),(function(e){callUserCallback((function(){var r=_malloc(e.length);HEAPU8.set(e,r),getWasmTableEntry(_)(t,r,e.length),_free(r)}))}),(function(){r&&callUserCallback((function(){getWasmTableEntry(r)(t)}))}),!0)}function _emscripten_async_wget2(e,t,_,r,n,o,l,i){var a=UTF8ToString(e),u=UTF8ToString(t);u=PATH_FS.resolve(u);var s=UTF8ToString(_),c=UTF8ToString(r),d=u.lastIndexOf("/"),p=new XMLHttpRequest;p.open(s,a,!0),p.responseType="arraybuffer";var y=wget.getNextWgetRequestHandle(),m=PATH.dirname(u);return p.onload=function(e){if(p.status>=200&&p.status<300){try{FS.unlink(u)}catch(e){}FS.mkdirTree(m),FS.createDataFile(u.substr(0,d),u.substr(d+1),new Uint8Array(p.response),!0,!0,!1),o&&withStackSave((function(){getWasmTableEntry(o)(y,n,allocateUTF8OnStack(u))}))}else l&&getWasmTableEntry(l)(y,n,p.status);delete wget.wgetRequests[y]},p.onerror=function(e){l&&getWasmTableEntry(l)(y,n,p.status),delete wget.wgetRequests[y]},p.onprogress=function(e){if(e.lengthComputable||void 0===e.lengthComputable&&0!=e.total){var t=e.loaded/e.total*100;i&&getWasmTableEntry(i)(y,n,t)}},p.onabort=function(e){delete wget.wgetRequests[y]},"POST"==s?(p.setRequestHeader("Content-type","application/x-www-form-urlencoded"),p.send(c)):p.send(null),wget.wgetRequests[y]=p,y}function _emscripten_async_wget2_data(e,t,_,r,n,o,l,i){var a=UTF8ToString(e),u=UTF8ToString(t),s=UTF8ToString(_),c=new XMLHttpRequest;c.open(u,a,!0),c.responseType="arraybuffer";var d=wget.getNextWgetRequestHandle();function p(){if(l){var e=0;if(c.statusText){var t=lengthBytesUTF8(c.statusText)+1;e=stackAlloc(t),stringToUTF8(c.statusText,e,t)}getWasmTableEntry(l)(d,r,c.status,e)}}return c.onload=function(e){if(c.status>=200&&c.status<300||0===c.status&&"http"!=a.substr(0,4).toLowerCase()){var t=new Uint8Array(c.response),_=_malloc(t.length);HEAPU8.set(t,_),o&&getWasmTableEntry(o)(d,r,_,t.length),n&&_free(_)}else p();delete wget.wgetRequests[d]},c.onerror=function(e){p(),delete wget.wgetRequests[d]},c.onprogress=function(e){i&&getWasmTableEntry(i)(d,r,e.loaded,e.lengthComputable||void 0===e.lengthComputable?e.total:0)},c.onabort=function(e){delete wget.wgetRequests[d]},"POST"==u?(c.setRequestHeader("Content-type","application/x-www-form-urlencoded"),c.send(s)):c.send(null),wget.wgetRequests[d]=c,d}function _emscripten_async_wget2_abort(e){var t=wget.wgetRequests[e];t&&t.abort()}function _setNetworkCallback(e,t,_){Module.websocket.on(e,_?function(r){try{"error"===e?withStackSave((function(){var e=allocateUTF8OnStack(r[2]);getWasmTableEntry(_)(r[0],r[1],e,t)})):getWasmTableEntry(_)(r,t)}catch(e){if(!(e instanceof ExitStatus))throw e&&"object"==typeof e&&e.stack&&err("exception thrown: "+[e,e.stack]),e}}:null)}function _emscripten_set_socket_error_callback(e,t){_setNetworkCallback("error",e,t)}function _emscripten_set_socket_open_callback(e,t){_setNetworkCallback("open",e,t)}function _emscripten_set_socket_listen_callback(e,t){_setNetworkCallback("listen",e,t)}function _emscripten_set_socket_connection_callback(e,t){_setNetworkCallback("connection",e,t)}function _emscripten_set_socket_message_callback(e,t){_setNetworkCallback("message",e,t)}function _emscripten_set_socket_close_callback(e,t){_setNetworkCallback("close",e,t)}Module.wget=wget,Module._emscripten_async_wget=_emscripten_async_wget,_emscripten_async_wget.sig="viiii",Module._emscripten_async_wget_data=_emscripten_async_wget_data,_emscripten_async_wget_data.sig="viiii",Module._emscripten_async_wget2=_emscripten_async_wget2,_emscripten_async_wget2.sig="iiiiiiiii",Module._emscripten_async_wget2_data=_emscripten_async_wget2_data,_emscripten_async_wget2_data.sig="iiiiiiiii",Module._emscripten_async_wget2_abort=_emscripten_async_wget2_abort,_emscripten_async_wget2_abort.sig="vi",Module._setNetworkCallback=_setNetworkCallback,Module._emscripten_set_socket_error_callback=_emscripten_set_socket_error_callback,Module._emscripten_set_socket_open_callback=_emscripten_set_socket_open_callback,Module._emscripten_set_socket_listen_callback=_emscripten_set_socket_listen_callback,Module._emscripten_set_socket_connection_callback=_emscripten_set_socket_connection_callback,Module._emscripten_set_socket_message_callback=_emscripten_set_socket_message_callback,Module._emscripten_set_socket_close_callback=_emscripten_set_socket_close_callback;var ALLOC_NORMAL=0;Module.ALLOC_NORMAL=ALLOC_NORMAL;var ALLOC_STACK=1;function allocate(e,t){var _;return _=t==ALLOC_STACK?stackAlloc(e.length):_malloc(e.length),e.subarray||e.slice||(e=new Uint8Array(e)),HEAPU8.set(e,_),_}function _emscripten_is_main_browser_thread(){return!ENVIRONMENT_IS_WORKER}Module.ALLOC_STACK=ALLOC_STACK,Module.allocate=allocate,Module._emscripten_is_main_browser_thread=_emscripten_is_main_browser_thread;var WS={sockets:[null],socketEvent:null};function _emscripten_websocket_get_ready_state(e,t){var _=WS.sockets[e];return _?(HEAP16[t>>1]=_.readyState,0):-3}function _emscripten_websocket_get_buffered_amount(e,t){var _=WS.sockets[e];return _?(tempI64=[_.bufferedAmount>>>0,(tempDouble=_.bufferedAmount,+Math.abs(tempDouble)>=1?tempDouble>0?(0|Math.min(+Math.floor(tempDouble/4294967296),4294967295))>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1],0):-3}function _emscripten_websocket_get_extensions(e,t,_){var r=WS.sockets[e];return r?t?(stringToUTF8(r.extensions,t,_),0):-5:-3}function _emscripten_websocket_get_extensions_length(e,t){var _=WS.sockets[e];return _?t?(HEAP32[t>>2]=lengthBytesUTF8(_.extensions)+1,0):-5:-3}function _emscripten_websocket_get_protocol(e,t,_){var r=WS.sockets[e];return r?t?(stringToUTF8(r.protocol,t,_),0):-5:-3}function _emscripten_websocket_get_protocol_length(e,t){var _=WS.sockets[e];return _?t?(HEAP32[t>>2]=lengthBytesUTF8(_.protocol)+1,0):-5:-3}function _emscripten_websocket_get_url(e,t,_){var r=WS.sockets[e];return r?t?(stringToUTF8(r.url,t,_),0):-5:-3}function _emscripten_websocket_get_url_length(e,t){var _=WS.sockets[e];return _?t?(HEAP32[t>>2]=lengthBytesUTF8(_.url)+1,0):-5:-3}function _emscripten_websocket_set_onopen_callback_on_thread(e,t,_,r){WS.socketEvent||(WS.socketEvent=_malloc(1024));var n=WS.sockets[e];return n?(n.onopen=function(r){HEAPU32[WS.socketEvent>>2]=e,getWasmTableEntry(_)(0,WS.socketEvent,t)},0):-3}function _emscripten_websocket_set_onerror_callback_on_thread(e,t,_,r){WS.socketEvent||(WS.socketEvent=_malloc(1024));var n=WS.sockets[e];return n?(n.onerror=function(r){HEAPU32[WS.socketEvent>>2]=e,getWasmTableEntry(_)(0,WS.socketEvent,t)},0):-3}function _emscripten_websocket_set_onclose_callback_on_thread(e,t,_,r){WS.socketEvent||(WS.socketEvent=_malloc(1024));var n=WS.sockets[e];return n?(n.onclose=function(r){HEAPU32[WS.socketEvent>>2]=e,HEAPU32[WS.socketEvent+4>>2]=r.wasClean,HEAPU32[WS.socketEvent+8>>2]=r.code,stringToUTF8(r.reason,WS.socketEvent+10,512),getWasmTableEntry(_)(0,WS.socketEvent,t)},0):-3}function _emscripten_websocket_set_onmessage_callback_on_thread(e,t,_,r){WS.socketEvent||(WS.socketEvent=_malloc(1024));var n=WS.sockets[e];return n?(n.onmessage=function(r){if(HEAPU32[WS.socketEvent>>2]=e,"string"==typeof r.data){var n=lengthBytesUTF8(r.data)+1,o=_malloc(n);stringToUTF8(r.data,o,n),HEAPU32[WS.socketEvent+12>>2]=1}else{n=r.data.byteLength,o=_malloc(n);HEAP8.set(new Uint8Array(r.data),o),HEAPU32[WS.socketEvent+12>>2]=0}HEAPU32[WS.socketEvent+4>>2]=o,HEAPU32[WS.socketEvent+8>>2]=n,getWasmTableEntry(_)(0,WS.socketEvent,t),_free(o)},0):-3}function _emscripten_websocket_new(e){if("undefined"==typeof WebSocket)return-1;if(!e)return-5;var t=e>>2,_=UTF8ToString(HEAP32[t]),r=HEAP32[t+1],n=r?new WebSocket(_,UTF8ToString(r).split(",")):new WebSocket(_);n.binaryType="arraybuffer";var o=WS.sockets.length;return WS.sockets[o]=n,o}function _emscripten_websocket_send_utf8_text(e,t){var _=WS.sockets[e];if(!_)return-3;var r=UTF8ToString(t);return _.send(r),0}function _emscripten_websocket_send_binary(e,t,_){var r=WS.sockets[e];return r?(r.send(HEAPU8.subarray(t,t+_)),0):-3}function _emscripten_websocket_close(e,t,_){var r=WS.sockets[e];if(!r)return-3;_&&UTF8ToString(_);return _?r.close(t||void 0,UTF8ToString(_)):t?r.close(t):r.close(),0}function _emscripten_websocket_delete(e){var t=WS.sockets[e];return t?(t.onopen=t.onerror=t.onclose=t.onmessage=null,delete WS.sockets[e],0):-3}function _emscripten_websocket_is_supported(){return"undefined"!=typeof WebSocket}function _emscripten_websocket_deinitialize(){for(var e in WS.sockets){var t=WS.sockets[e];t&&(t.close(),_emscripten_websocket_delete(e))}WS.sockets=[]}function _emscripten_webgl_enable_ANGLE_instanced_arrays(e){return __webgl_enable_ANGLE_instanced_arrays(GL.contexts[e].GLctx)}function _emscripten_webgl_enable_OES_vertex_array_object(e){return __webgl_enable_OES_vertex_array_object(GL.contexts[e].GLctx)}function _emscripten_webgl_enable_WEBGL_draw_buffers(e){return __webgl_enable_WEBGL_draw_buffers(GL.contexts[e].GLctx)}function _emscripten_webgl_enable_WEBGL_multi_draw(e){return __webgl_enable_WEBGL_multi_draw(GL.contexts[e].GLctx)}function _glPixelStorei(e,t){3317==e&&(GL.unpackAlignment=t),GLctx.pixelStorei(e,t)}function _glGetString(e){var t=GL.stringCache[e];if(!t){switch(e){case 7939:var _=GLctx.getSupportedExtensions()||[];t=stringToNewUTF8((_=_.concat(_.map((function(e){return"GL_"+e})))).join(" "));break;case 7936:case 7937:case 37445:case 37446:var r=GLctx.getParameter(e);r||GL.recordError(1280),t=r&&stringToNewUTF8(r);break;case 7938:var n=GLctx.getParameter(7938);t=stringToNewUTF8(n="OpenGL ES 2.0 ("+n+")");break;case 35724:var o=GLctx.getParameter(35724),l=o.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==l&&(3==l[1].length&&(l[1]=l[1]+"0"),o="OpenGL ES GLSL ES "+l[1]+" ("+o+")"),t=stringToNewUTF8(o);break;default:GL.recordError(1280)}GL.stringCache[e]=t}return t}function _glGetIntegerv(e,t){emscriptenWebGLGet(e,t,0)}function _glGetFloatv(e,t){emscriptenWebGLGet(e,t,2)}function _glGetBooleanv(e,t){emscriptenWebGLGet(e,t,4)}function _glDeleteTextures(e,t){for(var _=0;_>2],n=GL.textures[r];n&&(GLctx.deleteTexture(n),n.name=0,GL.textures[r]=null)}}function _glCompressedTexImage2D(e,t,_,r,n,o,l,i){GLctx.compressedTexImage2D(e,t,_,r,n,o,i?HEAPU8.subarray(i,i+l):null)}function _glCompressedTexSubImage2D(e,t,_,r,n,o,l,i,a){GLctx.compressedTexSubImage2D(e,t,_,r,n,o,l,a?HEAPU8.subarray(a,a+i):null)}function _glTexImage2D(e,t,_,r,n,o,l,i,a){GLctx.texImage2D(e,t,_,r,n,o,l,i,a?emscriptenWebGLGetTexPixelData(i,l,r,n,a,_):null)}function _glTexSubImage2D(e,t,_,r,n,o,l,i,a){var u=null;a&&(u=emscriptenWebGLGetTexPixelData(i,l,n,o,a,0)),GLctx.texSubImage2D(e,t,_,r,n,o,l,i,u)}function _glReadPixels(e,t,_,r,n,o,l){var i=emscriptenWebGLGetTexPixelData(o,n,_,r,l,n);i?GLctx.readPixels(e,t,_,r,n,o,i):GL.recordError(1280)}function _glBindTexture(e,t){GLctx.bindTexture(e,GL.textures[t])}function _glGetTexParameterfv(e,t,_){_?HEAPF32[_>>2]=GLctx.getTexParameter(e,t):GL.recordError(1281)}function _glGetTexParameteriv(e,t,_){_?HEAP32[_>>2]=GLctx.getTexParameter(e,t):GL.recordError(1281)}function _glTexParameterfv(e,t,_){var r=HEAPF32[_>>2];GLctx.texParameterf(e,t,r)}function _glTexParameteriv(e,t,_){var r=HEAP32[_>>2];GLctx.texParameteri(e,t,r)}function _glIsTexture(e){var t=GL.textures[e];return t?GLctx.isTexture(t):0}function _glGenBuffers(e,t){__glGenObject(e,t,"createBuffer",GL.buffers)}function _glGenTextures(e,t){__glGenObject(e,t,"createTexture",GL.textures)}function _glDeleteBuffers(e,t){for(var _=0;_>2],n=GL.buffers[r];n&&(GLctx.deleteBuffer(n),n.name=0,GL.buffers[r]=null)}}function _glGetBufferParameteriv(e,t,_){_?HEAP32[_>>2]=GLctx.getBufferParameter(e,t):GL.recordError(1281)}function _glBufferData(e,t,_,r){GLctx.bufferData(e,_?HEAPU8.subarray(_,_+t):t,r)}function _glBufferSubData(e,t,_,r){GLctx.bufferSubData(e,t,HEAPU8.subarray(r,r+_))}function _glGenQueriesEXT(e,t){for(var _=0;_>2]=0;return}var n=GL.getNewId(GL.queries);r.name=n,GL.queries[n]=r,HEAP32[t+4*_>>2]=n}}function _glDeleteQueriesEXT(e,t){for(var _=0;_>2],n=GL.queries[r];n&&(GLctx.disjointTimerQueryExt.deleteQueryEXT(n),GL.queries[r]=null)}}function _glIsQueryEXT(e){var t=GL.queries[e];return t?GLctx.disjointTimerQueryExt.isQueryEXT(t):0}function _glBeginQueryEXT(e,t){GLctx.disjointTimerQueryExt.beginQueryEXT(e,GL.queries[t])}function _glEndQueryEXT(e){GLctx.disjointTimerQueryExt.endQueryEXT(e)}function _glQueryCounterEXT(e,t){GLctx.disjointTimerQueryExt.queryCounterEXT(GL.queries[e],t)}function _glGetQueryivEXT(e,t,_){_?HEAP32[_>>2]=GLctx.disjointTimerQueryExt.getQueryEXT(e,t):GL.recordError(1281)}function _glGetQueryObjectivEXT(e,t,_){if(_){var r,n=GL.queries[e],o=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t);r="boolean"==typeof o?o?1:0:o,HEAP32[_>>2]=r}else GL.recordError(1281)}function _glGetQueryObjectuivEXT(e,t,_){if(_){var r,n=GL.queries[e],o=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t);r="boolean"==typeof o?o?1:0:o,HEAP32[_>>2]=r}else GL.recordError(1281)}function _glGetQueryObjecti64vEXT(e,t,_){if(_){var r,n=GL.queries[e];writeI53ToI64(_,"boolean"==typeof(r=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t))?r?1:0:r)}else GL.recordError(1281)}function _glGetQueryObjectui64vEXT(e,t,_){if(_){var r,n=GL.queries[e];writeI53ToI64(_,"boolean"==typeof(r=GLctx.disjointTimerQueryExt.getQueryObjectEXT(n,t))?r?1:0:r)}else GL.recordError(1281)}function _glIsBuffer(e){var t=GL.buffers[e];return t?GLctx.isBuffer(t):0}function _glGenRenderbuffers(e,t){__glGenObject(e,t,"createRenderbuffer",GL.renderbuffers)}function _glDeleteRenderbuffers(e,t){for(var _=0;_>2],n=GL.renderbuffers[r];n&&(GLctx.deleteRenderbuffer(n),n.name=0,GL.renderbuffers[r]=null)}}function _glBindRenderbuffer(e,t){GLctx.bindRenderbuffer(e,GL.renderbuffers[t])}function _glGetRenderbufferParameteriv(e,t,_){_?HEAP32[_>>2]=GLctx.getRenderbufferParameter(e,t):GL.recordError(1281)}function _glIsRenderbuffer(e){var t=GL.renderbuffers[e];return t?GLctx.isRenderbuffer(t):0}function _glGetUniformfv(e,t,_){emscriptenWebGLGetUniform(e,t,_,2)}function _glGetUniformiv(e,t,_){emscriptenWebGLGetUniform(e,t,_,0)}function _glGetUniformLocation(e,t){if(t=UTF8ToString(t),e=GL.programs[e]){webglPrepareUniformLocationsBeforeFirstUse(e);var _=e.uniformLocsById,r=0,n=t,o=webglGetLeftBracePos(t);o>0&&(r=jstoi_q(t.slice(o+1))>>>0,n=t.slice(0,o));var l=e.uniformSizeAndIdsByName[n];if(l&&r>2]=GLctx.getVertexAttribOffset(e,t):GL.recordError(1281)}function _glUniform1f(e,t){GLctx.uniform1f(webglGetUniformLocation(e),t)}function _glUniform2f(e,t,_){GLctx.uniform2f(webglGetUniformLocation(e),t,_)}function _glUniform3f(e,t,_,r){GLctx.uniform3f(webglGetUniformLocation(e),t,_,r)}function _glUniform4f(e,t,_,r,n){GLctx.uniform4f(webglGetUniformLocation(e),t,_,r,n)}function _glUniform1i(e,t){GLctx.uniform1i(webglGetUniformLocation(e),t)}function _glUniform2i(e,t,_){GLctx.uniform2i(webglGetUniformLocation(e),t,_)}function _glUniform3i(e,t,_,r){GLctx.uniform3i(webglGetUniformLocation(e),t,_,r)}function _glUniform4i(e,t,_,r,n){GLctx.uniform4i(webglGetUniformLocation(e),t,_,r,n)}function _glUniform1iv(e,t,_){if(t<=288)for(var r=__miniTempWebGLIntBuffers[t-1],n=0;n>2];else r=HEAP32.subarray(_>>2,_+4*t>>2);GLctx.uniform1iv(webglGetUniformLocation(e),r)}function _glUniform2iv(e,t,_){if(t<=144)for(var r=__miniTempWebGLIntBuffers[2*t-1],n=0;n<2*t;n+=2)r[n]=HEAP32[_+4*n>>2],r[n+1]=HEAP32[_+(4*n+4)>>2];else r=HEAP32.subarray(_>>2,_+8*t>>2);GLctx.uniform2iv(webglGetUniformLocation(e),r)}function _glUniform3iv(e,t,_){if(t<=96)for(var r=__miniTempWebGLIntBuffers[3*t-1],n=0;n<3*t;n+=3)r[n]=HEAP32[_+4*n>>2],r[n+1]=HEAP32[_+(4*n+4)>>2],r[n+2]=HEAP32[_+(4*n+8)>>2];else r=HEAP32.subarray(_>>2,_+12*t>>2);GLctx.uniform3iv(webglGetUniformLocation(e),r)}function _glUniform4iv(e,t,_){if(t<=72)for(var r=__miniTempWebGLIntBuffers[4*t-1],n=0;n<4*t;n+=4)r[n]=HEAP32[_+4*n>>2],r[n+1]=HEAP32[_+(4*n+4)>>2],r[n+2]=HEAP32[_+(4*n+8)>>2],r[n+3]=HEAP32[_+(4*n+12)>>2];else r=HEAP32.subarray(_>>2,_+16*t>>2);GLctx.uniform4iv(webglGetUniformLocation(e),r)}function _glUniform1fv(e,t,_){if(t<=288)for(var r=miniTempWebGLFloatBuffers[t-1],n=0;n>2];else r=HEAPF32.subarray(_>>2,_+4*t>>2);GLctx.uniform1fv(webglGetUniformLocation(e),r)}function _glUniform2fv(e,t,_){if(t<=144)for(var r=miniTempWebGLFloatBuffers[2*t-1],n=0;n<2*t;n+=2)r[n]=HEAPF32[_+4*n>>2],r[n+1]=HEAPF32[_+(4*n+4)>>2];else r=HEAPF32.subarray(_>>2,_+8*t>>2);GLctx.uniform2fv(webglGetUniformLocation(e),r)}function _glUniform3fv(e,t,_){if(t<=96)for(var r=miniTempWebGLFloatBuffers[3*t-1],n=0;n<3*t;n+=3)r[n]=HEAPF32[_+4*n>>2],r[n+1]=HEAPF32[_+(4*n+4)>>2],r[n+2]=HEAPF32[_+(4*n+8)>>2];else r=HEAPF32.subarray(_>>2,_+12*t>>2);GLctx.uniform3fv(webglGetUniformLocation(e),r)}function _glUniform4fv(e,t,_){if(t<=72){var r=miniTempWebGLFloatBuffers[4*t-1],n=HEAPF32;_>>=2;for(var o=0;o<4*t;o+=4){var l=_+o;r[o]=n[l],r[o+1]=n[l+1],r[o+2]=n[l+2],r[o+3]=n[l+3]}}else r=HEAPF32.subarray(_>>2,_+16*t>>2);GLctx.uniform4fv(webglGetUniformLocation(e),r)}function _glUniformMatrix2fv(e,t,_,r){if(t<=72)for(var n=miniTempWebGLFloatBuffers[4*t-1],o=0;o<4*t;o+=4)n[o]=HEAPF32[r+4*o>>2],n[o+1]=HEAPF32[r+(4*o+4)>>2],n[o+2]=HEAPF32[r+(4*o+8)>>2],n[o+3]=HEAPF32[r+(4*o+12)>>2];else n=HEAPF32.subarray(r>>2,r+16*t>>2);GLctx.uniformMatrix2fv(webglGetUniformLocation(e),!!_,n)}function _glUniformMatrix3fv(e,t,_,r){if(t<=32)for(var n=miniTempWebGLFloatBuffers[9*t-1],o=0;o<9*t;o+=9)n[o]=HEAPF32[r+4*o>>2],n[o+1]=HEAPF32[r+(4*o+4)>>2],n[o+2]=HEAPF32[r+(4*o+8)>>2],n[o+3]=HEAPF32[r+(4*o+12)>>2],n[o+4]=HEAPF32[r+(4*o+16)>>2],n[o+5]=HEAPF32[r+(4*o+20)>>2],n[o+6]=HEAPF32[r+(4*o+24)>>2],n[o+7]=HEAPF32[r+(4*o+28)>>2],n[o+8]=HEAPF32[r+(4*o+32)>>2];else n=HEAPF32.subarray(r>>2,r+36*t>>2);GLctx.uniformMatrix3fv(webglGetUniformLocation(e),!!_,n)}function _glUniformMatrix4fv(e,t,_,r){if(t<=18){var n=miniTempWebGLFloatBuffers[16*t-1],o=HEAPF32;r>>=2;for(var l=0;l<16*t;l+=16){var i=r+l;n[l]=o[i],n[l+1]=o[i+1],n[l+2]=o[i+2],n[l+3]=o[i+3],n[l+4]=o[i+4],n[l+5]=o[i+5],n[l+6]=o[i+6],n[l+7]=o[i+7],n[l+8]=o[i+8],n[l+9]=o[i+9],n[l+10]=o[i+10],n[l+11]=o[i+11],n[l+12]=o[i+12],n[l+13]=o[i+13],n[l+14]=o[i+14],n[l+15]=o[i+15]}}else n=HEAPF32.subarray(r>>2,r+64*t>>2);GLctx.uniformMatrix4fv(webglGetUniformLocation(e),!!_,n)}function _glBindBuffer(e,t){GLctx.bindBuffer(e,GL.buffers[t])}function _glVertexAttrib1fv(e,t){GLctx.vertexAttrib1f(e,HEAPF32[t>>2])}function _glVertexAttrib2fv(e,t){GLctx.vertexAttrib2f(e,HEAPF32[t>>2],HEAPF32[t+4>>2])}function _glVertexAttrib3fv(e,t){GLctx.vertexAttrib3f(e,HEAPF32[t>>2],HEAPF32[t+4>>2],HEAPF32[t+8>>2])}function _glVertexAttrib4fv(e,t){GLctx.vertexAttrib4f(e,HEAPF32[t>>2],HEAPF32[t+4>>2],HEAPF32[t+8>>2],HEAPF32[t+12>>2])}function _glGetAttribLocation(e,t){return GLctx.getAttribLocation(GL.programs[e],UTF8ToString(t))}function _glGetActiveAttrib(e,t,_,r,n,o,l){__glGetActiveAttribOrUniform("getActiveAttrib",e,t,_,r,n,o,l)}function _glGetActiveUniform(e,t,_,r,n,o,l){__glGetActiveAttribOrUniform("getActiveUniform",e,t,_,r,n,o,l)}function _glCreateShader(e){var t=GL.getNewId(GL.shaders);return GL.shaders[t]=GLctx.createShader(e),t}function _glDeleteShader(e){if(e){var t=GL.shaders[e];t?(GLctx.deleteShader(t),GL.shaders[e]=null):GL.recordError(1281)}}function _glGetAttachedShaders(e,t,_,r){var n=GLctx.getAttachedShaders(GL.programs[e]),o=n.length;o>t&&(o=t),HEAP32[_>>2]=o;for(var l=0;l>2]=i}}function _glShaderSource(e,t,_,r){var n=GL.getSource(e,t,_,r);GLctx.shaderSource(GL.shaders[e],n)}function _glGetShaderSource(e,t,_,r){var n=GLctx.getShaderSource(GL.shaders[e]);if(n){var o=t>0&&r?stringToUTF8(n,r,t):0;_&&(HEAP32[_>>2]=o)}}function _glCompileShader(e){GLctx.compileShader(GL.shaders[e])}function _glGetShaderInfoLog(e,t,_,r){var n=GLctx.getShaderInfoLog(GL.shaders[e]);null===n&&(n="(unknown error)");var o=t>0&&r?stringToUTF8(n,r,t):0;_&&(HEAP32[_>>2]=o)}function _glGetShaderiv(e,t,_){if(_)if(35716==t){var r=GLctx.getShaderInfoLog(GL.shaders[e]);null===r&&(r="(unknown error)");var n=r?r.length+1:0;HEAP32[_>>2]=n}else if(35720==t){var o=GLctx.getShaderSource(GL.shaders[e]),l=o?o.length+1:0;HEAP32[_>>2]=l}else HEAP32[_>>2]=GLctx.getShaderParameter(GL.shaders[e],t);else GL.recordError(1281)}function _glGetProgramiv(e,t,_){if(_)if(e>=GL.counter)GL.recordError(1281);else if(e=GL.programs[e],35716==t){var r=GLctx.getProgramInfoLog(e);null===r&&(r="(unknown error)"),HEAP32[_>>2]=r.length+1}else if(35719==t){if(!e.maxUniformLength)for(var n=0;n>2]=e.maxUniformLength}else if(35722==t){if(!e.maxAttributeLength)for(n=0;n>2]=e.maxAttributeLength}else if(35381==t){if(!e.maxUniformBlockNameLength)for(n=0;n>2]=e.maxUniformBlockNameLength}else HEAP32[_>>2]=GLctx.getProgramParameter(e,t);else GL.recordError(1281)}function _glIsShader(e){var t=GL.shaders[e];return t?GLctx.isShader(t):0}function _glCreateProgram(){var e=GL.getNewId(GL.programs),t=GLctx.createProgram();return t.name=e,t.maxUniformLength=t.maxAttributeLength=t.maxUniformBlockNameLength=0,t.uniformIdCounter=1,GL.programs[e]=t,e}function _glDeleteProgram(e){if(e){var t=GL.programs[e];t?(GLctx.deleteProgram(t),t.name=0,GL.programs[e]=null):GL.recordError(1281)}}function _glAttachShader(e,t){GLctx.attachShader(GL.programs[e],GL.shaders[t])}function _glDetachShader(e,t){GLctx.detachShader(GL.programs[e],GL.shaders[t])}function _glGetShaderPrecisionFormat(e,t,_,r){var n=GLctx.getShaderPrecisionFormat(e,t);HEAP32[_>>2]=n.rangeMin,HEAP32[_+4>>2]=n.rangeMax,HEAP32[r>>2]=n.precision}function _glLinkProgram(e){e=GL.programs[e],GLctx.linkProgram(e),e.uniformLocsById=0,e.uniformSizeAndIdsByName={}}function _glGetProgramInfoLog(e,t,_,r){var n=GLctx.getProgramInfoLog(GL.programs[e]);null===n&&(n="(unknown error)");var o=t>0&&r?stringToUTF8(n,r,t):0;_&&(HEAP32[_>>2]=o)}function _glUseProgram(e){e=GL.programs[e],GLctx.useProgram(e),GLctx.currentProgram=e}function _glValidateProgram(e){GLctx.validateProgram(GL.programs[e])}function _glIsProgram(e){return(e=GL.programs[e])?GLctx.isProgram(e):0}function _glBindAttribLocation(e,t,_){GLctx.bindAttribLocation(GL.programs[e],t,UTF8ToString(_))}function _glBindFramebuffer(e,t){GLctx.bindFramebuffer(e,GL.framebuffers[t])}function _glGenFramebuffers(e,t){__glGenObject(e,t,"createFramebuffer",GL.framebuffers)}function _glDeleteFramebuffers(e,t){for(var _=0;_>2],n=GL.framebuffers[r];n&&(GLctx.deleteFramebuffer(n),n.name=0,GL.framebuffers[r]=null)}}function _glFramebufferRenderbuffer(e,t,_,r){GLctx.framebufferRenderbuffer(e,t,_,GL.renderbuffers[r])}function _glFramebufferTexture2D(e,t,_,r,n){GLctx.framebufferTexture2D(e,t,_,GL.textures[r],n)}function _glGetFramebufferAttachmentParameteriv(e,t,_,r){var n=GLctx.getFramebufferAttachmentParameter(e,t,_);(n instanceof WebGLRenderbuffer||n instanceof WebGLTexture)&&(n=0|n.name),HEAP32[r>>2]=n}function _glIsFramebuffer(e){var t=GL.framebuffers[e];return t?GLctx.isFramebuffer(t):0}function _glGenVertexArrays(e,t){__glGenObject(e,t,"createVertexArray",GL.vaos)}function _glDeleteVertexArrays(e,t){for(var _=0;_>2];GLctx.deleteVertexArray(GL.vaos[r]),GL.vaos[r]=null}}function _glBindVertexArray(e){GLctx.bindVertexArray(GL.vaos[e])}function _glIsVertexArray(e){var t=GL.vaos[e];return t?GLctx.isVertexArray(t):0}function _glVertexPointer(){throw"Legacy GL function (glVertexPointer) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _glMatrixMode(){throw"Legacy GL function (glMatrixMode) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _glBegin(){throw"Legacy GL function (glBegin) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _glLoadIdentity(){throw"Legacy GL function (glLoadIdentity) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _glGenVertexArraysOES(e,t){__glGenObject(e,t,"createVertexArray",GL.vaos)}function _glDeleteVertexArraysOES(e,t){for(var _=0;_>2];GLctx.deleteVertexArray(GL.vaos[r]),GL.vaos[r]=null}}function _glBindVertexArrayOES(e){GLctx.bindVertexArray(GL.vaos[e])}function _glIsVertexArrayOES(e){var t=GL.vaos[e];return t?GLctx.isVertexArray(t):0}function _glVertexAttribPointer(e,t,_,r,n,o){GLctx.vertexAttribPointer(e,t,_,!!r,n,o)}function _glEnableVertexAttribArray(e){GLctx.enableVertexAttribArray(e)}function _glDisableVertexAttribArray(e){GLctx.disableVertexAttribArray(e)}function _glDrawArrays(e,t,_){GLctx.drawArrays(e,t,_)}function _glDrawElements(e,t,_,r){GLctx.drawElements(e,t,_,r)}function _glShaderBinary(){GL.recordError(1280)}function _glReleaseShaderCompiler(){}function _glGetError(){var e=GLctx.getError()||GL.lastError;return GL.lastError=0,e}function _glVertexAttribDivisor(e,t){GLctx.vertexAttribDivisor(e,t)}function _glDrawArraysInstanced(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _glDrawElementsInstanced(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _glVertexAttribDivisorNV(e,t){GLctx.vertexAttribDivisor(e,t)}function _glDrawArraysInstancedNV(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _glDrawElementsInstancedNV(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _glVertexAttribDivisorEXT(e,t){GLctx.vertexAttribDivisor(e,t)}function _glDrawArraysInstancedEXT(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _glDrawElementsInstancedEXT(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _glVertexAttribDivisorARB(e,t){GLctx.vertexAttribDivisor(e,t)}function _glDrawArraysInstancedARB(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _glDrawElementsInstancedARB(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _glVertexAttribDivisorANGLE(e,t){GLctx.vertexAttribDivisor(e,t)}function _glDrawArraysInstancedANGLE(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _glDrawElementsInstancedANGLE(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _glDrawBuffers(e,t){for(var _=tempFixedLengthArray[e],r=0;r>2];GLctx.drawBuffers(_)}function _glDrawBuffersEXT(e,t){for(var _=tempFixedLengthArray[e],r=0;r>2];GLctx.drawBuffers(_)}function _glDrawBuffersWEBGL(e,t){for(var _=tempFixedLengthArray[e],r=0;r>2];GLctx.drawBuffers(_)}function _glColorMask(e,t,_,r){GLctx.colorMask(!!e,!!t,!!_,!!r)}function _glDepthMask(e){GLctx.depthMask(!!e)}function _glSampleCoverage(e,t){GLctx.sampleCoverage(e,!!t)}function _glMultiDrawArrays(e,t,_,r){GLctx.multiDrawWebgl.multiDrawArraysWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,r)}function _glMultiDrawArraysANGLE(e,t,_,r){GLctx.multiDrawWebgl.multiDrawArraysWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,r)}function _glMultiDrawArraysWEBGL(e,t,_,r){GLctx.multiDrawWebgl.multiDrawArraysWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,r)}function _glMultiDrawArraysInstancedANGLE(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawArraysInstancedWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,HEAP32,r>>2,n)}function _glMultiDrawArraysInstancedWEBGL(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawArraysInstancedWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,HEAP32,r>>2,n)}function _glMultiDrawElements(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawElementsWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,n)}function _glMultiDrawElementsANGLE(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawElementsWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,n)}function _glMultiDrawElementsWEBGL(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawElementsWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,n)}function _glMultiDrawElementsInstancedANGLE(e,t,_,r,n,o){GLctx.multiDrawWebgl.multiDrawElementsInstancedWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,HEAP32,n>>2,o)}function _glMultiDrawElementsInstancedWEBGL(e,t,_,r,n,o){GLctx.multiDrawWebgl.multiDrawElementsInstancedWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,HEAP32,n>>2,o)}function _glFinish(){GLctx.finish()}function _glFlush(){GLctx.flush()}function _glClearDepth(e){GLctx.clearDepth(e)}function _glClearDepthf(e){GLctx.clearDepth(e)}function _glDepthFunc(e){GLctx.depthFunc(e)}function _glEnable(e){GLctx.enable(e)}function _glDisable(e){GLctx.disable(e)}function _glFrontFace(e){GLctx.frontFace(e)}function _glCullFace(e){GLctx.cullFace(e)}function _glClear(e){GLctx.clear(e)}function _glLineWidth(e){GLctx.lineWidth(e)}function _glClearStencil(e){GLctx.clearStencil(e)}function _glStencilMask(e){GLctx.stencilMask(e)}function _glCheckFramebufferStatus(e){return GLctx.checkFramebufferStatus(e)}function _glGenerateMipmap(e){GLctx.generateMipmap(e)}function _glActiveTexture(e){GLctx.activeTexture(e)}function _glBlendEquation(e){GLctx.blendEquation(e)}function _glIsEnabled(e){return GLctx.isEnabled(e)}function _glBlendFunc(e,t){GLctx.blendFunc(e,t)}function _glBlendEquationSeparate(e,t){GLctx.blendEquationSeparate(e,t)}function _glDepthRange(e,t){GLctx.depthRange(e,t)}function _glDepthRangef(e,t){GLctx.depthRange(e,t)}function _glStencilMaskSeparate(e,t){GLctx.stencilMaskSeparate(e,t)}function _glHint(e,t){GLctx.hint(e,t)}function _glPolygonOffset(e,t){GLctx.polygonOffset(e,t)}function _glVertexAttrib1f(e,t){GLctx.vertexAttrib1f(e,t)}function _glTexParameteri(e,t,_){GLctx.texParameteri(e,t,_)}function _glTexParameterf(e,t,_){GLctx.texParameterf(e,t,_)}function _glVertexAttrib2f(e,t,_){GLctx.vertexAttrib2f(e,t,_)}function _glStencilFunc(e,t,_){GLctx.stencilFunc(e,t,_)}function _glStencilOp(e,t,_){GLctx.stencilOp(e,t,_)}function _glViewport(e,t,_,r){GLctx.viewport(e,t,_,r)}function _glClearColor(e,t,_,r){GLctx.clearColor(e,t,_,r)}function _glScissor(e,t,_,r){GLctx.scissor(e,t,_,r)}function _glVertexAttrib3f(e,t,_,r){GLctx.vertexAttrib3f(e,t,_,r)}function _glRenderbufferStorage(e,t,_,r){GLctx.renderbufferStorage(e,t,_,r)}function _glBlendFuncSeparate(e,t,_,r){GLctx.blendFuncSeparate(e,t,_,r)}function _glBlendColor(e,t,_,r){GLctx.blendColor(e,t,_,r)}function _glStencilFuncSeparate(e,t,_,r){GLctx.stencilFuncSeparate(e,t,_,r)}function _glStencilOpSeparate(e,t,_,r){GLctx.stencilOpSeparate(e,t,_,r)}function _glVertexAttrib4f(e,t,_,r,n){GLctx.vertexAttrib4f(e,t,_,r,n)}function _glCopyTexImage2D(e,t,_,r,n,o,l,i){GLctx.copyTexImage2D(e,t,_,r,n,o,l,i)}function _glCopyTexSubImage2D(e,t,_,r,n,o,l,i){GLctx.copyTexSubImage2D(e,t,_,r,n,o,l,i)}function _emscripten_glGenVertexArrays(e,t){__glGenObject(e,t,"createVertexArray",GL.vaos)}function _emscripten_glDeleteVertexArrays(e,t){for(var _=0;_>2];GLctx.deleteVertexArray(GL.vaos[r]),GL.vaos[r]=null}}function _emscripten_glBindVertexArray(e){GLctx.bindVertexArray(GL.vaos[e])}function _emscripten_glIsVertexArray(e){var t=GL.vaos[e];return t?GLctx.isVertexArray(t):0}function _emscripten_glVertexPointer(){throw"Legacy GL function (glVertexPointer) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _emscripten_glMatrixMode(){throw"Legacy GL function (glMatrixMode) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _emscripten_glBegin(){throw"Legacy GL function (glBegin) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _emscripten_glLoadIdentity(){throw"Legacy GL function (glLoadIdentity) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation."}function _emscripten_glVertexAttribDivisor(e,t){GLctx.vertexAttribDivisor(e,t)}function _emscripten_glDrawArraysInstanced(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _emscripten_glDrawElementsInstanced(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _emscripten_glVertexAttribDivisorNV(e,t){GLctx.vertexAttribDivisor(e,t)}function _emscripten_glDrawArraysInstancedNV(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _emscripten_glDrawElementsInstancedNV(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _emscripten_glVertexAttribDivisorEXT(e,t){GLctx.vertexAttribDivisor(e,t)}function _emscripten_glDrawArraysInstancedEXT(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _emscripten_glDrawElementsInstancedEXT(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _emscripten_glVertexAttribDivisorARB(e,t){GLctx.vertexAttribDivisor(e,t)}function _emscripten_glDrawArraysInstancedARB(e,t,_,r){GLctx.drawArraysInstanced(e,t,_,r)}function _emscripten_glDrawElementsInstancedARB(e,t,_,r,n){GLctx.drawElementsInstanced(e,t,_,r,n)}function _emscripten_glDrawBuffers(e,t){for(var _=tempFixedLengthArray[e],r=0;r>2];GLctx.drawBuffers(_)}function _emscripten_glDrawBuffersEXT(e,t){for(var _=tempFixedLengthArray[e],r=0;r>2];GLctx.drawBuffers(_)}function _emscripten_glMultiDrawArrays(e,t,_,r){GLctx.multiDrawWebgl.multiDrawArraysWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,r)}function _emscripten_glMultiDrawArraysANGLE(e,t,_,r){GLctx.multiDrawWebgl.multiDrawArraysWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,r)}function _emscripten_glMultiDrawArraysWEBGL(e,t,_,r){GLctx.multiDrawWebgl.multiDrawArraysWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,r)}function _emscripten_glMultiDrawArraysInstancedANGLE(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawArraysInstancedWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,HEAP32,r>>2,n)}function _emscripten_glMultiDrawArraysInstancedWEBGL(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawArraysInstancedWEBGL(e,HEAP32,t>>2,HEAP32,_>>2,HEAP32,r>>2,n)}function _emscripten_glMultiDrawElements(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawElementsWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,n)}function _emscripten_glMultiDrawElementsANGLE(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawElementsWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,n)}function _emscripten_glMultiDrawElementsWEBGL(e,t,_,r,n){GLctx.multiDrawWebgl.multiDrawElementsWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,n)}function _emscripten_glMultiDrawElementsInstancedANGLE(e,t,_,r,n,o){GLctx.multiDrawWebgl.multiDrawElementsInstancedWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,HEAP32,n>>2,o)}function _emscripten_glMultiDrawElementsInstancedWEBGL(e,t,_,r,n,o){GLctx.multiDrawWebgl.multiDrawElementsInstancedWEBGL(e,HEAP32,t>>2,_,HEAP32,r>>2,HEAP32,n>>2,o)}function _emscripten_glClearDepth(e){GLctx.clearDepth(e)}function _emscripten_glDepthRange(e,t){GLctx.depthRange(e,t)}function writeGLArray(e,t,_,r){for(var n=e.length,o=_>2)+i]=e[i];return n}function _emscripten_webgl_init_context_attributes(e){for(var t=e>>2,_=0;_<14;++_)HEAP32[t+_]=0;HEAP32[t+0]=HEAP32[t+1]=HEAP32[t+3]=HEAP32[t+4]=HEAP32[t+8]=HEAP32[t+10]=1}Module.WS=WS,Module._emscripten_websocket_get_ready_state=_emscripten_websocket_get_ready_state,_emscripten_websocket_get_ready_state.sig="iii",Module._emscripten_websocket_get_buffered_amount=_emscripten_websocket_get_buffered_amount,_emscripten_websocket_get_buffered_amount.sig="iii",Module._emscripten_websocket_get_extensions=_emscripten_websocket_get_extensions,_emscripten_websocket_get_extensions.sig="iiii",Module._emscripten_websocket_get_extensions_length=_emscripten_websocket_get_extensions_length,_emscripten_websocket_get_extensions_length.sig="iii",Module._emscripten_websocket_get_protocol=_emscripten_websocket_get_protocol,_emscripten_websocket_get_protocol.sig="iiii",Module._emscripten_websocket_get_protocol_length=_emscripten_websocket_get_protocol_length,_emscripten_websocket_get_protocol_length.sig="iii",Module._emscripten_websocket_get_url=_emscripten_websocket_get_url,_emscripten_websocket_get_url.sig="iiii",Module._emscripten_websocket_get_url_length=_emscripten_websocket_get_url_length,_emscripten_websocket_get_url_length.sig="iii",Module._emscripten_websocket_set_onopen_callback_on_thread=_emscripten_websocket_set_onopen_callback_on_thread,_emscripten_websocket_set_onopen_callback_on_thread.sig="iiiii",Module._emscripten_websocket_set_onerror_callback_on_thread=_emscripten_websocket_set_onerror_callback_on_thread,_emscripten_websocket_set_onerror_callback_on_thread.sig="iiiii",Module._emscripten_websocket_set_onclose_callback_on_thread=_emscripten_websocket_set_onclose_callback_on_thread,_emscripten_websocket_set_onclose_callback_on_thread.sig="iiiii",Module._emscripten_websocket_set_onmessage_callback_on_thread=_emscripten_websocket_set_onmessage_callback_on_thread,_emscripten_websocket_set_onmessage_callback_on_thread.sig="iiiii",Module._emscripten_websocket_new=_emscripten_websocket_new,_emscripten_websocket_new.sig="ii",Module._emscripten_websocket_send_utf8_text=_emscripten_websocket_send_utf8_text,_emscripten_websocket_send_utf8_text.sig="iii",Module._emscripten_websocket_send_binary=_emscripten_websocket_send_binary,_emscripten_websocket_send_binary.sig="iiii",Module._emscripten_websocket_close=_emscripten_websocket_close,_emscripten_websocket_close.sig="iiii",Module._emscripten_websocket_delete=_emscripten_websocket_delete,_emscripten_websocket_delete.sig="ii",Module._emscripten_websocket_is_supported=_emscripten_websocket_is_supported,_emscripten_websocket_is_supported.sig="i",Module._emscripten_websocket_deinitialize=_emscripten_websocket_deinitialize,_emscripten_websocket_deinitialize.sig="v",Module._emscripten_webgl_enable_ANGLE_instanced_arrays=_emscripten_webgl_enable_ANGLE_instanced_arrays,Module._emscripten_webgl_enable_OES_vertex_array_object=_emscripten_webgl_enable_OES_vertex_array_object,Module._emscripten_webgl_enable_WEBGL_draw_buffers=_emscripten_webgl_enable_WEBGL_draw_buffers,Module._emscripten_webgl_enable_WEBGL_multi_draw=_emscripten_webgl_enable_WEBGL_multi_draw,Module._glPixelStorei=_glPixelStorei,_glPixelStorei.sig="vii",Module._glGetString=_glGetString,_glGetString.sig="ii",Module._glGetIntegerv=_glGetIntegerv,_glGetIntegerv.sig="vii",Module._glGetFloatv=_glGetFloatv,_glGetFloatv.sig="vii",Module._glGetBooleanv=_glGetBooleanv,_glGetBooleanv.sig="vii",Module._glDeleteTextures=_glDeleteTextures,_glDeleteTextures.sig="vii",Module._glCompressedTexImage2D=_glCompressedTexImage2D,_glCompressedTexImage2D.sig="viiiiiiii",Module._glCompressedTexSubImage2D=_glCompressedTexSubImage2D,_glCompressedTexSubImage2D.sig="viiiiiiiii",Module._glTexImage2D=_glTexImage2D,_glTexImage2D.sig="viiiiiiiii",Module._glTexSubImage2D=_glTexSubImage2D,_glTexSubImage2D.sig="viiiiiiiii",Module._glReadPixels=_glReadPixels,_glReadPixels.sig="viiiiiii",Module._glBindTexture=_glBindTexture,_glBindTexture.sig="vii",Module._glGetTexParameterfv=_glGetTexParameterfv,_glGetTexParameterfv.sig="viii",Module._glGetTexParameteriv=_glGetTexParameteriv,_glGetTexParameteriv.sig="viii",Module._glTexParameterfv=_glTexParameterfv,_glTexParameterfv.sig="viii",Module._glTexParameteriv=_glTexParameteriv,_glTexParameteriv.sig="viii",Module._glIsTexture=_glIsTexture,_glIsTexture.sig="ii",Module._glGenBuffers=_glGenBuffers,_glGenBuffers.sig="vii",Module._glGenTextures=_glGenTextures,_glGenTextures.sig="vii",Module._glDeleteBuffers=_glDeleteBuffers,_glDeleteBuffers.sig="vii",Module._glGetBufferParameteriv=_glGetBufferParameteriv,_glGetBufferParameteriv.sig="viii",Module._glBufferData=_glBufferData,_glBufferData.sig="viiii",Module._glBufferSubData=_glBufferSubData,_glBufferSubData.sig="viiii",Module._glGenQueriesEXT=_glGenQueriesEXT,_glGenQueriesEXT.sig="vii",Module._glDeleteQueriesEXT=_glDeleteQueriesEXT,_glDeleteQueriesEXT.sig="vii",Module._glIsQueryEXT=_glIsQueryEXT,_glIsQueryEXT.sig="ii",Module._glBeginQueryEXT=_glBeginQueryEXT,_glBeginQueryEXT.sig="vii",Module._glEndQueryEXT=_glEndQueryEXT,_glEndQueryEXT.sig="vi",Module._glQueryCounterEXT=_glQueryCounterEXT,_glQueryCounterEXT.sig="vii",Module._glGetQueryivEXT=_glGetQueryivEXT,_glGetQueryivEXT.sig="viii",Module._glGetQueryObjectivEXT=_glGetQueryObjectivEXT,_glGetQueryObjectivEXT.sig="viii",Module._glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT,_glGetQueryObjectuivEXT.sig="viii",Module._glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT,_glGetQueryObjecti64vEXT.sig="viii",Module._glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT,_glGetQueryObjectui64vEXT.sig="viii",Module._glIsBuffer=_glIsBuffer,_glIsBuffer.sig="ii",Module._glGenRenderbuffers=_glGenRenderbuffers,_glGenRenderbuffers.sig="vii",Module._glDeleteRenderbuffers=_glDeleteRenderbuffers,_glDeleteRenderbuffers.sig="vii",Module._glBindRenderbuffer=_glBindRenderbuffer,_glBindRenderbuffer.sig="vii",Module._glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv,_glGetRenderbufferParameteriv.sig="viii",Module._glIsRenderbuffer=_glIsRenderbuffer,_glIsRenderbuffer.sig="ii",Module._glGetUniformfv=_glGetUniformfv,_glGetUniformfv.sig="viii",Module._glGetUniformiv=_glGetUniformiv,_glGetUniformiv.sig="viii",Module._glGetUniformLocation=_glGetUniformLocation,_glGetUniformLocation.sig="iii",Module._glGetVertexAttribfv=_glGetVertexAttribfv,_glGetVertexAttribfv.sig="viii",Module._glGetVertexAttribiv=_glGetVertexAttribiv,_glGetVertexAttribiv.sig="viii",Module._glGetVertexAttribPointerv=_glGetVertexAttribPointerv,_glGetVertexAttribPointerv.sig="viii",Module._glUniform1f=_glUniform1f,_glUniform1f.sig="vif",Module._glUniform2f=_glUniform2f,_glUniform2f.sig="viff",Module._glUniform3f=_glUniform3f,_glUniform3f.sig="vifff",Module._glUniform4f=_glUniform4f,_glUniform4f.sig="viffff",Module._glUniform1i=_glUniform1i,_glUniform1i.sig="vii",Module._glUniform2i=_glUniform2i,_glUniform2i.sig="viii",Module._glUniform3i=_glUniform3i,_glUniform3i.sig="viiii",Module._glUniform4i=_glUniform4i,_glUniform4i.sig="viiiii",Module._glUniform1iv=_glUniform1iv,_glUniform1iv.sig="viii",Module._glUniform2iv=_glUniform2iv,_glUniform2iv.sig="viii",Module._glUniform3iv=_glUniform3iv,_glUniform3iv.sig="viii",Module._glUniform4iv=_glUniform4iv,_glUniform4iv.sig="viii",Module._glUniform1fv=_glUniform1fv,_glUniform1fv.sig="viii",Module._glUniform2fv=_glUniform2fv,_glUniform2fv.sig="viii",Module._glUniform3fv=_glUniform3fv,_glUniform3fv.sig="viii",Module._glUniform4fv=_glUniform4fv,_glUniform4fv.sig="viii",Module._glUniformMatrix2fv=_glUniformMatrix2fv,_glUniformMatrix2fv.sig="viiii",Module._glUniformMatrix3fv=_glUniformMatrix3fv,_glUniformMatrix3fv.sig="viiii",Module._glUniformMatrix4fv=_glUniformMatrix4fv,_glUniformMatrix4fv.sig="viiii",Module._glBindBuffer=_glBindBuffer,_glBindBuffer.sig="vii",Module._glVertexAttrib1fv=_glVertexAttrib1fv,_glVertexAttrib1fv.sig="vii",Module._glVertexAttrib2fv=_glVertexAttrib2fv,_glVertexAttrib2fv.sig="vii",Module._glVertexAttrib3fv=_glVertexAttrib3fv,_glVertexAttrib3fv.sig="vii",Module._glVertexAttrib4fv=_glVertexAttrib4fv,_glVertexAttrib4fv.sig="vii",Module._glGetAttribLocation=_glGetAttribLocation,_glGetAttribLocation.sig="iii",Module._glGetActiveAttrib=_glGetActiveAttrib,_glGetActiveAttrib.sig="viiiiiii",Module._glGetActiveUniform=_glGetActiveUniform,_glGetActiveUniform.sig="viiiiiii",Module._glCreateShader=_glCreateShader,_glCreateShader.sig="ii",Module._glDeleteShader=_glDeleteShader,_glDeleteShader.sig="vi",Module._glGetAttachedShaders=_glGetAttachedShaders,_glGetAttachedShaders.sig="viiii",Module._glShaderSource=_glShaderSource,_glShaderSource.sig="viiii",Module._glGetShaderSource=_glGetShaderSource,_glGetShaderSource.sig="viiii",Module._glCompileShader=_glCompileShader,_glCompileShader.sig="vi",Module._glGetShaderInfoLog=_glGetShaderInfoLog,_glGetShaderInfoLog.sig="viiii",Module._glGetShaderiv=_glGetShaderiv,_glGetShaderiv.sig="viii",Module._glGetProgramiv=_glGetProgramiv,_glGetProgramiv.sig="viii",Module._glIsShader=_glIsShader,_glIsShader.sig="ii",Module._glCreateProgram=_glCreateProgram,_glCreateProgram.sig="i",Module._glDeleteProgram=_glDeleteProgram,_glDeleteProgram.sig="vi",Module._glAttachShader=_glAttachShader,_glAttachShader.sig="vii",Module._glDetachShader=_glDetachShader,_glDetachShader.sig="vii",Module._glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat,_glGetShaderPrecisionFormat.sig="viiii",Module._glLinkProgram=_glLinkProgram,_glLinkProgram.sig="vi",Module._glGetProgramInfoLog=_glGetProgramInfoLog,_glGetProgramInfoLog.sig="viiii",Module._glUseProgram=_glUseProgram,_glUseProgram.sig="vi",Module._glValidateProgram=_glValidateProgram,_glValidateProgram.sig="vi",Module._glIsProgram=_glIsProgram,_glIsProgram.sig="ii",Module._glBindAttribLocation=_glBindAttribLocation,_glBindAttribLocation.sig="viii",Module._glBindFramebuffer=_glBindFramebuffer,_glBindFramebuffer.sig="vii",Module._glGenFramebuffers=_glGenFramebuffers,_glGenFramebuffers.sig="vii",Module._glDeleteFramebuffers=_glDeleteFramebuffers,_glDeleteFramebuffers.sig="vii",Module._glFramebufferRenderbuffer=_glFramebufferRenderbuffer,_glFramebufferRenderbuffer.sig="viiii",Module._glFramebufferTexture2D=_glFramebufferTexture2D,_glFramebufferTexture2D.sig="viiiii",Module._glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv,_glGetFramebufferAttachmentParameteriv.sig="viiii",Module._glIsFramebuffer=_glIsFramebuffer,_glIsFramebuffer.sig="ii",Module._glGenVertexArrays=_glGenVertexArrays,_glGenVertexArrays.sig="vii",Module._glDeleteVertexArrays=_glDeleteVertexArrays,_glDeleteVertexArrays.sig="vii",Module._glBindVertexArray=_glBindVertexArray,_glBindVertexArray.sig="vi",Module._glIsVertexArray=_glIsVertexArray,_glIsVertexArray.sig="ii",Module._glVertexPointer=_glVertexPointer,Module._glMatrixMode=_glMatrixMode,Module._glBegin=_glBegin,Module._glLoadIdentity=_glLoadIdentity,Module._glGenVertexArraysOES=_glGenVertexArraysOES,_glGenVertexArraysOES.sig="vii",Module._glDeleteVertexArraysOES=_glDeleteVertexArraysOES,_glDeleteVertexArraysOES.sig="vii",Module._glBindVertexArrayOES=_glBindVertexArrayOES,_glBindVertexArrayOES.sig="vi",Module._glIsVertexArrayOES=_glIsVertexArrayOES,_glIsVertexArrayOES.sig="ii",Module._glVertexAttribPointer=_glVertexAttribPointer,_glVertexAttribPointer.sig="viiiiii",Module._glEnableVertexAttribArray=_glEnableVertexAttribArray,_glEnableVertexAttribArray.sig="vi",Module._glDisableVertexAttribArray=_glDisableVertexAttribArray,_glDisableVertexAttribArray.sig="vi",Module._glDrawArrays=_glDrawArrays,_glDrawArrays.sig="viii",Module._glDrawElements=_glDrawElements,_glDrawElements.sig="viiii",Module._glShaderBinary=_glShaderBinary,_glShaderBinary.sig="v",Module._glReleaseShaderCompiler=_glReleaseShaderCompiler,_glReleaseShaderCompiler.sig="v",Module._glGetError=_glGetError,_glGetError.sig="i",Module._glVertexAttribDivisor=_glVertexAttribDivisor,_glVertexAttribDivisor.sig="vii",Module._glDrawArraysInstanced=_glDrawArraysInstanced,_glDrawArraysInstanced.sig="viiii",Module._glDrawElementsInstanced=_glDrawElementsInstanced,_glDrawElementsInstanced.sig="viiiii",Module._glVertexAttribDivisorNV=_glVertexAttribDivisorNV,_glVertexAttribDivisorNV.sig="vii",Module._glDrawArraysInstancedNV=_glDrawArraysInstancedNV,_glDrawArraysInstancedNV.sig="viiii",Module._glDrawElementsInstancedNV=_glDrawElementsInstancedNV,_glDrawElementsInstancedNV.sig="viiiii",Module._glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT,_glVertexAttribDivisorEXT.sig="vii",Module._glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT,_glDrawArraysInstancedEXT.sig="viiii",Module._glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT,_glDrawElementsInstancedEXT.sig="viiiii",Module._glVertexAttribDivisorARB=_glVertexAttribDivisorARB,_glVertexAttribDivisorARB.sig="vii",Module._glDrawArraysInstancedARB=_glDrawArraysInstancedARB,_glDrawArraysInstancedARB.sig="viiii",Module._glDrawElementsInstancedARB=_glDrawElementsInstancedARB,_glDrawElementsInstancedARB.sig="viiiii",Module._glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE,_glVertexAttribDivisorANGLE.sig="vii",Module._glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE,_glDrawArraysInstancedANGLE.sig="viiii",Module._glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE,_glDrawElementsInstancedANGLE.sig="viiiii",Module._glDrawBuffers=_glDrawBuffers,_glDrawBuffers.sig="vii",Module._glDrawBuffersEXT=_glDrawBuffersEXT,_glDrawBuffersEXT.sig="vii",Module._glDrawBuffersWEBGL=_glDrawBuffersWEBGL,_glDrawBuffersWEBGL.sig="vii",Module._glColorMask=_glColorMask,_glColorMask.sig="viiii",Module._glDepthMask=_glDepthMask,_glDepthMask.sig="vi",Module._glSampleCoverage=_glSampleCoverage,_glSampleCoverage.sig="vii",Module._glMultiDrawArrays=_glMultiDrawArrays,_glMultiDrawArrays.sig="viiii",Module._glMultiDrawArraysANGLE=_glMultiDrawArraysANGLE,_glMultiDrawArraysANGLE.sig="viiii",Module._glMultiDrawArraysWEBGL=_glMultiDrawArraysWEBGL,_glMultiDrawArraysWEBGL.sig="viiii",Module._glMultiDrawArraysInstancedANGLE=_glMultiDrawArraysInstancedANGLE,_glMultiDrawArraysInstancedANGLE.sig="viiiii",Module._glMultiDrawArraysInstancedWEBGL=_glMultiDrawArraysInstancedWEBGL,_glMultiDrawArraysInstancedWEBGL.sig="viiiii",Module._glMultiDrawElements=_glMultiDrawElements,_glMultiDrawElements.sig="viiiii",Module._glMultiDrawElementsANGLE=_glMultiDrawElementsANGLE,_glMultiDrawElementsANGLE.sig="viiiii",Module._glMultiDrawElementsWEBGL=_glMultiDrawElementsWEBGL,_glMultiDrawElementsWEBGL.sig="viiiii",Module._glMultiDrawElementsInstancedANGLE=_glMultiDrawElementsInstancedANGLE,_glMultiDrawElementsInstancedANGLE.sig="viiiiii",Module._glMultiDrawElementsInstancedWEBGL=_glMultiDrawElementsInstancedWEBGL,_glMultiDrawElementsInstancedWEBGL.sig="viiiiii",Module._glFinish=_glFinish,_glFinish.sig="v",Module._glFlush=_glFlush,_glFlush.sig="v",Module._glClearDepth=_glClearDepth,_glClearDepth.sig="vi",Module._glClearDepthf=_glClearDepthf,_glClearDepthf.sig="vf",Module._glDepthFunc=_glDepthFunc,_glDepthFunc.sig="vi",Module._glEnable=_glEnable,_glEnable.sig="vi",Module._glDisable=_glDisable,_glDisable.sig="vi",Module._glFrontFace=_glFrontFace,_glFrontFace.sig="vi",Module._glCullFace=_glCullFace,_glCullFace.sig="vi",Module._glClear=_glClear,_glClear.sig="vi",Module._glLineWidth=_glLineWidth,_glLineWidth.sig="vf",Module._glClearStencil=_glClearStencil,_glClearStencil.sig="vi",Module._glStencilMask=_glStencilMask,_glStencilMask.sig="vi",Module._glCheckFramebufferStatus=_glCheckFramebufferStatus,_glCheckFramebufferStatus.sig="ii",Module._glGenerateMipmap=_glGenerateMipmap,_glGenerateMipmap.sig="vi",Module._glActiveTexture=_glActiveTexture,_glActiveTexture.sig="vi",Module._glBlendEquation=_glBlendEquation,_glBlendEquation.sig="vi",Module._glIsEnabled=_glIsEnabled,_glIsEnabled.sig="ii",Module._glBlendFunc=_glBlendFunc,_glBlendFunc.sig="vii",Module._glBlendEquationSeparate=_glBlendEquationSeparate,_glBlendEquationSeparate.sig="vii",Module._glDepthRange=_glDepthRange,_glDepthRange.sig="vii",Module._glDepthRangef=_glDepthRangef,_glDepthRangef.sig="vii",Module._glStencilMaskSeparate=_glStencilMaskSeparate,_glStencilMaskSeparate.sig="vii",Module._glHint=_glHint,_glHint.sig="vii",Module._glPolygonOffset=_glPolygonOffset,_glPolygonOffset.sig="vff",Module._glVertexAttrib1f=_glVertexAttrib1f,_glVertexAttrib1f.sig="vif",Module._glTexParameteri=_glTexParameteri,_glTexParameteri.sig="viii",Module._glTexParameterf=_glTexParameterf,_glTexParameterf.sig="viii",Module._glVertexAttrib2f=_glVertexAttrib2f,_glVertexAttrib2f.sig="viff",Module._glStencilFunc=_glStencilFunc,_glStencilFunc.sig="viii",Module._glStencilOp=_glStencilOp,_glStencilOp.sig="viii",Module._glViewport=_glViewport,_glViewport.sig="viiii",Module._glClearColor=_glClearColor,_glClearColor.sig="vffff",Module._glScissor=_glScissor,_glScissor.sig="viiii",Module._glVertexAttrib3f=_glVertexAttrib3f,_glVertexAttrib3f.sig="vifff",Module._glRenderbufferStorage=_glRenderbufferStorage,_glRenderbufferStorage.sig="viiii",Module._glBlendFuncSeparate=_glBlendFuncSeparate,_glBlendFuncSeparate.sig="viiii",Module._glBlendColor=_glBlendColor,_glBlendColor.sig="vffff",Module._glStencilFuncSeparate=_glStencilFuncSeparate,_glStencilFuncSeparate.sig="viiii",Module._glStencilOpSeparate=_glStencilOpSeparate,_glStencilOpSeparate.sig="viiii",Module._glVertexAttrib4f=_glVertexAttrib4f,_glVertexAttrib4f.sig="viffff",Module._glCopyTexImage2D=_glCopyTexImage2D,_glCopyTexImage2D.sig="viiiiiiii",Module._glCopyTexSubImage2D=_glCopyTexSubImage2D,_glCopyTexSubImage2D.sig="viiiiiiii",Module._emscripten_glGenVertexArrays=_emscripten_glGenVertexArrays,_emscripten_glGenVertexArrays.sig="vii",Module._emscripten_glDeleteVertexArrays=_emscripten_glDeleteVertexArrays,_emscripten_glDeleteVertexArrays.sig="vii",Module._emscripten_glBindVertexArray=_emscripten_glBindVertexArray,_emscripten_glBindVertexArray.sig="vi",Module._emscripten_glIsVertexArray=_emscripten_glIsVertexArray,_emscripten_glIsVertexArray.sig="ii",Module._emscripten_glVertexPointer=_emscripten_glVertexPointer,Module._emscripten_glMatrixMode=_emscripten_glMatrixMode,Module._emscripten_glBegin=_emscripten_glBegin,Module._emscripten_glLoadIdentity=_emscripten_glLoadIdentity,Module._emscripten_glVertexAttribDivisor=_emscripten_glVertexAttribDivisor,_emscripten_glVertexAttribDivisor.sig="vii",Module._emscripten_glDrawArraysInstanced=_emscripten_glDrawArraysInstanced,_emscripten_glDrawArraysInstanced.sig="viiii",Module._emscripten_glDrawElementsInstanced=_emscripten_glDrawElementsInstanced,_emscripten_glDrawElementsInstanced.sig="viiiii",Module._emscripten_glVertexAttribDivisorNV=_emscripten_glVertexAttribDivisorNV,_emscripten_glVertexAttribDivisorNV.sig="vii",Module._emscripten_glDrawArraysInstancedNV=_emscripten_glDrawArraysInstancedNV,_emscripten_glDrawArraysInstancedNV.sig="viiii",Module._emscripten_glDrawElementsInstancedNV=_emscripten_glDrawElementsInstancedNV,_emscripten_glDrawElementsInstancedNV.sig="viiiii",Module._emscripten_glVertexAttribDivisorEXT=_emscripten_glVertexAttribDivisorEXT,_emscripten_glVertexAttribDivisorEXT.sig="vii",Module._emscripten_glDrawArraysInstancedEXT=_emscripten_glDrawArraysInstancedEXT,_emscripten_glDrawArraysInstancedEXT.sig="viiii",Module._emscripten_glDrawElementsInstancedEXT=_emscripten_glDrawElementsInstancedEXT,_emscripten_glDrawElementsInstancedEXT.sig="viiiii",Module._emscripten_glVertexAttribDivisorARB=_emscripten_glVertexAttribDivisorARB,_emscripten_glVertexAttribDivisorARB.sig="vii",Module._emscripten_glDrawArraysInstancedARB=_emscripten_glDrawArraysInstancedARB,_emscripten_glDrawArraysInstancedARB.sig="viiii",Module._emscripten_glDrawElementsInstancedARB=_emscripten_glDrawElementsInstancedARB,_emscripten_glDrawElementsInstancedARB.sig="viiiii",Module._emscripten_glDrawBuffers=_emscripten_glDrawBuffers,_emscripten_glDrawBuffers.sig="vii",Module._emscripten_glDrawBuffersEXT=_emscripten_glDrawBuffersEXT,_emscripten_glDrawBuffersEXT.sig="vii",Module._emscripten_glMultiDrawArrays=_emscripten_glMultiDrawArrays,_emscripten_glMultiDrawArrays.sig="viiii",Module._emscripten_glMultiDrawArraysANGLE=_emscripten_glMultiDrawArraysANGLE,_emscripten_glMultiDrawArraysANGLE.sig="viiii",Module._emscripten_glMultiDrawArraysWEBGL=_emscripten_glMultiDrawArraysWEBGL,_emscripten_glMultiDrawArraysWEBGL.sig="viiii",Module._emscripten_glMultiDrawArraysInstancedANGLE=_emscripten_glMultiDrawArraysInstancedANGLE,_emscripten_glMultiDrawArraysInstancedANGLE.sig="viiiii",Module._emscripten_glMultiDrawArraysInstancedWEBGL=_emscripten_glMultiDrawArraysInstancedWEBGL,_emscripten_glMultiDrawArraysInstancedWEBGL.sig="viiiii",Module._emscripten_glMultiDrawElements=_emscripten_glMultiDrawElements,_emscripten_glMultiDrawElements.sig="viiiii",Module._emscripten_glMultiDrawElementsANGLE=_emscripten_glMultiDrawElementsANGLE,_emscripten_glMultiDrawElementsANGLE.sig="viiiii",Module._emscripten_glMultiDrawElementsWEBGL=_emscripten_glMultiDrawElementsWEBGL,_emscripten_glMultiDrawElementsWEBGL.sig="viiiii",Module._emscripten_glMultiDrawElementsInstancedANGLE=_emscripten_glMultiDrawElementsInstancedANGLE,_emscripten_glMultiDrawElementsInstancedANGLE.sig="viiiiii",Module._emscripten_glMultiDrawElementsInstancedWEBGL=_emscripten_glMultiDrawElementsInstancedWEBGL,_emscripten_glMultiDrawElementsInstancedWEBGL.sig="viiiiii",Module._emscripten_glClearDepth=_emscripten_glClearDepth,_emscripten_glClearDepth.sig="vi",Module._emscripten_glDepthRange=_emscripten_glDepthRange,_emscripten_glDepthRange.sig="vii",Module.writeGLArray=writeGLArray,Module._emscripten_webgl_init_context_attributes=_emscripten_webgl_init_context_attributes;var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _emscripten_webgl_do_create_context(e,t){var _=t>>2,r=HEAP32[_+6],n={alpha:!!HEAP32[_+0],depth:!!HEAP32[_+1],stencil:!!HEAP32[_+2],antialias:!!HEAP32[_+3],premultipliedAlpha:!!HEAP32[_+4],preserveDrawingBuffer:!!HEAP32[_+5],powerPreference:__emscripten_webgl_power_preferences[r],failIfMajorPerformanceCaveat:!!HEAP32[_+7],majorVersion:HEAP32[_+8],minorVersion:HEAP32[_+9],enableExtensionsByDefault:HEAP32[_+10],explicitSwapControl:HEAP32[_+11],proxyContextToMainThread:HEAP32[_+12],renderViaOffscreenBackBuffer:HEAP32[_+13]},o=findCanvasEventTarget(e);return o?n.explicitSwapControl?0:GL.createContext(o,n):0}Module.__emscripten_webgl_power_preferences=__emscripten_webgl_power_preferences,Module._emscripten_webgl_do_create_context=_emscripten_webgl_do_create_context,_emscripten_webgl_do_create_context.sig="iii";var _emscripten_webgl_create_context=_emscripten_webgl_do_create_context;function _emscripten_webgl_do_get_current_context(){return GL.currentContext?GL.currentContext.handle:0}Module._emscripten_webgl_create_context=_emscripten_webgl_create_context,_emscripten_webgl_create_context.sig="iii",Module._emscripten_webgl_do_get_current_context=_emscripten_webgl_do_get_current_context;var _emscripten_webgl_get_current_context=_emscripten_webgl_do_get_current_context;function _emscripten_webgl_do_commit_frame(){return GL.currentContext&&GL.currentContext.GLctx&&GL.currentContext.attributes.explicitSwapControl?0:-3}Module._emscripten_webgl_get_current_context=_emscripten_webgl_get_current_context,_emscripten_webgl_get_current_context.sig="i",Module._emscripten_webgl_do_commit_frame=_emscripten_webgl_do_commit_frame,_emscripten_webgl_do_commit_frame.sig="i";var _emscripten_webgl_commit_frame=_emscripten_webgl_do_commit_frame;function _emscripten_webgl_make_context_current(e){return GL.makeContextCurrent(e)?0:-5}function _emscripten_webgl_get_drawing_buffer_size(e,t,_){var r=GL.getContext(e);return r&&r.GLctx&&t&&_?(HEAP32[t>>2]=r.GLctx.drawingBufferWidth,HEAP32[_>>2]=r.GLctx.drawingBufferHeight,0):-5}function _emscripten_webgl_get_context_attributes(e,t){if(!t)return-5;if(!(e=GL.contexts[e]))return-3;var _=e.GLctx;if(!_)return-3;_=_.getContextAttributes(),HEAP32[t>>2]=_.alpha,HEAP32[t+4>>2]=_.depth,HEAP32[t+8>>2]=_.stencil,HEAP32[t+12>>2]=_.antialias,HEAP32[t+16>>2]=_.premultipliedAlpha,HEAP32[t+20>>2]=_.preserveDrawingBuffer;var r=_.powerPreference&&__emscripten_webgl_power_preferences.indexOf(_.powerPreference);return HEAP32[t+24>>2]=r,HEAP32[t+28>>2]=_.failIfMajorPerformanceCaveat,HEAP32[t+32>>2]=e.version,HEAP32[t+36>>2]=0,HEAP32[t+40>>2]=e.attributes.enableExtensionsByDefault,0}function _emscripten_webgl_destroy_context(e){GL.currentContext==e&&(GL.currentContext=0),GL.deleteContext(e)}function _emscripten_webgl_enable_extension(e,t){var _=GL.getContext(e),r=UTF8ToString(t);return r.startsWith("GL_")&&(r=r.substr(3)),"ANGLE_instanced_arrays"==r&&__webgl_enable_ANGLE_instanced_arrays(GLctx),"OES_vertex_array_object"==r&&__webgl_enable_OES_vertex_array_object(GLctx),"WEBGL_draw_buffers"==r&&__webgl_enable_WEBGL_draw_buffers(GLctx),"WEBGL_multi_draw"==r&&__webgl_enable_WEBGL_multi_draw(GLctx),!!_.GLctx.getExtension(r)}function _emscripten_supports_offscreencanvas(){return 0}function __registerWebGlEventCallback(e,t,_,r,n,o,l){var i={target:findEventTarget(e),eventTypeString:o,callbackfunc:r,handlerFunc:function(e=event){getWasmTableEntry(r)(n,0,t)&&e.preventDefault()},useCapture:_};JSEvents.registerOrRemoveHandler(i)}function _emscripten_set_webglcontextlost_callback_on_thread(e,t,_,r,n){return __registerWebGlEventCallback(e,t,_,r,31,"webglcontextlost",n),0}function _emscripten_set_webglcontextrestored_callback_on_thread(e,t,_,r,n){return __registerWebGlEventCallback(e,t,_,r,32,"webglcontextrestored",n),0}function _emscripten_is_webgl_context_lost(e){return!GL.contexts[e]||GL.contexts[e].GLctx.isContextLost()}function _emscripten_webgl_get_supported_extensions(){return stringToNewUTF8(GLctx.getSupportedExtensions().join(" "))}function _emscripten_webgl_get_program_parameter_d(e,t){return GLctx.getProgramParameter(GL.programs[e],t)}function _emscripten_webgl_get_program_info_log_utf8(e){return stringToNewUTF8(GLctx.getProgramInfoLog(GL.programs[e]))}function _emscripten_webgl_get_shader_parameter_d(e,t){return GLctx.getShaderParameter(GL.shaders[e],t)}function _emscripten_webgl_get_shader_info_log_utf8(e){return stringToNewUTF8(GLctx.getShaderInfoLog(GL.shaders[e]))}function _emscripten_webgl_get_shader_source_utf8(e){return stringToNewUTF8(GLctx.getShaderSource(GL.shaders[e]))}function _emscripten_webgl_get_vertex_attrib_d(e,t){return GLctx.getVertexAttrib(e,t)}function _emscripten_webgl_get_vertex_attrib_o(e,t){var _=GLctx.getVertexAttrib(e,t);return _&&_.name}function _emscripten_webgl_get_vertex_attrib_v(e,t,_,r,n){return writeGLArray(GLctx.getVertexAttrib(e,t),_,r,n)}function _emscripten_webgl_get_uniform_d(e,t){return GLctx.getUniform(GL.programs[e],webglGetUniformLocation(t))}function _emscripten_webgl_get_uniform_v(e,t,_,r,n){return writeGLArray(GLctx.getUniform(GL.programs[e],webglGetUniformLocation(t)),_,r,n)}function _emscripten_webgl_get_parameter_v(e,t,_,r){return writeGLArray(GLctx.getParameter(e),t,_,r)}function _emscripten_webgl_get_parameter_d(e){return GLctx.getParameter(e)}function _emscripten_webgl_get_parameter_o(e){var t=GLctx.getParameter(e);return t&&t.name}function _emscripten_webgl_get_parameter_utf8(e){return stringToNewUTF8(GLctx.getParameter(e))}function _emscripten_webgl_get_parameter_i64v(e,t){writeI53ToI64(t,GLctx.getParameter(e))}Module._emscripten_webgl_commit_frame=_emscripten_webgl_commit_frame,_emscripten_webgl_commit_frame.sig="i",Module._emscripten_webgl_make_context_current=_emscripten_webgl_make_context_current,_emscripten_webgl_make_context_current.sig="ii",Module._emscripten_webgl_get_drawing_buffer_size=_emscripten_webgl_get_drawing_buffer_size,_emscripten_webgl_get_drawing_buffer_size.sig="iiii",Module._emscripten_webgl_get_context_attributes=_emscripten_webgl_get_context_attributes,_emscripten_webgl_get_context_attributes.sig="iii",Module._emscripten_webgl_destroy_context=_emscripten_webgl_destroy_context,_emscripten_webgl_destroy_context.sig="vi",Module._emscripten_webgl_enable_extension=_emscripten_webgl_enable_extension,_emscripten_webgl_enable_extension.sig="iii",Module._emscripten_supports_offscreencanvas=_emscripten_supports_offscreencanvas,Module.__registerWebGlEventCallback=__registerWebGlEventCallback,Module._emscripten_set_webglcontextlost_callback_on_thread=_emscripten_set_webglcontextlost_callback_on_thread,_emscripten_set_webglcontextlost_callback_on_thread.sig="iiiiii",Module._emscripten_set_webglcontextrestored_callback_on_thread=_emscripten_set_webglcontextrestored_callback_on_thread,_emscripten_set_webglcontextrestored_callback_on_thread.sig="iiiiii",Module._emscripten_is_webgl_context_lost=_emscripten_is_webgl_context_lost,_emscripten_is_webgl_context_lost.sig="ii",Module._emscripten_webgl_get_supported_extensions=_emscripten_webgl_get_supported_extensions,_emscripten_webgl_get_supported_extensions.sig="i",Module._emscripten_webgl_get_program_parameter_d=_emscripten_webgl_get_program_parameter_d,_emscripten_webgl_get_program_parameter_d.sig="fii",Module._emscripten_webgl_get_program_info_log_utf8=_emscripten_webgl_get_program_info_log_utf8,_emscripten_webgl_get_program_info_log_utf8.sig="ii",Module._emscripten_webgl_get_shader_parameter_d=_emscripten_webgl_get_shader_parameter_d,_emscripten_webgl_get_shader_parameter_d.sig="fii",Module._emscripten_webgl_get_shader_info_log_utf8=_emscripten_webgl_get_shader_info_log_utf8,_emscripten_webgl_get_shader_info_log_utf8.sig="ii",Module._emscripten_webgl_get_shader_source_utf8=_emscripten_webgl_get_shader_source_utf8,_emscripten_webgl_get_shader_source_utf8.sig="ii",Module._emscripten_webgl_get_vertex_attrib_d=_emscripten_webgl_get_vertex_attrib_d,_emscripten_webgl_get_vertex_attrib_d.sig="iii",Module._emscripten_webgl_get_vertex_attrib_o=_emscripten_webgl_get_vertex_attrib_o,_emscripten_webgl_get_vertex_attrib_o.sig="iii",Module._emscripten_webgl_get_vertex_attrib_v=_emscripten_webgl_get_vertex_attrib_v,_emscripten_webgl_get_vertex_attrib_v.sig="iiiiii",Module._emscripten_webgl_get_uniform_d=_emscripten_webgl_get_uniform_d,_emscripten_webgl_get_uniform_d.sig="fii",Module._emscripten_webgl_get_uniform_v=_emscripten_webgl_get_uniform_v,_emscripten_webgl_get_uniform_v.sig="iiiiii",Module._emscripten_webgl_get_parameter_v=_emscripten_webgl_get_parameter_v,_emscripten_webgl_get_parameter_v.sig="iiiii",Module._emscripten_webgl_get_parameter_d=_emscripten_webgl_get_parameter_d,_emscripten_webgl_get_parameter_d.sig="fi",Module._emscripten_webgl_get_parameter_o=_emscripten_webgl_get_parameter_o,_emscripten_webgl_get_parameter_o.sig="ii",Module._emscripten_webgl_get_parameter_utf8=_emscripten_webgl_get_parameter_utf8,_emscripten_webgl_get_parameter_utf8.sig="ii",Module._emscripten_webgl_get_parameter_i64v=_emscripten_webgl_get_parameter_i64v,_emscripten_webgl_get_parameter_i64v.sig="vii";var EGL={errorCode:12288,defaultDisplayInitialized:!1,currentContext:0,currentReadSurface:0,currentDrawSurface:0,contextAttributes:{alpha:!1,depth:!1,stencil:!1,antialias:!1},stringCache:{},setErrorCode:function(e){EGL.errorCode=e},chooseConfig:function(e,t,_,r,n){if(62e3!=e)return EGL.setErrorCode(12296),0;if(t)for(;;){var o=HEAP32[t>>2];if(12321==o){var l=HEAP32[t+4>>2];EGL.contextAttributes.alpha=l>0}else if(12325==o){var i=HEAP32[t+4>>2];EGL.contextAttributes.depth=i>0}else if(12326==o){var a=HEAP32[t+4>>2];EGL.contextAttributes.stencil=a>0}else if(12337==o){var u=HEAP32[t+4>>2];EGL.contextAttributes.antialias=u>0}else if(12338==o){u=HEAP32[t+4>>2];EGL.contextAttributes.antialias=1==u}else if(12544==o){var s=HEAP32[t+4>>2];EGL.contextAttributes.lowLatency=12547!=s}else if(12344==o)break;t+=8}return _&&r||n?(n&&(HEAP32[n>>2]=1),_&&r>0&&(HEAP32[_>>2]=62002),EGL.setErrorCode(12288),1):(EGL.setErrorCode(12300),0)}};function _eglGetDisplay(e){return EGL.setErrorCode(12288),62e3}function _eglInitialize(e,t,_){return 62e3!=e?(EGL.setErrorCode(12296),0):(t&&(HEAP32[t>>2]=1),_&&(HEAP32[_>>2]=4),EGL.defaultDisplayInitialized=!0,EGL.setErrorCode(12288),1)}function _eglTerminate(e){return 62e3!=e?(EGL.setErrorCode(12296),0):(EGL.currentContext=0,EGL.currentReadSurface=0,EGL.currentDrawSurface=0,EGL.defaultDisplayInitialized=!1,EGL.setErrorCode(12288),1)}function _eglGetConfigs(e,t,_,r){return EGL.chooseConfig(e,0,t,_,r)}function _eglChooseConfig(e,t,_,r,n){return EGL.chooseConfig(e,t,_,r,n)}function _eglGetConfigAttrib(e,t,_,r){if(62e3!=e)return EGL.setErrorCode(12296),0;if(62002!=t)return EGL.setErrorCode(12293),0;if(!r)return EGL.setErrorCode(12300),0;switch(EGL.setErrorCode(12288),_){case 12320:return HEAP32[r>>2]=EGL.contextAttributes.alpha?32:24,1;case 12321:return HEAP32[r>>2]=EGL.contextAttributes.alpha?8:0,1;case 12322:case 12323:case 12324:return HEAP32[r>>2]=8,1;case 12325:return HEAP32[r>>2]=EGL.contextAttributes.depth?24:0,1;case 12326:return HEAP32[r>>2]=EGL.contextAttributes.stencil?8:0,1;case 12327:case 12335:case 12340:return HEAP32[r>>2]=12344,1;case 12328:return HEAP32[r>>2]=62002,1;case 12329:case 12333:case 12334:case 12345:case 12346:case 12347:case 12349:case 12350:case 12354:return HEAP32[r>>2]=0,1;case 12330:case 12332:return HEAP32[r>>2]=4096,1;case 12331:return HEAP32[r>>2]=16777216,1;case 12337:return HEAP32[r>>2]=EGL.contextAttributes.antialias?4:0,1;case 12338:return HEAP32[r>>2]=EGL.contextAttributes.antialias?1:0,1;case 12339:case 12352:return HEAP32[r>>2]=4,1;case 12341:case 12342:case 12343:return HEAP32[r>>2]=-1,1;case 12348:return HEAP32[r>>2]=1,1;case 12351:return HEAP32[r>>2]=12430,1;default:return EGL.setErrorCode(12292),0}}function _eglCreateWindowSurface(e,t,_,r){return 62e3!=e?(EGL.setErrorCode(12296),0):62002!=t?(EGL.setErrorCode(12293),0):(EGL.setErrorCode(12288),62006)}function _eglDestroySurface(e,t){return 62e3!=e?(EGL.setErrorCode(12296),0):62006!=t?(EGL.setErrorCode(12301),1):(EGL.currentReadSurface==t&&(EGL.currentReadSurface=0),EGL.currentDrawSurface==t&&(EGL.currentDrawSurface=0),EGL.setErrorCode(12288),1)}function _eglCreateContext(e,t,_,r){if(62e3!=e)return EGL.setErrorCode(12296),0;for(var n=1;;){var o=HEAP32[r>>2];if(12440!=o){if(12344==o)break;return EGL.setErrorCode(12292),0}n=HEAP32[r+4>>2],r+=8}return 2!=n?(EGL.setErrorCode(12293),0):(EGL.contextAttributes.majorVersion=n-1,EGL.contextAttributes.minorVersion=0,EGL.context=GL.createContext(Module.canvas,EGL.contextAttributes),0!=EGL.context?(EGL.setErrorCode(12288),GL.makeContextCurrent(EGL.context),Module.useWebGL=!0,Browser.moduleContextCreatedCallbacks.forEach((function(e){e()})),GL.makeContextCurrent(null),62004):(EGL.setErrorCode(12297),0))}function _eglDestroyContext(e,t){return 62e3!=e?(EGL.setErrorCode(12296),0):62004!=t?(EGL.setErrorCode(12294),0):(GL.deleteContext(EGL.context),EGL.setErrorCode(12288),EGL.currentContext==t&&(EGL.currentContext=0),1)}function _eglQuerySurface(e,t,_,r){if(62e3!=e)return EGL.setErrorCode(12296),0;if(62006!=t)return EGL.setErrorCode(12301),0;if(!r)return EGL.setErrorCode(12300),0;switch(EGL.setErrorCode(12288),_){case 12328:return HEAP32[r>>2]=62002,1;case 12376:case 12416:case 12417:case 12418:case 12419:return 1;case 12375:return HEAP32[r>>2]=Module.canvas.width,1;case 12374:return HEAP32[r>>2]=Module.canvas.height,1;case 12432:case 12433:case 12434:return HEAP32[r>>2]=-1,1;case 12422:return HEAP32[r>>2]=12420,1;case 12441:return HEAP32[r>>2]=12442,1;case 12435:return HEAP32[r>>2]=12437,1;default:return EGL.setErrorCode(12292),0}}function _eglQueryContext(e,t,_,r){if(62e3!=e)return EGL.setErrorCode(12296),0;if(62004!=t)return EGL.setErrorCode(12294),0;if(!r)return EGL.setErrorCode(12300),0;switch(EGL.setErrorCode(12288),_){case 12328:return HEAP32[r>>2]=62002,1;case 12439:return HEAP32[r>>2]=12448,1;case 12440:return HEAP32[r>>2]=EGL.contextAttributes.majorVersion+1,1;case 12422:return HEAP32[r>>2]=12420,1;default:return EGL.setErrorCode(12292),0}}function _eglGetError(){return EGL.errorCode}function _eglQueryString(e,t){if(62e3!=e)return EGL.setErrorCode(12296),0;if(EGL.setErrorCode(12288),EGL.stringCache[t])return EGL.stringCache[t];var _;switch(t){case 12371:_=allocateUTF8("Emscripten");break;case 12372:_=allocateUTF8("1.4 Emscripten EGL");break;case 12373:_=allocateUTF8("");break;case 12429:_=allocateUTF8("OpenGL_ES");break;default:return EGL.setErrorCode(12300),0}return EGL.stringCache[t]=_,_}function _eglBindAPI(e){return 12448==e?(EGL.setErrorCode(12288),1):(EGL.setErrorCode(12300),0)}function _eglQueryAPI(){return EGL.setErrorCode(12288),12448}function _eglWaitClient(){return EGL.setErrorCode(12288),1}function _eglWaitNative(e){return EGL.setErrorCode(12288),1}Module.EGL=EGL,Module._eglGetDisplay=_eglGetDisplay,_eglGetDisplay.sig="ii",Module._eglInitialize=_eglInitialize,_eglInitialize.sig="iiii",Module._eglTerminate=_eglTerminate,_eglTerminate.sig="ii",Module._eglGetConfigs=_eglGetConfigs,_eglGetConfigs.sig="iiiii",Module._eglChooseConfig=_eglChooseConfig,_eglChooseConfig.sig="iiiiii",Module._eglGetConfigAttrib=_eglGetConfigAttrib,_eglGetConfigAttrib.sig="iiiii",Module._eglCreateWindowSurface=_eglCreateWindowSurface,_eglCreateWindowSurface.sig="iiiii",Module._eglDestroySurface=_eglDestroySurface,_eglDestroySurface.sig="iii",Module._eglCreateContext=_eglCreateContext,_eglCreateContext.sig="iiiii",Module._eglDestroyContext=_eglDestroyContext,_eglDestroyContext.sig="iii",Module._eglQuerySurface=_eglQuerySurface,_eglQuerySurface.sig="iiiii",Module._eglQueryContext=_eglQueryContext,_eglQueryContext.sig="iiiii",Module._eglGetError=_eglGetError,_eglGetError.sig="i",Module._eglQueryString=_eglQueryString,_eglQueryString.sig="iii",Module._eglBindAPI=_eglBindAPI,_eglBindAPI.sig="ii",Module._eglQueryAPI=_eglQueryAPI,_eglQueryAPI.sig="i",Module._eglWaitClient=_eglWaitClient,_eglWaitClient.sig="i",Module._eglWaitNative=_eglWaitNative,_eglWaitNative.sig="ii";var _eglWaitGL=_eglWaitClient;function _eglSwapInterval(e,t){return 62e3!=e?(EGL.setErrorCode(12296),0):(0==t?_emscripten_set_main_loop_timing(0,0):_emscripten_set_main_loop_timing(1,t),EGL.setErrorCode(12288),1)}function _eglMakeCurrent(e,t,_,r){return 62e3!=e?(EGL.setErrorCode(12296),0):0!=r&&62004!=r?(EGL.setErrorCode(12294),0):0!=_&&62006!=_||0!=t&&62006!=t?(EGL.setErrorCode(12301),0):(GL.makeContextCurrent(r?EGL.context:null),EGL.currentContext=r,EGL.currentDrawSurface=t,EGL.currentReadSurface=_,EGL.setErrorCode(12288),1)}function _eglGetCurrentContext(){return EGL.currentContext}function _eglGetCurrentSurface(e){return 12378==e?EGL.currentReadSurface:12377==e?EGL.currentDrawSurface:(EGL.setErrorCode(12300),0)}function _eglGetCurrentDisplay(){return EGL.currentContext?62e3:0}function _eglSwapBuffers(){if(EGL.defaultDisplayInitialized)if(Module.ctx){if(!Module.ctx.isContextLost())return EGL.setErrorCode(12288),1;EGL.setErrorCode(12302)}else EGL.setErrorCode(12290);else EGL.setErrorCode(12289);return 0}function _eglReleaseThread(){return EGL.currentContext=0,EGL.currentReadSurface=0,EGL.currentDrawSurface=0,EGL.setErrorCode(12288),1}Module._eglWaitGL=_eglWaitGL,Module._eglSwapInterval=_eglSwapInterval,_eglSwapInterval.sig="iii",Module._eglMakeCurrent=_eglMakeCurrent,_eglMakeCurrent.sig="iiiii",Module._eglGetCurrentContext=_eglGetCurrentContext,_eglGetCurrentContext.sig="i",Module._eglGetCurrentSurface=_eglGetCurrentSurface,_eglGetCurrentSurface.sig="ii",Module._eglGetCurrentDisplay=_eglGetCurrentDisplay,_eglGetCurrentDisplay.sig="i",Module._eglSwapBuffers=_eglSwapBuffers,_eglSwapBuffers.sig="iii",Module._eglReleaseThread=_eglReleaseThread,_eglReleaseThread.sig="i";var FSNode=function(e,t,_,r){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=FS.nextInode++,this.name=t,this.mode=_,this.node_ops={},this.stream_ops={},this.rdev=r},readMode=365,writeMode=146,GLctx;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(e){e?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(e){e?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}}),FS.FSNode=FSNode,FS.staticInit(),Module.FS_createPath=FS.createPath,Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile,Module.FS_unlink=FS.unlink,Module.FS_createLazyFile=FS.createLazyFile,Module.FS_createDevice=FS.createDevice,ENVIRONMENT_IS_NODE&&NODEFS.staticInit(),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};for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));for(var miniTempWebGLFloatBuffersStorage=new Float32Array(288),i=0;i<288;++i)miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1);for(var __miniTempWebGLIntBuffersStorage=new Int32Array(288),i=0,emSetImmediate,emClearImmediate;i<288;++i)__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1);if("undefined"!=typeof setImmediate)emSetImmediate=setImmediateWrapped,emClearImmediate=clearImmediateWrapped;else if("function"==typeof addEventListener){var __setImmediate_id_counter=0,__setImmediate_queue=[],__setImmediate_message_id="_si",__setImmediate_cb=e=>{e.data===__setImmediate_message_id&&(e.stopPropagation(),__setImmediate_queue.shift()(),++__setImmediate_id_counter)};addEventListener("message",__setImmediate_cb,!0),emSetImmediate=e=>(postMessage(__setImmediate_message_id,"*"),__setImmediate_id_counter+__setImmediate_queue.push(e)-1),emClearImmediate=e=>{var t=e-__setImmediate_id_counter;t>=0&&t<__setImmediate_queue.length&&(__setImmediate_queue[t]=()=>{})}}Module.requestFullscreen=function(e,t){Browser.requestFullscreen(e,t)},Module.requestAnimationFrame=function(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function(e,t,_){Browser.setCanvasSize(e,t,_)},Module.pauseMainLoop=function(){Browser.mainLoop.pause()},Module.resumeMainLoop=function(){Browser.mainLoop.resume()},Module.getUserMedia=function(){Browser.getUserMedia()},Module.createContext=function(e,t,_,r){return Browser.createContext(e,t,_,r)};var preloadedWasm={},preloadedImages={},preloadedAudios={},decodeBase64="function"==typeof atob?atob:function(e){var t,_,r,n,o,l,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a="",u=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{t=i.indexOf(e.charAt(u++))<<2|(n=i.indexOf(e.charAt(u++)))>>4,_=(15&n)<<4|(o=i.indexOf(e.charAt(u++)))>>2,r=(3&o)<<6|(l=i.indexOf(e.charAt(u++))),a+=String.fromCharCode(t),64!==o&&(a+=String.fromCharCode(_)),64!==l&&(a+=String.fromCharCode(r))}while(u>2;e.forEach((e=>{HEAP32[n++]=allocateUTF8OnStack(e)})),HEAP32[n]=0;try{var o=t(_,r);return exitJS(o,!0),o}catch(e){return handleException(e)}}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.FS_createPath=FS.createPath,Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile,Module.FS_createLazyFile=FS.createLazyFile,Module.FS_createDevice=FS.createDevice,Module.FS_unlink=FS.unlink,Module.stackAlloc=stackAlloc,Module.stackSave=stackSave,Module.stackRestore=stackRestore,Module.LZ4=LZ4,dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)};var dylibsLoaded=!1;function run(e=arguments_){function t(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),readyPromiseResolve(Module),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(e),postRun()))}runDependencies>0||!dylibsLoaded&&(preloadDylibs(),dylibsLoaded=!0,runDependencies>0)||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t()))}if(LDSO.init(),Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),run(),_createPyodideModule.ready}})();globalThis._createPyodideModule=_createPyodideModule;