From 27fe25451d73a2c54fed16bf4938e0cced7ba6d2 Mon Sep 17 00:00:00 2001 From: Sander Mertens Date: Fri, 1 Nov 2024 15:55:31 -0700 Subject: [PATCH] Fix z-fighting issue with lantern --- deps/flecs.c | 47 ++++++++++++++++++++++++++++++---------- etc/assets/scene.flecs | 2 +- etc/flecs_explorer.js | 2 +- etc/flecs_explorer.wasm | Bin 1007067 -> 1007164 bytes 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/deps/flecs.c b/deps/flecs.c index adef84c..550fbeb 100644 --- a/deps/flecs.c +++ b/deps/flecs.c @@ -927,12 +927,13 @@ typedef struct ecs_store_t { /* Records cache */ ecs_vec_t records; - /* Stack of ids being deleted. */ + /* Stack of ids being deleted during cleanup action. */ ecs_vec_t marked_ids; /* vector */ - - /* Entity ids associated with depth (for flat hierarchies) */ - ecs_vec_t depth_ids; - ecs_map_t entity_to_depth; /* What it says */ + + /* Components deleted during cleanup action. Used to delay cleaning up of + * type info so it's guaranteed that this data is available while the + * storage is cleaning up tables. */ + ecs_vec_t deleted_components; /* vector */ } ecs_store_t; /* fini actions */ @@ -3698,7 +3699,19 @@ void flecs_on_component(ecs_iter_t *it) { flecs_assert_relation_unused(world, e, ecs_id(EcsComponent)); } } else if (it->event == EcsOnRemove) { - flecs_type_info_free(world, e); + #ifdef FLECS_DEBUG + if (ecs_should_log(0)) { + char *path = ecs_get_path(world, e); + ecs_trace("unregistering component '%s'", path); + ecs_os_free(path); + } + #endif + if (!ecs_vec_count(&world->store.marked_ids)) { + flecs_type_info_free(world, e); + } else { + ecs_vec_append_t(&world->allocator, + &world->store.deleted_components, ecs_entity_t)[0] = e; + } } } } @@ -7735,7 +7748,7 @@ void flecs_on_delete( /* Cleanup can happen recursively. If a cleanup action is already in * progress, only append ids to the marked_ids. The topmost cleanup * frame will handle the actual cleanup. */ - int32_t count = ecs_vec_count(&world->store.marked_ids); + int32_t i, count = ecs_vec_count(&world->store.marked_ids); /* Make sure we're evaluating a consistent list of non-empty tables */ ecs_run_aperiodic(world, EcsAperiodicEmptyTables); @@ -7760,7 +7773,7 @@ void flecs_on_delete( /* Verify deleted ids are no longer in use */ #ifdef FLECS_DEBUG ecs_marked_id_t *ids = ecs_vec_first(&world->store.marked_ids); - int32_t i; count = ecs_vec_count(&world->store.marked_ids); + count = ecs_vec_count(&world->store.marked_ids); for (i = 0; i < count; i ++) { ecs_assert(!ecs_id_in_use(world, ids[i].id), ECS_INTERNAL_ERROR, NULL); @@ -7771,6 +7784,14 @@ void flecs_on_delete( /* Ids are deleted, clear stack */ ecs_vec_clear(&world->store.marked_ids); + /* If any components got deleted, cleanup type info. Delaying this + * ensures that type info remains available during cleanup. */ + count = ecs_vec_count(&world->store.deleted_components); + ecs_entity_t *comps = ecs_vec_first(&world->store.deleted_components); + for (i = 0; i < count; i ++) { + flecs_type_info_free(world, comps[i]); + } + ecs_log_pop_2(); } } @@ -18198,8 +18219,7 @@ void flecs_init_store( ecs_allocator_t *a = &world->allocator; ecs_vec_init_t(a, &world->store.records, ecs_table_record_t, 0); ecs_vec_init_t(a, &world->store.marked_ids, ecs_marked_id_t, 0); - ecs_vec_init_t(a, &world->store.depth_ids, ecs_entity_t, 0); - ecs_map_init(&world->store.entity_to_depth, &world->allocator); + ecs_vec_init_t(a, &world->store.deleted_components, ecs_entity_t, 0); /* Initialize entity index */ flecs_entities_init(world); @@ -18336,8 +18356,7 @@ void flecs_fini_store(ecs_world_t *world) { ecs_allocator_t *a = &world->allocator; ecs_vec_fini_t(a, &world->store.records, ecs_table_record_t); ecs_vec_fini_t(a, &world->store.marked_ids, ecs_marked_id_t); - ecs_vec_fini_t(a, &world->store.depth_ids, ecs_entity_t); - ecs_map_fini(&world->store.entity_to_depth); + ecs_vec_fini_t(a, &world->store.deleted_components, ecs_entity_t); } static @@ -19391,6 +19410,9 @@ void flecs_type_info_fini( ecs_os_free(ECS_CONST_CAST(char*, ti->name)); ti->name = NULL; } + + ti->size = 0; + ti->alignment = 0; } void flecs_type_info_free( @@ -37167,6 +37189,7 @@ void flecs_table_fini_data( table->data.entities = NULL; table->data.size = 0; } + table->data.count = 0; if (deactivate && count) { diff --git a/etc/assets/scene.flecs b/etc/assets/scene.flecs index 8a2ecbf..3d57d4c 100644 --- a/etc/assets/scene.flecs +++ b/etc/assets/scene.flecs @@ -73,7 +73,7 @@ template Lantern { } LanternLight : materials.Light { - Position3: {0, -0.1, -0.4} + Position3: {0, -0.1, -0.45} Box: {0.2, 0.2, 0.2} } } diff --git a/etc/flecs_explorer.js b/etc/flecs_explorer.js index 00a369a..96b2dc1 100644 --- a/etc/flecs_explorer.js +++ b/etc/flecs_explorer.js @@ -5,7 +5,7 @@ var flecs_explorer = (() => { return ( function(moduleArg = {}) { -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="flecs_explorer.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["Yb"];updateMemoryViews();wasmTable=wasmExports["lc"];addOnInit(wasmExports["Zb"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function sapp_js_create_textfield(){const _sapp_inp=document.createElement("input");_sapp_inp.type="text";_sapp_inp.id="_sokol_app_input_element";_sapp_inp.autocapitalize="none";_sapp_inp.addEventListener("focusout",function(_sapp_event){__sapp_emsc_notify_keyboard_hidden()});document.body.append(_sapp_inp)}function sapp_js_focus_textfield(){document.getElementById("_sokol_app_input_element").focus()}function sapp_js_unfocus_textfield(){document.getElementById("_sokol_app_input_element").blur()}function sapp_js_add_beforeunload_listener(){Module.sokol_beforeunload=event=>{if(__sapp_html5_get_ask_leave_site()!=0){event.preventDefault();event.returnValue=" "}};window.addEventListener("beforeunload",Module.sokol_beforeunload)}function sapp_js_remove_beforeunload_listener(){window.removeEventListener("beforeunload",Module.sokol_beforeunload)}function sapp_js_add_clipboard_listener(){Module.sokol_paste=event=>{const pasted_str=event.clipboardData.getData("text");withStackSave(()=>{const cstr=allocateUTF8OnStack(pasted_str);__sapp_emsc_onpaste(cstr)})};window.addEventListener("paste",Module.sokol_paste)}function sapp_js_remove_clipboard_listener(){window.removeEventListener("paste",Module.sokol_paste)}function sapp_js_add_dragndrop_listeners(canvas_name_cstr){Module.sokol_drop_files=[];const canvas_name=UTF8ToString(canvas_name_cstr);const canvas=document.getElementById(canvas_name);Module.sokol_dragenter=event=>{event.stopPropagation();event.preventDefault()};Module.sokol_dragleave=event=>{event.stopPropagation();event.preventDefault()};Module.sokol_dragover=event=>{event.stopPropagation();event.preventDefault()};Module.sokol_drop=event=>{event.stopPropagation();event.preventDefault();const files=event.dataTransfer.files;Module.sokol_dropped_files=files;__sapp_emsc_begin_drop(files.length);for(let i=0;i{const cstr=allocateUTF8OnStack(files[i].name);__sapp_emsc_drop(i,cstr)})}__sapp_emsc_end_drop(event.clientX,event.clientY)};canvas.addEventListener("dragenter",Module.sokol_dragenter,false);canvas.addEventListener("dragleave",Module.sokol_dragleave,false);canvas.addEventListener("dragover",Module.sokol_dragover,false);canvas.addEventListener("drop",Module.sokol_drop,false)}function sapp_js_remove_dragndrop_listeners(canvas_name_cstr){const canvas_name=UTF8ToString(canvas_name_cstr);const canvas=document.getElementById(canvas_name);canvas.removeEventListener("dragenter",Module.sokol_dragenter);canvas.removeEventListener("dragleave",Module.sokol_dragleave);canvas.removeEventListener("dragover",Module.sokol_dragover);canvas.removeEventListener("drop",Module.sokol_drop)}function sapp_js_add_capture_keyboard_events(){Module.sokol_capture_keyboard_events=function(capture){__sapp_emsc_capture_keyboard_events(capture)}}function sapp_js_init(c_str_target){const target_str=UTF8ToString(c_str_target);Module.sapp_emsc_target=document.getElementById(target_str);if(!Module.sapp_emsc_target){console.log("sokol_app.h: invalid target:"+target_str)}if(!Module.sapp_emsc_target.requestPointerLock){console.log("sokol_app.h: target doesn't support requestPointerLock:"+target_str)}}function sapp_js_request_pointerlock(){if(Module.sapp_emsc_target){if(Module.sapp_emsc_target.requestPointerLock){Module.sapp_emsc_target.requestPointerLock()}}}function slog_js_log(level,c_str){const str=UTF8ToString(c_str);switch(level){case 0:console.error(str);break;case 1:console.error(str);break;case 2:console.warn(str);break;default:console.info(str);break}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!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 node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn);var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i0,ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={mount(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var setErrNo=value=>{HEAP32[___errno_location()>>2]=value;return value};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var jstoi_q=str=>parseInt(str);var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}};var getSocketAddress=(addrp,addrlen,allowNull)=>{if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=true;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_date_now=()=>Date.now();var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={inEventHandler:0,removeAllEventListeners(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _emscripten_request_animation_frame_loop=(cb,userData)=>{function tick(timeStamp){if(getWasmTableEntry(cb)(timeStamp,userData)){requestAnimationFrame(tick)}}return requestAnimationFrame(tick)};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var findCanvasEventTarget=target=>findEventTarget(target);var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerPointerlockErrorEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var pointerlockErrorEventHandlerFunc=(e=event)=>{if(getWasmTableEntry(callbackfunc)(eventTypeId,0,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockErrorEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockerror_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"mozpointerlockerror",targetThread);registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"webkitpointerlockerror",targetThread);registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"mspointerlockerror",targetThread);return registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"pointerlockerror",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{var source="";for(var i=0;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:context=>{if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var registerWebGlEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var webGlEventHandlerFunc=(e=event)=>{if(getWasmTableEntry(callbackfunc)(eventTypeId,0,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:webGlEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_webglcontextlost_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{registerWebGlEventCallback(target,userData,useCapture,callbackfunc,31,"webglcontextlost",targetThread);return 0};var _emscripten_set_webglcontextrestored_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{registerWebGlEventCallback(target,userData,useCapture,callbackfunc,32,"webglcontextrestored",targetThread);return 0};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var emscripten_webgl_power_preferences=["default","low-power","high-performance"];var _emscripten_webgl_do_create_context=(target,attributes)=>{var a=attributes>>2;var powerPreference=HEAP32[a+(24>>2)];var contextAttributes={"alpha":!!HEAP32[a+(0>>2)],"depth":!!HEAP32[a+(4>>2)],"stencil":!!HEAP32[a+(8>>2)],"antialias":!!HEAP32[a+(12>>2)],"premultipliedAlpha":!!HEAP32[a+(16>>2)],"preserveDrawingBuffer":!!HEAP32[a+(20>>2)],"powerPreference":emscripten_webgl_power_preferences[powerPreference],"failIfMajorPerformanceCaveat":!!HEAP32[a+(28>>2)],majorVersion:HEAP32[a+(32>>2)],minorVersion:HEAP32[a+(36>>2)],enableExtensionsByDefault:HEAP32[a+(40>>2)],explicitSwapControl:HEAP32[a+(44>>2)],proxyContextToMainThread:HEAP32[a+(48>>2)],renderViaOffscreenBackBuffer:HEAP32[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle};var _emscripten_webgl_create_context=_emscripten_webgl_do_create_context;var _emscripten_webgl_enable_extension=(contextHandle,extension)=>{var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith("GL_"))extString=extString.substr(3);if(extString=="ANGLE_instanced_arrays")webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString=="OES_vertex_array_object")webgl_enable_OES_vertex_array_object(GLctx);if(extString=="WEBGL_draw_buffers")webgl_enable_WEBGL_draw_buffers(GLctx);if(extString=="WEBGL_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw")webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext};var _emscripten_webgl_init_context_attributes=attributes=>{var a=attributes>>2;for(var i=0;i<56>>2;++i){HEAP32[a+i]=0}HEAP32[a+(0>>2)]=HEAP32[a+(4>>2)]=HEAP32[a+(12>>2)]=HEAP32[a+(16>>2)]=HEAP32[a+(32>>2)]=HEAP32[a+(40>>2)]=1};var _emscripten_webgl_make_context_current=contextHandle=>{var success=GL.makeContextCurrent(contextHandle);return success?0:-5};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _getnameinfo=(sa,salen,node,nodelen,serv,servlen,flags)=>{var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0};function _glActiveTexture(x0){GLctx.activeTexture(x0)}var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};function _glBlendColor(x0,x1,x2,x3){GLctx.blendColor(x0,x1,x2,x3)}function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}};var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)}function _glClear(x0){GLctx.clear(x0)}function _glClearBufferfi(x0,x1,x2,x3){GLctx.clearBufferfi(x0,x1,x2,x3)}var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx.clearDepth(x0)}function _glClearStencil(x0){GLctx.clearStencil(x0)}var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};function _glCullFace(x0){GLctx.cullFace(x0)}var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};function _glDepthFunc(x0){GLctx.depthFunc(x0)}var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};function _glDisable(x0){GLctx.disable(x0)}var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};function _glEnable(x0){GLctx.enable(x0)}var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};function _glFrontFace(x0){GLctx.frontFace(x0)}var __glGenObject=(n,buffers,createFunction,objectTable)=>{for(var i=0;i>2]=id}};var _glGenBuffers=(n,buffers)=>{__glGenObject(n,buffers,"createBuffer",GL.buffers)};var _glGenFramebuffers=(n,ids)=>{__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)};var _glGenRenderbuffers=(n,renderbuffers)=>{__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _glGenTextures=(n,textures)=>{__glGenObject(n,textures,"createTexture",GL.textures)};function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}};var _glGetIntegerv=(name_,p)=>{emscriptenWebGLGet(name_,p,0)};var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(e=>"GL_"+e));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion="OpenGL ES 3.0 ("+glVersion+")";else{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};function _glPolygonOffset(x0,x1){GLctx.polygonOffset(x0,x1)}function _glReadBuffer(x0){GLctx.readBuffer(x0)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx.renderbufferStorage(x0,x1,x2,x3)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)}function _glScissor(x0,x1,x2,x3){GLctx.scissor(x0,x1,x2,x3)}var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};function _glStencilFunc(x0,x1,x2){GLctx.stencilFunc(x0,x1,x2)}function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx.stencilFuncSeparate(x0,x1,x2,x3)}function _glStencilMask(x0){GLctx.stencilMask(x0)}function _glStencilOp(x0,x1,x2){GLctx.stencilOp(x0,x1,x2)}function _glStencilOpSeparate(x0,x1,x2,x3){GLctx.stencilOpSeparate(x0,x1,x2,x3)}var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var heapAccessShiftForWebGLHeap=heap=>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)};var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};function _glTexParameterf(x0,x1,x2){GLctx.texParameterf(x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var webglGetUniformLocation=location=>{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}};var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var allocateUTF8OnStack=stringToUTF8OnStack;var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}};var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?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.createPreloadedFile=FS_createPreloadedFile;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;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={Bb:___syscall_accept4,Ab:___syscall_bind,M:___syscall_fcntl64,Gb:___syscall_ioctl,zb:___syscall_listen,Hb:___syscall_openat,yb:___syscall_recvfrom,xb:___syscall_sendto,wb:___syscall_socket,Kb:__emscripten_fs_load_embedded_files,Ib:__emscripten_get_now_is_monotonic,a:_abort,Jb:_emscripten_date_now,Ca:_emscripten_get_device_pixel_ratio,Da:_emscripten_get_element_css_size,C:_emscripten_get_now,Db:_emscripten_memcpy_js,Ob:_emscripten_request_animation_frame_loop,Cb:_emscripten_resize_heap,ma:_emscripten_set_blur_callback_on_thread,Ba:_emscripten_set_canvas_element_size,na:_emscripten_set_focus_callback_on_thread,x:_emscripten_set_keydown_callback_on_thread,v:_emscripten_set_keypress_callback_on_thread,w:_emscripten_set_keyup_callback_on_thread,za:_emscripten_set_mousedown_callback_on_thread,wa:_emscripten_set_mouseenter_callback_on_thread,va:_emscripten_set_mouseleave_callback_on_thread,xa:_emscripten_set_mousemove_callback_on_thread,ya:_emscripten_set_mouseup_callback_on_thread,pa:_emscripten_set_pointerlockchange_callback_on_thread,oa:_emscripten_set_pointerlockerror_callback_on_thread,Pb:_emscripten_set_resize_callback_on_thread,qa:_emscripten_set_touchcancel_callback_on_thread,ra:_emscripten_set_touchend_callback_on_thread,sa:_emscripten_set_touchmove_callback_on_thread,ta:_emscripten_set_touchstart_callback_on_thread,la:_emscripten_set_webglcontextlost_callback_on_thread,ka:_emscripten_set_webglcontextrestored_callback_on_thread,ua:_emscripten_set_wheel_callback_on_thread,Aa:_emscripten_webgl_create_context,Lb:_emscripten_webgl_enable_extension,Nb:_emscripten_webgl_init_context_attributes,Mb:_emscripten_webgl_make_context_current,N:_fd_close,Fb:_fd_read,vb:_fd_seek,Eb:_fd_write,ja:_getnameinfo,l:_glActiveTexture,V:_glAttachShader,e:_glBindBuffer,f:_glBindFramebuffer,Y:_glBindRenderbuffer,c:_glBindTexture,fa:_glBindVertexArray,ba:_glBlendColor,ca:_glBlendEquationSeparate,da:_glBlendFuncSeparate,D:_glBlitFramebuffer,ib:_glBufferData,z:_glBufferSubData,s:_glCheckFramebufferStatus,Ma:_glClear,Ka:_glClearBufferfi,R:_glClearBufferfv,Ja:_glClearBufferiv,Pa:_glClearColor,Oa:_glClearDepthf,Na:_glClearStencil,u:_glColorMask,Va:_glCompileShader,eb:_glCompressedTexImage2D,bb:_glCompressedTexImage3D,$a:_glCreateProgram,Xa:_glCreateShader,_:_glCullFace,sb:_glDeleteBuffers,b:_glDeleteFramebuffers,ga:_glDeleteProgram,ha:_glDeleteRenderbuffers,H:_glDeleteShader,rb:_glDeleteTextures,qb:_glDeleteVertexArrays,L:_glDepthFunc,K:_glDepthMask,h:_glDisable,ea:_glDisableVertexAttribArray,n:_glDrawArrays,o:_glDrawArraysInstanced,r:_glDrawBuffers,p:_glDrawElements,q:_glDrawElementsInstanced,k:_glEnable,Ga:_glEnableVertexAttribArray,m:_glFramebufferRenderbuffer,d:_glFramebufferTexture2D,i:_glFramebufferTextureLayer,$:_glFrontFace,jb:_glGenBuffers,t:_glGenFramebuffers,Z:_glGenRenderbuffers,fb:_glGenTextures,ob:_glGenVertexArrays,I:_glGenerateMipmap,Ta:_glGetAttribLocation,g:_glGetIntegerv,Za:_glGetProgramInfoLog,U:_glGetProgramiv,Ua:_glGetShaderInfoLog,S:_glGetShaderiv,ub:_glGetString,tb:_glGetStringi,y:_glGetUniformLocation,_a:_glLinkProgram,nb:_glPixelStorei,aa:_glPolygonOffset,E:_glReadBuffer,gb:_glRenderbufferStorage,X:_glRenderbufferStorageMultisample,Qa:_glScissor,Wa:_glShaderSource,mb:_glStencilFunc,Q:_glStencilFuncSeparate,J:_glStencilMask,lb:_glStencilOp,P:_glStencilOpSeparate,db:_glTexImage2D,ab:_glTexImage3D,W:_glTexParameterf,j:_glTexParameteri,Fa:_glUniform1fv,T:_glUniform1i,Ub:_glUniform1iv,Ea:_glUniform2fv,Tb:_glUniform2iv,Wb:_glUniform3fv,Sb:_glUniform3iv,Vb:_glUniform4fv,Rb:_glUniform4iv,Qb:_glUniformMatrix4fv,A:_glUseProgram,Ha:_glVertexAttribDivisor,Ia:_glVertexAttribPointer,Ra:_glViewport,pb:sapp_js_add_beforeunload_listener,La:sapp_js_add_capture_keyboard_events,hb:sapp_js_add_clipboard_listener,Ya:sapp_js_add_dragndrop_listeners,G:sapp_js_create_textfield,F:sapp_js_focus_textfield,Xb:sapp_js_init,kb:sapp_js_remove_beforeunload_listener,cb:sapp_js_remove_clipboard_listener,Sa:sapp_js_remove_dragndrop_listeners,O:sapp_js_request_pointerlock,B:sapp_js_unfocus_textfield,ia:slog_js_log};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Zb"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["_b"])(a0,a1);var __sapp_emsc_notify_keyboard_hidden=Module["__sapp_emsc_notify_keyboard_hidden"]=()=>(__sapp_emsc_notify_keyboard_hidden=Module["__sapp_emsc_notify_keyboard_hidden"]=wasmExports["$b"])();var __sapp_emsc_onpaste=Module["__sapp_emsc_onpaste"]=a0=>(__sapp_emsc_onpaste=Module["__sapp_emsc_onpaste"]=wasmExports["ac"])(a0);var __sapp_html5_get_ask_leave_site=Module["__sapp_html5_get_ask_leave_site"]=()=>(__sapp_html5_get_ask_leave_site=Module["__sapp_html5_get_ask_leave_site"]=wasmExports["bc"])();var __sapp_emsc_begin_drop=Module["__sapp_emsc_begin_drop"]=a0=>(__sapp_emsc_begin_drop=Module["__sapp_emsc_begin_drop"]=wasmExports["cc"])(a0);var __sapp_emsc_drop=Module["__sapp_emsc_drop"]=(a0,a1)=>(__sapp_emsc_drop=Module["__sapp_emsc_drop"]=wasmExports["dc"])(a0,a1);var __sapp_emsc_end_drop=Module["__sapp_emsc_end_drop"]=(a0,a1)=>(__sapp_emsc_end_drop=Module["__sapp_emsc_end_drop"]=wasmExports["ec"])(a0,a1);var __sapp_emsc_invoke_fetch_cb=Module["__sapp_emsc_invoke_fetch_cb"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(__sapp_emsc_invoke_fetch_cb=Module["__sapp_emsc_invoke_fetch_cb"]=wasmExports["fc"])(a0,a1,a2,a3,a4,a5,a6,a7);var __sapp_emsc_capture_keyboard_events=Module["__sapp_emsc_capture_keyboard_events"]=a0=>(__sapp_emsc_capture_keyboard_events=Module["__sapp_emsc_capture_keyboard_events"]=wasmExports["gc"])(a0);var _malloc=a0=>(_malloc=wasmExports["hc"])(a0);var _free=a0=>(_free=wasmExports["free"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["ic"])();var _flecs_explorer_request=Module["_flecs_explorer_request"]=(a0,a1)=>(_flecs_explorer_request=Module["_flecs_explorer_request"]=wasmExports["jc"])(a0,a1);var _htons=a0=>(_htons=wasmExports["kc"])(a0);var _ntohs=a0=>(_ntohs=wasmExports["mc"])(a0);var stackSave=()=>(stackSave=wasmExports["nc"])();var stackRestore=a0=>(stackRestore=wasmExports["oc"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["pc"])(a0);var ___original_main=Module["___original_main"]=()=>(___original_main=Module["___original_main"]=wasmExports["qc"])();var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=25544;var ___start_em_js=Module["___start_em_js"]=179884;var ___stop_em_js=Module["___stop_em_js"]=186074;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["cwrap"]=cwrap;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="flecs_explorer.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["Yb"];updateMemoryViews();wasmTable=wasmExports["lc"];addOnInit(wasmExports["Zb"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function sapp_js_create_textfield(){const _sapp_inp=document.createElement("input");_sapp_inp.type="text";_sapp_inp.id="_sokol_app_input_element";_sapp_inp.autocapitalize="none";_sapp_inp.addEventListener("focusout",function(_sapp_event){__sapp_emsc_notify_keyboard_hidden()});document.body.append(_sapp_inp)}function sapp_js_focus_textfield(){document.getElementById("_sokol_app_input_element").focus()}function sapp_js_unfocus_textfield(){document.getElementById("_sokol_app_input_element").blur()}function sapp_js_add_beforeunload_listener(){Module.sokol_beforeunload=event=>{if(__sapp_html5_get_ask_leave_site()!=0){event.preventDefault();event.returnValue=" "}};window.addEventListener("beforeunload",Module.sokol_beforeunload)}function sapp_js_remove_beforeunload_listener(){window.removeEventListener("beforeunload",Module.sokol_beforeunload)}function sapp_js_add_clipboard_listener(){Module.sokol_paste=event=>{const pasted_str=event.clipboardData.getData("text");withStackSave(()=>{const cstr=allocateUTF8OnStack(pasted_str);__sapp_emsc_onpaste(cstr)})};window.addEventListener("paste",Module.sokol_paste)}function sapp_js_remove_clipboard_listener(){window.removeEventListener("paste",Module.sokol_paste)}function sapp_js_add_dragndrop_listeners(canvas_name_cstr){Module.sokol_drop_files=[];const canvas_name=UTF8ToString(canvas_name_cstr);const canvas=document.getElementById(canvas_name);Module.sokol_dragenter=event=>{event.stopPropagation();event.preventDefault()};Module.sokol_dragleave=event=>{event.stopPropagation();event.preventDefault()};Module.sokol_dragover=event=>{event.stopPropagation();event.preventDefault()};Module.sokol_drop=event=>{event.stopPropagation();event.preventDefault();const files=event.dataTransfer.files;Module.sokol_dropped_files=files;__sapp_emsc_begin_drop(files.length);for(let i=0;i{const cstr=allocateUTF8OnStack(files[i].name);__sapp_emsc_drop(i,cstr)})}__sapp_emsc_end_drop(event.clientX,event.clientY)};canvas.addEventListener("dragenter",Module.sokol_dragenter,false);canvas.addEventListener("dragleave",Module.sokol_dragleave,false);canvas.addEventListener("dragover",Module.sokol_dragover,false);canvas.addEventListener("drop",Module.sokol_drop,false)}function sapp_js_remove_dragndrop_listeners(canvas_name_cstr){const canvas_name=UTF8ToString(canvas_name_cstr);const canvas=document.getElementById(canvas_name);canvas.removeEventListener("dragenter",Module.sokol_dragenter);canvas.removeEventListener("dragleave",Module.sokol_dragleave);canvas.removeEventListener("dragover",Module.sokol_dragover);canvas.removeEventListener("drop",Module.sokol_drop)}function sapp_js_add_capture_keyboard_events(){Module.sokol_capture_keyboard_events=function(capture){__sapp_emsc_capture_keyboard_events(capture)}}function sapp_js_init(c_str_target){const target_str=UTF8ToString(c_str_target);Module.sapp_emsc_target=document.getElementById(target_str);if(!Module.sapp_emsc_target){console.log("sokol_app.h: invalid target:"+target_str)}if(!Module.sapp_emsc_target.requestPointerLock){console.log("sokol_app.h: target doesn't support requestPointerLock:"+target_str)}}function sapp_js_request_pointerlock(){if(Module.sapp_emsc_target){if(Module.sapp_emsc_target.requestPointerLock){Module.sapp_emsc_target.requestPointerLock()}}}function slog_js_log(level,c_str){const str=UTF8ToString(c_str);switch(level){case 0:console.error(str);break;case 1:console.error(str);break;case 2:console.warn(str);break;default:console.info(str);break}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!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 node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn);var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;i0,ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SOCKFS={mount(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var setErrNo=value=>{HEAP32[___errno_location()>>2]=value;return value};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var jstoi_q=str=>parseInt(str);var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\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;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}};var getSocketAddress=(addrp,addrlen,allowNull)=>{if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=true;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_date_now=()=>Date.now();var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={inEventHandler:0,removeAllEventListeners(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _emscripten_request_animation_frame_loop=(cb,userData)=>{function tick(timeStamp){if(getWasmTableEntry(cb)(timeStamp,userData)){requestAnimationFrame(tick)}}return requestAnimationFrame(tick)};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var findCanvasEventTarget=target=>findEventTarget(target);var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerPointerlockErrorEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var pointerlockErrorEventHandlerFunc=(e=event)=>{if(getWasmTableEntry(callbackfunc)(eventTypeId,0,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockErrorEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockerror_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"mozpointerlockerror",targetThread);registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"webkitpointerlockerror",targetThread);registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"mspointerlockerror",targetThread);return registerPointerlockErrorEventCallback(target,userData,useCapture,callbackfunc,38,"pointerlockerror",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{var source="";for(var i=0;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:context=>{if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var registerWebGlEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var webGlEventHandlerFunc=(e=event)=>{if(getWasmTableEntry(callbackfunc)(eventTypeId,0,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:webGlEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_webglcontextlost_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{registerWebGlEventCallback(target,userData,useCapture,callbackfunc,31,"webglcontextlost",targetThread);return 0};var _emscripten_set_webglcontextrestored_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{registerWebGlEventCallback(target,userData,useCapture,callbackfunc,32,"webglcontextrestored",targetThread);return 0};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var emscripten_webgl_power_preferences=["default","low-power","high-performance"];var _emscripten_webgl_do_create_context=(target,attributes)=>{var a=attributes>>2;var powerPreference=HEAP32[a+(24>>2)];var contextAttributes={"alpha":!!HEAP32[a+(0>>2)],"depth":!!HEAP32[a+(4>>2)],"stencil":!!HEAP32[a+(8>>2)],"antialias":!!HEAP32[a+(12>>2)],"premultipliedAlpha":!!HEAP32[a+(16>>2)],"preserveDrawingBuffer":!!HEAP32[a+(20>>2)],"powerPreference":emscripten_webgl_power_preferences[powerPreference],"failIfMajorPerformanceCaveat":!!HEAP32[a+(28>>2)],majorVersion:HEAP32[a+(32>>2)],minorVersion:HEAP32[a+(36>>2)],enableExtensionsByDefault:HEAP32[a+(40>>2)],explicitSwapControl:HEAP32[a+(44>>2)],proxyContextToMainThread:HEAP32[a+(48>>2)],renderViaOffscreenBackBuffer:HEAP32[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle};var _emscripten_webgl_create_context=_emscripten_webgl_do_create_context;var _emscripten_webgl_enable_extension=(contextHandle,extension)=>{var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith("GL_"))extString=extString.substr(3);if(extString=="ANGLE_instanced_arrays")webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString=="OES_vertex_array_object")webgl_enable_OES_vertex_array_object(GLctx);if(extString=="WEBGL_draw_buffers")webgl_enable_WEBGL_draw_buffers(GLctx);if(extString=="WEBGL_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw_instanced_base_vertex_base_instance")webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw")webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext};var _emscripten_webgl_init_context_attributes=attributes=>{var a=attributes>>2;for(var i=0;i<56>>2;++i){HEAP32[a+i]=0}HEAP32[a+(0>>2)]=HEAP32[a+(4>>2)]=HEAP32[a+(12>>2)]=HEAP32[a+(16>>2)]=HEAP32[a+(32>>2)]=HEAP32[a+(40>>2)]=1};var _emscripten_webgl_make_context_current=contextHandle=>{var success=GL.makeContextCurrent(contextHandle);return success?0:-5};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _getnameinfo=(sa,salen,node,nodelen,serv,servlen,flags)=>{var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0};function _glActiveTexture(x0){GLctx.activeTexture(x0)}var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};function _glBlendColor(x0,x1,x2,x3){GLctx.blendColor(x0,x1,x2,x3)}function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}};var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};function _glCheckFramebufferStatus(x0){return GLctx.checkFramebufferStatus(x0)}function _glClear(x0){GLctx.clear(x0)}function _glClearBufferfi(x0,x1,x2,x3){GLctx.clearBufferfi(x0,x1,x2,x3)}var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx.clearDepth(x0)}function _glClearStencil(x0){GLctx.clearStencil(x0)}var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};function _glCullFace(x0){GLctx.cullFace(x0)}var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};function _glDepthFunc(x0){GLctx.depthFunc(x0)}var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};function _glDisable(x0){GLctx.disable(x0)}var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};function _glEnable(x0){GLctx.enable(x0)}var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};function _glFrontFace(x0){GLctx.frontFace(x0)}var __glGenObject=(n,buffers,createFunction,objectTable)=>{for(var i=0;i>2]=id}};var _glGenBuffers=(n,buffers)=>{__glGenObject(n,buffers,"createBuffer",GL.buffers)};var _glGenFramebuffers=(n,ids)=>{__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)};var _glGenRenderbuffers=(n,renderbuffers)=>{__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _glGenTextures=(n,textures)=>{__glGenObject(n,textures,"createTexture",GL.textures)};function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}};var _glGetIntegerv=(name_,p)=>{emscriptenWebGLGet(name_,p,0)};var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(e=>"GL_"+e));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion="OpenGL ES 3.0 ("+glVersion+")";else{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};function _glPolygonOffset(x0,x1){GLctx.polygonOffset(x0,x1)}function _glReadBuffer(x0){GLctx.readBuffer(x0)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx.renderbufferStorage(x0,x1,x2,x3)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4)}function _glScissor(x0,x1,x2,x3){GLctx.scissor(x0,x1,x2,x3)}var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};function _glStencilFunc(x0,x1,x2){GLctx.stencilFunc(x0,x1,x2)}function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx.stencilFuncSeparate(x0,x1,x2,x3)}function _glStencilMask(x0){GLctx.stencilMask(x0)}function _glStencilOp(x0,x1,x2){GLctx.stencilOp(x0,x1,x2)}function _glStencilOpSeparate(x0,x1,x2,x3){GLctx.stencilOpSeparate(x0,x1,x2,x3)}var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var heapAccessShiftForWebGLHeap=heap=>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)};var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};function _glTexParameterf(x0,x1,x2){GLctx.texParameterf(x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}var webglGetUniformLocation=location=>{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}};var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var allocateUTF8OnStack=stringToUTF8OnStack;var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}};var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?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.createPreloadedFile=FS_createPreloadedFile;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;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={Bb:___syscall_accept4,Ab:___syscall_bind,M:___syscall_fcntl64,Gb:___syscall_ioctl,zb:___syscall_listen,Hb:___syscall_openat,yb:___syscall_recvfrom,xb:___syscall_sendto,wb:___syscall_socket,Kb:__emscripten_fs_load_embedded_files,Ib:__emscripten_get_now_is_monotonic,a:_abort,Jb:_emscripten_date_now,Ca:_emscripten_get_device_pixel_ratio,Da:_emscripten_get_element_css_size,C:_emscripten_get_now,Db:_emscripten_memcpy_js,Ob:_emscripten_request_animation_frame_loop,Cb:_emscripten_resize_heap,ma:_emscripten_set_blur_callback_on_thread,Ba:_emscripten_set_canvas_element_size,na:_emscripten_set_focus_callback_on_thread,x:_emscripten_set_keydown_callback_on_thread,v:_emscripten_set_keypress_callback_on_thread,w:_emscripten_set_keyup_callback_on_thread,za:_emscripten_set_mousedown_callback_on_thread,wa:_emscripten_set_mouseenter_callback_on_thread,va:_emscripten_set_mouseleave_callback_on_thread,xa:_emscripten_set_mousemove_callback_on_thread,ya:_emscripten_set_mouseup_callback_on_thread,pa:_emscripten_set_pointerlockchange_callback_on_thread,oa:_emscripten_set_pointerlockerror_callback_on_thread,Pb:_emscripten_set_resize_callback_on_thread,qa:_emscripten_set_touchcancel_callback_on_thread,ra:_emscripten_set_touchend_callback_on_thread,sa:_emscripten_set_touchmove_callback_on_thread,ta:_emscripten_set_touchstart_callback_on_thread,la:_emscripten_set_webglcontextlost_callback_on_thread,ka:_emscripten_set_webglcontextrestored_callback_on_thread,ua:_emscripten_set_wheel_callback_on_thread,Aa:_emscripten_webgl_create_context,Lb:_emscripten_webgl_enable_extension,Nb:_emscripten_webgl_init_context_attributes,Mb:_emscripten_webgl_make_context_current,N:_fd_close,Fb:_fd_read,vb:_fd_seek,Eb:_fd_write,ja:_getnameinfo,l:_glActiveTexture,V:_glAttachShader,e:_glBindBuffer,f:_glBindFramebuffer,Y:_glBindRenderbuffer,c:_glBindTexture,fa:_glBindVertexArray,ba:_glBlendColor,ca:_glBlendEquationSeparate,da:_glBlendFuncSeparate,D:_glBlitFramebuffer,ib:_glBufferData,z:_glBufferSubData,s:_glCheckFramebufferStatus,Ma:_glClear,Ka:_glClearBufferfi,R:_glClearBufferfv,Ja:_glClearBufferiv,Pa:_glClearColor,Oa:_glClearDepthf,Na:_glClearStencil,u:_glColorMask,Va:_glCompileShader,eb:_glCompressedTexImage2D,bb:_glCompressedTexImage3D,$a:_glCreateProgram,Xa:_glCreateShader,_:_glCullFace,sb:_glDeleteBuffers,b:_glDeleteFramebuffers,ga:_glDeleteProgram,ha:_glDeleteRenderbuffers,H:_glDeleteShader,rb:_glDeleteTextures,qb:_glDeleteVertexArrays,L:_glDepthFunc,K:_glDepthMask,h:_glDisable,ea:_glDisableVertexAttribArray,n:_glDrawArrays,o:_glDrawArraysInstanced,r:_glDrawBuffers,p:_glDrawElements,q:_glDrawElementsInstanced,k:_glEnable,Ga:_glEnableVertexAttribArray,m:_glFramebufferRenderbuffer,d:_glFramebufferTexture2D,i:_glFramebufferTextureLayer,$:_glFrontFace,jb:_glGenBuffers,t:_glGenFramebuffers,Z:_glGenRenderbuffers,fb:_glGenTextures,ob:_glGenVertexArrays,I:_glGenerateMipmap,Ta:_glGetAttribLocation,g:_glGetIntegerv,Za:_glGetProgramInfoLog,U:_glGetProgramiv,Ua:_glGetShaderInfoLog,S:_glGetShaderiv,ub:_glGetString,tb:_glGetStringi,y:_glGetUniformLocation,_a:_glLinkProgram,nb:_glPixelStorei,aa:_glPolygonOffset,E:_glReadBuffer,gb:_glRenderbufferStorage,X:_glRenderbufferStorageMultisample,Qa:_glScissor,Wa:_glShaderSource,mb:_glStencilFunc,Q:_glStencilFuncSeparate,J:_glStencilMask,lb:_glStencilOp,P:_glStencilOpSeparate,db:_glTexImage2D,ab:_glTexImage3D,W:_glTexParameterf,j:_glTexParameteri,Fa:_glUniform1fv,T:_glUniform1i,Ub:_glUniform1iv,Ea:_glUniform2fv,Tb:_glUniform2iv,Wb:_glUniform3fv,Sb:_glUniform3iv,Vb:_glUniform4fv,Rb:_glUniform4iv,Qb:_glUniformMatrix4fv,A:_glUseProgram,Ha:_glVertexAttribDivisor,Ia:_glVertexAttribPointer,Ra:_glViewport,pb:sapp_js_add_beforeunload_listener,La:sapp_js_add_capture_keyboard_events,hb:sapp_js_add_clipboard_listener,Ya:sapp_js_add_dragndrop_listeners,G:sapp_js_create_textfield,F:sapp_js_focus_textfield,Xb:sapp_js_init,kb:sapp_js_remove_beforeunload_listener,cb:sapp_js_remove_clipboard_listener,Sa:sapp_js_remove_dragndrop_listeners,O:sapp_js_request_pointerlock,B:sapp_js_unfocus_textfield,ia:slog_js_log};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Zb"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["_b"])(a0,a1);var __sapp_emsc_notify_keyboard_hidden=Module["__sapp_emsc_notify_keyboard_hidden"]=()=>(__sapp_emsc_notify_keyboard_hidden=Module["__sapp_emsc_notify_keyboard_hidden"]=wasmExports["$b"])();var __sapp_emsc_onpaste=Module["__sapp_emsc_onpaste"]=a0=>(__sapp_emsc_onpaste=Module["__sapp_emsc_onpaste"]=wasmExports["ac"])(a0);var __sapp_html5_get_ask_leave_site=Module["__sapp_html5_get_ask_leave_site"]=()=>(__sapp_html5_get_ask_leave_site=Module["__sapp_html5_get_ask_leave_site"]=wasmExports["bc"])();var __sapp_emsc_begin_drop=Module["__sapp_emsc_begin_drop"]=a0=>(__sapp_emsc_begin_drop=Module["__sapp_emsc_begin_drop"]=wasmExports["cc"])(a0);var __sapp_emsc_drop=Module["__sapp_emsc_drop"]=(a0,a1)=>(__sapp_emsc_drop=Module["__sapp_emsc_drop"]=wasmExports["dc"])(a0,a1);var __sapp_emsc_end_drop=Module["__sapp_emsc_end_drop"]=(a0,a1)=>(__sapp_emsc_end_drop=Module["__sapp_emsc_end_drop"]=wasmExports["ec"])(a0,a1);var __sapp_emsc_invoke_fetch_cb=Module["__sapp_emsc_invoke_fetch_cb"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(__sapp_emsc_invoke_fetch_cb=Module["__sapp_emsc_invoke_fetch_cb"]=wasmExports["fc"])(a0,a1,a2,a3,a4,a5,a6,a7);var __sapp_emsc_capture_keyboard_events=Module["__sapp_emsc_capture_keyboard_events"]=a0=>(__sapp_emsc_capture_keyboard_events=Module["__sapp_emsc_capture_keyboard_events"]=wasmExports["gc"])(a0);var _malloc=a0=>(_malloc=wasmExports["hc"])(a0);var _free=a0=>(_free=wasmExports["free"])(a0);var ___errno_location=()=>(___errno_location=wasmExports["ic"])();var _flecs_explorer_request=Module["_flecs_explorer_request"]=(a0,a1)=>(_flecs_explorer_request=Module["_flecs_explorer_request"]=wasmExports["jc"])(a0,a1);var _htons=a0=>(_htons=wasmExports["kc"])(a0);var _ntohs=a0=>(_ntohs=wasmExports["mc"])(a0);var stackSave=()=>(stackSave=wasmExports["nc"])();var stackRestore=a0=>(stackRestore=wasmExports["oc"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["pc"])(a0);var ___original_main=Module["___original_main"]=()=>(___original_main=Module["___original_main"]=wasmExports["qc"])();var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=25548;var ___start_em_js=Module["___start_em_js"]=179900;var ___stop_em_js=Module["___stop_em_js"]=186090;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["cwrap"]=cwrap;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); return moduleArg.ready diff --git a/etc/flecs_explorer.wasm b/etc/flecs_explorer.wasm index 2e5d6cb7c681afe6d481944083af3728554d62d8..6707aac722a443a518a57f0ae2d116ca58cbdf7f 100755 GIT binary patch delta 121683 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

ey&wMNxxFSXroTKgbeqWZqQ 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 Ikh7xy3yCk$TmS$7 delta 121577 zcmc${2Ygk<_CI=NX3suJPC^n0Aq_YQE%YErFWFRS(o_%yDHcS%f}kK45(pRsA-Dqr zN(sG454h=sCLjnwDUoJCR8&e(6i~|h&g|17+1$S-Ia{|jJH4gZ znxRg%SKn<8ciyJVVZI);J&J0amtd7BE8!~JkUDu)jd9Zmu5XSEZd92tf^6nu8X?Rd zBE-RohB(I`!p)PxwP^$~gF>1}tZhOjjn3PDz~OSfSDHROfI4XJ0gewe`rH7=PEIQh za9B>-f1u-YCmk@*vB60P4s>jD(&q;{HaqDH109>3^u>XWjZXT~K*v@m9W>DKGoddJ zbQC)2;DL@zCw*n0nnt9X} zKl(TQ3w^JiukX=!>$~)wdY-;R->z@dx9VH;&H5(&TdhDlso8%w>X!bwzCmBF=j!Y9 zwfY);wZ2kcp?{_?*O%!_^(FdZeUUy++rqcaZ{5HSE7il;7pZpL0J71h@vcZcx(d>;?_wWz`F z+|ywT8Ob-(BHQBczR0TNig`V9X8EbVGhw(Nwp?*qFPl z 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

?OCaeRVKJfys8p5W-(TIp-1`t21z?DP4OEk>!^ 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