From f57fc33404083e66551ee559b6343f6db3f1ffd0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Feb 2024 19:35:32 +0000 Subject: [PATCH] Deploy to GitHub pages --- .../tutorial_1_gl_intro_classic_triangle.js | 2 +- .../tutorial_1_gl_intro_classic_triangle.wasm | Bin 983101 -> 982870 bytes .../tutorial_1_gl_intro_pango_triangle.js | 2 +- .../tutorial_1_gl_intro_pango_triangle.wasm | Bin 983519 -> 983287 bytes ...utorial_2_gl_intro_classic_triangle_vbo.js | 2 +- ...orial_2_gl_intro_classic_triangle_vbo.wasm | Bin 984533 -> 984300 bytes .../tutorial_2_gl_intro_pango_triangle_vbo.js | 2 +- ...utorial_2_gl_intro_pango_triangle_vbo.wasm | Bin 984854 -> 984624 bytes ..._3_gl_intro_classic_triangle_vbo_shader.js | 2 +- ..._gl_intro_classic_triangle_vbo_shader.wasm | Bin 986643 -> 986411 bytes ...al_3_gl_intro_pango_triangle_vbo_shader.js | 2 +- ..._3_gl_intro_pango_triangle_vbo_shader.wasm | Bin 986080 -> 985795 bytes .../tutorial_4_gl_intro_viewport.js | 2 +- .../tutorial_4_gl_intro_viewport.wasm | Bin 987584 -> 987354 bytes .../tutorial_5_gl_intro_view_transforms.js | 2 +- .../tutorial_5_gl_intro_view_transforms.wasm | Bin 994913 -> 994688 bytes .../examples/HelloPangolin/HelloPangolin.js | 2 +- .../examples/HelloPangolin/HelloPangolin.wasm | Bin 1008930 -> 1008708 bytes .../examples/SimpleDisplay/SimpleDisplay.js | 2 +- .../examples/SimpleDisplay/SimpleDisplay.wasm | Bin 1233007 -> 1232642 bytes .../SimpleDisplayImage/SimpleDisplayImage.js | 2 +- .../SimpleDisplayImage.wasm | Bin 1010952 -> 1010717 bytes .../SimpleMultiDisplay/SimpleMultiDisplay.js | 2 +- .../SimpleMultiDisplay.wasm | Bin 1012446 -> 1012208 bytes emscripten/examples/SimplePlot/SimplePlot.js | 2 +- .../examples/SimplePlot/SimplePlot.wasm | Bin 1041651 -> 1041397 bytes .../examples/SimpleRecord/SimpleRecord.js | 2 +- .../examples/SimpleRecord/SimpleRecord.wasm | Bin 1531859 -> 1531368 bytes .../examples/SimpleVideo/SimpleVideo.js | 2 +- .../examples/SimpleVideo/SimpleVideo.wasm | Bin 1437210 -> 1436713 bytes 30 files changed, 15 insertions(+), 15 deletions(-) diff --git a/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_classic_triangle.js b/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_classic_triangle.js index 88b39d919..64e48516c 100644 --- a/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_classic_triangle.js +++ b/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_classic_triangle.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_1_gl_intro_classic_triangle.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["qb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["tb"];addOnInit(Module["asm"]["rb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224632:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ba":___cxa_rethrow,"i":___cxa_throw,"ob":___cxa_uncaught_exceptions,"e":___resumeException,"aa":___syscall_fcntl64,"mb":___syscall_ioctl,"fa":___syscall_open,"ia":___syscall_stat64,"jb":__embind_register_bigint,"la":__embind_register_bool,"ka":__embind_register_emval,"S":__embind_register_float,"Ca":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"R":__embind_register_std_string,"M":__embind_register_std_wstring,"ma":__embind_register_void,"y":_abort,"Ga":_emscripten_asm_const_int,"U":_emscripten_get_canvas_element_size,"ja":_emscripten_memcpy_big,"da":_emscripten_resize_heap,"Ea":_emscripten_set_canvas_element_size,"Sa":_emscripten_set_click_callback_on_thread,"Oa":_emscripten_set_dblclick_callback_on_thread,"Ua":_emscripten_set_keydown_callback_on_thread,"Va":_emscripten_set_keypress_callback_on_thread,"Ta":_emscripten_set_keyup_callback_on_thread,"Ra":_emscripten_set_mousedown_callback_on_thread,"Ma":_emscripten_set_mouseenter_callback_on_thread,"La":_emscripten_set_mouseleave_callback_on_thread,"Na":_emscripten_set_mousemove_callback_on_thread,"Ja":_emscripten_set_mouseout_callback_on_thread,"Ka":_emscripten_set_mouseover_callback_on_thread,"Qa":_emscripten_set_mouseup_callback_on_thread,"Ha":_emscripten_set_resize_callback_on_thread,"Ia":_emscripten_set_wheel_callback_on_thread,"Da":_emscripten_sleep,"Xa":_emscripten_webgl_create_context,"T":_emscripten_webgl_destroy_context,"Wa":_emscripten_webgl_enable_extension,"Ya":_emscripten_webgl_init_context_attributes,"Fa":_emscripten_webgl_make_context_current,"ga":_environ_get,"ha":_environ_sizes_get,"Q":_fd_close,"ea":_fd_read,"ib":_fd_seek,"P":_fd_write,"a":_getTempRet0,"Ba":_glActiveTexture,"sa":_glAttachShader,"H":_glBindAttribLocation,"X":_glBindTexture,"Za":_glBlendFunc,"Pa":_glClear,"pb":_glClearColor,"ta":_glCompileShader,"wa":_glCreateProgram,"va":_glCreateShader,"na":_glDeleteProgram,"oa":_glDeleteShader,"E":_glDeleteTextures,"pa":_glDetachShader,"x":_glDisable,"B":_glDisableVertexAttribArray,"G":_glDrawArrays,"V":_glEnable,"C":_glEnableVertexAttribArray,"kb":_glFlush,"bb":_glGenTextures,"$a":_glGetError,"t":_glGetIntegerv,"ya":_glGetProgramInfoLog,"za":_glGetProgramiv,"qa":_glGetShaderInfoLog,"ra":_glGetShaderiv,"xa":_glGetUniformLocation,"_a":_glLineWidth,"Aa":_glLinkProgram,"eb":_glPixelStorei,"fb":_glReadBuffer,"db":_glReadPixels,"ua":_glShaderSource,"ab":_glTexImage2D,"J":_glTexParameteri,"W":_glUniform1i,"I":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"D":_glVertexAttribPointer,"cb":_glViewport,"ca":_glewInit,"Z":invoke_diii,"_":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"nb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"$":invoke_iiiiiiii,"L":invoke_iiiiiiiiiiii,"gb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"O":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"hb":invoke_viijii,"Y":_setTempRet0,"lb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["rb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["sb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ub"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["vb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["wb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["xb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["yb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["zb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ab"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Bb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Cb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Db"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Fb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Gb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Hb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ib"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["lc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["mc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["nc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["oc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["pc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_1_gl_intro_classic_triangle.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["qb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["tb"];addOnInit(Module["asm"]["rb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224464:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ba":___cxa_rethrow,"i":___cxa_throw,"ob":___cxa_uncaught_exceptions,"e":___resumeException,"aa":___syscall_fcntl64,"mb":___syscall_ioctl,"fa":___syscall_open,"ia":___syscall_stat64,"jb":__embind_register_bigint,"la":__embind_register_bool,"ka":__embind_register_emval,"S":__embind_register_float,"Ca":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"R":__embind_register_std_string,"M":__embind_register_std_wstring,"ma":__embind_register_void,"y":_abort,"Ga":_emscripten_asm_const_int,"U":_emscripten_get_canvas_element_size,"ja":_emscripten_memcpy_big,"da":_emscripten_resize_heap,"Ea":_emscripten_set_canvas_element_size,"Sa":_emscripten_set_click_callback_on_thread,"Oa":_emscripten_set_dblclick_callback_on_thread,"Ua":_emscripten_set_keydown_callback_on_thread,"Va":_emscripten_set_keypress_callback_on_thread,"Ta":_emscripten_set_keyup_callback_on_thread,"Ra":_emscripten_set_mousedown_callback_on_thread,"Ma":_emscripten_set_mouseenter_callback_on_thread,"La":_emscripten_set_mouseleave_callback_on_thread,"Na":_emscripten_set_mousemove_callback_on_thread,"Ja":_emscripten_set_mouseout_callback_on_thread,"Ka":_emscripten_set_mouseover_callback_on_thread,"Qa":_emscripten_set_mouseup_callback_on_thread,"Ha":_emscripten_set_resize_callback_on_thread,"Ia":_emscripten_set_wheel_callback_on_thread,"Da":_emscripten_sleep,"Xa":_emscripten_webgl_create_context,"T":_emscripten_webgl_destroy_context,"Wa":_emscripten_webgl_enable_extension,"Ya":_emscripten_webgl_init_context_attributes,"Fa":_emscripten_webgl_make_context_current,"ga":_environ_get,"ha":_environ_sizes_get,"Q":_fd_close,"ea":_fd_read,"ib":_fd_seek,"P":_fd_write,"a":_getTempRet0,"Ba":_glActiveTexture,"sa":_glAttachShader,"H":_glBindAttribLocation,"X":_glBindTexture,"Za":_glBlendFunc,"Pa":_glClear,"pb":_glClearColor,"ta":_glCompileShader,"wa":_glCreateProgram,"va":_glCreateShader,"na":_glDeleteProgram,"oa":_glDeleteShader,"E":_glDeleteTextures,"pa":_glDetachShader,"x":_glDisable,"B":_glDisableVertexAttribArray,"G":_glDrawArrays,"V":_glEnable,"C":_glEnableVertexAttribArray,"kb":_glFlush,"bb":_glGenTextures,"$a":_glGetError,"t":_glGetIntegerv,"ya":_glGetProgramInfoLog,"za":_glGetProgramiv,"qa":_glGetShaderInfoLog,"ra":_glGetShaderiv,"xa":_glGetUniformLocation,"_a":_glLineWidth,"Aa":_glLinkProgram,"eb":_glPixelStorei,"fb":_glReadBuffer,"db":_glReadPixels,"ua":_glShaderSource,"ab":_glTexImage2D,"J":_glTexParameteri,"W":_glUniform1i,"I":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"D":_glVertexAttribPointer,"cb":_glViewport,"ca":_glewInit,"Z":invoke_diii,"_":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"nb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"$":invoke_iiiiiiii,"L":invoke_iiiiiiiiiiii,"gb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"O":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"hb":invoke_viijii,"Y":_setTempRet0,"lb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["rb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["sb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ub"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["vb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["wb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["xb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["yb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["zb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ab"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Bb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Cb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Db"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Fb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Gb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Hb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ib"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["lc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["mc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["nc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["oc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["pc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_classic_triangle.wasm b/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_classic_triangle.wasm index ded3e0d2f52dfaf404469eb068da1a5b8767cf76..f70f5a3c8335ad8534ebeb84f35b41f4353f6f65 100755 GIT binary patch delta 65225 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 YxCJXp*xo)5LEeJzgEjjdfcKsM5A=_kF8}}l delta 65150 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 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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_1_gl_intro_pango_triangle.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["qb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["tb"];addOnInit(Module["asm"]["rb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224744:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ba":___cxa_rethrow,"i":___cxa_throw,"nb":___cxa_uncaught_exceptions,"e":___resumeException,"aa":___syscall_fcntl64,"lb":___syscall_ioctl,"ea":___syscall_open,"ha":___syscall_stat64,"jb":__embind_register_bigint,"ka":__embind_register_bool,"ja":__embind_register_emval,"S":__embind_register_float,"Ba":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"R":__embind_register_std_string,"M":__embind_register_std_wstring,"la":__embind_register_void,"y":_abort,"Fa":_emscripten_asm_const_int,"U":_emscripten_get_canvas_element_size,"ia":_emscripten_memcpy_big,"ca":_emscripten_resize_heap,"Da":_emscripten_set_canvas_element_size,"Ra":_emscripten_set_click_callback_on_thread,"Na":_emscripten_set_dblclick_callback_on_thread,"Ta":_emscripten_set_keydown_callback_on_thread,"Ua":_emscripten_set_keypress_callback_on_thread,"Sa":_emscripten_set_keyup_callback_on_thread,"Qa":_emscripten_set_mousedown_callback_on_thread,"La":_emscripten_set_mouseenter_callback_on_thread,"Ka":_emscripten_set_mouseleave_callback_on_thread,"Ma":_emscripten_set_mousemove_callback_on_thread,"Ia":_emscripten_set_mouseout_callback_on_thread,"Ja":_emscripten_set_mouseover_callback_on_thread,"Pa":_emscripten_set_mouseup_callback_on_thread,"Ga":_emscripten_set_resize_callback_on_thread,"Ha":_emscripten_set_wheel_callback_on_thread,"Ca":_emscripten_sleep,"Wa":_emscripten_webgl_create_context,"T":_emscripten_webgl_destroy_context,"Va":_emscripten_webgl_enable_extension,"Xa":_emscripten_webgl_init_context_attributes,"Ea":_emscripten_webgl_make_context_current,"fa":_environ_get,"ga":_environ_sizes_get,"Q":_fd_close,"da":_fd_read,"ib":_fd_seek,"P":_fd_write,"a":_getTempRet0,"Aa":_glActiveTexture,"ra":_glAttachShader,"H":_glBindAttribLocation,"X":_glBindTexture,"Ya":_glBlendFunc,"Oa":_glClear,"pb":_glClearColor,"sa":_glCompileShader,"va":_glCreateProgram,"ua":_glCreateShader,"ma":_glDeleteProgram,"na":_glDeleteShader,"E":_glDeleteTextures,"oa":_glDetachShader,"x":_glDisable,"B":_glDisableVertexAttribArray,"G":_glDrawArrays,"V":_glEnable,"C":_glEnableVertexAttribArray,"fb":_glFlush,"ab":_glGenTextures,"_a":_glGetError,"t":_glGetIntegerv,"xa":_glGetProgramInfoLog,"ya":_glGetProgramiv,"pa":_glGetShaderInfoLog,"qa":_glGetShaderiv,"wa":_glGetUniformLocation,"Za":_glLineWidth,"za":_glLinkProgram,"db":_glPixelStorei,"eb":_glReadBuffer,"cb":_glReadPixels,"ta":_glShaderSource,"$a":_glTexImage2D,"J":_glTexParameteri,"W":_glUniform1i,"I":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"D":_glVertexAttribPointer,"bb":_glViewport,"ob":_glewInit,"Z":invoke_diii,"_":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"mb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"$":invoke_iiiiiiii,"L":invoke_iiiiiiiiiiii,"gb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"O":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"hb":invoke_viijii,"Y":_setTempRet0,"kb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["rb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["sb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ub"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["vb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["wb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["xb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["yb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["zb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ab"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Bb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Cb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Db"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Fb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Gb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Hb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ib"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["lc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["mc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["nc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["oc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["pc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_1_gl_intro_pango_triangle.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["qb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["tb"];addOnInit(Module["asm"]["rb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224576:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ba":___cxa_rethrow,"i":___cxa_throw,"nb":___cxa_uncaught_exceptions,"e":___resumeException,"aa":___syscall_fcntl64,"lb":___syscall_ioctl,"ea":___syscall_open,"ha":___syscall_stat64,"jb":__embind_register_bigint,"ka":__embind_register_bool,"ja":__embind_register_emval,"S":__embind_register_float,"Ba":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"R":__embind_register_std_string,"M":__embind_register_std_wstring,"la":__embind_register_void,"y":_abort,"Fa":_emscripten_asm_const_int,"U":_emscripten_get_canvas_element_size,"ia":_emscripten_memcpy_big,"ca":_emscripten_resize_heap,"Da":_emscripten_set_canvas_element_size,"Ra":_emscripten_set_click_callback_on_thread,"Na":_emscripten_set_dblclick_callback_on_thread,"Ta":_emscripten_set_keydown_callback_on_thread,"Ua":_emscripten_set_keypress_callback_on_thread,"Sa":_emscripten_set_keyup_callback_on_thread,"Qa":_emscripten_set_mousedown_callback_on_thread,"La":_emscripten_set_mouseenter_callback_on_thread,"Ka":_emscripten_set_mouseleave_callback_on_thread,"Ma":_emscripten_set_mousemove_callback_on_thread,"Ia":_emscripten_set_mouseout_callback_on_thread,"Ja":_emscripten_set_mouseover_callback_on_thread,"Pa":_emscripten_set_mouseup_callback_on_thread,"Ga":_emscripten_set_resize_callback_on_thread,"Ha":_emscripten_set_wheel_callback_on_thread,"Ca":_emscripten_sleep,"Wa":_emscripten_webgl_create_context,"T":_emscripten_webgl_destroy_context,"Va":_emscripten_webgl_enable_extension,"Xa":_emscripten_webgl_init_context_attributes,"Ea":_emscripten_webgl_make_context_current,"fa":_environ_get,"ga":_environ_sizes_get,"Q":_fd_close,"da":_fd_read,"ib":_fd_seek,"P":_fd_write,"a":_getTempRet0,"Aa":_glActiveTexture,"ra":_glAttachShader,"H":_glBindAttribLocation,"X":_glBindTexture,"Ya":_glBlendFunc,"Oa":_glClear,"pb":_glClearColor,"sa":_glCompileShader,"va":_glCreateProgram,"ua":_glCreateShader,"ma":_glDeleteProgram,"na":_glDeleteShader,"E":_glDeleteTextures,"oa":_glDetachShader,"x":_glDisable,"B":_glDisableVertexAttribArray,"G":_glDrawArrays,"V":_glEnable,"C":_glEnableVertexAttribArray,"fb":_glFlush,"ab":_glGenTextures,"_a":_glGetError,"t":_glGetIntegerv,"xa":_glGetProgramInfoLog,"ya":_glGetProgramiv,"pa":_glGetShaderInfoLog,"qa":_glGetShaderiv,"wa":_glGetUniformLocation,"Za":_glLineWidth,"za":_glLinkProgram,"db":_glPixelStorei,"eb":_glReadBuffer,"cb":_glReadPixels,"ta":_glShaderSource,"$a":_glTexImage2D,"J":_glTexParameteri,"W":_glUniform1i,"I":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"D":_glVertexAttribPointer,"bb":_glViewport,"ob":_glewInit,"Z":invoke_diii,"_":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"mb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"$":invoke_iiiiiiii,"L":invoke_iiiiiiiiiiii,"gb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"O":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"hb":invoke_viijii,"Y":_setTempRet0,"kb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["rb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["sb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ub"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["vb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["wb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["xb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["yb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["zb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ab"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Bb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Cb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Db"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Fb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Gb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Hb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ib"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["lc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["mc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["nc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["oc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["pc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_pango_triangle.wasm b/emscripten/examples/BasicOpenGL/tutorial_1_gl_intro_pango_triangle.wasm index e910f4c8a040195d80ecc27fe34cad43b6d53689..156509f9d343bc08ef1fda29998f05d63dce8f6a 100755 GIT binary patch delta 65719 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

bNdB` zl%DLz?JB>wp}KM9R(9|`bt%=jy20f#_T~F3H-)*MX?0nj9jbG`IJKgIVWx&CohkAg zb9bq6d@Y{$f$Ch+P18@~y$@7#qx8pb)Ot_vRqNR5L$iJ(b+6h@YP#}hOmhjhx739T zXr2WJ057#*_?zmvM`PHued_g1cSd9`ipX3TkvacpjB#$C+T0@*qgcxl^}3|o3i4hh z|20*gU18EAyxH(-d9Fk)YFcPT5)=6rOqo|kWX{7qEYm($cga*~Huy_*C5a9jLA9Cx zE4SiYW9%pORMz8PYPRw5SL*XzLXd-VeMY5>3cIRYz13*)wYuwXG8)LZON!uFi{My` z;8@eaG3#2P7J4g+{Lwp81Wy*5dX19E(mzrkW^=wXE%mnVT$cD^49zm!xcYlFq}9kd z8pH2XssT~_i8l$R|D=wnG52T;9A~>l#UOGvWPS1{^(VfN{^pE}sZ!-s15&8Zm(-wE zn~nS90^%~Iz#xUjMyIpt3NDIEC^FqJ{!-V=fj^GK@Q;J>F-4UA8yKDp(V|jZfBsb`HL;wk#RX0M77f2dMll(VDXv$Wyn~*XprXqqX*w`bD(n z>`3r=s4oW3z$2k`jONTLdBW@%jc<6Kj?pS@ei&E!wRCQro(yP?7a?EZd>k-~^sK2l zI}IGy<25xtZ0FvI$Gj`2(Zl` zTNtNtGgX1&ts)X4?IKwnGhC@?pIRCpIE(KFb8pwuoE=Ec+_73(YeHzQKj>qs?;TrB z8LR}2xYO{xGOExw-qjV3y4$p0Io%%KlMD<6ikK6Ew$LpXeI*Bxtws zCft?iY9U|mmtC#ZC4}{pw88dv5G7dERA@U$@r!Wub+>~SCTY$_apkKPKTvpu?K?%2|XoGATJi$oe zI{EZ)EyS*9pg9}f)KbPH4YYIIs+5h?nzI)}Zrf8?V{b?sE(U(FY{D|K2|vOnbZV?E zB3d6b)|}M~*#rYN;oFO#yREqv&!s*wO>;I3xgZvd*6Of5X&T=mIXqfRVJ%u!=_J>- z()iqxccHxzsdmq+$ELK_VpvLRjqfv~AH}n7tz9gY^3``$8Xo@_RcUUBceHj@nsZ!o zm)4fn=VrHnmpGoKn-G*T(LbIg(ej?jb2h(QyPIukW9m5XV{vU=t{g=-u4$|76V4ZQ z$MzQ%cA;RDbkJmO*?V$lOyg7H^pZKqJfHu|?% zHvd3ZEt}dGHb0(?>E?Dh$M7>4{+o>&-L-dldtT7`UzYA_Jg@2BTK_ZY{}t<>#P(-s z`-$fZTK^`jes5ecfh-pr0@B#Z-fk!0mLy^v2(i(ZSMEU!gTYYa$mQs+gc>743j3w6 zD{5Qm5?H5x8sFG?s-J7+IR0JzoUx%UzGl~w?Cxu)Hf1BO{C{F>i0)rSG+p~^&E1Z4 zNn^u;{;rzx3ewn+>U1P8Iui9FEuu?u8DgZ!BMEOD;EK=gI}KREK#lKRW00sk@M0L~ zO2s}O=vo|(FKLiAkrEaSsyuKQ2M1~Mc(=KCh}Oey3O=l1-)E0B8`Jgdp_+NTalz5! z_pATsM~|)7xP9qwM~_4nzSf)$RX2pBvoEeQ`@+S>krwQ(>)i(D!gdFfN>d_+abzgF z(WAw&Rer6m@zHQC#~ufq5rQMYh_cf7YLpfb*d4cMFVwKdmVwsLQgeisOU;6zr8(O@ z!X6Ctmiz@=uZ##uSHR60(7L z(?CImrqTv58+D8J;`wsUyhJ&V(f-AIL*e}{llJhEB(NF}m@{6CG0vBpG`tuXUe59s z*z%w|Q{e;8u?Mv##P+})7?xT;q&W|g@oA+wp5oMv-e}|9?!_Hia!lmox-9o0*GO`d zCwFKY3FYdYnzKX4hwW7pG`;{oGeL6>?0BPQ?b2pZiMWo*2`{1E;BfsHHXef$n>;W&u@lg}k^?Me_3#>YEMSFmlt$EZHGcUVvu~`fc!#OR+6Kc-X+SS?aT=4107gy%8E%P+T_l0Og zEImxocgoWGrCL(2k^yTIk~%jd%d@IT{l^trOXklur`9)RyQ!QdzUS2wTR7bvlDKnP z$b`uX;=g8iB}k6gz@jo1XVz&ASBvPWu7J3>M}7}+PoAoc;oYP<>2lGXdCDzk3zn+yx`SuBs#`@oru?+|mn6S&^IZw?s&M&zHQ$t9+5#<^eLYKa96W3xCab=#rpHXX z*;?|24>q{CiWj)mcExpQw)WtEp17QW$dMGwU7+zDq5qDgnh9+6F|C#{d7*X(@4;}k ztlZhgmulCsj1yWk_0a`|uEe>bwf(}hk=d&*(0Na-s)BFSm!^$;aoOJ}TE60~$HuMD zk}sjR9$s?3wv8o*NBt9u_Qum%qe`;0m$clSUGduEkS3A&H*4yDSA5+Cqu>?orvFgMrQ7QE|Aof4{G4I+;vMy? zHPxwGQ1kvzsM~+EiR-`af6v4*n7CTT?DZOM4fqeWbMI}cPVxRH?A#PS72yu8*KBon z$@r4w@vYkPBvJ0j(YmNgYTNqW`zUpLkvoF&VrPrY?dMbVy-BRyHm#mLO`=q5RvAT$ zqbPGKtEV8}v~BJ#F`qo;rg$@qU$<%J_}R?GR$$KS*Hq5JUuE%?%3qoO9{axk{<^E( zE_a0eZ?3z3_`sc0oVVTq^9<{*cJ_3lN`}ZKSNOv!(~19!ORnelxZZE#BGy}u+Ad{VPr1h}eE8%mhee;7D~GQ>b(_YX3MaCv zE3dMDcjblCcW3d>iSm_~P@)|aY|(p2^hZ9|x{>HZ2eD@e(T_NY9MntCTbp6t%-3dl zve&^}Y07-*YcqSwy!^|*k#+xyOIn*9{>_!4E#ZEw=Xa)>jQ#F!*JhV6Zw~xaS)c|4 zIzV98e61DP0#!+%Dc|7u2)~bfV+!=mZ?rG|^8|X4)!Tnjmd`nQS?T$g{&C(U4=xyj zYW6;^J#axux=XtMoBD|*UF#ObM`8jeBDTIRY!p~^iprODTt{d8c>bIxnHB$Nu8RMQ zavdNTul}rc_>UIc8)yETvz_xgcfRHwE*NFMYpMUyf;({Te?@Ri7QN}VRjkyVt=F6k zyyo=Sf3##vRIlSw!iOZj(eQ7q{HjyQhbr61);{xzto}apiL6YY_hxCuR==^+=WYKV zE!~f5c+cAa`ya5B43@GM^Tc^mY~|&1q}FkkoRL6tq|7+)^#5q_V)a;q6(@M(|6990 z)oJi>ft{-7E#+FeH_>|~7b9Oxwo3LoUQXvPCbjxiQtid$^7>w9d$;Ohvcuo6Bb|>& zX(?!63HhEREk+NzA>@5h=(M;^{AhvH( zbWJ=rpyTI_!(jQB_{ADu~RYxSB3L3q`QEFIo@2Z#_=@tI`@N1=96uKej`eac#Uc2$)twTIS!2D& zv?RPeP76JL8JOK9c#|BjL!4%LgS_d+?nk^Ia(|#_9{0Afo2bgh0_8EtZGJQH-(Ey(2|&%?tzBZiuO>axHR}~`fpZ`x{a zn0~jd_Rb9)-{`On1c)86#@kDLewp$78gCmxEI)$J7rl8Bva#{6dq0&{9`LjNYrXyX zBT5U)yv>ZQYrVH5NZUX0v)lG~N7|1ooj5OMfDzo~t-$xE=jE&#Gk_syznbwR)|gBk zAL+wOUSIteyYnOO8$`gUx7XWKkV^JdrCBw`#AN(qpLe|=tvfG!)fg-Lich^+vb6g> z+)aJRyGW)NpxCCbyr0;0K5QSv1Epn< zZ0)1ouM+`~jfsk`Qt#toRNuPauc^n#kG=lQNk8z4!JT@%qeps*mSt zp!&rknJ0euZ(ms%@s5r2Y7HK=aS%992kG07u(RKL>!ohTQ#RJKIL^yAcoqjGLShJd zcZ791=Dj!0jKak$mg_0v-#F%dI?Il??kq=sQ)%JY=)Bt!$$)d=JQ$!l>=kvnN*y9A z?A}f3RJqcP@j-ML_t76RdhQjIh!4EVYJBgjC*~hv!VlhLap@7(;0NyrWB(7{e+hX0 z?F;vA=F?wLox!yJNkr^UC-#+y*kw-aAEhpaQ~W6vs&SVBYn!j3VD4sRTf~pS(eJm;f0UA7YRG=xy70C%<$XH=Y47 z9c{pZ`MS?&W+?-UVN0 zJ@-RDyZ2}Btx`FF4+zNF?Po1ddvB9g0GM~$J4)IP;K$S6(Hywp7Xamm*-Ajk2Y%M% zS8pS!Y(@+l^s6_G1CxLCwv+PC`C0z2-Vf*rw8_7Df8;6S&R8ic&X_6V{^k8K7KOoz zpyLG=F>pK6WnVIT>UXb?<5>E;_XGD$rWE$^09=Ti^#_bE(Y)cTg>dfK$ZSoWY<`yg zr*{|6JMb?nZ}wj%@qy<|ww7f0IKN9K_&B>6g3o2DoR}J6GIg`)Gnu+a^zEgJb(MU- zbKIR|Uwh8(7}>XvQqnzEN)N?K8L#;ExfR*Zbjg>>#;U%Lo%(Z9H<_gF)qK$$;Uk)f zaDdlBc%{!mIK^kC42!l>2FF+_(_3*k)x z3*mx5B*Lkzcz_tsvTFK1Rf`VdDrz*uEpfiSs`W?#Yr9tJ#D?DL3$k-@z74gXY0x~1 z-j2r0YcDpy_cbA*QyzhX} z97zokQI1cV8sQgxv;lsW*XAF;1OWaV&A;18GPc+8H5L+b_Bi9XpSpq-X2Vi^H<0#P zLkH=xJ9LZ<`mQG(w-NzWO|8CeElX)hM#YRjXk!Q& z_ow-q*A(*)F?fl!G~Vs$dr`2T`QneOJ&^9JO^>V1O!wXBCg542@6&z!rL?vgK7Qp( zafZ)%;DK-b!?_GY5+;XDbYErvwR?5n9keU|k?yPHgldF(``QaM?X*lAe|b0J8CUYS zv(h~HjDsD1TB#ia7p?JE;Iao!bou4JfAgu_pHae|D)YH)(>}gpF(2;~;4y>PDlfGq zU*TIAGuxVn=%+XMjSW}$zLcbukn8<-_@0z@?|{)A~RP1nc-6(x^ z#QPL^e2k_U%=_kD{lRfcZPxi7-#=m_pRvHh8AtE&?TV#&H2ZXtZwhNW$@dbURU;G< z`2haMW4;sujO53C8h;kx^(JZ4nO6Y+?NIe;T_MxGJjrKX>j0E^~(QDkx9!f}r>eeDLteCjaULRQaNGZw4tkkfmw6xT<{kt0~<^TIT zGjq8T>+XE`aen7_zQ5mjpE+~p+&Paaj|SVTanj5q&nY9A;A$$A(@w!v{8dS|5y!#Z zM@`0<#`CBCrYsGlV+We5f?RvKt0&Usu2jbO$)COC$={}|4v>$(!LROA7Ky_NYODCd zUCPQ9jc518hV#(f$|Sk=4Ze7{GC;s8xA9kZE7_XYFujYg^L^DyAKqt=(no-rs`$)3 zN`b|n+M|pY{JCxXwrZu=;&)Xmj|;xMitBro!NO=crIw5`{?%zmi06g9%AaL>>uFaP z&+9eHQR7&J@+!|0`<35_=VEbm^`&~k*j9#zNK+_r4d= zHF$i!c;@Fy$55CTa5Aq0goZ>8eXcW>H{P&yHYm2CAmis+1_B03#PlvFrANfjko z)KZe+a^o5*%Hoh}E2%rJqyi?A3WO-dqMMQmUt39ST%+m5YmHL80Dj9_z8)o-&;-7A zZIEjn*804uM)|iqWEZc+r&!nW+Vd#?GVo1n`S-+c0$;L@tKWm)3Vzc%-k138;H%d0 z9O7%h*RA7)jo|CRUs=aDgAY6benS~zv%?P|u#(R7P z6D8}=JInZ3;x~XVUC$pNz5+awwT}2o@SE22ZQ$?N3BGc@$Xu{*=Df#W>IZ?SHW23b z&T)(!vfuJ;@_HcZ2*H)_ln6ig8rJi)uMyKZ@E6weso?uv0pD!c3G>Eed~gjFXjDEb zP)9XT<-_r*e9=zp*HAY~<9D7@2J;ubK_lI6)qIsz^T1HeZ#=K0bgy6I+jrn=tJbSl z^TlVBE^_s1z8)^GIIlPyN5arz|9W2O?D#Si+!5j~Il)~dt}z-MRy;a8ULsi%ahDZv zGaIoAQdY{BpM}9qrThR6cs_~%|DlE|0C*~x0OptDjVkQq{YY^o0IPxs zV15eT0Eo}F^PI00Kj%&$N+^@lzgEKI55jk`E8$z$C91@z%c_-p$Pda$PW_f2{z2(V z!(TX;FQD>D&!O@vt;*YKRo>RsqVo8*3(8Cx6(a_;(x=h7P&w#|f#u-Ot)`YX=^_fW zq}1qhRS;K|8hx%B{P9ww&((rQVTwL?9Q=kgMxSd0zh#Zl=PrQXzQ*WtP2dl%G5cJ2 zVDW005?*w=@W3*7&j>GiUFX;<#M*T8_zCN1MIE^^^1pQ@|MC*@FPd)CD$#W1`VwRG zA9?`=u*E8X3abDB6XO3({`NnVZ~aPc^55x6`%#%M`;~6SWYu`<(e!^xn$7XV zJX?ryI&|bkM<3(t&rNswMfK9?Q!xW#+L4nQgVRG3ijQ!^j$20yT`MRZYOio^RPJA9tZx( z-md9(J&F(9$b9`j9Kn7#J#~K&fBP=hoo^V=()kxZVMc)!!Mj;V2OJNGBXQk0h>un* z9ZO;u@6x1nigXGQUdzC&_hl6=3%H#;2Y^n2u0uHM1ri)j85QevJwaiNuV_*-ZBD+w z3E!m%;*P6I4;QO-6!?tvJT0KK~tC1AYZbMlC5O4J~Sb)FET(>!g) z+Bm*@hxa#Oh7$$HsmEbS2nIi{Prj}sw1o;Y zP|FO|=Ie@^wZlVm98Mh1igofj2xf=416*(7dBeCV;?co~DWJC$s!QX<8&5+*OSzgm z(98xnQF>-J@UbUX41N}fvr*{<9uDdBW<%rSnw9We80`9MgE$kohb)o_EXTj-oYivy?u=)7)Ij^quv93 z+(Eq4&&qQs%gUdXA#l$Btn`BO**$CmoV;IreLwu7j0!6|5TutM5Kn6k>x><0A-r@7 zi|pm^bH2Fb#&Nan?GpM?dn?6gNlsDZsKj+Qlz7Ey^iMPl{`L)}I~sYfsjPE?zt5@R zu;Y5%uk~R!sL!ecLC^JKy`m6}tJz`Qrtt+Iv*PqE04!nKGw57U=lwo)8W2RC4M*QP zVgq!H7dRu*;TA$M=s05ns4l&;F<=9Do{i<9NItQ#*oXkv6^C`t_G^i+7;gvK%WU9O zR26b;jVdh%ow&rPV&1$R)UW)^#QM>3n+`e~IvL08;=s>?w5(xOFpfe`mT>?yni-#Y zBCs>BliAEdhjr+NIB(aqgb~n%bChwQGMTie!g&nGI=NEpiH0Nr4g_@73{SDU4QbfT zQkNm6(`WJIGgJ7m)GK^tINlg%HIEn%^JXmB20X`bCLmk;0$~8pk%omGJeg@diWayKd(y1alFGEtQ*$2%(FcFsl4oFdD)Hfvg`E8tEU|7 zUR2E)2YU*KVe))GHWAzS%_AwOnE8i(ED_~p9?&34-hA8V3iFn-NbMG+gesu|F2%8x z+#5G;TyK{m*O;;@)2$_!3i9%e8}Hlzc&8B{oi$v0qv@U?cO1&A9*kZhNO_mx&D5wPPbSKYR=hja2ac^#*6zO zf7!_fwKldbxW(8XjbywQ$inRoy_=zQI`Gy?q5NKj6}L`7_f{$BZWucp_CFZwz*UU} z^4A$#U?eC?6$wf(Y%B==A8fSa*i`d?p*}W9sP{0`9}fC&>eqr;pJ<2P)2If~Da}TP zkq}J^0~ycM*oZVVe_Nh068Ez5OAuF)toO3C&4!Nq2eS^c4&XH!i$D~;Ef9LducBzu z*sDFMT>xYaL4B-f%!=(}82Il^WtfX4#Frv7|xbBD7Tc)Yr*o-nwwG{tDn$1c++DTM$nvu3!4hW)>2U*delGlaas*(p= zNVAd$-zq`hhq6~&*Y6Oo0i%A07-_uaID<5L`@&Ew!nTTzuLu`aJIn&LRZQE%*@zA} z8CJ&Q18&;sn4IFKjV?aUzhev-nr33IjcG4U>*#Jl^Ja)0cxnjX!y?!{crqxDU;`2z z`aW~Bj2Lt@BTdFkAP7b^OnouB9J0mQ!6)SL%X1xJJS38JNipWwI_BJwnRo;1ukV+v zlEJgm2^??TRBKN5_M348&LEh-Hyo9Qr9Qs;&0ett-n3_FDYhi{-QO zJHP}~%EJ1+F{O;fV=qYv9dLiFOb;Ho>B_DKJfqve%Xo?{0gr8ahzQSG334fV z%;*?dY^{{jt*22#6wVa*vS@@_{vlphkTZFHL>#abjhWF93`YIEBFcZfm)Yv=XxER>E!KOfHu$<6D=4r{hdWYR{n`nXtW6g@}A z+QRrpzbIiLR6mfrvC+=0&@w`tTjFcGvm{d9*BzAy_nYomWbrJ*nOcQY0-b#R4muU- zLBFUJtY0O%9qx9?@&Gt^WJrb6K3N_Dr$e%w4ktKS&VUn=EN6Fhbj7L?PFeH3mcTxB z(!PeLl9=~Xs`P%)Q}zp7j)e)@(m;a_eFE7N*Pp#(i?@Kfu?5>$ zo{}Q*&eFt+myUEEI*%F1wmNY{IX%I>@A+sTn_+XlZ0@b$eNtGoXJQH~u)DB+wVLMl z=BAjHo>PO^c?WMC%{n;{Hq3K+IEvW$_s+()9R8!u!g>F#(hoW!a%^S0s*bEXe zl6m(5C^|NStQg5MWW3YgKa#yjB``08c{hX57F^CVm^f)+ZwB-31)+eAnM`a2$<1Ur z)-DXOfw(41CW3#L#eSl#Ae3*Ptsn|*U$Bp6H*W>u6{A^NyJu)O6Ezt;;!(Mt z8_go^Vh^kT9c+qtyFcd+*3YI^(tac?OVLIozIhx=4|{F3`s+1B2>BRV4#Xnj7<&`2 zv^eO&;@}JNEj1n_um|9`0s?3yr3gFz9-hMfWye|uUow@AvSZD{vu7%+u-R!fVfwx7 z-}ZypYddK=YmU0S3#luzxfwk?x^>zluEx@RT|aY*FPg!+$#D4$^eDLR&tUJ7``k=+ zIT=tiXZ+ElpimUgBN(eBKevn?2@8aXwPBu6VbjmiZn0B*&n$L?8N(+k8QpXJY!*xh zJn>g%vlqnqciD5mpsn-sb69y0uwsL^8;_nU|0;(K;QQyYRkR7^j$D?ln)|l#8-_hW zp3S*zhpi*_jf;^~FQu*Mv~x<*6ZmZl*d3l-^Vm#VM{|q1O>b@i)bStl*f`IM1prt( z^=OG{N;m9Z@>=!zvYt%zgjZlsl$&i7A_=_`6)M>UWKm@CM{+&95Gl< z0Lqv;`D5x7h~?c_g(fE|mY8XS=C%SBB6fk)7O=5u!yf!@0Ar(5KevZJ_$Ujt>lgO$ zw1?PCpP<@3o|hhC8*S0n7=jU&q349%+;jLn%UBe3)Md+<_i!Q6QFkt5OIj

UKPP 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 diff --git a/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_classic_triangle_vbo.js b/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_classic_triangle_vbo.js index c341097ff..e8283745c 100644 --- a/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_classic_triangle_vbo.js +++ b/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_classic_triangle_vbo.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_2_gl_intro_classic_triangle_vbo.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["ub"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["xb"];addOnInit(Module["asm"]["vb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224632:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ca":___cxa_rethrow,"i":___cxa_throw,"sb":___cxa_uncaught_exceptions,"e":___resumeException,"ba":___syscall_fcntl64,"qb":___syscall_ioctl,"fa":___syscall_open,"ia":___syscall_stat64,"nb":__embind_register_bigint,"la":__embind_register_bool,"ka":__embind_register_emval,"T":__embind_register_float,"Da":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"S":__embind_register_std_string,"M":__embind_register_std_wstring,"ma":__embind_register_void,"y":_abort,"Ha":_emscripten_asm_const_int,"V":_emscripten_get_canvas_element_size,"ja":_emscripten_memcpy_big,"da":_emscripten_resize_heap,"Fa":_emscripten_set_canvas_element_size,"Sa":_emscripten_set_click_callback_on_thread,"Pa":_emscripten_set_dblclick_callback_on_thread,"Ua":_emscripten_set_keydown_callback_on_thread,"Va":_emscripten_set_keypress_callback_on_thread,"Ta":_emscripten_set_keyup_callback_on_thread,"Ra":_emscripten_set_mousedown_callback_on_thread,"Na":_emscripten_set_mouseenter_callback_on_thread,"Ma":_emscripten_set_mouseleave_callback_on_thread,"Oa":_emscripten_set_mousemove_callback_on_thread,"Ka":_emscripten_set_mouseout_callback_on_thread,"La":_emscripten_set_mouseover_callback_on_thread,"Qa":_emscripten_set_mouseup_callback_on_thread,"Ia":_emscripten_set_resize_callback_on_thread,"Ja":_emscripten_set_wheel_callback_on_thread,"Ea":_emscripten_sleep,"Xa":_emscripten_webgl_create_context,"U":_emscripten_webgl_destroy_context,"Wa":_emscripten_webgl_enable_extension,"Ya":_emscripten_webgl_init_context_attributes,"Ga":_emscripten_webgl_make_context_current,"ga":_environ_get,"ha":_environ_sizes_get,"R":_fd_close,"ea":_fd_read,"mb":_fd_seek,"Q":_fd_write,"a":_getTempRet0,"Ca":_glActiveTexture,"ta":_glAttachShader,"H":_glBindAttribLocation,"P":_glBindBuffer,"Y":_glBindTexture,"Za":_glBlendFunc,"eb":_glBufferData,"ra":_glClear,"$a":_glClearColor,"ua":_glCompileShader,"xa":_glCreateProgram,"wa":_glCreateShader,"ob":_glDeleteBuffers,"na":_glDeleteProgram,"oa":_glDeleteShader,"D":_glDeleteTextures,"pa":_glDetachShader,"x":_glDisable,"E":_glDisableVertexAttribArray,"L":_glDrawArrays,"W":_glEnable,"B":_glEnableVertexAttribArray,"ib":_glFlush,"tb":_glGenBuffers,"cb":_glGenTextures,"ab":_glGetError,"s":_glGetIntegerv,"za":_glGetProgramInfoLog,"Aa":_glGetProgramiv,"qa":_glGetShaderInfoLog,"sa":_glGetShaderiv,"ya":_glGetUniformLocation,"_a":_glLineWidth,"Ba":_glLinkProgram,"gb":_glPixelStorei,"hb":_glReadBuffer,"fb":_glReadPixels,"va":_glShaderSource,"bb":_glTexImage2D,"I":_glTexParameteri,"X":_glUniform1i,"G":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"C":_glVertexAttribPointer,"db":_glViewport,"jb":_glewInit,"_":invoke_diii,"$":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"rb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"aa":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"kb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"O":invoke_viiii,"t":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"lb":invoke_viijii,"Z":_setTempRet0,"pb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["vb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["zb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ab"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Cb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Db"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Eb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_2_gl_intro_classic_triangle_vbo.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["ub"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["xb"];addOnInit(Module["asm"]["vb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224464:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ca":___cxa_rethrow,"i":___cxa_throw,"sb":___cxa_uncaught_exceptions,"e":___resumeException,"ba":___syscall_fcntl64,"qb":___syscall_ioctl,"fa":___syscall_open,"ia":___syscall_stat64,"nb":__embind_register_bigint,"la":__embind_register_bool,"ka":__embind_register_emval,"T":__embind_register_float,"Da":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"S":__embind_register_std_string,"M":__embind_register_std_wstring,"ma":__embind_register_void,"y":_abort,"Ha":_emscripten_asm_const_int,"V":_emscripten_get_canvas_element_size,"ja":_emscripten_memcpy_big,"da":_emscripten_resize_heap,"Fa":_emscripten_set_canvas_element_size,"Sa":_emscripten_set_click_callback_on_thread,"Pa":_emscripten_set_dblclick_callback_on_thread,"Ua":_emscripten_set_keydown_callback_on_thread,"Va":_emscripten_set_keypress_callback_on_thread,"Ta":_emscripten_set_keyup_callback_on_thread,"Ra":_emscripten_set_mousedown_callback_on_thread,"Na":_emscripten_set_mouseenter_callback_on_thread,"Ma":_emscripten_set_mouseleave_callback_on_thread,"Oa":_emscripten_set_mousemove_callback_on_thread,"Ka":_emscripten_set_mouseout_callback_on_thread,"La":_emscripten_set_mouseover_callback_on_thread,"Qa":_emscripten_set_mouseup_callback_on_thread,"Ia":_emscripten_set_resize_callback_on_thread,"Ja":_emscripten_set_wheel_callback_on_thread,"Ea":_emscripten_sleep,"Xa":_emscripten_webgl_create_context,"U":_emscripten_webgl_destroy_context,"Wa":_emscripten_webgl_enable_extension,"Ya":_emscripten_webgl_init_context_attributes,"Ga":_emscripten_webgl_make_context_current,"ga":_environ_get,"ha":_environ_sizes_get,"R":_fd_close,"ea":_fd_read,"mb":_fd_seek,"Q":_fd_write,"a":_getTempRet0,"Ca":_glActiveTexture,"ta":_glAttachShader,"H":_glBindAttribLocation,"P":_glBindBuffer,"Y":_glBindTexture,"Za":_glBlendFunc,"eb":_glBufferData,"ra":_glClear,"$a":_glClearColor,"ua":_glCompileShader,"xa":_glCreateProgram,"wa":_glCreateShader,"ob":_glDeleteBuffers,"na":_glDeleteProgram,"oa":_glDeleteShader,"D":_glDeleteTextures,"pa":_glDetachShader,"x":_glDisable,"E":_glDisableVertexAttribArray,"L":_glDrawArrays,"W":_glEnable,"B":_glEnableVertexAttribArray,"ib":_glFlush,"tb":_glGenBuffers,"cb":_glGenTextures,"ab":_glGetError,"s":_glGetIntegerv,"za":_glGetProgramInfoLog,"Aa":_glGetProgramiv,"qa":_glGetShaderInfoLog,"sa":_glGetShaderiv,"ya":_glGetUniformLocation,"_a":_glLineWidth,"Ba":_glLinkProgram,"gb":_glPixelStorei,"hb":_glReadBuffer,"fb":_glReadPixels,"va":_glShaderSource,"bb":_glTexImage2D,"I":_glTexParameteri,"X":_glUniform1i,"G":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"C":_glVertexAttribPointer,"db":_glViewport,"jb":_glewInit,"_":invoke_diii,"$":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"rb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"aa":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"kb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"O":invoke_viiii,"t":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"lb":invoke_viijii,"Z":_setTempRet0,"pb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["vb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["zb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ab"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Cb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Db"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Eb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_classic_triangle_vbo.wasm b/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_classic_triangle_vbo.wasm index 7f903adb9b8fd6fab5e670f8098e6bb522b8272e..fc4d1911254b765de9008cd9a619f1026ee06bd9 100755 GIT binary patch delta 64864 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%0DGrp=V(}bmb?AHr`3~$|=L6Bn-f#WRy4U-%6r0 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 JQ$Zid{|62>(^CKd delta 64769 zcmeFa33wI7(l>slXU@!=Y#bm!Hp0na3!8xKdxm{c5qD7(cLh}N;;tk>kj03B6X_^X zqvi_A77aS6QG+6)qC`PN2^y3oDr!`&qN04i>e)_0K<@j#-}n6A`}{#Xy;fCMS65ee zSN9xRIPl~92bR7Z!zvysE05_R%U|jH%6^J(sxrPRq9u-QcC;owlljKPOCeuKnv&rQ z$wtoCk*gCkk_*0$pE5Ef#6of=iwjF5l`P{>O+5ZZ9!q>aRP=59l(2%TAsIO#B_#Dm zSc;d7S`@0SiA-;HD?3~hIoNDecJ9}Ng8(2Dl2On&f#OZ>9(m zC~H)_Y#c^G$_7KJPm5b;T!Qdrd?zU0P%>^B}N8z zZWf(ac4_DF{&a_wkUu1al;ErW6rdI~NJP{--5WCo*{bT%w_OpqNL-N(ow%7r5~zn+ zNHU1OjwnX@_Z&qMHn->F8Ey>}B;Epr&nhg$4seI{x+)-ghlD4xu2*wH_I9tHEl7YE z2^fSYq#zI%7fbTnr1xE{=-bHR-ZM!$ls>r(iHrI?g2b|RebXh%9NF(YqM)c>TPpKr zznc;)2@JC{(ci!`q<^zmf=h#g;+OaD5(|WuM589}e|j5h7=-nZIu4Z(3n4f)EUM6W zQ88*F-}N7S#wNiol-Vi*aZ;>Nc_@Bpb|1jrf?MIAIweiw;Ge7?9j@<)Qd4KA)k?h*yMoS|c~Cpu}qQ`G7%e z%b`f~fxQ}eRYMw8o;dJ&w)IeC)4&-jU>HC!V9?lsMIeK+shh1)ZWN11$TtQc5f0JV zjXi+c>C0wxylIzVR6h9qJ3QR2oP~6&#HKBYl#o#KRwE#|Mk6PiQt}b7 zxJI!JcJt*dz>;TT(2>}L6iZM@1`sZ$BoT%-iUZL`XjHr}mipj}VXfGanx(^&BkKmo zs|x^o$Dzm@gS#-~{W!RlPF<&=10zX8+H|wBso{W&u7dE|sy4a-kW+06MkSa#ZAdSM zpQnc0-!!hgBVh_vyX%)Se8~r81x`9;0^(oZm%(}=;qux6Ox_U(JAH7I`vGjf@ zV3B1_3s5Uv$Gn~9VhPbyi!P#hG9-%$HPU44TT$ApdaTf1N5=LfW#VYBNS|>dj#K!g z&&%@1^^jr@?+}v*bm+%rADod9)5M)kHi;aX2&4;pIEq^+ z%twZO4UpP!nMnG?4n6J0)GaXzP?Xr%)-qI7P|ENHePV_a&5sSqk>J`EiE4_KPv|ig zGl)TvrzieGGwNfPq}E~nrb}LwDE*#Er#tCl`hIEBt$tScPNdsaYhrWeCqQ45M!7Fi zbJdk2cI}IUrj#(03|<9SjJ%pis(5E}s`Ucy)gw%>n?@I$u*EuU{7z`Qe%^a(*fOwvX(+ z_Hy}9Xn@Ny;{YliQ-4whtHUAl`YyzY1K0O;I3XC<;fD6nH6>9~$Q<$3PrSY9 z1~O$Li*D%d)D+2^Z)k&LzAj5i<(TFj4Ho3#q9thE22;BN|nDclnxG1 zN-w){>MBO%Q*O$1(n&&K8a0btdD9kFvWGv=+utI)HI!VX4>Nol^h_1Rkl0*;z{6XF zrCW^P`u9X|WmWu8XiFF;PT;5$$lYUS;Cu@TfsBi*XoIqt&e5Qa1A?Y?HxK=h$ z7~C?-#ShJQ07D6@t0Ldr+_eiR2p&@mUuzlTBwi*qDcK>PANfLp6&pa90Yqfv^m}^% zk`2v}NTa)$2sZ%la4~@@O4vl0+DBT>i0J}?37d2rwoMK;3kb07AZ*hj6*HQ)0Yn?B zh0)lB1c0LHq+%fpo?{eOmHj%SL}DdXWsm-2i8Lx_kHG9RmaK>iW*Bx5-ZpfS%2H>tZ+}{!8?+Z(Q5Q-Km4pn#{lc^>x*EZ zzi&Wf#q9%F(Vob@+n-^@R5m4OvC`{_$d7lVwp5@Ohs-e4nNuLiR`U&)gDBDaVn{%+ ziA{Sj)+n^v1iTRFWCOWiF47<1j3UuR3q;;9pD$-fz5fM6C>zPSb5hfiJy=>mGHs0p z7RE=G%s#(t#9g~IQh=6P-yzm7DIwB92pjtj!lWaOJ~9>DkA?UX70@#n2NULOrs0u1 z*B!-T2DxML%e{f}q6j%n& zqtO|;d7e8sg|3*ev}L4X-rG=|eBuOUZdu&?XH+U@KHySAgP8CAUT+ggUz~|N{%TL9 zt%KLegk+-DV~gw5itJtd3{{YND{i_dx9!1Zgyg`3{p!GZythIMjepQvsnakszK_yO zDE)Oy+*XMeU(r_)&1$){PP57;EFIpAmA@3>EBg5ho`b|kX208q*T%DivXqq_6;C~4 zeOXsMiUz&^vz8H=yE?6v)1fd(sa$Y`n3_c2QNhS-t4E&#EXyRwTGKVUwUN8lw5P@% z9i*g2UR#swbSC^H$PWd-p;an-t8tjVC{Qu zBSZ&~IF_kfpVX*7pWS|ZW<=fEx2*q;=J9EHLRWqby}7JW zfu;DQDP`fHQCJl@_SFX6uEqEjkEzWgAMZ;{uu7GoKzv8$ix~UTBhB{To3@||>(t_1?B2gCA325CivtR;YqU?l0lV78zt za?yddDsUPFRb_Jz+#$H|=RsGV#VE?E=|}CqyQY`Zi-I{AkInhEg_2gbtLFJwIVU$h z^1$JA`Yl^~_*yACA+q*x_s9*u6t>(amYTGjL&(xJAW_Grl2NfMlKyL$5DopcYs)B8 z$u`*}LmEXUvQb@Cw)j_BYg5mZ4M|;~dbHc9(WHH_PzJ1e#%%<~ZP^9KLQ%#?gJa}{ z0%H@Xp{vtx7kl3%5!X00mS zC9$$NbDAzGFnYTBQm;|}wcQ=*##}&LNR-Vi#FqyfrsdSYj?=Tr}-%RQi zSMid_!&cMF%)GvtbdlJjd84c3c13`QV%?-BWQFkNr%SGoD#+nypDu|i(@vMVhi#^k zlCqg9=67&F?151E>7$iIzWsEm&VV(gzEV$#cj_rEBqT5P^pFUJQrlBXql|=JQnH5r zHy+82=co0OT+^0@pm|;|>0QCoP#>>;9U^b*^EX72&Eycdr_b?3E|LPZTjQt;P^zGx zRCjXus2>Ca8Atm`b@Zv(t-myYv6|2LjRU0?^n2exsT@bi%PXaxtny2K?v+vmZR9mqN*xp30bRXQtXiS5J~7)}CH0ZmE?W7l;OaF}2UdE} z?0${3Id}?m)&5F!-Ej&ftG~5cAm1*Ly~5wSUFz&~YD3J)+i503Tgs&6%;dYJ*<$z= z-Rnt~kip7(rRfB&>jEi_Up7l>Rfj7JW=WkW_k~%~04GCK`(u_RTAi~!?PIIrR$54n z7o%=*c0Kua6mt5q97$LjGj7)t`LGtuxQECjoc*6>5cQVMVNuymDmPQqwD z7CUb^O@U6bw{_^8gg^PPLF2PKl&Ys9&S;2(g5WqYrYA1so}GsH%t#e^Q9rP6#ryQ^ZKADgne%|TI^h^u&9nk_cf z{8SVPXB11LoUK)zI$R0)qd2m<*yTv}-!Q{m_=Gf6B9-_4lhSTd=g&SRy$4x)iO(L( z2JoAAD3|fz)0lSZq`VQ8Vm4nPbyb{vbIvO1Nm;Hk<9PdZ(%bUt)p7jCb<#5VNLd_T zR4TnEZ&@G5FM3YOlMh>2Aya!^`iaRqUX0^M*GnVioK5&zW=slC{Y1~?S$VPs+g)vC{<=x} zT~0M}T4rcC4D@x9^>D(&!+qjU*08ITdwB32X}97JCB*Wd-jNJeRblpeSK2L;@zdl3 z>G~LdC>Ca07>8kI?g!G7ELnj~ADYryPR&rzQK=(oTObv^s_-EnO5OO352a*Cziyeh zevCtte<)S6_|@xSDHTYt4;QRwX6_E@Mka49W9H$V(l#w+({36vVJ(x*%utOjyRm=z zd|&kS*4^fw&!z7rwrRKdezhbkY|{?&qkU4}rrzQR0}l&|cbQnv5*V>cqNQpQA6222 znEQ`N&Hbc={`}K3Y*Z*29v5Q5`l@9tG43-Qml|Xp6~j6T$}H8HUxYpqD{C6!&K4?P z^_SGwDMAY0o}aP1Ju=M1*5$Hep1nl)>=G(%+DNb|$aW+$YGszluRG?cPBK&YgU2LV zr}EmwKq7znSUqd%^J7v3^RA@|`DTd;HTwu-u6Wxd~SIMm9-?lK3KZjyr zTV*%cOxr9(Gf!gULa>~2)ZhyhR@cV08eC~N_$rlMhEZ$2sWMZ7rDEQrGmQd#UVuGM z+NWO(8&AKBVp!)C?7NPd0olVwtN6t(srW6Q$17vlB(}i@J13T1*`~OPOjOAEk@rOa z+ivgKDHS3>y`#smPR@iTI&p9u+vim+b*dhH*RGoHRvj6CeAPM2md8vASeOa?)d^l1 zVNK+GrKOu264+Sirq6ie#tb_QpK+rpOXvN9Y$q%D)JiP=lxH?(hgtO}R{YQ>6i?@u zHzgTs!ZxziJFT1zJ55xtm00ao-lG{ieW)X#u{hn7oPljT201lK=O+aH8CZ?9wpJu5 zAsGuev5E$@V$g||!ir{=9NyiWxyv$PDwxfgu-md*Fn4K0?J{3)!ER;LPrXxEA^ldS zupad5Pi24gcFAf2ZT|+btW?csVKE$RH&Py_w zyGKM~5g9x$nIBYG<7I!vC}LQ@lfmk&ZXy$wwldSgY`VmXZ7JN^UwMu%ZNrvB&kIwB zU-P~?!Q9>!x+TGCzA#*p$eUiiIDV={T%fk12CRgM{DZtcl(5?Jwb z{H$SYAuHU#KOM$0(;Sf@DtkU}-? zB|d+!fSn;FR&R$;CSe30roh<<!cJL<_v7{0CJL1F;_n}OV z2#3|)IG%lLVgg5F1S<*Sim~o5?gX2RzI=1t@U+lk7J+ zW+k-aQYk|>GWiovv!>>(r`eSfRrqoRyXczuiY=JvtH|`p+r&6l1v&Drw;6voUY;ug zXD1+Vcr)WW6XZE^J_46CLSW@vj8`{8;SHOZc~wxZ9IfT;j5p+<&X+tdjpvmsbj5t& zV)7J~^DmN_UulJt@B=l=@5ml+%)nx5Q8BD#6v}W%yXd)5-yVvvD$E ze*aJTDcVEfkrna{MC@NHWUhG|4N)#t{F!yKSgNO%%I@BUP|VmuYsRlHm795sNEZB6 zSY+t%3^9Aw?vvB_fsf?d^iD$Itz{hZR~vrbbMivDWGyqRpOgJ+pyHtqpyZ8;hxqrV zoPnJT-gtw2de2g!E2mh8D^?^-Hs`<*Waz~jNU{%$7{suXf zt)Ii!;J0JdoCM?0oCH$IJLV*W#Cm2u(pK()*!hea1jWJQzB&A-4RYI2$U_^1{}jzq zHWr$LX(}eWTQX24qz2u&nKg81npM+k+2xwT|9VA^;gcK3jNp|o$!oIn|Ae(GtQ~`b zmeFD?K(I)dEmo=(%tNYJsXBB}W`>VuWWPg=5m7`HkOYGKma$NuAki}d6#u0sx~}mn zatn5N4)6F17*sSj!B{<4FsNXz&7i~JO5W#!K`W7Moy^YVH@^Y~Acc>JKCW&at~2yV5QK&jPMa36wo`GHJ}AF&Q{ zqd+mJ3Mc@6pe4({K7NlMusKjbEFOyXkhZeG#kt_tgC#y=-(3F0t8&^^8~(zP^xTBt z@63pIL8Cho-13J+`J&u};4;NXh%VE}Et7W)?xTS68#5ZYB`gL(^@U!O6ZMi@Lc1fE z4}48d8w%}UAcfF2u2%tBpxRQd1|q_~Vk9C>Tzm^=C-6sJlUwRl0&3no{yLzl>vIx} zs$9PJHMvdG!uEM@mWv=pUY?ULye7}q1R zv5PolhaF5gr`b8xlyh2FpKkyFzJQ1r&|4`$I&hbh@}(1~6+{8SQ3MtNd$AxY^0`e^ z!RPVWg4ha?Ui7)mpOpyYp*WIJ`E?Z6sSWFq{C3H_cOTmPz|(IDKaL8dh{iH1xBvxL zImG56vQ7|-3G9eNV=ht!)r;*wwoyVMqQBJ1D|Z501VMmY>6G~v0m085$jT>vGGcR; zQ)3?jiyW-gh}`GUbI2i8c$6M+Dr6rPH~`})B@rF`3%gHqzK9=MOgI$LIwT9y^AT8{ zX?IW_B0SUXpf{bGt5H)>C-_=|m|#~i@`a~kAyVcLWUK$zBVB-A;snYO_{$N34T${i zh{q3z2#KpgKmgkTU<4~iCRS`k%oa4nHX$~b@&qB(s3P#Z>I7=C5jx@^+K0$t2hs9s z8_@y;1fra37ZLj8h=&NVS`QIod8i@~eeEDBKuV>9Cm)fm7M^UM@itw7a_Ye_-VFLmJPpO9oG_OR=!h=XLBE&bKL984# z1e)ySPG}PXh0f5aK%~II^D80(&preMo+KrE~^wJRz5%LO9MIidgK~#j4AG?scga#@^ zd2>5%{e=DH|ZFMdTL|0l`O6Qz&B5 zA-_5ma=)@QPu^F6MMG-^0)nD^WEJP+WZT-UkP6V?cpQPf4vr#3K6h}eL=AyMkp7fY zp;X`iy&EWnaBN4wVlT2PAPG5wshgY{TM>A_z11<<#umihac~@Ssvbf>Fl--S5C{xW zfUZK!(*-*a^K?Nis)#0h-~^5!uvs8N!ww_zhJ$C-KAR2Mg$M~m`TJZ%Xv_k{Y($9V zAZ8;%tO!*EqTd}vPa)+;hiS!#eD5Io1QEgSO$Z1)@UvgogBCnl!qT@IdX5k2g{-|hsCBCy-;BjX4n zpE!utIf#l72vL6*?6)}=M_rVMSTS{&5XD@?1m{Go7*#}r{&MhSuSC)gr;kbysdNzS zMnu>hTM!V4Dm+9aZyqAVNnln;g+u>+P)4 zPvmgCw}R{?@z`3K&Pn*xTKRN39eKP~UPBu#XZ*AL5OZ2dm| z>S4JBE1t)99+pp|xcV=-by~6QVjeOOvM%5-?3>W0!#;DwzvMGx0_0SchR(q$r>Z2I z>yOFXCAP7eFO-xE>Gw-X=|%_>nX*k}?3b0rlyR$~Y@pw+ex*;^#_G5!Fh#>!NE(yT z1n^r-GyJz1+6-gkmwb+2SwtlhRONa4eM42k^m{;6Zb`ChqFz|RUW~o82g2!^GP(uZ z^#y-9U0jaiU!*JUnS|Il%ATR8oBdiT@GYwS+%2{|;{?S*lG&`aQb`V~{9uQ=o{{8E zZg%UaoGBcrvO6i=oFf7uO)qy+&ZlaPJ1g$-oJM^+uCr1hA9qbc?4GykrZiDd=|s-3 z>3&O6|EK(6`6a!T|4RaMQp==p5zb zQN}%n;-2D&Lz|ZjMfj3MUoQ~7ls;5>G|E{Kdjr;<2WSw(ls1=eRH6v~yI+UZ!`FMb z(mKOcUs?w_6p}i~`h>cEzWlD?%G3^SFHW2+=`e8b&Ekr`$wbrhc~FrV&If9 zV}#|1)MZ3nVdYnhP+Czl=R{>t`^^_eDDO+%Txb@iBo7lc*~Ua$Sz)>e1vq7+ydD+o z`eBqZs=r(GIHm~7ErLPj$PC%>$Q3R)00=Kfcc=;xSv^`g&(o6)(#6xqC@rW}ea3i| z#W?@R7-dRyW$L0tF?d85i86nTu{yZ(*m}I0Jl5jX?5GUEs~5&9PpNQxGvT@Zehap4 zquJpGbdQZ$yK2<1i&uz*qvC)0>cBOAi(wUn?f5}6odo$!X+9C_Z zPJ}Zu%1*dLDN=(~8*$GOzAZkeLu}Y=H2<8XYzz>riUrC)#O8Xh`<2ru;hOuE*9i-6 zm#@4-zdzn#ike|M;$O3|t8t!^aa zW2HbYSQ}?<_*l7>4!d~QPZW3^&NHw4L}~0fP?hdd4vAyJ$3Io9lhKUN6mfXVXML_@ znzKJshFK?)8}}&9c-3y@MsX~9MwM5pyZJ(u5^zgdXTT#r_X^x8F#P_xVr6B2;bmo- zUwnbdmmIRpK3^&mByz+u@Bd1I$A56bzHUiwnJv6|r&P8^}l_)+O84s3boXQdb4^Aj%Zkz*HPPs!zL;`qeF zN;m$?&&m}PGZDK`C2p1dZgK0t?@HVDbVeE<_TMA1pAz}^%K|O=E8|&LUU9vi!lkcq zM$+~?xit@l)EKjE8~?d-6JyyHA6A|j3C7YbKCGlO8u2^Y`zHrN2?L}=xOz1*ziscI zAT@yvt|E$5g;LQ*^P&#^JUCwNG!Jz0{~)yp!TGB<>xLiX_H3=RrspG!zWnnp{vKgc zR5&l2ih4#i9Y#n-wGRheAw);TzN1Pp{ENkMYUJChR=l(bt^yx7Vy$`UkCKM%<_xtp zj>D#g{cU{wj|=@hQhjh4gNL^QeUEz(xV%R9#$mMMax~Yv`qNv=M$$|p>DI7j_(r2F zZMx$IKD-@M!?7dyglk_0_ar@Ha`X)q!)P$ok$j?m@|j8)mX z?16J2xj$Oqr*#S3xkD26Q}BaTEwpb8rXlA<4XHR}-7IA=N;STt$;=5GG9_WlksZN33DyhP!F2aaH7 zu?Zu_(W3$(ov-cYZ`E8OC!eVqXi7ZF*oFMO+Zi!uMB@L___Ut>SYGr*Ab~&qv6f(t z@9rPyXGI6;vSd=LUCu&n2NrV`E5y-UwUbtJfN$#UA8>gtglEA)T2~o`Bu5m;KWOjd z96`mS2Sg^ySo_L{os}Untd!aV*7Xge2mqq|R}A3gKh6#GF(2yVzuO;YT@|EjD{z!d z8|1$Zr}pN&LH@Q<+^$bR-3~f@-}ecBaj-v~)qKKt4)#xs%GvY@A2`H6njDPp8{+RA zTe1^%Mx#pUPX6i;e;QlAlkXnlKikX5-^qJt`N_M0-;?FP39b~A`ko^6kB<#;r^MOt3Pqd7fMkT3MEnFkjQmwyguCj zdvmMNp_t$pz*gv{Cm9!XRh9oa!v8@Z+*E}SL40P4d;L^S zx609NR^fsh@{NcGzi4<_VuAaxCL87dgoXFHM3Si~SUZr`thQ5z0oML8#(!a~lVgCh zlg8qd8?Ah3tp7H7%M)=tVVwWsaN(z-xpV*yNO_-v;nOhgEIu*#WPHjOjsqk+2flc_ z__yQyKgpX);>_wZ{G)XL!l650qkYC6|UKgm4dEc9DN@2npa!Pn`c*Y_eNxl`|IX;fF8scVj5s?qdIw zfcDPC{(%k@iSmOJ{l7{9u3zHs-Yy@&VgSdms%J%kc;9-j-7jW?OQ`34%ZY zu_cN!+kptjE5cieu)Am17;Eb#Of5}X%e?DkC|QX0#gqLXLk7BD;ZK(W=2=(x&zF*8 zf;d=Bu@tm(+7IH6Zs+A!`je6^euM;{7=FpsP@ZV<-Bu;sIf^zIye`_89oav0_wv8)nJ zaQy7ZlaJDbvZ*4vi*4@nIWzo`Sdo4REepk%p`yEPuPku~i>iJHAHYPP6ZW{%}anhf~;V@oI{B`#OK? z=43$>z2%?OmQ3Y8zVSa8q(I&u{#T@w;`fEL3fnW$GC@hI3(Ig%_)q^}R`G%P#Gn49 zO#3;W>Dkh~T>1ot{Gm6L7><_@TJw_2)&4N|jS6&w+y-`^#vhJX!)-RKCAgN=93!mk ztf^tuvT(%@{2zIOqz;rcK2B0IC6&*V)GnHeD==lqS}Ca)AnTZ<8u6MTyF)%_$&mTRDSF2vQW`Vk8jF zR+~r-sBVM(mg-jHEIlBlgp>@G@0HbbOX6V1z-ZMwb3wJ5%MfmCNSF`c+oL{{r%73+6)F9~A&=?p99$+>ZrK%ywfip2@qswQiY6j2T zuP5-QRP{<;nh(3F>$Pe#v$Li?sLEU635g+)Bw3bj7CIg#@ZJP9g-qZ-6I9y-rVNc*D;#TvsMD<~DtqP91eV3_P6Z7>X^%~7#v`UQb8nPHYF61#$#g<2AA3M*?>Zs06Xuf-Q zJRPvWM4}}&S#^G6$8P>fU-k094srX+*u9$%>8B4AA3{Y1vX)|v;SY4f7CGgNv3}CEP+%Crpt!lTqd$9Tu8&dL#^%fkwfI(Mh zpAYn)2I#Psi53O)mL9ULgG40ZWjQ+9-?Q8N-cWnXmOnWSRH3@E5P)S+IYLd8p{Mxx z5$c5)XP_3gTHd*qL}BZ6letvv6OLkvT;m>x8oxs0*UR@y<&X4DLW$K%9?S1j)IqTJRuG$g$ zJ+9nRJDKI`S&lvu`h9k}P&@qXa`g&F&A~#UX^uIg$kRPS&7JwG`X;M?H*>y{L5&lN zTWD6gn`z>1X1q8qy>$#PL26{&rVM_pcWg&4e=TLo!!w%ljPvC7 zyjy1$!%y3$>Leh2x2fUgP&vsExnF2!vA-_~LA)20%BOEr?>z&HQ7pnT6wG=#mMI5| z89QvWZ|S40HteiqNHV2iS1?G)P$ADUJSl2z6Jpwj{F7dJmiMbvGm}LP$T)3WiWv>B z#AIk>7~EBdk zEWxrKdw=qWY8Tk~-9JIfA2{X^9NhJhcc9VCTc`;j`x-)I!ZEjP{$ zB=!*YAugpEZKh<bP(D)A@3G9LGYI`{Wd&Sbk*mkYs z;=vX*%J`Ckvn9-Fw&4|<67utVwyVhrn$cz&%to>B3?=Xx6Jy8n@3vzC7WJddGB6oB zu3fU`o<_!@pD?3$VB`^m>=8TACJpBxYG!OyDL(y@*hK!~4z)EhKii>(ViTZH+F)O4 zR9NHwkJV6i5RU_GkewRS4BuJcj{PJNJ=qn)4S4Ycr;kFklS`%rZR0_m z1u^O3Ck|D}CU%WVv8W5?Vsf*liCE|TA;N(b$H!`uUg+fxEQy+e5Vi)Q;ig$|lPtK7 z$(V(1{q|!uc^rUrJ)Y120c=A65z1tpqXA}G0NYpq-75)LM2_F77OI+fua0;BUFxYq zV2M%fKM|&H`em^ff{&}~#JcZNMuw|@=sNBIK2UNLHx=?vwRJl5=V(e-wmJf->e#6l5ESvMW zd(?JVcBfgbRH>EXR0m=qTP(uS?30YYw@00X>EIzQgFI|Q>sy!&NpBLDDnwNJd? z$nZGLn|+~n2me}oNstf0zhIKPkte8!9)kKO+Wy@|zh{Ael?WIMu2Hj1g&(U{(`AAd+N&;C#7y@3UNMuk6*C$C`5U!={Yp1~Wmn4oN^QY! z{!+~qb6^x5?)IKx)6vd?HnH~P&}Ex9<@E`Z7x6~&gvpy>_EoglI ziJ>h!phoJ$=};dI&|!+_Zyz`@9Nz7qIwIX~bhNlH#;YxFjt!vm$U${zC&f5S9}pl_ z(aAwXMS^pg(aEW8Nh;5qA}90Y8nrPXcXskHMvj9#x<-ArzGQT9pgTR%#ezVJ=;V^| z;MZzqbDN~o9JJ9S9r#+1)YZvrh@@uUsL$5tY`6L(b+b5oa*_KggbhBBZNo^m57> zA!|tXa>|{6sAnyDCVemH>3s^)M)bt?aqz&3Z1n@Q=>t>bB;fDsq&xWg{tf;lUhsp% zl#aE6h<+9kCm+4Ul>QDfhbjFXWKm4vDL;zd8Q|nK#E3CJ9xpHh9q5h>547kyxq|q~ z6W>7&#%O8|{v@aw?Bq2>P4l1Cp-pgi7Kbze%(z*w9WmqTeD9fRGs}wC>6Iyr63aG} z#j!3eG+>D9y!dDJVoB$}|E%`x<~KI_qEL|qgxwfx8jlB14VEd!|N9bN$DSXHc zN)o^Au-dARWz&+qlnQr*kZQc)b2x%E3cZea^^s)FOz#qDRv6_&A z+z%u5!zj?^f#1~EB{815tHv(3v@@V~*<~A6^WXoWj>4-;js)9Qss)w7$rfOflO`NlXYrIn6t7;Nj>4>e(i&tVWuSPCSUIgA&th;5NA z_PXI>>o$Roni~7C__v{n(@+=&5?)UhyNqE0Dc0+4IQ_w!uQ$7z!L!aPf@Nl|6vpXb zCTzg4JTl%V3p*aLt#_2j(*cXE_-yo}jE312sd&hTM;;wOuuUk1O6xdzfklJigojJ2 z(M>SQLNZo~3lIiPK!nz1vOFoQj1dm1EQ|h%!4$HpT8DfVJYk<^3ttPWM)YDKfafE_ z_^bfTG2zjujE^VN3OO)?Zw+G^JSGFLpOaBPy2n!q_<0&r-B;1e0 z^R)IUqi*=df=9#|J-9$h0b>v$WZ+XCmNzI)E+*h9GGI5h0CPvs7Y3kTJns?gq)a}h zX48(!-ec-}m&3gTXM35f4Nk9pBgHxp{mHO$ayEhy5hujL!wY^0Q^Tw?dR2ISfw{Kl zR|va|=x{&^L4I(~i#}+BwM?v}oleMxNLq+~uaLC%y!qYoz-1ECczz5l`?U}2*v&|S zzhUWAUE!DYQSmxNt&|Xi&qCAQY`Ax9*n?@`D)ONf%*@cVYg82>s0;q#PPw1?R=jqL zUoFCu`bG22K~1&Z(xgJ?>HmWHbcG#{&gO{}2qm-o4J&+Ofykxp&aDwVXaI=D76eL4 zg+mktH!O66xTQh`u*p@Ks5R?QiQIHN#>B{jj*dQ<>zxM3_AZ+!{@nd|PYu=RlR^GP zextg8PiUsOk4=g)cQ(^{USF`pCL$jJn+OWpL{P9Y-zLJ^p(js3=FAPo{eD3{%Hfp* z+cC{qNY|k#HeGAk%0^J=A)sKbgMhwP)FPXBfMmdf>{BZnf@jf!0SH%gA3jS}0yu)1 z#R%AFC}_81HD%KY!pi7!xD6yG0BnRg4GI?VgUz+1Y?KolYSab+n40aLYZ}-!ATogg zWZI8ioC=xi9rUFL*kn@BCX<4-)cv?r9F5pL%QO~Sh*1!T)l=tBxr2CvhnRvkVhZNo z@AdOIn=kGGr}3bL7zKgY-f26P7DEU}Cutp=x8%Hbd3}c>i<9h*uMqG9r{1s~PQxm_ zhEdRN7zGRSyoTBBigEheSZcKk<ToqF`<$8kNB0`mhje6SMe>Ij{#7zPWP?y*+bq(=RDoc6t*ZnqD~Kw}?Ip9&hMSBxqL-!2ay1#Ns3T=1mR z(1!Xrn`V6n9Cfm{9bRlP0Wd(Ey(#{05x37FuG%Axf;Mp!T%G;Y$*8MOT(a9kPg=wQ z28c^ObpdpmY80pwtD0B1owl ztf0f$*bsj!Lu(}LPm}}^_G!VX5RnIXVt!nJfISCM&?X`u!5quPr_}sM1QC>4VFf)R zMoLCYw?kH19fCR_r{%vRE&So|-&$Q?gtZoZwt$F20l(G11;0yctpi>3{5uJuvFZ5- zueKVrGQ#s)pQ417gFwOB4G7q*rJ&7P3Kp(71qo}^#+ESD05`*@-r7wL1r;6z6tpRz zVE#&n0#_@yc6)K1)o7F>8`C~1YDlX1n{BiQPs_!!61@WJiI$M!@(V2+4Wv^VeqwRH zFV^iw{(PR(R!eSy)u&Yut4}0~g81QkgK}qHajv5CeQmYoa@7jPXSZeNnB&`N7mzyz z-lI=19_EzGQ^hzI*=*GMIz5^vd6>zuLLskRaUyJIP6vlYvNM%}e$tTe)Bchy>i8k9BK z;-NZ)kH+&!-L-tFC<;N5gP_nuK*4$livJD))j7J{Mo?fOxbAfA0@`AD{dDa!DUZ@V zmG+4&;>am!MT;XfS#Wc$x<~oh{Q>E)^@ES%AVyD{Pw21hVtDa;Nnh;_ekevEv9ji^D zjO?*m7w3bOo&|%wHTs50#Ivl(Is9OpF?H>JsgR}cB=sTq_TcbzuMfglowEYjK%fNK|d#E6VX7HKKG$@SXJlskE| z20eC;7I)kyJw;jbdQE)JW#9E$>pIY#jk19^X#GySM2NQ?MCfV;n>#Ymg75i z8m?>kGDJ6jaZA1KZS@cBIYRZ(Kk8D)(Y<%@muG6fQ0@u4IQKSfrbA)XrV?}TUD~CM2>hw``gaTejb6WxAfIA~&%OTy9lrbizwPkudB=Bn z3V$R|dxQw+{XjjwqSq&Lb+PsZ<({nPTkzZmy}I?gKg@gQd(0J*2N^iST%WI9DL!S9 zv`p(0&3kj=GOdm9PR%LQ!qGV#Uia;Ynj1gRQh9Bmw*f5rtn>p*<|^^aFL+ox!>KEf zu6bCyhw65EMC;*<49c)~Ua@IU&((?-H12*xbKhkakjGVO9jNZ-s9OhU+H%dHjLVmM z(kf~^zFbSDjF*>d!=h`LdXY9Hj&jDV)Gl>$L>2Lsk1Z>;vnV&|8O{CPkx;jnJ)@1M zjCIdw-5v7ls$05gEtvo3Gaf@l-67B7_yBdUcvf@0eFabOC5BcwdBwFy8nf>_>or>> zNUO9_RB!C6dc@?f(!~2D຿);-6*H!h1aq6D4`lQ5k-wy@&!D`Qt6BK>%m9~v2 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 diff --git a/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_pango_triangle_vbo.js b/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_pango_triangle_vbo.js index 4466ab5fd..af733e66d 100644 --- a/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_pango_triangle_vbo.js +++ b/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_pango_triangle_vbo.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_2_gl_intro_pango_triangle_vbo.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["ub"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["xb"];addOnInit(Module["asm"]["vb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224728:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"da":___cxa_rethrow,"i":___cxa_throw,"sb":___cxa_uncaught_exceptions,"e":___resumeException,"ca":___syscall_fcntl64,"qb":___syscall_ioctl,"ga":___syscall_open,"ja":___syscall_stat64,"ob":__embind_register_bigint,"ma":__embind_register_bool,"la":__embind_register_emval,"U":__embind_register_float,"Ea":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"T":__embind_register_std_string,"N":__embind_register_std_wstring,"na":__embind_register_void,"y":_abort,"Ia":_emscripten_asm_const_int,"W":_emscripten_get_canvas_element_size,"ka":_emscripten_memcpy_big,"ea":_emscripten_resize_heap,"Ga":_emscripten_set_canvas_element_size,"Ta":_emscripten_set_click_callback_on_thread,"Qa":_emscripten_set_dblclick_callback_on_thread,"Va":_emscripten_set_keydown_callback_on_thread,"Wa":_emscripten_set_keypress_callback_on_thread,"Ua":_emscripten_set_keyup_callback_on_thread,"Sa":_emscripten_set_mousedown_callback_on_thread,"Oa":_emscripten_set_mouseenter_callback_on_thread,"Na":_emscripten_set_mouseleave_callback_on_thread,"Pa":_emscripten_set_mousemove_callback_on_thread,"La":_emscripten_set_mouseout_callback_on_thread,"Ma":_emscripten_set_mouseover_callback_on_thread,"Ra":_emscripten_set_mouseup_callback_on_thread,"Ja":_emscripten_set_resize_callback_on_thread,"Ka":_emscripten_set_wheel_callback_on_thread,"Fa":_emscripten_sleep,"Ya":_emscripten_webgl_create_context,"V":_emscripten_webgl_destroy_context,"Xa":_emscripten_webgl_enable_extension,"Za":_emscripten_webgl_init_context_attributes,"Ha":_emscripten_webgl_make_context_current,"ha":_environ_get,"ia":_environ_sizes_get,"S":_fd_close,"fa":_fd_read,"nb":_fd_seek,"R":_fd_write,"a":_getTempRet0,"Da":_glActiveTexture,"ua":_glAttachShader,"H":_glBindAttribLocation,"M":_glBindBuffer,"Z":_glBindTexture,"_a":_glBlendFunc,"fb":_glBufferData,"sa":_glClear,"ab":_glClearColor,"va":_glCompileShader,"ya":_glCreateProgram,"xa":_glCreateShader,"O":_glDeleteBuffers,"oa":_glDeleteProgram,"pa":_glDeleteShader,"D":_glDeleteTextures,"qa":_glDetachShader,"x":_glDisable,"E":_glDisableVertexAttribArray,"L":_glDrawArrays,"X":_glEnable,"B":_glEnableVertexAttribArray,"jb":_glFlush,"tb":_glGenBuffers,"db":_glGenTextures,"bb":_glGetError,"s":_glGetIntegerv,"Aa":_glGetProgramInfoLog,"Ba":_glGetProgramiv,"ra":_glGetShaderInfoLog,"ta":_glGetShaderiv,"za":_glGetUniformLocation,"$a":_glLineWidth,"Ca":_glLinkProgram,"hb":_glPixelStorei,"ib":_glReadBuffer,"gb":_glReadPixels,"wa":_glShaderSource,"cb":_glTexImage2D,"I":_glTexParameteri,"Y":_glUniform1i,"G":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"C":_glVertexAttribPointer,"eb":_glViewport,"kb":_glewInit,"$":invoke_diii,"aa":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"rb":invoke_iiiiid,"P":invoke_iiiiii,"v":invoke_iiiiiii,"ba":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"lb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"Q":invoke_viiii,"t":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"mb":invoke_viijii,"_":_setTempRet0,"pb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["vb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["zb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ab"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Cb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Db"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Eb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_2_gl_intro_pango_triangle_vbo.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["ub"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["xb"];addOnInit(Module["asm"]["vb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224568:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"da":___cxa_rethrow,"i":___cxa_throw,"sb":___cxa_uncaught_exceptions,"e":___resumeException,"ca":___syscall_fcntl64,"qb":___syscall_ioctl,"ga":___syscall_open,"ja":___syscall_stat64,"ob":__embind_register_bigint,"ma":__embind_register_bool,"la":__embind_register_emval,"U":__embind_register_float,"Ea":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"T":__embind_register_std_string,"N":__embind_register_std_wstring,"na":__embind_register_void,"y":_abort,"Ia":_emscripten_asm_const_int,"W":_emscripten_get_canvas_element_size,"ka":_emscripten_memcpy_big,"ea":_emscripten_resize_heap,"Ga":_emscripten_set_canvas_element_size,"Ta":_emscripten_set_click_callback_on_thread,"Qa":_emscripten_set_dblclick_callback_on_thread,"Va":_emscripten_set_keydown_callback_on_thread,"Wa":_emscripten_set_keypress_callback_on_thread,"Ua":_emscripten_set_keyup_callback_on_thread,"Sa":_emscripten_set_mousedown_callback_on_thread,"Oa":_emscripten_set_mouseenter_callback_on_thread,"Na":_emscripten_set_mouseleave_callback_on_thread,"Pa":_emscripten_set_mousemove_callback_on_thread,"La":_emscripten_set_mouseout_callback_on_thread,"Ma":_emscripten_set_mouseover_callback_on_thread,"Ra":_emscripten_set_mouseup_callback_on_thread,"Ja":_emscripten_set_resize_callback_on_thread,"Ka":_emscripten_set_wheel_callback_on_thread,"Fa":_emscripten_sleep,"Ya":_emscripten_webgl_create_context,"V":_emscripten_webgl_destroy_context,"Xa":_emscripten_webgl_enable_extension,"Za":_emscripten_webgl_init_context_attributes,"Ha":_emscripten_webgl_make_context_current,"ha":_environ_get,"ia":_environ_sizes_get,"S":_fd_close,"fa":_fd_read,"nb":_fd_seek,"R":_fd_write,"a":_getTempRet0,"Da":_glActiveTexture,"ua":_glAttachShader,"H":_glBindAttribLocation,"M":_glBindBuffer,"Z":_glBindTexture,"_a":_glBlendFunc,"fb":_glBufferData,"sa":_glClear,"ab":_glClearColor,"va":_glCompileShader,"ya":_glCreateProgram,"xa":_glCreateShader,"O":_glDeleteBuffers,"oa":_glDeleteProgram,"pa":_glDeleteShader,"D":_glDeleteTextures,"qa":_glDetachShader,"x":_glDisable,"E":_glDisableVertexAttribArray,"L":_glDrawArrays,"X":_glEnable,"B":_glEnableVertexAttribArray,"jb":_glFlush,"tb":_glGenBuffers,"db":_glGenTextures,"bb":_glGetError,"s":_glGetIntegerv,"Aa":_glGetProgramInfoLog,"Ba":_glGetProgramiv,"ra":_glGetShaderInfoLog,"ta":_glGetShaderiv,"za":_glGetUniformLocation,"$a":_glLineWidth,"Ca":_glLinkProgram,"hb":_glPixelStorei,"ib":_glReadBuffer,"gb":_glReadPixels,"wa":_glShaderSource,"cb":_glTexImage2D,"I":_glTexParameteri,"Y":_glUniform1i,"G":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"C":_glVertexAttribPointer,"eb":_glViewport,"kb":_glewInit,"$":invoke_diii,"aa":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"rb":invoke_iiiiid,"P":invoke_iiiiii,"v":invoke_iiiiiii,"ba":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"lb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"Q":invoke_viiii,"t":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"mb":invoke_viijii,"_":_setTempRet0,"pb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["vb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["zb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ab"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Cb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Db"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Eb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_pango_triangle_vbo.wasm b/emscripten/examples/BasicOpenGL/tutorial_2_gl_intro_pango_triangle_vbo.wasm index a1f7a6d27588be418e4d5664b942aead7a79662f..744215e16d2cfe8c1c5ce7b2867d14dbb46eaa05 100755 GIT binary patch delta 66033 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 delta 65535 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 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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_3_gl_intro_classic_triangle_vbo_shader.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={225264:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1f(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1f","location");GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"pa":___cxa_rethrow,"i":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"oa":___syscall_fcntl64,"rb":___syscall_ioctl,"sa":___syscall_open,"va":___syscall_stat64,"pb":__embind_register_bigint,"ya":__embind_register_bool,"xa":__embind_register_emval,"aa":__embind_register_float,"Ca":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"$":__embind_register_std_string,"L":__embind_register_std_wstring,"za":__embind_register_void,"y":_abort,"Ga":_emscripten_asm_const_int,"ea":_emscripten_get_canvas_element_size,"wa":_emscripten_memcpy_big,"qa":_emscripten_resize_heap,"Ea":_emscripten_set_canvas_element_size,"Ra":_emscripten_set_click_callback_on_thread,"Oa":_emscripten_set_dblclick_callback_on_thread,"Ta":_emscripten_set_keydown_callback_on_thread,"Ua":_emscripten_set_keypress_callback_on_thread,"Sa":_emscripten_set_keyup_callback_on_thread,"Qa":_emscripten_set_mousedown_callback_on_thread,"Ma":_emscripten_set_mouseenter_callback_on_thread,"La":_emscripten_set_mouseleave_callback_on_thread,"Na":_emscripten_set_mousemove_callback_on_thread,"Ja":_emscripten_set_mouseout_callback_on_thread,"Ka":_emscripten_set_mouseover_callback_on_thread,"Pa":_emscripten_set_mouseup_callback_on_thread,"Ha":_emscripten_set_resize_callback_on_thread,"Ia":_emscripten_set_wheel_callback_on_thread,"Da":_emscripten_sleep,"Wa":_emscripten_webgl_create_context,"ca":_emscripten_webgl_destroy_context,"Va":_emscripten_webgl_enable_extension,"Xa":_emscripten_webgl_init_context_attributes,"Fa":_emscripten_webgl_make_context_current,"ta":_environ_get,"ua":_environ_sizes_get,"Z":_fd_close,"ra":_fd_read,"ob":_fd_seek,"X":_fd_write,"a":_getTempRet0,"Ba":_glActiveTexture,"M":_glAttachShader,"G":_glBindAttribLocation,"R":_glBindBuffer,"ha":_glBindTexture,"Ya":_glBlendFunc,"lb":_glBufferData,"jb":_glClear,"kb":_glClearColor,"Q":_glCompileShader,"da":_glCreateProgram,"W":_glCreateShader,"hb":_glDeleteBuffers,"ia":_glDeleteProgram,"U":_glDeleteShader,"B":_glDeleteTextures,"Aa":_glDetachShader,"x":_glDisable,"C":_glDisableVertexAttribArray,"I":_glDrawArrays,"fa":_glEnable,"D":_glEnableVertexAttribArray,"fb":_glFlush,"tb":_glGenBuffers,"ab":_glGenTextures,"_a":_glGetError,"t":_glGetIntegerv,"Y":_glGetProgramInfoLog,"_":_glGetProgramiv,"N":_glGetShaderInfoLog,"P":_glGetShaderiv,"ja":_glGetUniformLocation,"Za":_glLineWidth,"ba":_glLinkProgram,"db":_glPixelStorei,"eb":_glReadBuffer,"cb":_glReadPixels,"V":_glShaderSource,"$a":_glTexImage2D,"H":_glTexParameteri,"ib":_glUniform1f,"ga":_glUniform1i,"O":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"E":_glVertexAttribPointer,"bb":_glViewport,"gb":_glewInit,"la":invoke_diii,"ma":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"sb":invoke_iiiiid,"S":invoke_iiiiii,"v":invoke_iiiiiii,"na":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"T":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"ka":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["uc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_3_gl_intro_classic_triangle_vbo_shader.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={225096:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1f(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1f","location");GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"pa":___cxa_rethrow,"i":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"oa":___syscall_fcntl64,"rb":___syscall_ioctl,"sa":___syscall_open,"va":___syscall_stat64,"pb":__embind_register_bigint,"ya":__embind_register_bool,"xa":__embind_register_emval,"aa":__embind_register_float,"Ca":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"$":__embind_register_std_string,"L":__embind_register_std_wstring,"za":__embind_register_void,"y":_abort,"Ga":_emscripten_asm_const_int,"ea":_emscripten_get_canvas_element_size,"wa":_emscripten_memcpy_big,"qa":_emscripten_resize_heap,"Ea":_emscripten_set_canvas_element_size,"Ra":_emscripten_set_click_callback_on_thread,"Oa":_emscripten_set_dblclick_callback_on_thread,"Ta":_emscripten_set_keydown_callback_on_thread,"Ua":_emscripten_set_keypress_callback_on_thread,"Sa":_emscripten_set_keyup_callback_on_thread,"Qa":_emscripten_set_mousedown_callback_on_thread,"Ma":_emscripten_set_mouseenter_callback_on_thread,"La":_emscripten_set_mouseleave_callback_on_thread,"Na":_emscripten_set_mousemove_callback_on_thread,"Ja":_emscripten_set_mouseout_callback_on_thread,"Ka":_emscripten_set_mouseover_callback_on_thread,"Pa":_emscripten_set_mouseup_callback_on_thread,"Ha":_emscripten_set_resize_callback_on_thread,"Ia":_emscripten_set_wheel_callback_on_thread,"Da":_emscripten_sleep,"Wa":_emscripten_webgl_create_context,"ca":_emscripten_webgl_destroy_context,"Va":_emscripten_webgl_enable_extension,"Xa":_emscripten_webgl_init_context_attributes,"Fa":_emscripten_webgl_make_context_current,"ta":_environ_get,"ua":_environ_sizes_get,"Z":_fd_close,"ra":_fd_read,"ob":_fd_seek,"X":_fd_write,"a":_getTempRet0,"Ba":_glActiveTexture,"M":_glAttachShader,"G":_glBindAttribLocation,"R":_glBindBuffer,"ha":_glBindTexture,"Ya":_glBlendFunc,"lb":_glBufferData,"jb":_glClear,"kb":_glClearColor,"Q":_glCompileShader,"da":_glCreateProgram,"W":_glCreateShader,"hb":_glDeleteBuffers,"ia":_glDeleteProgram,"U":_glDeleteShader,"B":_glDeleteTextures,"Aa":_glDetachShader,"x":_glDisable,"C":_glDisableVertexAttribArray,"I":_glDrawArrays,"fa":_glEnable,"D":_glEnableVertexAttribArray,"fb":_glFlush,"tb":_glGenBuffers,"ab":_glGenTextures,"_a":_glGetError,"t":_glGetIntegerv,"Y":_glGetProgramInfoLog,"_":_glGetProgramiv,"N":_glGetShaderInfoLog,"P":_glGetShaderiv,"ja":_glGetUniformLocation,"Za":_glLineWidth,"ba":_glLinkProgram,"db":_glPixelStorei,"eb":_glReadBuffer,"cb":_glReadPixels,"V":_glShaderSource,"$a":_glTexImage2D,"H":_glTexParameteri,"ib":_glUniform1f,"ga":_glUniform1i,"O":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"E":_glVertexAttribPointer,"bb":_glViewport,"gb":_glewInit,"la":invoke_diii,"ma":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"sb":invoke_iiiiid,"S":invoke_iiiiii,"v":invoke_iiiiiii,"na":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"T":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"ka":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["uc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_classic_triangle_vbo_shader.wasm b/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_classic_triangle_vbo_shader.wasm index b6e3b1bbc844282d3a2dfb6ddc976fc1d8e543ee..1ecbe7dc0ae247f0d1b2ac7c410a4befb36e3e99 100755 GIT binary patch delta 65668 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 diff --git a/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_pango_triangle_vbo_shader.js b/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_pango_triangle_vbo_shader.js index 9e14de0bc..079ada186 100644 --- a/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_pango_triangle_vbo_shader.js +++ b/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_pango_triangle_vbo_shader.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_3_gl_intro_pango_triangle_vbo_shader.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={225256:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1f(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1f","location");GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ga":___cxa_rethrow,"i":___cxa_throw,"tb":___cxa_uncaught_exceptions,"e":___resumeException,"fa":___syscall_fcntl64,"rb":___syscall_ioctl,"ka":___syscall_open,"na":___syscall_stat64,"pb":__embind_register_bigint,"ra":__embind_register_bool,"pa":__embind_register_emval,"U":__embind_register_float,"ua":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"T":__embind_register_std_string,"M":__embind_register_std_wstring,"sa":__embind_register_void,"y":_abort,"za":_emscripten_asm_const_int,"X":_emscripten_get_canvas_element_size,"oa":_emscripten_memcpy_big,"ha":_emscripten_resize_heap,"wa":_emscripten_set_canvas_element_size,"Ka":_emscripten_set_click_callback_on_thread,"Ha":_emscripten_set_dblclick_callback_on_thread,"Ma":_emscripten_set_keydown_callback_on_thread,"Na":_emscripten_set_keypress_callback_on_thread,"La":_emscripten_set_keyup_callback_on_thread,"Ja":_emscripten_set_mousedown_callback_on_thread,"Fa":_emscripten_set_mouseenter_callback_on_thread,"Ea":_emscripten_set_mouseleave_callback_on_thread,"Ga":_emscripten_set_mousemove_callback_on_thread,"Ca":_emscripten_set_mouseout_callback_on_thread,"Da":_emscripten_set_mouseover_callback_on_thread,"Ia":_emscripten_set_mouseup_callback_on_thread,"Aa":_emscripten_set_resize_callback_on_thread,"Ba":_emscripten_set_wheel_callback_on_thread,"va":_emscripten_sleep,"Pa":_emscripten_webgl_create_context,"V":_emscripten_webgl_destroy_context,"Oa":_emscripten_webgl_enable_extension,"Qa":_emscripten_webgl_init_context_attributes,"ya":_emscripten_webgl_make_context_current,"la":_environ_get,"ma":_environ_sizes_get,"S":_fd_close,"ja":_fd_read,"ob":_fd_seek,"R":_fd_write,"a":_getTempRet0,"ta":_glActiveTexture,"db":_glAttachShader,"G":_glBindAttribLocation,"L":_glBindBuffer,"$":_glBindTexture,"Ra":_glBlendFunc,"ib":_glBufferData,"qa":_glClear,"xa":_glClearColor,"eb":_glCompileShader,"hb":_glCreateProgram,"gb":_glCreateShader,"O":_glDeleteBuffers,"jb":_glDeleteProgram,"kb":_glDeleteShader,"B":_glDeleteTextures,"lb":_glDetachShader,"x":_glDisable,"C":_glDisableVertexAttribArray,"K":_glDrawArrays,"Y":_glEnable,"D":_glEnableVertexAttribArray,"_a":_glFlush,"ub":_glGenBuffers,"Va":_glGenTextures,"Ta":_glGetError,"t":_glGetIntegerv,"W":_glGetProgramInfoLog,"_":_glGetProgramiv,"bb":_glGetShaderInfoLog,"cb":_glGetShaderiv,"ab":_glGetUniformLocation,"Sa":_glLineWidth,"aa":_glLinkProgram,"Ya":_glPixelStorei,"Za":_glReadBuffer,"Xa":_glReadPixels,"fb":_glShaderSource,"Ua":_glTexImage2D,"H":_glTexParameteri,"ia":_glUniform1f,"Z":_glUniform1i,"N":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"E":_glVertexAttribPointer,"Wa":_glViewport,"$a":_glewInit,"ca":invoke_diii,"da":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"sb":invoke_iiiiid,"P":invoke_iiiiii,"v":invoke_iiiiiii,"ea":invoke_iiiiiiii,"J":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"Q":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"I":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"ba":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["uc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_3_gl_intro_pango_triangle_vbo_shader.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={225080:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1f(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1f","location");GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"F":___cxa_free_exception,"ga":___cxa_rethrow,"i":___cxa_throw,"tb":___cxa_uncaught_exceptions,"e":___resumeException,"fa":___syscall_fcntl64,"rb":___syscall_ioctl,"ka":___syscall_open,"na":___syscall_stat64,"pb":__embind_register_bigint,"ra":__embind_register_bool,"pa":__embind_register_emval,"U":__embind_register_float,"ua":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"T":__embind_register_std_string,"M":__embind_register_std_wstring,"sa":__embind_register_void,"y":_abort,"za":_emscripten_asm_const_int,"X":_emscripten_get_canvas_element_size,"oa":_emscripten_memcpy_big,"ha":_emscripten_resize_heap,"wa":_emscripten_set_canvas_element_size,"Ka":_emscripten_set_click_callback_on_thread,"Ha":_emscripten_set_dblclick_callback_on_thread,"Ma":_emscripten_set_keydown_callback_on_thread,"Na":_emscripten_set_keypress_callback_on_thread,"La":_emscripten_set_keyup_callback_on_thread,"Ja":_emscripten_set_mousedown_callback_on_thread,"Fa":_emscripten_set_mouseenter_callback_on_thread,"Ea":_emscripten_set_mouseleave_callback_on_thread,"Ga":_emscripten_set_mousemove_callback_on_thread,"Ca":_emscripten_set_mouseout_callback_on_thread,"Da":_emscripten_set_mouseover_callback_on_thread,"Ia":_emscripten_set_mouseup_callback_on_thread,"Aa":_emscripten_set_resize_callback_on_thread,"Ba":_emscripten_set_wheel_callback_on_thread,"va":_emscripten_sleep,"Pa":_emscripten_webgl_create_context,"V":_emscripten_webgl_destroy_context,"Oa":_emscripten_webgl_enable_extension,"Qa":_emscripten_webgl_init_context_attributes,"ya":_emscripten_webgl_make_context_current,"la":_environ_get,"ma":_environ_sizes_get,"S":_fd_close,"ja":_fd_read,"ob":_fd_seek,"R":_fd_write,"a":_getTempRet0,"ta":_glActiveTexture,"db":_glAttachShader,"G":_glBindAttribLocation,"L":_glBindBuffer,"$":_glBindTexture,"Ra":_glBlendFunc,"ib":_glBufferData,"qa":_glClear,"xa":_glClearColor,"eb":_glCompileShader,"hb":_glCreateProgram,"gb":_glCreateShader,"O":_glDeleteBuffers,"jb":_glDeleteProgram,"kb":_glDeleteShader,"B":_glDeleteTextures,"lb":_glDetachShader,"x":_glDisable,"C":_glDisableVertexAttribArray,"K":_glDrawArrays,"Y":_glEnable,"D":_glEnableVertexAttribArray,"_a":_glFlush,"ub":_glGenBuffers,"Va":_glGenTextures,"Ta":_glGetError,"t":_glGetIntegerv,"W":_glGetProgramInfoLog,"_":_glGetProgramiv,"bb":_glGetShaderInfoLog,"cb":_glGetShaderiv,"ab":_glGetUniformLocation,"Sa":_glLineWidth,"aa":_glLinkProgram,"Ya":_glPixelStorei,"Za":_glReadBuffer,"Xa":_glReadPixels,"fb":_glShaderSource,"Ua":_glTexImage2D,"H":_glTexParameteri,"ia":_glUniform1f,"Z":_glUniform1i,"N":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"E":_glVertexAttribPointer,"Wa":_glViewport,"$a":_glewInit,"ca":invoke_diii,"da":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"sb":invoke_iiiiid,"P":invoke_iiiiii,"v":invoke_iiiiiii,"ea":invoke_iiiiiiii,"J":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"r":invoke_viii,"Q":invoke_viiii,"s":invoke_viiiiiii,"A":invoke_viiiiiiiiii,"I":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"ba":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["uc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_pango_triangle_vbo_shader.wasm b/emscripten/examples/BasicOpenGL/tutorial_3_gl_intro_pango_triangle_vbo_shader.wasm index 48ae5b0965d8c3d0092f963c3ddd5ce92ea2bd57..0d603d1a044c95b7a602ec2cc610f851888c8220 100755 GIT binary patch delta 64954 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 Rdj_w)&&3?S2=K1^{{gQ`V9o#l delta 65008 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

;6=3jfx-%UCKCuyr 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 R1+LS2y5VN*Yym!T{6AOX<|_aI diff --git a/emscripten/examples/BasicOpenGL/tutorial_4_gl_intro_viewport.js b/emscripten/examples/BasicOpenGL/tutorial_4_gl_intro_viewport.js index 97b50b98a..f87fbd336 100644 --- a/emscripten/examples/BasicOpenGL/tutorial_4_gl_intro_viewport.js +++ b/emscripten/examples/BasicOpenGL/tutorial_4_gl_intro_viewport.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_4_gl_intro_viewport.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["ub"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["xb"];addOnInit(Module["asm"]["vb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224728:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"I":___cxa_free_exception,"ea":___cxa_rethrow,"i":___cxa_throw,"sb":___cxa_uncaught_exceptions,"e":___resumeException,"da":___syscall_fcntl64,"qb":___syscall_ioctl,"ha":___syscall_open,"ka":___syscall_stat64,"ob":__embind_register_bigint,"na":__embind_register_bool,"ma":__embind_register_emval,"U":__embind_register_float,"Ea":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"T":__embind_register_std_string,"N":__embind_register_std_wstring,"oa":__embind_register_void,"A":_abort,"Ia":_emscripten_asm_const_int,"W":_emscripten_get_canvas_element_size,"la":_emscripten_memcpy_big,"fa":_emscripten_resize_heap,"Ga":_emscripten_set_canvas_element_size,"Ta":_emscripten_set_click_callback_on_thread,"Qa":_emscripten_set_dblclick_callback_on_thread,"Wa":_emscripten_set_keydown_callback_on_thread,"Xa":_emscripten_set_keypress_callback_on_thread,"Ua":_emscripten_set_keyup_callback_on_thread,"Sa":_emscripten_set_mousedown_callback_on_thread,"Oa":_emscripten_set_mouseenter_callback_on_thread,"Na":_emscripten_set_mouseleave_callback_on_thread,"Pa":_emscripten_set_mousemove_callback_on_thread,"La":_emscripten_set_mouseout_callback_on_thread,"Ma":_emscripten_set_mouseover_callback_on_thread,"Ra":_emscripten_set_mouseup_callback_on_thread,"Ja":_emscripten_set_resize_callback_on_thread,"Ka":_emscripten_set_wheel_callback_on_thread,"Fa":_emscripten_sleep,"Za":_emscripten_webgl_create_context,"V":_emscripten_webgl_destroy_context,"Ya":_emscripten_webgl_enable_extension,"_a":_emscripten_webgl_init_context_attributes,"Ha":_emscripten_webgl_make_context_current,"ia":_environ_get,"ja":_environ_sizes_get,"S":_fd_close,"ga":_fd_read,"nb":_fd_seek,"R":_fd_write,"a":_getTempRet0,"Da":_glActiveTexture,"ua":_glAttachShader,"J":_glBindAttribLocation,"E":_glBindBuffer,"Z":_glBindTexture,"$a":_glBlendFunc,"fb":_glBufferData,"Va":_glClear,"bb":_glClearColor,"va":_glCompileShader,"ya":_glCreateProgram,"xa":_glCreateShader,"O":_glDeleteBuffers,"pa":_glDeleteProgram,"qa":_glDeleteShader,"G":_glDeleteTextures,"ra":_glDetachShader,"x":_glDisable,"D":_glDisableVertexAttribArray,"H":_glDrawArrays,"X":_glEnable,"y":_glEnableVertexAttribArray,"jb":_glFlush,"tb":_glGenBuffers,"eb":_glGenTextures,"cb":_glGetError,"r":_glGetIntegerv,"Aa":_glGetProgramInfoLog,"Ba":_glGetProgramiv,"sa":_glGetShaderInfoLog,"ta":_glGetShaderiv,"za":_glGetUniformLocation,"ab":_glLineWidth,"Ca":_glLinkProgram,"hb":_glPixelStorei,"ib":_glReadBuffer,"gb":_glReadPixels,"wa":_glShaderSource,"db":_glTexImage2D,"K":_glTexParameteri,"Y":_glUniform1i,"F":_glUniform4f,"B":_glUniformMatrix4fv,"l":_glUseProgram,"z":_glVertexAttribPointer,"_":_glViewport,"kb":_glewInit,"aa":invoke_diii,"ba":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"rb":invoke_iiiiid,"P":invoke_iiiiii,"v":invoke_iiiiiii,"ca":invoke_iiiiiiii,"M":invoke_iiiiiiiiiiii,"lb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"s":invoke_viii,"Q":invoke_viiii,"t":invoke_viiiiiii,"C":invoke_viiiiiiiiii,"L":invoke_viiiiiiiiiiiiiii,"mb":invoke_viijii,"$":_setTempRet0,"pb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["vb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["zb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ab"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Cb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Db"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Eb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_4_gl_intro_viewport.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["ub"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["xb"];addOnInit(Module["asm"]["vb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={224568:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GL.validateGLObjectID(GL.buffers,buffer,"glBindBuffer","buffer");if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data){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)}}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers,"glGenBuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"I":___cxa_free_exception,"ea":___cxa_rethrow,"i":___cxa_throw,"sb":___cxa_uncaught_exceptions,"e":___resumeException,"da":___syscall_fcntl64,"qb":___syscall_ioctl,"ha":___syscall_open,"ka":___syscall_stat64,"ob":__embind_register_bigint,"na":__embind_register_bool,"ma":__embind_register_emval,"U":__embind_register_float,"Ea":__embind_register_function,"w":__embind_register_integer,"p":__embind_register_memory_view,"T":__embind_register_std_string,"N":__embind_register_std_wstring,"oa":__embind_register_void,"A":_abort,"Ia":_emscripten_asm_const_int,"W":_emscripten_get_canvas_element_size,"la":_emscripten_memcpy_big,"fa":_emscripten_resize_heap,"Ga":_emscripten_set_canvas_element_size,"Ta":_emscripten_set_click_callback_on_thread,"Qa":_emscripten_set_dblclick_callback_on_thread,"Wa":_emscripten_set_keydown_callback_on_thread,"Xa":_emscripten_set_keypress_callback_on_thread,"Ua":_emscripten_set_keyup_callback_on_thread,"Sa":_emscripten_set_mousedown_callback_on_thread,"Oa":_emscripten_set_mouseenter_callback_on_thread,"Na":_emscripten_set_mouseleave_callback_on_thread,"Pa":_emscripten_set_mousemove_callback_on_thread,"La":_emscripten_set_mouseout_callback_on_thread,"Ma":_emscripten_set_mouseover_callback_on_thread,"Ra":_emscripten_set_mouseup_callback_on_thread,"Ja":_emscripten_set_resize_callback_on_thread,"Ka":_emscripten_set_wheel_callback_on_thread,"Fa":_emscripten_sleep,"Za":_emscripten_webgl_create_context,"V":_emscripten_webgl_destroy_context,"Ya":_emscripten_webgl_enable_extension,"_a":_emscripten_webgl_init_context_attributes,"Ha":_emscripten_webgl_make_context_current,"ia":_environ_get,"ja":_environ_sizes_get,"S":_fd_close,"ga":_fd_read,"nb":_fd_seek,"R":_fd_write,"a":_getTempRet0,"Da":_glActiveTexture,"ua":_glAttachShader,"J":_glBindAttribLocation,"E":_glBindBuffer,"Z":_glBindTexture,"$a":_glBlendFunc,"fb":_glBufferData,"Va":_glClear,"bb":_glClearColor,"va":_glCompileShader,"ya":_glCreateProgram,"xa":_glCreateShader,"O":_glDeleteBuffers,"pa":_glDeleteProgram,"qa":_glDeleteShader,"G":_glDeleteTextures,"ra":_glDetachShader,"x":_glDisable,"D":_glDisableVertexAttribArray,"H":_glDrawArrays,"X":_glEnable,"y":_glEnableVertexAttribArray,"jb":_glFlush,"tb":_glGenBuffers,"eb":_glGenTextures,"cb":_glGetError,"r":_glGetIntegerv,"Aa":_glGetProgramInfoLog,"Ba":_glGetProgramiv,"sa":_glGetShaderInfoLog,"ta":_glGetShaderiv,"za":_glGetUniformLocation,"ab":_glLineWidth,"Ca":_glLinkProgram,"hb":_glPixelStorei,"ib":_glReadBuffer,"gb":_glReadPixels,"wa":_glShaderSource,"db":_glTexImage2D,"K":_glTexParameteri,"Y":_glUniform1i,"F":_glUniform4f,"B":_glUniformMatrix4fv,"l":_glUseProgram,"z":_glVertexAttribPointer,"_":_glViewport,"kb":_glewInit,"aa":invoke_diii,"ba":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"rb":invoke_iiiiid,"P":invoke_iiiiii,"v":invoke_iiiiiii,"ca":invoke_iiiiiiii,"M":invoke_iiiiiiiiiiii,"lb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"s":invoke_viii,"Q":invoke_viiii,"t":invoke_viiiiiii,"C":invoke_viiiiiiiiii,"L":invoke_viiiiiiiiiiiiiii,"mb":invoke_viijii,"$":_setTempRet0,"pb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["vb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["zb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Ab"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Cb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Db"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Eb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_4_gl_intro_viewport.wasm b/emscripten/examples/BasicOpenGL/tutorial_4_gl_intro_viewport.wasm index d758e55e53f4e0246196e6094620faae793cf2ba..4d522c2a44fd7959aaa594eba92affed6e7d8634 100755 GIT binary patch delta 71021 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 V!^iVZgOIlIXJfmd6mZ=2{{SC(pG5!w delta 71474 zcmeFa30RfY_BhPD-|-BcK?Cq$Cfzu_&=D zt<*5Am(&u?3{w+J6BA7f6T5h&;uaa^f35vaha;Nz{=VP$eBXWk`si8j9@biW?X}n1 z^Zs^i?}9ga=k9cp+*NtIoIQB{jPiZn<@_-QOZxD$%7kviI-0#?gVbI&|fV+9}55cZ%4dO(#ri4>qkl@5K?m9|7`tP z%IWi=-jJ>LYU*59B(6JG^Gjrjob@(`t#LUQ;A6ulwI37Fc;dqY(2iLOLolrd^Z zD6axC6{CR}9SC=MMf`wx#0Zd%5fj3{S}^+a8+5h{AqE#hY}l8So%auF=xd%<9-5pW z=$O5NmqWI=P!0-)g+tuxd@rF<*<2$(A35HwvoQoxoIdY=II?FPiYh*Y_*Blz%}n4> zPLL^q%oxOk=HC^$qX`m;=SYA2YhX2Ur@pEM3D*vg* zeIp8wgd#^F>Q)n|K9ZLdwM`~jX?f)dyTypY3x>1+0K)OST6iIEcVZ!N9XY`QLLk7u zvUMw$k$`=F(Yi5#;2&GJ3k;?Uh6qhC{H8WR;V*IZ5wU+|o0fqY^7gg4AjFz1cttPg z6+FAd#*mcJ=8%~q9qJGQs&lSWcarv#KfZIM8--@7m48s@Aq0f^V&^sSX%LRm1GQ67 zV1O?~Wrt;bbSUj zcy-sAr~~2MQV9gE?DjGQ=5^>E%VFf$9=9P&>w7fAG+*|Z)=t;61Ts=rK$Nrq{1LA- z6)N2`8iJ7y>JK)eUPpP+c9n;|uPc>#pnm<3yj1poWPha~#F zy&Cv(nE)YOJ_FpGOWkoHbbzlLB;E=@N=^#=5%3d|dR?kJS)D#ZEq>?dJK~dwagV7N znI@3pbtQ096R?spa9YS4|;iGAZOc<5LK8F3PlCY)f;t! z07$O&%EFt+-G=iK+mF4Gjs!> zrZbA(kYRulU}i&HNXw=s>eLSOY3bALRYJ(;w4eo#vqi5-KB=ahp5>|1k0ZV z023`XDj$Ya1E7l)zt$OI;rjzFekQa>R6ehus~ai~!08yoU@%l}U|RJK2@P>!MWytO zBcamZ3#qF_l;Aqa%HGuf0KSqlk{jTH6VqG^m52Ed}66B?x9xX zWN5u0*{Aw-A@H-g-?BQW7YeeA7ztt=-oJ5_ZiGx*$l_7?2-+lH|65JV2WBpP3suBmMTJoKR+2IC)it>8f`9EzkNho{ zEe9D~g0`AgmKf}sT#AFs5{z~jGCEWjYe;Raur*09^YcYR*q@n_?tVUg)vQ> zf56SO&XJ?cTX1US(NIrPLX>V5ubl=O zBx|rYkhFGm{zc=PU5m#?w*Y$9y$D8+;xM>{);>5Pq!w;#PvdVnp@v)ZPn-~oZgid< z%p|mB!fzP-_FYkdQq4Pb*M}U2FPYfU3};?^&%_ZtsoF=AAK=#KeKdIm5mQfrMW$Qs zkRyCe!0;D^fct0~q86P5zI%p*sHp(ZLRPvI0N>xwz_gR01E9%;s7Fko!~{xBpxgv9 zOd!hya!g=@3FMv(O=K9MT9cAJo4{&82)14JgLV?oU_kmwziUeSw!ncWMN~tY@F3Vw zzOkzbFZjG6BE(~|c)>uBKmdjRp(*n^0VV^R%Ar}XC?Rb?yw#!vTw%aEq}0OS_d#b{ zU>K=!S5aGMQqz$DwXI0)QU93->oo<823DP-nhybh3T;xsQsTK)O*xqt`OrF!q@K+C z$=IzyHzhr23>^eC%zKatdM_dvxL1viE=cSfWQSqiTr> z0;BwGr$vp2s`k_|nDn^RDxG;C;3b|Y6=Fe(5dH!MH&ZidC5syv5|Yv{=s!;!r1h_z zHnA>frpkc|x}a*&E2o_Fdmg{rRk0)tx)AVPzQq63Ub zgBikYvtGmC39~IjfqeMs?Dh~$lWrC)Glb!J)wACvnEvfKi6$Cm^B26tHOl+foE{=r zm%Jq3*L-Kw@~H)^XVTbr{+S8D8kWAUGuFK3BW4@^Fj)0)ul`Ur9E1Oj8vL?Yk-#or;VnJE<`70R5B z?<>^EO|$z7Z)3!eenR(zS_=v$%}cOK5f5G4Pl)jUu(SqpdbXc{DncXr3pI+Gx8V8u zX#8oiDp-YO1$x0N#rU_*u8Wbys$H{IY3b-#BGT3agvEK^rI$yM>}~#o8+wS9Tfk(| zpB-dS-k7(q5L*GU+mEV?2$HMw5bIY!@qfxRd!tu_2DLcYlvMu7V+&6VP@X8%^QVCT_3UOf_xJ=ODp~J^BRz% zvb=+z1GP9B}_BIPCiiDx27 zSxMegXHrRcWeIWvekCu#qgIvpou&CoISWf5^ziFa1OMsL2&bMZ4-@=Vx&|`)*PM++ zR3Dw~nN-G-dz~tonT+FOm|_5<2&S}xMWB}gNT0yq0rWTd5hgiG{P+LZOajDeWl7$P zKR(U+8A_R@;H+HtF6H9<$z{wCEiUU~)*OpF=Hp`Wekgn2#h*?M^=DPa;&0wZl@D@( z0sfCFJNRe*mK9UPhK%R{0MZ=-v-U8&$~o?D`FjG2ZRGFmV+<8!y2!d?kc=CGePOlW zWZvrEdAVs&f7Hvh1@kV?#zJFTgAp;{3hJTe{q@(v0Bc>V%73ti+svBWf^J*{y`OL~ zW{I&uXv+u}DUj^r^i7Ft6`p-uAC-E!aF?21rk#?wRUBWP=hmK5IKe5WeF*OIL!v!b zmm?f0|AsEE$MtkqeaHrlM6J?@cAy@2KgZ|i6WXyp*TubV8;gUPqU}U`vOdRp&GcY< z&Jw%>*$7SI>Z0+c@f|r!%LIs_cXi~jswiWBSw}7=;TlE>O3x-fFw++uxwd98u~BI5 z?p$Y%cJ0h9MO?c&+eDaI__H$?jS<{tSA_ed0M!EZu3kzFr9HZER`-=*n$(5+g2}UW zHycSXryZ`#B=%i_*pY5mGx>q!PbA@tX~Cxs{IOTD?IsI233LFL>(qz4ok$gX z-D++jeX$?MobJwkTw7C{gWMm}=8eawqd(WBS#F_Qt=Q*=Nd+a@vr7OJ?x`x76)!@+ zhKKo0=-K2JYWMf&J`qX9UaiSsu9Sl@sOA{T9VDc>L@OT7H6yWL2F#xK?~7r6Ba;~b zy?b9(qD775&T&!I(B1<&W6-p6xMUb7KxUdT+!f=`@JU+#(cCXilwIcub_r0*_817; zBd2coMw>r@dsJ*{MqwJ(0`0_l<5ly2q+$1RIfym)Ub`-tB`Ld?D9)z-qom+G zO}vlmOmcsq_uR+%p`i5F`?yy2d}qNiW8$;onAYKbt{X@4zrcY|5y>didQai@dTxN7 zqAFx(1bt#Q*X9P27nJMCbBDVGt?pA?3e)P$r@1y>qr|m|hxrh?U;-DZRXxqMBxo14 zrq6NIGt(WtpAX>f2V?yW%FXl+bLF({xB_t<}j{1SWRqL6_ zO%+J_dAdG}v(`eO(BD#DvXReCSO{+P5Sp?@G z>Dp|rKJE81*Rqj5hiWd2u;Dq(N5RA%UGOs3u$Mlw=e^-|5QYHe{$S=05j3FZU*3zk8`BqG;U0=*Q&HG?#fd0b@WD=!J`u%McRp4d(pK5r z7A^vpHk!gJbiCu#~~%0*DfLV~&dclFjXiXH#J^!6{vRLB(A9(36#%r-xqU z4xj~i^)+rB%p23+UgKtXEJ1l?SRDfSJhg^v-;7Ozvc3*XeX&V>m`_#g#UYq=1?Kjz z;TEvTF%gqOz_=W4h$$5XD^l=^0aDR&0;E!BEjQ(Fq@rc6k0wBvi+=Y0AmH?4k;Tg4Y| zb<>r(-2U(lAFxg<_y=4hlj+)At||3z;qK;-=xM$FAD)QNn!nGTBK%g(P2~@`!TjlW z-E_JJ3u(m3Socx54>NPOQZI2Cj`+O z=AxJPaVpudOY8pycY?>RP|TOy!%orbf__^9%oJKcvbG$&-9o0^ja^36Mqn!{h z4jH~6Fx3#?*67dgxEj$(8(nW`6;<3o<_Nl6vb#4DB&LsF(mP_yE^&=y>>i~o3Z?H} z;-bv{05djL@7A3Eq$yXpDEikWF2+oUJubuR!i4qU1j1$>Y4<-ltJ{PGjU*Dzp>fb@ zzVv6YnMf>&)LK%bBZ(zlxt!Ei&;p~N zuMlz%v|#N|LNpHgA=*}f$OzDnMe;tHqZtwzjla7k(xx%YRt=c}>Ic(P>=)*i*zd;0 zRFTO&K$v#2ngp*i0Ka@n! zMQ*a2R36u3Qog14hLTEBP^^C+D8}ztx-5(wCF#fXz^r2$WUt^z(Lp-34(W)_7)K?} zwV<48PFk2pr2P_whGsF@py0bYgn8|}x};`z=3-rf^GQ^zN35X`8P)0Q$^rNpr?kIM!lT=1*++PjkO280s_(9XfRb#_6JHZ790A!GQ(Wdn?=G$qFt^FR>TB zI2Le16H??RX=Suc61jz>l+lzV(l4nxA5}?Bg*iR8B_pk@<~SilO<}_wNCc{$T1GD> zksW;ThiCID=x z+9{R1&-3Z;;~Xo_t%`K#ATot7tr-wYXACC2`GPz*%^gfm8ICg7a+vdml5~;zH}@#= z9AEi?o4z!Pbm1#LbZh%Ykzp_?0lu&P7$ffGF-F{1W5}}#N%@G59#0-3RUc{j<4Gd= zYwi09WLqc#uRToK37B0w^e7piBLb+t)^Zxjus`YH$H`-iusU5wPCc_o5`B9*`GgT? zd3-YnXXnwfo(TM;Tb?Az3`Oir8$}eIF_S#Nf{O!!d$W+yv+RUPnl_8v#bIwjtN#?4 z!eL)PoA)$X4nq%MKm1v;RHyyQT=F366$tZ)-YXb6kBnx$f;ICUF1#tP<`hZQh=321dh!4Xi=NNB=G5EuhM=@D9#MjDf{ zBeXn?+&-!Nh#NbZ5+;*W_f+_RRFTQaY6Xiy<>l4WRw@r}v(VEeCrD~#Kq8CAMkMBe zYz0SX&Qfv{3<w_f- z?b|K<8#og}eR=#N@T>il$FJm@ShIrxJEKBX0T#Vot$vTUS%MSA%R|ay#Vn z)(jXk^^fH9t?aQO@%)Q*!$6(lnb+Bv&qr}QpwYhgh|gCXxvRbe!>;D8qRV#k@h}ZR zH}B>%y=P$= z#%gw|In3{sU@wNT8cJ~O73XIIJQIcSx0gok;jj2o{(@dC>%FK5>YWg^>T;-B{RQKJ zh3XxVY6xZHPm?rei4Q^lE1C?bt6)P7AObFc2T@;<4d#K#ouQ&!7Z@mS{)}%pq!e;! z0;~*6dM2Tw?OHXeOx4RO;T#Hw%L}Lr}Q7M*HpM z8#IA1m=NGq*~DK{Fqlw#dM_WxO(?d7f}q~1Q;PuHs7nGv3v}=ZfHj2zk-AV^mQbjm zVwTc{^ykm{h#p2&*kXXrlQ9aYK8eOo&+oSKuY)qfYJMv1TgXRC8?JzSQ|Y|`Pb^_E z>5IZVAowt=WKbpHR_eSEBPfT5{gMDO0mNBh<-2vZ>hxrhit15q{__+VWy zrdRbXo(?<*JYnYgL772U?ac52n-LPpP*~7ZK~7!CP^>pd;4``WDHJxm>CKo1Jg~2)={d3aVl(rH~^az4ifbzPW=bx zxlMiLRH!QANNU|F*m1~qj${M005%+^aJY};b4Vazf?Nnr(}Q{F#u|xoxNh*30g1M^ zO$=caGvQ-rTj-}_t{oWD&WI_%n0D<$LV7{WO88(&HX?vFFW+Yd?KXiTAQOTVN&t8s zr~^Gn`76XTrYa3K3RrM8OAYa9--QlHhtv=ZdDnawsw&7#CIo-JZqXMj_rCDfXRNF_ z5W>nzFrlvu@V;$wTMi$a7`Nc7ijgB^vJ?SC_D>T?1@tT`0|AW6Hh~R*p0S^6rr8ew z<9sVbWuQ0-7H9{{;e)(;07^5d7QjcU$WxLaI$A$bye5Q#}sB2jgxB01Vewz>cU=d_2lxBYYZ)24CyoYavE5MhYMg zBlM~X6aw&@NoWsz{9+RN6FwNBG63|AlO`b^zHx@#zOd5>oZmD3Vbm_ zFb%1I9E{E(6Zjo~Y?DqUe5^Lfy!*Y;7_tBWGCr^* z-y4!+OsBz@P6x`90v}i&paWmokcH9t)1` zZ8{KF`F*HQC-jv`s2YHaZP8wW1*(FNf0&x^o=GSh0Hz6h@WC{p5CBG~z(lQJHRPLLtiEz>LJ)TVvM@sL zn84Qn{N4hM4X9iZd{nXzV7LTwF7TnyS&bYsbCg0j)2ng}!M3%e)ZnNBqH^>cK&;Bl zaRq?yOd8ejQDV|aD>aNg<9s3DVccavFjJ{49|j?fJOG%&WJ6p5(qK|uXJ*+5!2T9S z#cY6&&rKTNnK=&tz~r?DP#}gBW(#(}mu(BS!k5uRfoc(>kL`OiWM;e-1F(k?g3u%I zQD72UcGeI>l}V_=CIs>*vkAf1X`2vyRh#I)HGzeI?P3d`Q8OvniT<`+}0bojDWZ3ARsAea#E*zii+Xms7Yw~k4EKIL#P+4yAp6=4f#^s*m%m}GY7w!Dwe_* zt0VT60-0HfPML(#Aml5vic;a@OOw!c_+b5x4FE7gIX@b@;KsI-1z!do_{#V()MpZc z&yA3W5qjPP&Y9?rnCK3e2t3I49`lPax&yvgMX;}2`1AeUWFT|C=*RIr8SFF_W0vG;s2H&YBP-+rLGeh1!hb;~iU>yS> zS2hFU0m?LjJl_cBrbMiwDi~U~>Pq|zVte}gZE(@H-|&fi`QlJ|=QsRzzIbt{*5DXF zQ}E<0(f1PIKp6*FS5F1NoODBa{sdp=I`aYbO86L#Y+Rzxx-L4&R}-?;`1%?TD>5+hEU=GBF{WU?AzF+7m48!k8B-+^Y&fEa zf9D(H?8h435sSY&c}LUr9jbVd6fUNnF7vpELH(Ecj<|I3`DK0+PLa(1i_a&d;w(+# zguJLsw!4;Z8^WpW28R+jCWO`JLst}ZAX z{ASb@BFWkx=sR_V=kdF1J>h-){i&XifWKi8!V{5e&$yGJAL`|XB?vHqVvhLBw5$l> z!FnYB^r}R5NKN1W)FV-_wr}CAjy5?_7*9yicV?(S!QHh!$8Rb7PJG26HlLgchQdD zEF=bOH@s?dIGb&X8!51@bbUtF-1U$&bQTE+X^ft&OhNU5WvH>8HSFvn*kG3 zm$AZ-Ko)~`#j^?4m&XchqvD5SgY@B-vBGWLZio>M_RPk^!d(DA^KP-RF)|{*HdPobljXZL z-xI=8BlK{hQE45V&)_uub+A7lo=9;ypL1 z6#(pPsDg0S5YIrh8a_Yqz(8VN} zcmoFOsmc!1FW(bleU%XW33L<&_&o24YRXrk>I*pO-%d>j@U1vi0k9mVvx=fUZPkM9 zZnda209iZSfa$|%PYbmYK%$l)SoAT5{sX~k0M9n`3{cm7;s%P#T6@CP0}T8b!Abx* z_3hRkU$~mR6A`?U2*G;*AT#jq`ryyw(ipY$`!Jl)*9*8+l9jl+o8OE zk8m%?R&8G@bTrqJ_6kGoZAtY`3Fb#H`p_vMlds(D*8Vyrz(O-DEzdeFbRY*7Ya31r zb#S2+H#YU6znu}v*?QjD?*$)QnSAI6L0^7d^8=_Qiwiv~=u5LJ&gyX#;u2~3Il-a* zc~)@fspNA;s`PU~sm3xa{mYE_&&mSgwPxqR|KgS@ZQehGu^eud(hipkcW^xHmC{=M zQ+Sl{h3~nw)fGan%r;Vus1o+F$ohW>w{ud)wonz8hGsm@57)L`5<0MjRQk_9g;{J* z6#!l6E7ig@K6|s9=3Ew%Xz$CyWcri*xyqmK`f z!W>P6CU}#9+MPD-CbA6@C&N5&ywrqE zAB#;xXv}?Lrzkj%hdby)rW!dbK~_VCLRy^n zhEwgZ(J(5(H3$z^OvMKWt&c3oHOHz$FwTD#4K)FR)|gED|g;|z|js4RC`@rNmEk^ z619w;qAH5j=R%F;#<+ZQWVICrT{#=rdR~DUR(Os&`-{CMl|o$EIUF#lRX8?7pu$X4 z3?U_YB&5+NVUA!boS=XRJ*4QIer7@i+BKFgfG({wLFlHP=r2Aiy7dE-xEKlB6Ym== zJ_M`g+Wx^}GtQk~4BQ>TmGC{qw0ejL$7zdc^iXj^K+L*g`rJ@)C~n_9FjQ>QGW8hb z846i4j+wViKE0zH|eGIIz7YHVs@Z10Yt`tA)x=n(0|;h6ykNF)FBn17Vz{ds0)BcPSSy+ z#V=zZ7ib*l+DwdN=@dO3CTTZDj3h-TwV`9gVJOI)L-g^g&`YO@Gi8Pap3l$TTI5 zh;;MgQW*XGL03b%eUg|+7p0N5wBfztI?hRV+$(P7oZ5`ZVsFj`=asQRgKnOr`S*!^ zy$}E*>I^Gvy1a~Wqn=JJJ4qYdFD4O4J@kI@b-?zI`^DZS7Pye%B<=Ws_&evIt)_?_ znpXfaRtI|acuqz1(7a#{jS+@zrjTX96mfP$U|KT?bv-DyZou}k6k_j{Z8S-NeNniZ zWyFJGH11|eeo(xJlpmpA!1oA!?@EFLr5m_=rGPUxui&K}#Mr))z-l27FWbQaiP;vG zq=&?z&Dfrl1DscB8xjQ>naM_j?eIbeGy*o)60akQPD+*Q)At_|S3o#y1M$ETJD8+U z)4t)+a!80K*g>Z}ES~CWY|sI1)HmqB>X*Jn2Bx-+=0;$Phu+-OGCj^g=R6`duj@qI zbxho_FULu@JR-*Xj4eHYA=1nWb!l(u(ZvEYmI0Iu5?4zlfHPxT53G%_T}4Q}u0`GH z*}{PXs@sI8W0S!!gTg*6zuib#Hq15zr5FE*vaNHr*{MU7{CIw^>Nd{ z+&byJX<%YO0J~PCI zKBr!~=0UX)P&hD5x{g5W1CaDo9Uox7gVk;%z9nUQdXf+)T}i$FSt|nJ2^;P^PRW#BpK3 z4GS(Vf}3xg^zsv8beuy!t7#NI1MxA;MVKEjcYjjH{Nj^h7H$zsoGHS#tON(WeYQBJ zo+FgQJ_NK(=&isQX$VB*&lZPpj#W>Az#KICDRFMN15ov!3RQ@ksh|a~e@dJqI9vcV zecFJu4Nr?rIFRsxIY1BSBs?R+es|FChn^K*mZB7xO({VJQ;sqXb<%auihdUh zFNY#{o!Wr8qDVU1`{uwX*-BBs)wXjEtQ3!1=boJ}e#Kec*g|b$invsge+?yykDEtl zToiiM^b|cq!Jij^0QjcROOxrEFe#yF_Is#qdY{(GwnX%wnjq;NQ1%1c0qL$K;6!Bl z*Ag+2lW2=Hv8^n@xsW`Fx+_h*1EStf6V*^z9$0M$l!oag7DO*78U)Fb zg6QeR45_hCi^F|dlF{wvQS4ys@aF-@ABlYiGz4HKp&J6dVcMYySAP;hpi~N6w$wJH z9x!5hs|05hI3|d8dpR$_FqV*2*`lp@p%rdZaM#5Pdf%a)0E!cXZk(FZ>dq>EDmwtglBXmC<(3fvnC1t$Mey66R+F}7BaKzG2crJ{Ly5&;e_#oeGmyyIZg>aDUKDqsI*OuE3W9w}Y8_k&ON2 z*PT4pvqkwdOti%ovUW%1En-Q4Ozu@@+^w~J+Yh-YYSF(2FGc<7bLOYE3*ehMN8-Gf( zbbWjQZC8QAX@+r2R_y@+2=t)#Y`nCZud)C3Chgv4QX9b(yJU(T?kmHF3SxJHb{jn> z5PM!rTkH~wJ**WIyLMYE=~fB1>b{*M&F2yW`7uo`q6=gRh#k~Mca+}Yq#Rf_%PFH* zI!RIHc5A~4p0Kuv=N%zi?_4gVOAz7GWdi(*7(tOD^_nR2#xJl zSa&vnEORTUBRWU8Gu&wzZ4tZYlIn!+dHXx0#-J$L&38yY67q2g?S7Y(;I?}5AU`^J zywtGn$EMVbv0rMj_WXEh1s9ESgMVNp^sAlR=KKi=1(CIB4PpXI`6;h9)cclU<~HeC za4x?Ka7sE(t;IxX77sjWuiYy>&LI$fpLCf4VGl?@u&7@jl6pyK#*?N=o$BLK!jy$l zT_UA1Q;$3AwVjKkwufSTf*8U`oQctMmD=(B~WTT;m2PzivuDP#y- z-MG5B+v!sGb#yyi>V{r!1^(~umR)Lgl3Q}A>)X3Um-<;Bx8PFWZ|>$@>ZxwfWmK2- z^M(uxg&u@@q8W62J#axCboRmb@6t-sB{&WT&F;){X=2@tC=+&$5>Hfy0A#GRd+9qF z(sc9GB}_S*r!FxKJ9XLlB`F*ZTb9s4D$A&v|JI41r1jOpN|sbVU~Yz);y1D+ ziI=Jl!j8j3+Iz1^_1L`!d)}0~nl6EPAMq{SU$uP8_GT<%+FR1yqJ_Ux5@W{am1knVdYU%*l+=~;rKK77dZnh}UTxSI#G96aWmC5j0pv zF!v>cWqSFv)X;}zgJ3vRU`zumrWpx9ZggG16yX(vyqa#3NwdiyXplj$$RwlZMafv> z5_P%AWD4nGfiSPzui6MxtxSq(Z4@NKrjQLF^AK4GU=?5_?xXqRjMT~npnXbIcg=g{=5{^#~_wt6GN~_uk*l)vW64tOL}o29qq7NsW;?0lG|wVy8!@$ z6oQ825G-A0R#5B@Qp0Y@It1INK5AnP5+A z1Rd9|m|%i?%yJdjbWl?8px8^Ut)z5$xfJ6wBv%Mn z4ap%`{=!uR>;o*TbOMkL2tfO}7J=ZB9Rb8lmx=%|=#E6#AY2UK=3=(B6+?CFhw5&h zeJKH&>A2G3HpxO84zb!W9evhlh=2f?3pG<&DVU+GtrE+DB4e%$0E0OM4c;nNgbmmX zqwN9_H`ZYUSZQc2$X=LL=T*pFW8}{`eZy=_0Do6Z{s05;XPm&Pt#*Qim+m+CO9Q~* z4?%-J1S_sK6!tNm)q15tIy4lXYYT=xeo=~vGbm)(6c8-+n+@vXkA|Qj81NZqfo`NA z*?@-$Itu`U41z{M5X@hBmG;^Fy;t;tK)MM)7$$IURQ=YOgmY}d2pWVD%%NuazB^}> z4}yVAy&ETES_5^XNpFKq4?%+-f>p1X1;sIJuv+@iL73=J(IPBGdrcPt-~i@~6I3@M z{H-QWxi(J-8ayGGo@4S9&FTpW+b6Hq=!A3q)N@{nFt7Rz<{TN{VUo(XNg-&ELNH~m zNy?(sz$#*nP6^UM5gXJl|B1B`-eVFjun8k*5Js@_YQhaI!fSQH1^!h(NfA@8`X0LPyqK=-SF`v2w&@rO0LlL4y?p)7M>( zm8+DlktLWnb-@4*V6M@Bz+8#RT(Qj@f(CO4=K9{e9(TblqOrx?dYw7I0n8aIHaF5D zEXkGX%z;Xswz)&l;10nfZ~Z&WS-0D$Z|lsR_S5O*QpCjT=v2AR1-KZS2?Px$DgfM( z%b38>vMdH-Xx3_jHF~Dp&>~0yvWUL%imC=Y%rsX4V3=kE4dN-#e>$xb$IyzG8AS}u zdBq^Edo7ojK6OC~XB{p`2~5P?I1|v}`uKv>vgdV#WY!s)rZ`IjHt9l6%cS0aN)hH2 zGqtxCI`*G8-lwydzhKuHb|SMfu}ty*PMLJUs2d?Slkf%r#u*|;*bp&-RqIV*UfWcd za^}@RP6^V17@E{B1_1?6 z&s~(3x37e|mO*Sdwt#UWo7%#$p$g#`20t!WJdEpbHY_DAjJ|hSXxLDNL8hJ*2ALR) zNmJ73f?HfoXvRd&`QgvfZgz{yo=V9&+K)uF>Pl%j+>7xh(O&#bI>&LP^rbL)4m~Z% z_i`l+?$ib*Doi1u%&%7yE(uO!zDelXKc&fBrjBcFwbZ72wuu4s!Nh=|Ax2wEVW!R) z%I1q|P9{BFEj7I6rGltkYSpWuwBcnbgG&#fmu}Kav*{steR>&xM-NeyWE=ES17uZA zRZ%|99brK&L1c!B{2L2N>r_b(a0gf}6>{B()n`WE6@k-40^Fv+cA%*n-oyzCCiXoR z4>#uEbRKqCxo*ru>$$eFT)Mh!41m`Kz}Xh&8|&rim@84BbLcCwe1$95gh3sHpB(ta{H)S zO)6aTsphYs`@`jT@D43K!AU7L=wfqeVfE!?oEUqizT6hC9Y+gi_i-T$-U5s{bQGWno^rP0 zg9#CpcA~!AgPk*I&{(!+-S8Gm+Pts)C@p9VoWn<9W7)b!Dhy+lDEVEC_#jH2V$L10 zDY?u2m&u`<5$Ks|BtFf)QN_&}W8h7VuI zmgZmq0JcZMg#mQeWM@Zwi^HRxNszw^XPk7DtwSVkWbtB0xD^C`rB3n?6D6~vcXpDS zVT7-f%^i#Ae}~+d9_%DPjNbfHDOni8mGky6k zU839Wk`w5iJ>(W(1oribidm0#B9>dJotvA*0lsNTQrD{oTS&if6JXPP_&*LlLKfi{DzTu|>LwD|+&-F1-M2iK}x|Ly-qUGiL0Y{3<4H5IH=4eE5Wh*UnA zEO#@rpfEqYPi{&uB5Adp5EwyWX}LK@Jo|uLbFKK32XyT@^?;mg=3t65@nyLyT{=Y` zjM)xPkvo}sjJSpF8Ml%lJ>iI}| z=t+4L#>UN*t*e8XO`S4R9*q$n&XhZtWvgjZapy9t31OBkXO?&HEZK{BAD$&!t0Amx za9v;=>=c9@flwA&G|QF=3uwDZ?n3*_mg{2Xv9p6X>i?A75F>JDUymavV*YD(5JzU- z@lRcsqg_u0addIBd;T(A+M(o-mN6;VV z$kuT}mN)Dfnca7+!mn8)EZe+i3` zhPgkVA6!>!l*aH{1ZY3wCdp?rzycoi$?=$Rc|Zgc!Hf^(di0b}o`A7EQ*5-X6{V!; zDzG}`dMd#D_PG?hrXx@%5*Nq=5b2`}Wb5!E<0W^2oPiO^3&HK({hV!pS?r6?$^9|5 z=((UG?Ai*eL$7_LTL8$bnpMfNeYjBfM@p()1QszWRc1#FpGpnFmj@}4P(?rl6G@vz zV74IQmPJ9R`h$?^n`yd8_Ak1gNEm6)PSD1-i*4J-LMJSiZ$od6ztZmD8B9FZ?>~0B5@_2@f z&vVg-UXt6?$otw$GIPVtSJ+0Ik=$M=H`7+HkbmO%oHvNJI1{u2F?_nJX7y+y1qXsL z*YjpkG-tIfHfHt%Tv{xZUY1AH;0yfPTto^kErMQrS&lPpKNhEUzZOCJy&_xZZ)-TW z7hk#BxeY_~4YP0DuRW1%iwL>Uz^|=wG3ng5K~|Xz-hAg8&Mk~~d{^#^B*DW)(-+^B zt=r|9xbxrD-JD~it#&M8&_=ywzp&A^Bdkinhp}$+zcvQ>3h-V`QD<)oR(!*89o-Z} zqt0fzH?lT*^EGH_n}cYW{;1%+AXMOw1|ljo*N$N9&db$Z(Sd*nRzUDVO=(P?>{5n+ znP#V)`)vu%{EXa?uGk{8?QY=AEO*5)fLCfty}2?w>T(8gH91%XS8ptov4>NHQ2??*iiK3-V9kX!_8{x5@Poaq2dkTbAGSHotBQLfn44-lLel-Hu=d-?&}3 zonLJaLRG`t+`Pli#t1FhAwP{Aa39w+Q*afl?nS_@MbPOV+ZD~SWqqu>lHDKI=1Q7; zqPr6MiOq{%JMh31{rwXiGq^QNFInt}o$`3(Wqm*dGfO}0)LUqq0-FuyN^UDKTuJPn zYq*jp_WZ3YSsv(0j_$eIm9$5u=6`k#FR}t-YjYs?(5TPlER3zqi*%xKh4KiDT~n+? z(nW=`bptp`SOb3&!Mx<*{c>Z|)MIPce%mj931?T|Ag&jAx}}b5G~L-ij@NpADgVHR zVsS0PEs6sY z7X>6P3`ktCC{*iqL~beary<+@$K~6jau#Dp6L*uzYSv<%9^%b_T_j&0mkU}H8iB|} zfdOOU{D8!{aAV81Z{-KsfH2{-T_SS`v_|{$wEU`B;6`-NS-F8JCNoVeefWxek2dB9 z`P&;vxKNXSln3(x>?r~4DFN&$DzZ28yzFCWJy+n|l=B~UHKEiskop`YJabVfyEG{r z%J%|DNc&Zu7@oZd&S63)#tng4AiyS-@-M8Q4KLL!s0L%b-po+~4QqO+X7MN#ubGy7 zS%%jrL7Qq#sDT_3MbENDp>V>s7YAo7;GQhtCPz@7!%R&@#cGPoTEfjKvD$o5Y02hS z8uwQ$;&{Ocy{*5}1oJ6QWt1s&7BShWG{T4rkR!q9!C{2a1HqR9LgAFK7p@BOBBFy% z<@Oo~UQ?CUh+w~}SW|Coato%f8q*Cfmq*&AFzMo0Kuy_AuoltB9DPN-X`Nj$(C3*r=s_ zd!-Q#t*eYh{D+6a+X^%5+DRCZ@L@_r`axX>%{%n}izJno5yE_aUM6pAh;Dk3bO#vf-bE9l9-E6qRuBVwhTxs7nAR@3gjiyHb zu93BPxWe4wfe6K#i7}aLK%3TAA`ziJE9-!RSpP(oWRx+L5uqS=3LK<{B0N&xRxpOB z&IrYRh6zq?gunw>GrfE=9DRNbb1-B~wD*iq?xW)xDA*ZXH4-HIZUbAgOzHZL1j&{+ zP$r_VZf+PvX-PxaKMD~$8!9zk2BLDLG6*9^MJm>gf261_i&Tble9CJ?D{iDTW3_%I zN@?HB;0lefQA7##Sp1?X;#w%Y{joo$TP+r;P5b}M2LT#UkIcq3zia?FU) z8^LQaL2Aw#L3xbc2tJJsiv2xSxfu&|Q=F~%Oh7Xr03%k$DI-l?V-XkPbj2URkk9E2MIoIc$pu(V(-VoP8`cijNkLHf% zTr_Sv-`L-OZ&#Z1rR=2lOjFoAQqyjBIj~^bz1?V)_f zg_{oLZo{8M^-@wW&#S#`Y_(^YRsSug(rCc7 zoeFDD*K;Io=syQ4)=~=7zyNPjvr&N~>Bou=KEyIbru%3}=MGiagbuh5OKBNG@EmL) z2igo{u3>gfn6WMXKj13*+-$d1#+UDArKR1NZpcd)|YFB0g4JA*n(;55c)C3h;DP0!JiesEV!3>vtPe2%^{QCSmix{nct_ZW7M!sc_q zd$goirrH@T3!;Gw*?WED+d01CRid?hK$*y@D}9Px!=?*i3y$DDtTxDW0&2JsUGSj7 z#$>Fi{qUgO)a+)u{2?VwX%oW5vs^tNvURRTnmAkcZ^)6Hc*xd$%aPc+kB$U&Kd`T5 zdXb0dp@&)bh=xC6b7QuEIPK9#lzrS);=XC>jfneYPCNUUA~0G0W17vP=_8^zI$*jo z6%`H~g>~?g^@PAjG}K%(l;2sE{rtJzD`C;FmuajHUU?3Dtxe6wyN!(Kg8*@j%@&r)hG;8o1htGMrM#aeb_ zHJ3hHS%Nw0Kc#dwTR8La>VAby0W5kd2-U|=DQxQh(o;$gb2|m1GJD3@J7gF}J*{-W zy2QSDP=W+Fy$_EpvK8f=rZ14)3RShg+*E*#G{n)3l<5&B9wg3@nzz9MY zU`&c)ZGvD_>v$XyNN`a~kjP->tu?Jo(R;$`0y~yb#TU-$ngt5m1o6=VCHmUa%w82w@Han$edF6t)P-HZLUZQmk!PEXkN%FdYa?ezME< zS1h7VoP+h_JiC?7WZ?AU3!yOn;-<6Li85=AE$D%Q)) zn9o2RG&YIu2+tnFKKTD<2Pmz-upQn1aDZ}dzwOb3#vj%IrA_l+@S@AVAEmr-AjrS} zFO5>@mv;G?t%FfY6HPg!lyT;(2u^$z;m;!F6TB3A`(ctE5=>7I>M{K%gPb!jnkN!vf_T+E$e*5fi>>5C%wT*BZ(lg)G z(r@tD(G?o=GWk^@#!ZNedYC9 zQtwFjr|YBGvFB_Orqo&g_1_v&vi|Fq@BT*CFh;6Jr>ns+?q&^S?rZ*B>F>Ko8{_ zV!V3=oNYK>4x`s=JeSf)7VrifP|1lG6u6t`I);FarvBg5Mi@=CivZu@3ADeg37C@{ zSE;4xubEor{Bre(Dn`PWd7za4p-jPNpQu#g|GNZL^v8eRv8he*Zsur`%i&Q%@t_(w z9L-g&z@^atO}Yhxt#JC?ANCdn-TL47VDvh2qdj;>ziTyEeBVfe_l=(UZ<1#}bK=94 z;=eOEyS60T3<#bK zYZLKeFcA0~E=S6Llfa|l%%bC}>8AgwafDY441u#w54_4%k4~%SkkN0$(_D>cMm-0< zxk70@#}qyX41=dyN%-%Q>%Sr$)~dIu&GBgZ{zHdj*itPq%F&9=Roxcju(qTzPX^0H zK_kV1v5wkDipOIe)?!2ONHK~Ij&n5n`{7~~rEv~x3mWSM!tNnlLdnlek`|9ZvIOwDN8a;y_7P^mo)3 z;pu1(p}F^S4e-z?V~Ulyjp~TT`&igo8s3axUw`(ppu*$U9@1Dfu0G?he=`{yA=-$D zb?|?+pjIsiLqx`6To9sB!FSjMVY2Tn1D4G{ZMi+@%N-y*qG`h&lZb2t)At4l$=Z^Ujt#u4>P6zZ$Pwb> z=KJfcZ%i+Wt_E82SVvv9Cw~5PhqWV&Ek19b?qEAGeu7`qhGT@5FvD>S?(SVmwCdT8 zxdb8l>>NiIl3qez?B{H)ot)#?!}R%$x%Rk?Y17HMj%ch#_NG?&JcqTRkky~NI~POK zVjZou1@j#Dad1Gq!%6-&1@xwLDRI3`>+F^4(V}reo+hO@rpa)V0mf_lmN<&Jup_CK z99+i)$_)@x=~Eew2HLRa9r=pOjCQ>#(3djh5wu^1L)0ev9SaD*Cza4MD;;;C`RcpM z@p^q-sqiv}0~cWJ)!5|ruT_o*&_mxv9gXVX^H;MsI2!VpY5BX3=kYgcqr;ECxf>nx z_>wEoRodi;2?Idikpu;S$h$T<`jQRXv{yDck~orDrXAeucoZJ;`Or-_cOb*rdqoq! zcO=p#9Z3@!cgQh>wm&0?ns)4<2%Ca#e2B@2P|{M)-=2f5m6*=%gY?C0~&nOshr+qm}cuW08PY z)oO{wj`>^zc$pms*X(*Q^X`X~5^cwE$0d%>yb58B5I{)z?8}_yI_0R#BSgJt9QWf3 zO?31Rjw7awE?yOKGYYKDsv#s&`=HeEEyrFlswpOX*T@QCg)b>{{6tdUrG@9wb!~8K zNk2JUaHMI2n*ub8W-OHY(_jDLxNkf>@p4t6;7u5Bi025w8!p)5w`o}d9*eP_hJjaO zECjZ7Dm_OxmpdB82fRIFJud@q&tMORB)~Nx=V)2EBe|{~1Q&)F=V>AQfeQ|LhZ#<+ zaNrD8kKoffMqnTZ)>ZB*P=-Q$O;jPM5GCi}q8LX+SF4mkH?XVrTRLcQ?RyL%+_RbH z-sfs0!h1NLY_g=6=&l(KZwOn-;muz& z7~U|pg5k|!GZ-F4wu0f!V>1}uW440fxn(mL9*(wx;iYF5?1OT`%hgsmyfkelhnKUh zV0h`;42GAxtzdX*+YE+>!>wR=>Dvs3XUnZ%cxc=VhG*0DU>_789y&L};oWvCIlQxO z2E)7YRxrHtZU)1<^;R&vGj9gJ5fBXT+?&C_e`lvI|IP^Zxzzmu;RR;6OI;HXoM{LD zddkL9cFIEjc|h7rJ^TxJ`7*;at7RoL>{mx54^KwWmcKg2@M!?d{ne4k!^QeEtP<|* z#H;iV{_5y^RY($jpwi(nbHvlEO2-@S?9adn#`VIV5 z@#ln2`^|A5zoU@QuYUuRi$Jg60a&+>&^Hjsg6ys;M^ioxfR0s;HVl|t<>WyB^Qv_O!!8>L`ut_Y z%=k->>2pPoS=qtKXs(>%WF$LqPMu^kqDRp2#2G-chfZ=N@6<^)5{zUc1?M5;IaYLD zV$4KI&W@}!Vs z=00~I?jH@@lR}+`!$7o9QJi{?gNNSkqW4~c+1?3ZP8Z|p;V>Oz?{EWS508OynkNur zm4R_;9fR9`b&Yg0>*^SW)^q+M7oP}KcR*FD5zfK(lK{IO;JVO)^UnITB7#KG$_VE> z_1DJ1(II%QD@1{7_E*QX48b?CXzJ5ceBjMxN%BB6O0k=RgzBB3=IkpS6|8g1^}&okXn z+c^{Hl2*>?_@!NH<=n!twzIj7GtUIt`-?_)qhGXj&SZ%o%guF2QHcg!^#fdj@$MPE zGshmZVe&Cvi}Qvgz338L$^E6DDch-9e$6q5=96(14W3hO3?c!IiIg7 z!apWC7xG*#op-?`UeA62(i3W$KnGULXX#hGwlTSeB@mnAU4bt+tk=XtY_QMoLL)X-Z|KX+^u% zx~&!4y8GGY=J$KvbIvfL>;Cb5M<3qXb9=Any`6c;N%g7z?`JYu=0DG3otdP6-r4Nv z?eo|ZjOp{o(NBYW+4{zUDEf4c@xys+%n+E78XWi;8JJ{agQVNB=a*3kwk!)I)=$jf z8x$Fq2Fqp4k&SsTSd7bOqcSzGJluheiV%CI7r(AoWKCZX5Jo*{f(d_YQIeL5Ee&DD zlYYZp#LHgIe*hTQ*&tZADkx+FV6$pVA&c$K^iOtt(rsjtGXb9hdg= z80E?TT*wB4+*`!@7-A$tOp8e&SYd;hxkapli|Mh&u(KA%pDtqkWj8-w#Ns--JO2BSU)ukY{FJn!A4;aB23zcu zx@bWA+u~O51itb?*3K6;0$Cz+S!S2QSbz@eGzK551;_cD9%R3_p;MMU%;Mo}ewf`? zimeNptVfd-);81ceQfy$w$Wq@2F-&kmf^$(LkuGMk4sq>KBqv5=4E9poDX`0b#YdI z03IIRGs+&rA9;jn{7(f+rvKO@td9*g?yi=y9{+=1Q5lPNxD^b4%gb2r>-ja6v3cN> zvy8=;3YEz27CwT-yG^Bm4@PPndLL`6m`t;I-ECw^?_-RXA?C&q5)#P7lMD~$T!~3; z58ePUW->h34ld5AkXVu=aF*aVA%RUosX2vteegQSsx2%pBMIcRibeI{H)~NyD!KxD zl+A>;b01}sWl=XfH zrCenMawU61Q9z#Mtlb!FjpDq`7aB0$>xL>Y2-el6lDTL2$j~Y@B6H6a@c7!2qxw+D z4t-#NCvkjeIqOhL98r)r;20a==ndwWXmE@*I1UQt=xs}HszFBCt1WLT$~Io)Xlu!6 z@*|Q$Te>!H`#6iiQ03(5kFzKgUe@C*%>~1V9#A;>Zy#qp@|>wsM_s};e<0UbsC&a< zD9t8xgb%YGvcfBJjX)w1r`Tdaf?N*?=opSyfJ{0LF?0+I=;-8a<|@(sqKIiSWgI@t znu3|87)+B5rb7cvqx_SeV4bo5zYBW>=qSs}@xq6_$8z?E1gB?Ji2jbbP3g2+Bku6+ zw(-)HEERY)D_Oh^!J{i#?eMTH2*K}}76oM%Kjeqzhv62jj|_#wWFDFzMVfs9(2hF;8SNYIxhZfk z#7_2x^UG`5_7uZr9bVw@&_s`Z4Zs_&!yH{-I2-5(VADYo&W}{Go-X7d6E=P&{_1Ib zT2;3WujY((ELjcLg|VerfmyK5z)ZOYQ%?%l8>_(%?7iU_^;~wjd#kpJK^mimU1=whYaw{dzWn7B=^)C!e+B_(d_2W-K zAZ`qxf>U_YCU%Ga^wVsXtm3$f6oJj`)i!@NXK%`?dDtfFmn&`l@MkH?JkLa_K4bHL zx{0F9>zOF7%{KpYRfvi|t+vsV?ifGJhQ zs>n3ADZ)`+;dl{^Jwlq|if{_TFhVX92`1o}*;vyGth}f_ple}L4GB$h(Tt>UnrNfN zp@rl7QfzRd;Rpljn4^U2rpa{>cu@;t){R&)tb9cnV;2pA)|k}nfR%hL7DlgdzUdEa zfELUYX4${`0|q|X;92r9mc{mN4uxMw@871S&@vASg{?<>V(sVxvou-)7zq;C81MD71 zbHBtU1^ukFkk)Fp+(OQqn;kJKM&t#e?!lVxeu;HYz2T&trn63SHtWGW#3LDV?~v^* z@Ow;RF>=dxR*h0Pzn%S7B~!vKDr5|oyr`N@Bl83lmc&Ztf0e|w<=}Xk1%6{iNE-e! zoA>{c*{d(NQoY{}W4SPKN2`R29c-GN;UIm>c9y`ycCxA0Hh~9rvi@jImqY`jH*Tw@ zhjX~H&-r^hSvpGQ-#b|!IB7L3HYS`ppLoSr2Tt}-jZDUW2e!M(>?#?3UX37Dh#By*4gb1_@;Mu8;=qIkrcY*4Q#b8_LLcu}5WVoOLyb3fYB+_ALA zRQ{1Sajc6>z51oQQ0(0JQ2j7BK|z|RB#PiR1e0VD5hWt3taSQ`FfS@RS;B(Pd_yU; zxKZ@fV(>+_XgP!HL-3FqC?_h)LaQuMl0LI2y+#?*7w3Tmd??jI6pycCLqejw)DEW9 zF)v;SkJO=$GQPWxjZ(1`p>o3_203!P#ipS1PJau{gYmU*wNC#gkRHkJKES#Hsq_G5 zuNvQafc+7n2?tp!L&w1IiDK6Hs)MYuujUm7r})$aL^PTaOkb>#g1kIEnQ?| zqR_H}p(P}eyV^bU(uNPCIV~Lq-()B(0s z!-w@svi`WsQ=&hPy&%s6q+~ArnPn-Ajz;P`z4$pr32ht>m9s)lm}jA>CXVGv50AMa zn^}bJ6OmeK?a6|L=#m|&_jrnuA}Lw)YwUqK^iwT`7Kz!U-g_r-Z5sSi2LtwbC3M9CXTT4DKx&I8N$KCZumaU_yYd55LNQW~nrAj90nY^qVb z{1Ef0p9ZPGPu>(i`VdQXN9r#m>rT%;`XK2u{`MgjlPpv76EF05p~!y|mI{qtKXfyV zet`rar8Ka##2c%vJJ5}y_(EU+accwim+^T)1I}e4x%w_kZX?$0Uj%1L4@7?%9KARY z{Z(-E&UewdBKbMPaUT|;p@uW>FiTDl0?r4K=tmUHZL9XoAeBt{9)R>%WK*=Du;EH-3QQW#%+g6+V<-**xl2H{*k$=YEvCY(<{ z$+}N5!1D1tQwt)N56aZ^wB zh81I(1R8fw*#-(5a(D40OY7{0=^YG6OkB^viy?Z18|O#HW~pj84s2XzHnQZAp+>Rc zHG#^bF=!-8vW@Ooh=~Mxt&TJ41aSa`ebi{NP3y(_IEn_R#{$<$u~FBC?`p)G!pToI zvbHWK?Jc*_aSyhJMRD7Q>`y%|e(J`s0He`n0l=d3S#ea0p*SP@E`q#p}1LSKK5zj}_HN(?qkZ`h-!Qc}Wcn(W{D1v{zH zB}u;Vd-gm2_lskx~xv@sEbxgA`d=)?R=ul27!nebt z#0np;?4ab+A#@t9P{#QeCMpSb!l3x`p{Htz&wl>u=&)h@pjSx{CdJE7`kTB;zIyE~ zqN*OsOSbckd{~+?PoSMX!S|&pE5gVMdHG4V=k4`BCdKg?J(Wqe(~bPio=RVVR(F#B zv!{}+1<+{xw{x|((t|HaS9+Kt`Ob8u#PWCQrHm8)%P0B6y_Dsa-_cunRQRh;@QU8b zEvDc9L2sqhVI{yEdc41QfO3oYmAaP)DQVVuoVY^pr$I_{ua}=8+un2^7(QW=4VSmh zy0Pxis{={!nMudb`t5@iRk1a%til5kf7som+tR zUS|>-9Z}PY1gIbxj~sqIO0g(8(OJZH@H`2_(a`}o00O1ACtI{x8UWst3D9l!N1Wgs6uP8l6_#WD+j*)j_cw5I!% zXhQqpE~TI6@;VKlAem#ij#N2EiFP)v)AXuZK6ZkV*y|$v)wOQVdfdx08i^ceB$h!y zu-8F@Nj)4g2v}x2E%fp6uX2?*TfM1N?szD5$x^D>QVO_2DWD0ZPG6%GQlV5#DD=3} z*|UL_yAf!CtR7lmcU+RIOP^m20VxmPcK*RJmZO0t~1UBd;|y zsl7%MB#PpxT&w9DYDDoktKi>L!{?)@oYnB3uHl=fD(ynxZLZ;OncnhU{43MDaTk}T zDeYW9sM&>L6&I16=Mk*m#RuOFHqG##+r_7n{|fxeck?p%!^$f)ecNs#*>aB(7q$Vx zqaye=g3c`nUfj)p1n&@duk7ZoiD0l7{)$(4H}W^YU-b$fL;gniq19aSpM$^V6_=fUJ=!8npj44(+vje1Vz6DjN=A|Y3JC$Xfa7#hRQi-U_=L+40yDd60QKoMFYb$ zBy8|#%ezlf!kinau3zDUCZYXpgTKOPf2R4}K>I`W8C8wy(@`nZ{!q1|s>{|=e-Q02 z9yS|ApZMKmG{5s!oi|x^4pgI0R2Y?Bwl=s=AeAcJ)>OfBexr1-U98{>;JPkXX!@~O zw8!VC;v)I-HJbiaTZHNn3aLcs2VOA)RRLd9d%k;ylIVcWexuix#dst_V>cw@Fc&L+$~S?Tykrk{M*N-Bcu5~-pC*RDoyd)er~b?~2i+33JW;lKPcb>KwjDfl<; zpdOs)Y$E&})P)nB7vVp@gZgk{*k$<3b_P1}ax{r;JB?0U3ICp*MklUGgHsS_tUkHf#bhPTO8qGOOzqnMCU9okb%M;1j(uU;K!>2bEQ zRYvjjnXZhEJY^M6qg6cB{40!Zge6L+dUbH=fDx6Bt8A5~pK+NZt*Zi|CJHU3cD@mz z0~8Xiej7rEDMYQ_R=bL?oPmZ|w~Fr|_vk8qjNDVJ_(gJ?R&n=CxEELPG;%Mm;^W9& zzM9V`w{kUK2RFS6rCK9emlha33`=dukWmcCkPbDe7?2myT4HA@tio6k8d-ec|h(9Wk+tHd*7aJ9a4z^RYovEWBYj_~J|NS01^8?uU5` zeYD+LhLdS~vLrT4alC}pE!Kf9tnO&3Xv1a~HkK$Fmm+uG;D!kz#SN1YCK8$lDI%$VlbS!SM(!^@kK^HJw*wi(TnS_c$ zjtdK0!X(X|df>A|uZ-nxDBVgizdD2k2a`2^h90+4=(rG9G!v6TJu5;8+0E-`D_L?V zcNSt3HjHN%DqUpFAgYbCheNf#?TaOkp07~FLJb)gam!e0z0x=86_ z*SvOq%VVrF&nr@5`iAJCMvGIZ>||3Dd^tf&Tj9`}F;q`3_R59gCt1A& z>cXkJtXCye59JZXO6Rzi8zd@f9_w-IP6{7i4E00#Z;O?b8(|suOn9Av^=+}@Rf4XH z@HTT4T;9RY$GmRWp)GAF;u54$fR0qDEw7!UM3v$sLL7hMtUq|m9LBroA_*LocFvu; z8c-Zf%(x4pTIFFa_rbN}_4iFs^X7dM_^?(FTn#}Wv9}>aTsU#+?tl>53Kthn+}8;) zE}VoBS8?G4zTgWd2+)NSIO4*IQ`Z7a!}z^(m5t6&G-@e?_w?KQIw1wuYIvV{N-CeU zg5AgK<|!#C^W1sLB>u_@7Q*%U%I&dqMWu0<&GR<(A&;e!H-uNsSGxLetE7!xLQ0#K z6jV0_aQ7n1?cgUCV7g&n$r8D;P>Drb9K1m39`B$_E)fO|_Ik~JA?~;=LpoaSt_2u7 z>5j_+#Xk(Ui}his6y~W64^$u~g zj?$qK1lJSvhF55Z!fGx!$G|R=7w3B_UpCy?j>nfMGfG2r>@QMdwNpQH7^Q-75*z1q z)zyL1dR#YjSXUC$jhGZT#&tw-AJJ>X#$FqX&Op@kxdzs+xgvx!J`t)!lcBqf}0`;GZp0?n8C;Tdb_GU3!}zSgcIMZxQ

SGHkwj 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 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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_5_gl_intro_view_transforms.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["qb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["tb"];addOnInit(Module["asm"]["rb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={227840:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"H":___cxa_free_exception,"ca":___cxa_rethrow,"i":___cxa_throw,"nb":___cxa_uncaught_exceptions,"e":___resumeException,"ba":___syscall_fcntl64,"lb":___syscall_ioctl,"fa":___syscall_open,"ia":___syscall_stat64,"jb":__embind_register_bigint,"la":__embind_register_bool,"ka":__embind_register_emval,"T":__embind_register_float,"Ca":__embind_register_function,"x":__embind_register_integer,"p":__embind_register_memory_view,"S":__embind_register_std_string,"M":__embind_register_std_wstring,"ma":__embind_register_void,"A":_abort,"Ga":_emscripten_asm_const_int,"V":_emscripten_get_canvas_element_size,"ja":_emscripten_memcpy_big,"da":_emscripten_resize_heap,"Ea":_emscripten_set_canvas_element_size,"Ra":_emscripten_set_click_callback_on_thread,"Oa":_emscripten_set_dblclick_callback_on_thread,"Ta":_emscripten_set_keydown_callback_on_thread,"Ua":_emscripten_set_keypress_callback_on_thread,"Sa":_emscripten_set_keyup_callback_on_thread,"Qa":_emscripten_set_mousedown_callback_on_thread,"Ma":_emscripten_set_mouseenter_callback_on_thread,"La":_emscripten_set_mouseleave_callback_on_thread,"Na":_emscripten_set_mousemove_callback_on_thread,"Ja":_emscripten_set_mouseout_callback_on_thread,"Ka":_emscripten_set_mouseover_callback_on_thread,"Pa":_emscripten_set_mouseup_callback_on_thread,"Ha":_emscripten_set_resize_callback_on_thread,"Ia":_emscripten_set_wheel_callback_on_thread,"Da":_emscripten_sleep,"Wa":_emscripten_webgl_create_context,"U":_emscripten_webgl_destroy_context,"Va":_emscripten_webgl_enable_extension,"Xa":_emscripten_webgl_init_context_attributes,"Fa":_emscripten_webgl_make_context_current,"ga":_environ_get,"ha":_environ_sizes_get,"R":_fd_close,"ea":_fd_read,"ib":_fd_seek,"Q":_fd_write,"a":_getTempRet0,"Ba":_glActiveTexture,"sa":_glAttachShader,"I":_glBindAttribLocation,"X":_glBindTexture,"Ya":_glBlendFunc,"bb":_glClear,"pb":_glClearColor,"ta":_glCompileShader,"wa":_glCreateProgram,"va":_glCreateShader,"na":_glDeleteProgram,"oa":_glDeleteShader,"G":_glDeleteTextures,"pa":_glDetachShader,"y":_glDisable,"D":_glDisableVertexAttribArray,"w":_glDrawArrays,"P":_glEnable,"E":_glEnableVertexAttribArray,"fb":_glFlush,"ab":_glGenTextures,"_a":_glGetError,"r":_glGetIntegerv,"ya":_glGetProgramInfoLog,"za":_glGetProgramiv,"qa":_glGetShaderInfoLog,"ra":_glGetShaderiv,"xa":_glGetUniformLocation,"Za":_glLineWidth,"Aa":_glLinkProgram,"db":_glPixelStorei,"eb":_glReadBuffer,"cb":_glReadPixels,"ua":_glShaderSource,"$a":_glTexImage2D,"J":_glTexParameteri,"W":_glUniform1i,"z":_glUniform4f,"B":_glUniformMatrix4fv,"l":_glUseProgram,"F":_glVertexAttribPointer,"Y":_glViewport,"ob":_glewInit,"_":invoke_diii,"$":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"mb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"aa":invoke_iiiiiiii,"L":invoke_iiiiiiiiiiii,"gb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"s":invoke_viii,"O":invoke_viiii,"t":invoke_viiiiiii,"C":invoke_viiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"hb":invoke_viijii,"Z":_setTempRet0,"kb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["rb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["sb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ub"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["vb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["wb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["xb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["yb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["zb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ab"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Bb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Cb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Db"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Fb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Gb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Hb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ib"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["lc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["mc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["nc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["oc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["pc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="tutorial_5_gl_intro_view_transforms.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["qb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["tb"];addOnInit(Module["asm"]["rb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={227704:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"n":___cxa_begin_catch,"q":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"H":___cxa_free_exception,"ca":___cxa_rethrow,"i":___cxa_throw,"nb":___cxa_uncaught_exceptions,"e":___resumeException,"ba":___syscall_fcntl64,"lb":___syscall_ioctl,"fa":___syscall_open,"ia":___syscall_stat64,"jb":__embind_register_bigint,"la":__embind_register_bool,"ka":__embind_register_emval,"T":__embind_register_float,"Ca":__embind_register_function,"x":__embind_register_integer,"p":__embind_register_memory_view,"S":__embind_register_std_string,"M":__embind_register_std_wstring,"ma":__embind_register_void,"A":_abort,"Ga":_emscripten_asm_const_int,"V":_emscripten_get_canvas_element_size,"ja":_emscripten_memcpy_big,"da":_emscripten_resize_heap,"Ea":_emscripten_set_canvas_element_size,"Ra":_emscripten_set_click_callback_on_thread,"Oa":_emscripten_set_dblclick_callback_on_thread,"Ta":_emscripten_set_keydown_callback_on_thread,"Ua":_emscripten_set_keypress_callback_on_thread,"Sa":_emscripten_set_keyup_callback_on_thread,"Qa":_emscripten_set_mousedown_callback_on_thread,"Ma":_emscripten_set_mouseenter_callback_on_thread,"La":_emscripten_set_mouseleave_callback_on_thread,"Na":_emscripten_set_mousemove_callback_on_thread,"Ja":_emscripten_set_mouseout_callback_on_thread,"Ka":_emscripten_set_mouseover_callback_on_thread,"Pa":_emscripten_set_mouseup_callback_on_thread,"Ha":_emscripten_set_resize_callback_on_thread,"Ia":_emscripten_set_wheel_callback_on_thread,"Da":_emscripten_sleep,"Wa":_emscripten_webgl_create_context,"U":_emscripten_webgl_destroy_context,"Va":_emscripten_webgl_enable_extension,"Xa":_emscripten_webgl_init_context_attributes,"Fa":_emscripten_webgl_make_context_current,"ga":_environ_get,"ha":_environ_sizes_get,"R":_fd_close,"ea":_fd_read,"ib":_fd_seek,"Q":_fd_write,"a":_getTempRet0,"Ba":_glActiveTexture,"sa":_glAttachShader,"I":_glBindAttribLocation,"X":_glBindTexture,"Ya":_glBlendFunc,"bb":_glClear,"pb":_glClearColor,"ta":_glCompileShader,"wa":_glCreateProgram,"va":_glCreateShader,"na":_glDeleteProgram,"oa":_glDeleteShader,"G":_glDeleteTextures,"pa":_glDetachShader,"y":_glDisable,"D":_glDisableVertexAttribArray,"w":_glDrawArrays,"P":_glEnable,"E":_glEnableVertexAttribArray,"fb":_glFlush,"ab":_glGenTextures,"_a":_glGetError,"r":_glGetIntegerv,"ya":_glGetProgramInfoLog,"za":_glGetProgramiv,"qa":_glGetShaderInfoLog,"ra":_glGetShaderiv,"xa":_glGetUniformLocation,"Za":_glLineWidth,"Aa":_glLinkProgram,"db":_glPixelStorei,"eb":_glReadBuffer,"cb":_glReadPixels,"ua":_glShaderSource,"$a":_glTexImage2D,"J":_glTexParameteri,"W":_glUniform1i,"z":_glUniform4f,"B":_glUniformMatrix4fv,"l":_glUseProgram,"F":_glVertexAttribPointer,"Y":_glViewport,"ob":_glewInit,"_":invoke_diii,"$":invoke_fiii,"m":invoke_i,"c":invoke_ii,"f":invoke_iii,"o":invoke_iiii,"k":invoke_iiiii,"mb":invoke_iiiiid,"N":invoke_iiiiii,"v":invoke_iiiiiii,"aa":invoke_iiiiiiii,"L":invoke_iiiiiiiiiiii,"gb":invoke_jiiii,"j":invoke_v,"u":invoke_vi,"d":invoke_vii,"s":invoke_viii,"O":invoke_viiii,"t":invoke_viiiiiii,"C":invoke_viiiiiiiiii,"K":invoke_viiiiiiiiiiiiiii,"hb":invoke_viijii,"Z":_setTempRet0,"kb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["rb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["sb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ub"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["vb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["wb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["xb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["yb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["zb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ab"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Bb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Cb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Db"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Fb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Gb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Hb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ib"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["lc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["mc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["nc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["oc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["pc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/BasicOpenGL/tutorial_5_gl_intro_view_transforms.wasm b/emscripten/examples/BasicOpenGL/tutorial_5_gl_intro_view_transforms.wasm index ada50c785e888c0123f4183e269a87fed2e12bce..c4f12da5b5468797dd42972a2d5b53e26456568f 100755 GIT binary patch delta 63973 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

Pk1-xV9y0_ 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 XhLEBYn*o63hih>Cklue8d*eDT# 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�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 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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="HelloPangolin.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228176:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"I":___cxa_free_exception,"ka":___cxa_rethrow,"i":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"ja":___syscall_fcntl64,"rb":___syscall_ioctl,"oa":___syscall_open,"ra":___syscall_stat64,"pb":__embind_register_bigint,"ua":__embind_register_bool,"ta":__embind_register_emval,"_":__embind_register_float,"La":__embind_register_function,"y":__embind_register_integer,"q":__embind_register_memory_view,"Z":__embind_register_std_string,"Q":__embind_register_std_wstring,"va":__embind_register_void,"G":_abort,"Pa":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"sa":_emscripten_memcpy_big,"ma":_emscripten_resize_heap,"Na":_emscripten_set_canvas_element_size,"_a":_emscripten_set_click_callback_on_thread,"Xa":_emscripten_set_dblclick_callback_on_thread,"ab":_emscripten_set_keydown_callback_on_thread,"bb":_emscripten_set_keypress_callback_on_thread,"$a":_emscripten_set_keyup_callback_on_thread,"Za":_emscripten_set_mousedown_callback_on_thread,"Va":_emscripten_set_mouseenter_callback_on_thread,"Ua":_emscripten_set_mouseleave_callback_on_thread,"Wa":_emscripten_set_mousemove_callback_on_thread,"Sa":_emscripten_set_mouseout_callback_on_thread,"Ta":_emscripten_set_mouseover_callback_on_thread,"Ya":_emscripten_set_mouseup_callback_on_thread,"Qa":_emscripten_set_resize_callback_on_thread,"Ra":_emscripten_set_wheel_callback_on_thread,"Ma":_emscripten_sleep,"db":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"cb":_emscripten_webgl_enable_extension,"eb":_emscripten_webgl_init_context_attributes,"Oa":_emscripten_webgl_make_context_current,"pa":_environ_get,"qa":_environ_sizes_get,"Y":_fd_close,"na":_fd_read,"ob":_fd_seek,"X":_fd_write,"a":_getTempRet0,"Ka":_glActiveTexture,"Ba":_glAttachShader,"K":_glBindAttribLocation,"u":_glBindFramebuffer,"P":_glBindTexture,"fb":_glBlendFunc,"hb":_glBlitFramebuffer,"la":_glClear,"Ca":_glCompileShader,"Fa":_glCreateProgram,"Ea":_glCreateShader,"J":_glDeleteFramebuffers,"wa":_glDeleteProgram,"xa":_glDeleteShader,"z":_glDeleteTextures,"ya":_glDetachShader,"A":_glDisable,"C":_glDisableVertexAttribArray,"w":_glDrawArrays,"ba":_glDrawBuffers,"W":_glEnable,"E":_glEnableVertexAttribArray,"jb":_glFlush,"S":_glFramebufferTexture2D,"T":_glGenFramebuffers,"tb":_glGenTextures,"ea":_glGetError,"m":_glGetIntegerv,"Ha":_glGetProgramInfoLog,"Ia":_glGetProgramiv,"za":_glGetShaderInfoLog,"Aa":_glGetShaderiv,"Ga":_glGetUniformLocation,"gb":_glLineWidth,"Ja":_glLinkProgram,"ib":_glPixelStorei,"da":_glReadBuffer,"ca":_glReadPixels,"Da":_glShaderSource,"lb":_glTexImage2D,"M":_glTexParameteri,"L":_glUniform1i,"D":_glUniform4f,"B":_glUniformMatrix4fv,"k":_glUseProgram,"F":_glVertexAttribPointer,"R":_glViewport,"kb":_glewInit,"ga":invoke_diii,"ha":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"sb":invoke_iiiiid,"U":invoke_iiiiii,"x":invoke_iiiiiii,"ia":invoke_iiiiiiii,"O":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"j":invoke_v,"v":invoke_vi,"d":invoke_vii,"s":invoke_viii,"V":invoke_viiii,"t":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"N":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"fa":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["yc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="HelloPangolin.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228024:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"I":___cxa_free_exception,"ka":___cxa_rethrow,"i":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"ja":___syscall_fcntl64,"rb":___syscall_ioctl,"oa":___syscall_open,"ra":___syscall_stat64,"pb":__embind_register_bigint,"ua":__embind_register_bool,"ta":__embind_register_emval,"_":__embind_register_float,"La":__embind_register_function,"y":__embind_register_integer,"q":__embind_register_memory_view,"Z":__embind_register_std_string,"Q":__embind_register_std_wstring,"va":__embind_register_void,"G":_abort,"Pa":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"sa":_emscripten_memcpy_big,"ma":_emscripten_resize_heap,"Na":_emscripten_set_canvas_element_size,"_a":_emscripten_set_click_callback_on_thread,"Xa":_emscripten_set_dblclick_callback_on_thread,"ab":_emscripten_set_keydown_callback_on_thread,"bb":_emscripten_set_keypress_callback_on_thread,"$a":_emscripten_set_keyup_callback_on_thread,"Za":_emscripten_set_mousedown_callback_on_thread,"Va":_emscripten_set_mouseenter_callback_on_thread,"Ua":_emscripten_set_mouseleave_callback_on_thread,"Wa":_emscripten_set_mousemove_callback_on_thread,"Sa":_emscripten_set_mouseout_callback_on_thread,"Ta":_emscripten_set_mouseover_callback_on_thread,"Ya":_emscripten_set_mouseup_callback_on_thread,"Qa":_emscripten_set_resize_callback_on_thread,"Ra":_emscripten_set_wheel_callback_on_thread,"Ma":_emscripten_sleep,"db":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"cb":_emscripten_webgl_enable_extension,"eb":_emscripten_webgl_init_context_attributes,"Oa":_emscripten_webgl_make_context_current,"pa":_environ_get,"qa":_environ_sizes_get,"Y":_fd_close,"na":_fd_read,"ob":_fd_seek,"X":_fd_write,"a":_getTempRet0,"Ka":_glActiveTexture,"Ba":_glAttachShader,"K":_glBindAttribLocation,"u":_glBindFramebuffer,"P":_glBindTexture,"fb":_glBlendFunc,"hb":_glBlitFramebuffer,"la":_glClear,"Ca":_glCompileShader,"Fa":_glCreateProgram,"Ea":_glCreateShader,"J":_glDeleteFramebuffers,"wa":_glDeleteProgram,"xa":_glDeleteShader,"z":_glDeleteTextures,"ya":_glDetachShader,"A":_glDisable,"C":_glDisableVertexAttribArray,"w":_glDrawArrays,"ba":_glDrawBuffers,"W":_glEnable,"E":_glEnableVertexAttribArray,"jb":_glFlush,"S":_glFramebufferTexture2D,"T":_glGenFramebuffers,"tb":_glGenTextures,"ea":_glGetError,"m":_glGetIntegerv,"Ha":_glGetProgramInfoLog,"Ia":_glGetProgramiv,"za":_glGetShaderInfoLog,"Aa":_glGetShaderiv,"Ga":_glGetUniformLocation,"gb":_glLineWidth,"Ja":_glLinkProgram,"ib":_glPixelStorei,"da":_glReadBuffer,"ca":_glReadPixels,"Da":_glShaderSource,"lb":_glTexImage2D,"M":_glTexParameteri,"L":_glUniform1i,"D":_glUniform4f,"B":_glUniformMatrix4fv,"k":_glUseProgram,"F":_glVertexAttribPointer,"R":_glViewport,"kb":_glewInit,"ga":invoke_diii,"ha":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"sb":invoke_iiiiid,"U":invoke_iiiiii,"x":invoke_iiiiiii,"ia":invoke_iiiiiiii,"O":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"j":invoke_v,"v":invoke_vi,"d":invoke_vii,"s":invoke_viii,"V":invoke_viiii,"t":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"N":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"fa":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["yc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/HelloPangolin/HelloPangolin.wasm b/emscripten/examples/HelloPangolin/HelloPangolin.wasm index c04203ddf83857732cae2c28d2e5f5c760208917..2c1d90852113e0587cda81b2a02b3a509d3a6775 100755 GIT binary patch delta 72989 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 V3J!!_03&@$EEv!{-11 delta 72733 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 z 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 KYv_1KZ2u4GqpoNG diff --git a/emscripten/examples/SimpleDisplay/SimpleDisplay.js b/emscripten/examples/SimpleDisplay/SimpleDisplay.js index 48c016263..b6a1a5a54 100644 --- a/emscripten/examples/SimpleDisplay/SimpleDisplay.js +++ b/emscripten/examples/SimpleDisplay/SimpleDisplay.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleDisplay.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={249512:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"J":___cxa_free_exception,"na":___cxa_rethrow,"j":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"la":___syscall_fcntl64,"sb":___syscall_ioctl,"ra":___syscall_open,"ua":___syscall_stat64,"pb":__embind_register_bigint,"xa":__embind_register_bool,"wa":__embind_register_emval,"_":__embind_register_float,"Oa":__embind_register_function,"E":__embind_register_integer,"t":__embind_register_memory_view,"Z":__embind_register_std_string,"T":__embind_register_std_wstring,"ya":__embind_register_void,"G":_abort,"Sa":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"va":_emscripten_memcpy_big,"pa":_emscripten_resize_heap,"Qa":_emscripten_set_canvas_element_size,"bb":_emscripten_set_click_callback_on_thread,"_a":_emscripten_set_dblclick_callback_on_thread,"db":_emscripten_set_keydown_callback_on_thread,"eb":_emscripten_set_keypress_callback_on_thread,"cb":_emscripten_set_keyup_callback_on_thread,"ab":_emscripten_set_mousedown_callback_on_thread,"Ya":_emscripten_set_mouseenter_callback_on_thread,"Xa":_emscripten_set_mouseleave_callback_on_thread,"Za":_emscripten_set_mousemove_callback_on_thread,"Va":_emscripten_set_mouseout_callback_on_thread,"Wa":_emscripten_set_mouseover_callback_on_thread,"$a":_emscripten_set_mouseup_callback_on_thread,"Ta":_emscripten_set_resize_callback_on_thread,"Ua":_emscripten_set_wheel_callback_on_thread,"Pa":_emscripten_sleep,"gb":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"fb":_emscripten_webgl_enable_extension,"hb":_emscripten_webgl_init_context_attributes,"Ra":_emscripten_webgl_make_context_current,"sa":_environ_get,"ta":_environ_sizes_get,"Y":_fd_close,"qa":_fd_read,"ob":_fd_seek,"X":_fd_write,"a":_getTempRet0,"Na":_glActiveTexture,"Ea":_glAttachShader,"K":_glBindAttribLocation,"D":_glBindFramebuffer,"N":_glBindTexture,"ca":_glBlendFunc,"kb":_glBlitFramebuffer,"oa":_glClear,"Fa":_glCompileShader,"Ia":_glCreateProgram,"Ha":_glCreateShader,"P":_glDeleteFramebuffers,"za":_glDeleteProgram,"Aa":_glDeleteShader,"F":_glDeleteTextures,"Ba":_glDetachShader,"x":_glDisable,"u":_glDisableVertexAttribArray,"p":_glDrawArrays,"ea":_glDrawBuffers,"I":_glEnable,"v":_glEnableVertexAttribArray,"rb":_glFlush,"U":_glFramebufferTexture2D,"V":_glGenFramebuffers,"jb":_glGenTextures,"da":_glGetError,"l":_glGetIntegerv,"Ka":_glGetProgramInfoLog,"La":_glGetProgramiv,"Ca":_glGetShaderInfoLog,"Da":_glGetShaderiv,"Ja":_glGetUniformLocation,"ba":_glLineWidth,"Ma":_glLinkProgram,"lb":_glPixelStorei,"ga":_glReadBuffer,"fa":_glReadPixels,"Ga":_glShaderSource,"ib":_glTexImage2D,"M":_glTexParameteri,"L":_glUniform1i,"n":_glUniform4f,"C":_glUniformMatrix4fv,"i":_glUseProgram,"w":_glVertexAttribPointer,"O":_glViewport,"tb":_glewInit,"ia":invoke_diii,"ja":invoke_fiii,"q":invoke_i,"c":invoke_ii,"f":invoke_iii,"s":invoke_iiii,"m":invoke_iiiii,"ma":invoke_iiiiid,"S":invoke_iiiiii,"B":invoke_iiiiiii,"ka":invoke_iiiiiiii,"R":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"k":invoke_v,"z":invoke_vi,"d":invoke_vii,"y":invoke_viii,"W":invoke_viiii,"A":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"Q":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"ha":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleDisplay.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={249224:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"J":___cxa_free_exception,"na":___cxa_rethrow,"j":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"la":___syscall_fcntl64,"sb":___syscall_ioctl,"ra":___syscall_open,"ua":___syscall_stat64,"pb":__embind_register_bigint,"xa":__embind_register_bool,"wa":__embind_register_emval,"_":__embind_register_float,"Oa":__embind_register_function,"E":__embind_register_integer,"t":__embind_register_memory_view,"Z":__embind_register_std_string,"T":__embind_register_std_wstring,"ya":__embind_register_void,"G":_abort,"Sa":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"va":_emscripten_memcpy_big,"pa":_emscripten_resize_heap,"Qa":_emscripten_set_canvas_element_size,"bb":_emscripten_set_click_callback_on_thread,"_a":_emscripten_set_dblclick_callback_on_thread,"db":_emscripten_set_keydown_callback_on_thread,"eb":_emscripten_set_keypress_callback_on_thread,"cb":_emscripten_set_keyup_callback_on_thread,"ab":_emscripten_set_mousedown_callback_on_thread,"Ya":_emscripten_set_mouseenter_callback_on_thread,"Xa":_emscripten_set_mouseleave_callback_on_thread,"Za":_emscripten_set_mousemove_callback_on_thread,"Va":_emscripten_set_mouseout_callback_on_thread,"Wa":_emscripten_set_mouseover_callback_on_thread,"$a":_emscripten_set_mouseup_callback_on_thread,"Ta":_emscripten_set_resize_callback_on_thread,"Ua":_emscripten_set_wheel_callback_on_thread,"Pa":_emscripten_sleep,"gb":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"fb":_emscripten_webgl_enable_extension,"hb":_emscripten_webgl_init_context_attributes,"Ra":_emscripten_webgl_make_context_current,"sa":_environ_get,"ta":_environ_sizes_get,"Y":_fd_close,"qa":_fd_read,"ob":_fd_seek,"X":_fd_write,"a":_getTempRet0,"Na":_glActiveTexture,"Ea":_glAttachShader,"K":_glBindAttribLocation,"D":_glBindFramebuffer,"N":_glBindTexture,"ca":_glBlendFunc,"kb":_glBlitFramebuffer,"oa":_glClear,"Fa":_glCompileShader,"Ia":_glCreateProgram,"Ha":_glCreateShader,"P":_glDeleteFramebuffers,"za":_glDeleteProgram,"Aa":_glDeleteShader,"F":_glDeleteTextures,"Ba":_glDetachShader,"x":_glDisable,"u":_glDisableVertexAttribArray,"p":_glDrawArrays,"ea":_glDrawBuffers,"I":_glEnable,"v":_glEnableVertexAttribArray,"rb":_glFlush,"U":_glFramebufferTexture2D,"V":_glGenFramebuffers,"jb":_glGenTextures,"da":_glGetError,"l":_glGetIntegerv,"Ka":_glGetProgramInfoLog,"La":_glGetProgramiv,"Ca":_glGetShaderInfoLog,"Da":_glGetShaderiv,"Ja":_glGetUniformLocation,"ba":_glLineWidth,"Ma":_glLinkProgram,"lb":_glPixelStorei,"ga":_glReadBuffer,"fa":_glReadPixels,"Ga":_glShaderSource,"ib":_glTexImage2D,"M":_glTexParameteri,"L":_glUniform1i,"n":_glUniform4f,"C":_glUniformMatrix4fv,"i":_glUseProgram,"w":_glVertexAttribPointer,"O":_glViewport,"tb":_glewInit,"ia":invoke_diii,"ja":invoke_fiii,"q":invoke_i,"c":invoke_ii,"f":invoke_iii,"s":invoke_iiii,"m":invoke_iiiii,"ma":invoke_iiiiid,"S":invoke_iiiiii,"B":invoke_iiiiiii,"ka":invoke_iiiiiiii,"R":invoke_iiiiiiiiiiii,"mb":invoke_jiiii,"k":invoke_v,"z":invoke_vi,"d":invoke_vii,"y":invoke_viii,"W":invoke_viiii,"A":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"Q":invoke_viiiiiiiiiiiiiii,"nb":invoke_viijii,"ha":_setTempRet0,"qb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/SimpleDisplay/SimpleDisplay.wasm b/emscripten/examples/SimpleDisplay/SimpleDisplay.wasm index 150d6aa84597542f755f3ee1e784f2aaa2a5b973..984eae285b513f67d083ee88f024376d2dc7feaf 100755 GIT binary patch delta 83293 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

P>! zrvRs4$^mw{A3T3t=sz@bEa3OHm4ahWC-nQ4&81@AE6h(+cZi_AL6djMd)LTP%#u82k#5O35(1(7MVy`dlI~Sz?T*oFPdeUu-1^FxV{2> zEoG9BT@P7=`a$Rvn5O|}q!48KT4W{(Mc;s5V3Ap9ky#^Tz6Jj~i%gD1CLc0M{{r(Y z;CsM10F|FVg%II|z;hu;Kf03q4}jeODl7DhKt567E(H82=oGe6W25YmOmoOk*ze6;js#MJNrvVo>O_h)HQ4S15Jv^ur#=xGkHFD2mQM zZtI>1Y5ee>^jXlkrfWdFHw-%0wuZ_L-Vn%q+v5r{loSHB2irRMih(%Z1~X-m$K|H@ m7X_i(Qz@YkAYx6~w*}W=3aQ}j0}`Z{{PrzH{s5j1`F{Wi+5Uq7 delta 83859 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 G@&7+eiVJE0 diff --git a/emscripten/examples/SimpleDisplayImage/SimpleDisplayImage.js b/emscripten/examples/SimpleDisplayImage/SimpleDisplayImage.js index 01cd37c1f..388e4029d 100644 --- a/emscripten/examples/SimpleDisplayImage/SimpleDisplayImage.js +++ b/emscripten/examples/SimpleDisplayImage/SimpleDisplayImage.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleDisplayImage.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["wb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["zb"];addOnInit(Module["asm"]["xb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228336:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"J":___cxa_free_exception,"ka":___cxa_rethrow,"i":___cxa_throw,"vb":___cxa_uncaught_exceptions,"e":___resumeException,"ja":___syscall_fcntl64,"tb":___syscall_ioctl,"oa":___syscall_open,"ra":___syscall_stat64,"rb":__embind_register_bigint,"ua":__embind_register_bool,"ta":__embind_register_emval,"$":__embind_register_float,"Ma":__embind_register_function,"z":__embind_register_integer,"q":__embind_register_memory_view,"_":__embind_register_std_string,"Q":__embind_register_std_wstring,"va":__embind_register_void,"G":_abort,"Qa":_emscripten_asm_const_int,"ba":_emscripten_get_canvas_element_size,"sa":_emscripten_memcpy_big,"ma":_emscripten_resize_heap,"Oa":_emscripten_set_canvas_element_size,"$a":_emscripten_set_click_callback_on_thread,"Ya":_emscripten_set_dblclick_callback_on_thread,"bb":_emscripten_set_keydown_callback_on_thread,"cb":_emscripten_set_keypress_callback_on_thread,"ab":_emscripten_set_keyup_callback_on_thread,"_a":_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,"Ta":_emscripten_set_mouseout_callback_on_thread,"Ua":_emscripten_set_mouseover_callback_on_thread,"Za":_emscripten_set_mouseup_callback_on_thread,"Ra":_emscripten_set_resize_callback_on_thread,"Sa":_emscripten_set_wheel_callback_on_thread,"Na":_emscripten_sleep,"eb":_emscripten_webgl_create_context,"aa":_emscripten_webgl_destroy_context,"db":_emscripten_webgl_enable_extension,"fb":_emscripten_webgl_init_context_attributes,"Pa":_emscripten_webgl_make_context_current,"pa":_environ_get,"qa":_environ_sizes_get,"Z":_fd_close,"na":_fd_read,"qb":_fd_seek,"Y":_fd_write,"a":_getTempRet0,"Ka":_glActiveTexture,"Ba":_glAttachShader,"K":_glBindAttribLocation,"u":_glBindFramebuffer,"I":_glBindTexture,"gb":_glBlendFunc,"ib":_glBlitFramebuffer,"la":_glClear,"Ca":_glCompileShader,"Fa":_glCreateProgram,"Ea":_glCreateShader,"L":_glDeleteFramebuffers,"wa":_glDeleteProgram,"xa":_glDeleteShader,"w":_glDeleteTextures,"ya":_glDetachShader,"B":_glDisable,"E":_glDisableVertexAttribArray,"x":_glDrawArrays,"ca":_glDrawBuffers,"X":_glEnable,"F":_glEnableVertexAttribArray,"kb":_glFlush,"T":_glFramebufferTexture2D,"U":_glGenFramebuffers,"nb":_glGenTextures,"R":_glGetError,"m":_glGetIntegerv,"Ha":_glGetProgramInfoLog,"Ia":_glGetProgramiv,"za":_glGetShaderInfoLog,"Aa":_glGetShaderiv,"Ga":_glGetUniformLocation,"hb":_glLineWidth,"Ja":_glLinkProgram,"jb":_glPixelStorei,"ea":_glReadBuffer,"da":_glReadPixels,"Da":_glShaderSource,"mb":_glTexImage2D,"M":_glTexParameteri,"La":_glTexSubImage2D,"N":_glUniform1i,"A":_glUniform4f,"C":_glUniformMatrix4fv,"k":_glUseProgram,"D":_glVertexAttribPointer,"S":_glViewport,"lb":_glewInit,"ga":invoke_diii,"ha":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"ub":invoke_iiiiid,"V":invoke_iiiiii,"y":invoke_iiiiiii,"ia":invoke_iiiiiiii,"P":invoke_iiiiiiiiiiii,"ob":invoke_jiiii,"j":invoke_v,"v":invoke_vi,"d":invoke_vii,"s":invoke_viii,"W":invoke_viiii,"t":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"O":invoke_viiiiiiiiiiiiiii,"pb":invoke_viijii,"fa":_setTempRet0,"sb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["xb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["yb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ab"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Bb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Db"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Eb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Fb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["yc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleDisplayImage.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["wb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["zb"];addOnInit(Module["asm"]["xb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228184:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"J":___cxa_free_exception,"ka":___cxa_rethrow,"i":___cxa_throw,"vb":___cxa_uncaught_exceptions,"e":___resumeException,"ja":___syscall_fcntl64,"tb":___syscall_ioctl,"oa":___syscall_open,"ra":___syscall_stat64,"rb":__embind_register_bigint,"ua":__embind_register_bool,"ta":__embind_register_emval,"$":__embind_register_float,"Ma":__embind_register_function,"z":__embind_register_integer,"q":__embind_register_memory_view,"_":__embind_register_std_string,"Q":__embind_register_std_wstring,"va":__embind_register_void,"G":_abort,"Qa":_emscripten_asm_const_int,"ba":_emscripten_get_canvas_element_size,"sa":_emscripten_memcpy_big,"ma":_emscripten_resize_heap,"Oa":_emscripten_set_canvas_element_size,"$a":_emscripten_set_click_callback_on_thread,"Ya":_emscripten_set_dblclick_callback_on_thread,"bb":_emscripten_set_keydown_callback_on_thread,"cb":_emscripten_set_keypress_callback_on_thread,"ab":_emscripten_set_keyup_callback_on_thread,"_a":_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,"Ta":_emscripten_set_mouseout_callback_on_thread,"Ua":_emscripten_set_mouseover_callback_on_thread,"Za":_emscripten_set_mouseup_callback_on_thread,"Ra":_emscripten_set_resize_callback_on_thread,"Sa":_emscripten_set_wheel_callback_on_thread,"Na":_emscripten_sleep,"eb":_emscripten_webgl_create_context,"aa":_emscripten_webgl_destroy_context,"db":_emscripten_webgl_enable_extension,"fb":_emscripten_webgl_init_context_attributes,"Pa":_emscripten_webgl_make_context_current,"pa":_environ_get,"qa":_environ_sizes_get,"Z":_fd_close,"na":_fd_read,"qb":_fd_seek,"Y":_fd_write,"a":_getTempRet0,"Ka":_glActiveTexture,"Ba":_glAttachShader,"K":_glBindAttribLocation,"u":_glBindFramebuffer,"I":_glBindTexture,"gb":_glBlendFunc,"ib":_glBlitFramebuffer,"la":_glClear,"Ca":_glCompileShader,"Fa":_glCreateProgram,"Ea":_glCreateShader,"L":_glDeleteFramebuffers,"wa":_glDeleteProgram,"xa":_glDeleteShader,"w":_glDeleteTextures,"ya":_glDetachShader,"B":_glDisable,"E":_glDisableVertexAttribArray,"x":_glDrawArrays,"ca":_glDrawBuffers,"X":_glEnable,"F":_glEnableVertexAttribArray,"kb":_glFlush,"T":_glFramebufferTexture2D,"U":_glGenFramebuffers,"nb":_glGenTextures,"R":_glGetError,"m":_glGetIntegerv,"Ha":_glGetProgramInfoLog,"Ia":_glGetProgramiv,"za":_glGetShaderInfoLog,"Aa":_glGetShaderiv,"Ga":_glGetUniformLocation,"hb":_glLineWidth,"Ja":_glLinkProgram,"jb":_glPixelStorei,"ea":_glReadBuffer,"da":_glReadPixels,"Da":_glShaderSource,"mb":_glTexImage2D,"M":_glTexParameteri,"La":_glTexSubImage2D,"N":_glUniform1i,"A":_glUniform4f,"C":_glUniformMatrix4fv,"k":_glUseProgram,"D":_glVertexAttribPointer,"S":_glViewport,"lb":_glewInit,"ga":invoke_diii,"ha":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"ub":invoke_iiiiid,"V":invoke_iiiiii,"y":invoke_iiiiiii,"ia":invoke_iiiiiiii,"P":invoke_iiiiiiiiiiii,"ob":invoke_jiiii,"j":invoke_v,"v":invoke_vi,"d":invoke_vii,"s":invoke_viii,"W":invoke_viiii,"t":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"O":invoke_viiiiiiiiiiiiiii,"pb":invoke_viijii,"fa":_setTempRet0,"sb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["xb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["yb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ab"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Bb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Db"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Eb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Fb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["yc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/SimpleDisplayImage/SimpleDisplayImage.wasm b/emscripten/examples/SimpleDisplayImage/SimpleDisplayImage.wasm index 337d817b4b606a7c047434605202687d46d0f79f..610f39fd6a6b8fc2c56ef7d2f4a5cd63cfa4a731 100755 GIT binary patch delta 68017 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 Uu^j|>D7{qZiPeblfLi7M0U^ltOaK4? delta 67886 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

?3=vPsFkK{ASnr#n4#SSI~RY%EYl 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 u;xIy71`{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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleMultiDisplay.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["wb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["zb"];addOnInit(Module["asm"]["xb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228192:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"J":___cxa_free_exception,"la":___cxa_rethrow,"i":___cxa_throw,"vb":___cxa_uncaught_exceptions,"e":___resumeException,"ka":___syscall_fcntl64,"tb":___syscall_ioctl,"pa":___syscall_open,"sa":___syscall_stat64,"rb":__embind_register_bigint,"va":__embind_register_bool,"ua":__embind_register_emval,"$":__embind_register_float,"Ma":__embind_register_function,"A":__embind_register_integer,"q":__embind_register_memory_view,"_":__embind_register_std_string,"R":__embind_register_std_wstring,"wa":__embind_register_void,"G":_abort,"Qa":_emscripten_asm_const_int,"ba":_emscripten_get_canvas_element_size,"ta":_emscripten_memcpy_big,"na":_emscripten_resize_heap,"Oa":_emscripten_set_canvas_element_size,"$a":_emscripten_set_click_callback_on_thread,"Ya":_emscripten_set_dblclick_callback_on_thread,"bb":_emscripten_set_keydown_callback_on_thread,"cb":_emscripten_set_keypress_callback_on_thread,"ab":_emscripten_set_keyup_callback_on_thread,"_a":_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,"Ta":_emscripten_set_mouseout_callback_on_thread,"Ua":_emscripten_set_mouseover_callback_on_thread,"Za":_emscripten_set_mouseup_callback_on_thread,"Ra":_emscripten_set_resize_callback_on_thread,"Sa":_emscripten_set_wheel_callback_on_thread,"Na":_emscripten_sleep,"fb":_emscripten_webgl_create_context,"aa":_emscripten_webgl_destroy_context,"eb":_emscripten_webgl_enable_extension,"gb":_emscripten_webgl_init_context_attributes,"Pa":_emscripten_webgl_make_context_current,"qa":_environ_get,"ra":_environ_sizes_get,"Z":_fd_close,"oa":_fd_read,"qb":_fd_seek,"Y":_fd_write,"a":_getTempRet0,"La":_glActiveTexture,"Ca":_glAttachShader,"K":_glBindAttribLocation,"u":_glBindFramebuffer,"I":_glBindTexture,"ma":_glBlendFunc,"ib":_glBlitFramebuffer,"fa":_glClear,"Da":_glCompileShader,"Ga":_glCreateProgram,"Fa":_glCreateShader,"L":_glDeleteFramebuffers,"xa":_glDeleteProgram,"ya":_glDeleteShader,"w":_glDeleteTextures,"za":_glDetachShader,"B":_glDisable,"D":_glDisableVertexAttribArray,"y":_glDrawArrays,"ca":_glDrawBuffers,"Q":_glEnable,"E":_glEnableVertexAttribArray,"kb":_glFlush,"U":_glFramebufferTexture2D,"V":_glGenFramebuffers,"nb":_glGenTextures,"S":_glGetError,"m":_glGetIntegerv,"Ia":_glGetProgramInfoLog,"Ja":_glGetProgramiv,"Aa":_glGetShaderInfoLog,"Ba":_glGetShaderiv,"Ha":_glGetUniformLocation,"hb":_glLineWidth,"Ka":_glLinkProgram,"jb":_glPixelStorei,"ea":_glReadBuffer,"da":_glReadPixels,"Ea":_glShaderSource,"mb":_glTexImage2D,"M":_glTexParameteri,"db":_glTexSubImage2D,"N":_glUniform1i,"x":_glUniform4f,"C":_glUniformMatrix4fv,"k":_glUseProgram,"F":_glVertexAttribPointer,"T":_glViewport,"lb":_glewInit,"ha":invoke_diii,"ia":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"ub":invoke_iiiiid,"W":invoke_iiiiii,"z":invoke_iiiiiii,"ja":invoke_iiiiiiii,"P":invoke_iiiiiiiiiiii,"ob":invoke_jiiii,"j":invoke_v,"v":invoke_vi,"d":invoke_vii,"s":invoke_viii,"X":invoke_viiii,"t":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"O":invoke_viiiiiiiiiiiiiii,"pb":invoke_viijii,"ga":_setTempRet0,"sb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["xb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["yb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ab"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Bb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Db"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Eb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Fb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["yc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleMultiDisplay.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["wb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["zb"];addOnInit(Module["asm"]["xb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228040:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindFramebuffer(target,framebuffer){GL.validateGLObjectID(GL.framebuffers,framebuffer,"glBindFramebuffer","framebuffer");GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){assert(GLctx["drawBuffers"],"Must have WebGL2 or WEBGL_draw_buffers extension to use drawBuffers");assert(n>2]}GLctx["drawBuffers"](bufArray)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GL.validateGLObjectID(GL.textures,texture,"glFramebufferTexture2D","texture");GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers,"glGenFramebuffers")}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");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)}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 asmLibraryArg={"h":___cxa_allocate_exception,"o":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"J":___cxa_free_exception,"la":___cxa_rethrow,"i":___cxa_throw,"vb":___cxa_uncaught_exceptions,"e":___resumeException,"ka":___syscall_fcntl64,"tb":___syscall_ioctl,"pa":___syscall_open,"sa":___syscall_stat64,"rb":__embind_register_bigint,"va":__embind_register_bool,"ua":__embind_register_emval,"$":__embind_register_float,"Ma":__embind_register_function,"A":__embind_register_integer,"q":__embind_register_memory_view,"_":__embind_register_std_string,"R":__embind_register_std_wstring,"wa":__embind_register_void,"G":_abort,"Qa":_emscripten_asm_const_int,"ba":_emscripten_get_canvas_element_size,"ta":_emscripten_memcpy_big,"na":_emscripten_resize_heap,"Oa":_emscripten_set_canvas_element_size,"$a":_emscripten_set_click_callback_on_thread,"Ya":_emscripten_set_dblclick_callback_on_thread,"bb":_emscripten_set_keydown_callback_on_thread,"cb":_emscripten_set_keypress_callback_on_thread,"ab":_emscripten_set_keyup_callback_on_thread,"_a":_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,"Ta":_emscripten_set_mouseout_callback_on_thread,"Ua":_emscripten_set_mouseover_callback_on_thread,"Za":_emscripten_set_mouseup_callback_on_thread,"Ra":_emscripten_set_resize_callback_on_thread,"Sa":_emscripten_set_wheel_callback_on_thread,"Na":_emscripten_sleep,"fb":_emscripten_webgl_create_context,"aa":_emscripten_webgl_destroy_context,"eb":_emscripten_webgl_enable_extension,"gb":_emscripten_webgl_init_context_attributes,"Pa":_emscripten_webgl_make_context_current,"qa":_environ_get,"ra":_environ_sizes_get,"Z":_fd_close,"oa":_fd_read,"qb":_fd_seek,"Y":_fd_write,"a":_getTempRet0,"La":_glActiveTexture,"Ca":_glAttachShader,"K":_glBindAttribLocation,"u":_glBindFramebuffer,"I":_glBindTexture,"ma":_glBlendFunc,"ib":_glBlitFramebuffer,"fa":_glClear,"Da":_glCompileShader,"Ga":_glCreateProgram,"Fa":_glCreateShader,"L":_glDeleteFramebuffers,"xa":_glDeleteProgram,"ya":_glDeleteShader,"w":_glDeleteTextures,"za":_glDetachShader,"B":_glDisable,"D":_glDisableVertexAttribArray,"y":_glDrawArrays,"ca":_glDrawBuffers,"Q":_glEnable,"E":_glEnableVertexAttribArray,"kb":_glFlush,"U":_glFramebufferTexture2D,"V":_glGenFramebuffers,"nb":_glGenTextures,"S":_glGetError,"m":_glGetIntegerv,"Ia":_glGetProgramInfoLog,"Ja":_glGetProgramiv,"Aa":_glGetShaderInfoLog,"Ba":_glGetShaderiv,"Ha":_glGetUniformLocation,"hb":_glLineWidth,"Ka":_glLinkProgram,"jb":_glPixelStorei,"ea":_glReadBuffer,"da":_glReadPixels,"Ea":_glShaderSource,"mb":_glTexImage2D,"M":_glTexParameteri,"db":_glTexSubImage2D,"N":_glUniform1i,"x":_glUniform4f,"C":_glUniformMatrix4fv,"k":_glUseProgram,"F":_glVertexAttribPointer,"T":_glViewport,"lb":_glewInit,"ha":invoke_diii,"ia":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"ub":invoke_iiiiid,"W":invoke_iiiiii,"z":invoke_iiiiiii,"ja":invoke_iiiiiiii,"P":invoke_iiiiiiiiiiii,"ob":invoke_jiiii,"j":invoke_v,"v":invoke_vi,"d":invoke_vii,"s":invoke_viii,"X":invoke_viiii,"t":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"O":invoke_viiiiiiiiiiiiiii,"pb":invoke_viijii,"ga":_setTempRet0,"sb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["xb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["yb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ab"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Bb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Db"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Eb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Fb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Jb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_iif=Module["dynCall_iif"]=function(){return(dynCall_iif=Module["dynCall_iif"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viifffi=Module["dynCall_viifffi"]=function(){return(dynCall_viifffi=Module["dynCall_viifffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=function(){return(dynCall_viiiiiiiif=Module["dynCall_viiiiiiiif"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=function(){return(dynCall_viiiiiiiifi=Module["dynCall_viiiiiiiifi"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["uc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["vc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["yc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/SimpleMultiDisplay/SimpleMultiDisplay.wasm b/emscripten/examples/SimpleMultiDisplay/SimpleMultiDisplay.wasm index 2438c0e050b1b777703700911809674554fa703c..4adb5c30fd01dcd1c71c5f8ba976022b3c45d30c 100755 GIT binary patch delta 66093 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 SyAk>8Q8P#XzhLg7v2h5 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 VQpT$h|ArtRotI$4UIRGe`agQcFR1_k delta 66212 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 G>;C~y*y&RM diff --git a/emscripten/examples/SimplePlot/SimplePlot.js b/emscripten/examples/SimplePlot/SimplePlot.js index 33fd48250..7e95720af 100644 --- a/emscripten/examples/SimplePlot/SimplePlot.js +++ b/emscripten/examples/SimplePlot/SimplePlot.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimplePlot.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228936:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1f(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1f","location");GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform2f(location,v0,v1){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform2f","location");GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"m":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"L":___cxa_free_exception,"ja":___cxa_rethrow,"i":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"ia":___syscall_fcntl64,"sb":___syscall_ioctl,"na":___syscall_open,"qa":___syscall_stat64,"qb":__embind_register_bigint,"ta":__embind_register_bool,"sa":__embind_register_emval,"_":__embind_register_float,"xa":__embind_register_function,"C":__embind_register_integer,"q":__embind_register_memory_view,"Z":__embind_register_std_string,"P":__embind_register_std_wstring,"ua":__embind_register_void,"G":_abort,"Ca":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"ra":_emscripten_memcpy_big,"la":_emscripten_resize_heap,"za":_emscripten_set_canvas_element_size,"Oa":_emscripten_set_click_callback_on_thread,"La":_emscripten_set_dblclick_callback_on_thread,"Qa":_emscripten_set_keydown_callback_on_thread,"Ra":_emscripten_set_keypress_callback_on_thread,"Pa":_emscripten_set_keyup_callback_on_thread,"Na":_emscripten_set_mousedown_callback_on_thread,"Ia":_emscripten_set_mouseenter_callback_on_thread,"Ha":_emscripten_set_mouseleave_callback_on_thread,"Ja":_emscripten_set_mousemove_callback_on_thread,"Fa":_emscripten_set_mouseout_callback_on_thread,"Ga":_emscripten_set_mouseover_callback_on_thread,"Ma":_emscripten_set_mouseup_callback_on_thread,"Da":_emscripten_set_resize_callback_on_thread,"Ea":_emscripten_set_wheel_callback_on_thread,"ya":_emscripten_sleep,"Ta":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"Sa":_emscripten_webgl_enable_extension,"Ua":_emscripten_webgl_init_context_attributes,"Ba":_emscripten_webgl_make_context_current,"oa":_environ_get,"pa":_environ_sizes_get,"Y":_fd_close,"ma":_fd_read,"pb":_fd_seek,"W":_fd_write,"a":_getTempRet0,"va":_glActiveTexture,"Ya":_glAttachShader,"D":_glBindAttribLocation,"T":_glBindTexture,"ca":_glBlendFunc,"ka":_glClear,"eb":_glClearColor,"Za":_glCompileShader,"ab":_glCreateProgram,"$a":_glCreateShader,"fb":_glDeleteProgram,"gb":_glDeleteShader,"K":_glDeleteTextures,"hb":_glDetachShader,"t":_glDisable,"A":_glDisableVertexAttribArray,"E":_glDrawArrays,"H":_glEnable,"B":_glEnableVertexAttribArray,"cb":_glFlush,"mb":_glGenTextures,"ib":_glGetAttribLocation,"kb":_glGetError,"o":_glGetIntegerv,"Q":_glGetProgramInfoLog,"R":_glGetProgramiv,"Wa":_glGetShaderInfoLog,"Xa":_glGetShaderiv,"ba":_glGetUniformLocation,"db":_glHint,"J":_glLineWidth,"S":_glLinkProgram,"Ka":_glPixelStorei,"Va":_glReadBuffer,"Aa":_glReadPixels,"wa":_glScissor,"_a":_glShaderSource,"lb":_glTexImage2D,"M":_glTexParameteri,"bb":_glUniform1f,"da":_glUniform1i,"v":_glUniform2f,"x":_glUniform4f,"F":_glUniformMatrix4fv,"k":_glUseProgram,"w":_glVertexAttribPointer,"X":_glViewport,"jb":_glewInit,"fa":invoke_diii,"ga":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"tb":invoke_iiiiid,"U":invoke_iiiiii,"y":invoke_iiiiiii,"ha":invoke_iiiiiiii,"O":invoke_iiiiiiiiiiii,"nb":invoke_jiiii,"j":invoke_v,"z":invoke_vi,"d":invoke_vii,"s":invoke_viii,"V":invoke_viiii,"u":invoke_viiiiiii,"I":invoke_viiiiiiiiii,"N":invoke_viiiiiiiiiiiiiii,"ob":invoke_viijii,"ea":_setTempRet0,"rb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimplePlot.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["vb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["yb"];addOnInit(Module["asm"]["wb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={228776:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function 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)}}function _glUniform1f(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1f","location");GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform2f(location,v0,v1){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform2f","location");GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"h":___cxa_allocate_exception,"m":___cxa_begin_catch,"r":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"L":___cxa_free_exception,"ja":___cxa_rethrow,"i":___cxa_throw,"ub":___cxa_uncaught_exceptions,"e":___resumeException,"ia":___syscall_fcntl64,"sb":___syscall_ioctl,"na":___syscall_open,"qa":___syscall_stat64,"qb":__embind_register_bigint,"ta":__embind_register_bool,"sa":__embind_register_emval,"_":__embind_register_float,"xa":__embind_register_function,"C":__embind_register_integer,"q":__embind_register_memory_view,"Z":__embind_register_std_string,"P":__embind_register_std_wstring,"ua":__embind_register_void,"G":_abort,"Ca":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"ra":_emscripten_memcpy_big,"la":_emscripten_resize_heap,"za":_emscripten_set_canvas_element_size,"Oa":_emscripten_set_click_callback_on_thread,"La":_emscripten_set_dblclick_callback_on_thread,"Qa":_emscripten_set_keydown_callback_on_thread,"Ra":_emscripten_set_keypress_callback_on_thread,"Pa":_emscripten_set_keyup_callback_on_thread,"Na":_emscripten_set_mousedown_callback_on_thread,"Ia":_emscripten_set_mouseenter_callback_on_thread,"Ha":_emscripten_set_mouseleave_callback_on_thread,"Ja":_emscripten_set_mousemove_callback_on_thread,"Fa":_emscripten_set_mouseout_callback_on_thread,"Ga":_emscripten_set_mouseover_callback_on_thread,"Ma":_emscripten_set_mouseup_callback_on_thread,"Da":_emscripten_set_resize_callback_on_thread,"Ea":_emscripten_set_wheel_callback_on_thread,"ya":_emscripten_sleep,"Ta":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"Sa":_emscripten_webgl_enable_extension,"Ua":_emscripten_webgl_init_context_attributes,"Ba":_emscripten_webgl_make_context_current,"oa":_environ_get,"pa":_environ_sizes_get,"Y":_fd_close,"ma":_fd_read,"pb":_fd_seek,"W":_fd_write,"a":_getTempRet0,"va":_glActiveTexture,"Ya":_glAttachShader,"D":_glBindAttribLocation,"T":_glBindTexture,"ca":_glBlendFunc,"ka":_glClear,"eb":_glClearColor,"Za":_glCompileShader,"ab":_glCreateProgram,"$a":_glCreateShader,"fb":_glDeleteProgram,"gb":_glDeleteShader,"K":_glDeleteTextures,"hb":_glDetachShader,"t":_glDisable,"A":_glDisableVertexAttribArray,"E":_glDrawArrays,"H":_glEnable,"B":_glEnableVertexAttribArray,"cb":_glFlush,"mb":_glGenTextures,"ib":_glGetAttribLocation,"kb":_glGetError,"o":_glGetIntegerv,"Q":_glGetProgramInfoLog,"R":_glGetProgramiv,"Wa":_glGetShaderInfoLog,"Xa":_glGetShaderiv,"ba":_glGetUniformLocation,"db":_glHint,"J":_glLineWidth,"S":_glLinkProgram,"Ka":_glPixelStorei,"Va":_glReadBuffer,"Aa":_glReadPixels,"wa":_glScissor,"_a":_glShaderSource,"lb":_glTexImage2D,"M":_glTexParameteri,"bb":_glUniform1f,"da":_glUniform1i,"v":_glUniform2f,"x":_glUniform4f,"F":_glUniformMatrix4fv,"k":_glUseProgram,"w":_glVertexAttribPointer,"X":_glViewport,"jb":_glewInit,"fa":invoke_diii,"ga":invoke_fiii,"n":invoke_i,"c":invoke_ii,"f":invoke_iii,"p":invoke_iiii,"l":invoke_iiiii,"tb":invoke_iiiiid,"U":invoke_iiiiii,"y":invoke_iiiiiii,"ha":invoke_iiiiiiii,"O":invoke_iiiiiiiiiiii,"nb":invoke_jiiii,"j":invoke_v,"z":invoke_vi,"d":invoke_vii,"s":invoke_viii,"V":invoke_viiii,"u":invoke_viiiiiii,"I":invoke_viiiiiiiiii,"N":invoke_viiiiiiiiiiiiiii,"ob":invoke_viijii,"ea":_setTempRet0,"rb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["wb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["xb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ab"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Bb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Cb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Db"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Eb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Fb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Gb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Hb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Ib"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Jb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Kb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Lb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["pc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["qc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["rc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["sc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["tc"]).apply(null,arguments)};function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/SimplePlot/SimplePlot.wasm b/emscripten/examples/SimplePlot/SimplePlot.wasm index bc9f9a4e546d2640ec86d79ba8cd6653b6eaba11..62386539d8fbb02dd1d680cd6b0e137987601af9 100755 GIT binary patch delta 73343 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 diff --git a/emscripten/examples/SimpleRecord/SimpleRecord.js b/emscripten/examples/SimpleRecord/SimpleRecord.js index a5bc309b6..6bbf67ab9 100644 --- a/emscripten/examples/SimpleRecord/SimpleRecord.js +++ b/emscripten/examples/SimpleRecord/SimpleRecord.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleRecord.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["Eb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Hb"];addOnInit(Module["asm"]["Fb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={251976:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_decrement_exception_refcount(ptr){if(!ptr)return;exception_decRef(new ExceptionInfo(ptr))}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort("")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"b":___cxa_allocate_exception,"m":___cxa_begin_catch,"Bb":___cxa_decrement_exception_refcount,"n":___cxa_end_catch,"c":___cxa_find_matching_catch_2,"i":___cxa_find_matching_catch_3,"O":___cxa_free_exception,"Ab":___cxa_increment_exception_refcount,"ha":___cxa_rethrow,"zb":___cxa_rethrow_primary_exception,"e":___cxa_throw,"Cb":___cxa_uncaught_exceptions,"f":___resumeException,"ga":___syscall_fcntl64,"ja":___syscall_getdents64,"xb":___syscall_ioctl,"X":___syscall_open,"ka":___syscall_poll,"pa":___syscall_stat64,"vb":__embind_register_bigint,"sa":__embind_register_bool,"ra":__embind_register_emval,"_":__embind_register_float,"La":__embind_register_function,"x":__embind_register_integer,"r":__embind_register_memory_view,"Z":__embind_register_std_string,"R":__embind_register_std_wstring,"ta":__embind_register_void,"la":__localtime_js,"ma":__tzset_js,"p":_abort,"U":_clock_gettime,"Pa":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"Y":_emscripten_get_now,"qa":_emscripten_memcpy_big,"ia":_emscripten_resize_heap,"Na":_emscripten_set_canvas_element_size,"_a":_emscripten_set_click_callback_on_thread,"Xa":_emscripten_set_dblclick_callback_on_thread,"ab":_emscripten_set_keydown_callback_on_thread,"bb":_emscripten_set_keypress_callback_on_thread,"$a":_emscripten_set_keyup_callback_on_thread,"Za":_emscripten_set_mousedown_callback_on_thread,"Va":_emscripten_set_mouseenter_callback_on_thread,"Ua":_emscripten_set_mouseleave_callback_on_thread,"Wa":_emscripten_set_mousemove_callback_on_thread,"Sa":_emscripten_set_mouseout_callback_on_thread,"Ta":_emscripten_set_mouseover_callback_on_thread,"Ya":_emscripten_set_mouseup_callback_on_thread,"Qa":_emscripten_set_resize_callback_on_thread,"Ra":_emscripten_set_wheel_callback_on_thread,"Ma":_emscripten_sleep,"db":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"cb":_emscripten_webgl_enable_extension,"eb":_emscripten_webgl_init_context_attributes,"Oa":_emscripten_webgl_make_context_current,"na":_environ_get,"oa":_environ_sizes_get,"G":_fd_close,"W":_fd_read,"ub":_fd_seek,"V":_fd_write,"a":_getTempRet0,"Ka":_glActiveTexture,"Ba":_glAttachShader,"H":_glBindAttribLocation,"Q":_glBindTexture,"fb":_glBlendFunc,"Db":_glClear,"Ca":_glCompileShader,"Fa":_glCreateProgram,"Ea":_glCreateShader,"wa":_glDeleteProgram,"xa":_glDeleteShader,"C":_glDeleteTextures,"ya":_glDetachShader,"y":_glDisable,"D":_glDisableVertexAttribArray,"L":_glDrawArrays,"T":_glEnable,"A":_glEnableVertexAttribArray,"kb":_glFlush,"ob":_glGenTextures,"ba":_glGetError,"s":_glGetIntegerv,"Ha":_glGetProgramInfoLog,"Ia":_glGetProgramiv,"za":_glGetShaderInfoLog,"Aa":_glGetShaderiv,"Ga":_glGetUniformLocation,"gb":_glLineWidth,"Ja":_glLinkProgram,"ib":_glPixelStorei,"jb":_glReadBuffer,"hb":_glReadPixels,"Da":_glShaderSource,"nb":_glTexImage2D,"I":_glTexParameteri,"lb":_glTexSubImage2D,"P":_glUniform1i,"S":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"B":_glVertexAttribPointer,"ca":_glViewport,"mb":_glewInit,"da":invoke_diii,"ea":invoke_fiii,"o":invoke_i,"d":invoke_ii,"h":invoke_iii,"q":invoke_iiii,"k":invoke_iiiii,"yb":invoke_iiiiid,"M":invoke_iiiiii,"t":invoke_iiiiiii,"fa":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"tb":invoke_j,"sb":invoke_ji,"rb":invoke_jii,"pb":invoke_jiiii,"j":invoke_v,"w":invoke_vi,"g":invoke_vii,"u":invoke_viii,"N":invoke_viiii,"v":invoke_viiiiiii,"E":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"qb":invoke_viijii,"F":_setTempRet0,"ua":_strftime,"wb":_strftime_l,"va":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Fb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Gb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ib"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Jb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Kb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Lb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Mb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Nb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ob"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Pb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Qb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Rb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Sb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["uc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["vc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["wc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["xc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["yc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["zc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["Ac"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Bc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["Cc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["Dc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["Ec"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["Fc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["Gc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["Hc"]).apply(null,arguments)};function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleRecord.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["Eb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Hb"];addOnInit(Module["asm"]["Fb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={251688:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_decrement_exception_refcount(ptr){if(!ptr)return;exception_decRef(new ExceptionInfo(ptr))}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort("")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"b":___cxa_allocate_exception,"m":___cxa_begin_catch,"Bb":___cxa_decrement_exception_refcount,"n":___cxa_end_catch,"c":___cxa_find_matching_catch_2,"i":___cxa_find_matching_catch_3,"O":___cxa_free_exception,"Ab":___cxa_increment_exception_refcount,"ha":___cxa_rethrow,"zb":___cxa_rethrow_primary_exception,"e":___cxa_throw,"Cb":___cxa_uncaught_exceptions,"f":___resumeException,"ga":___syscall_fcntl64,"ja":___syscall_getdents64,"xb":___syscall_ioctl,"X":___syscall_open,"ka":___syscall_poll,"pa":___syscall_stat64,"vb":__embind_register_bigint,"sa":__embind_register_bool,"ra":__embind_register_emval,"_":__embind_register_float,"La":__embind_register_function,"x":__embind_register_integer,"r":__embind_register_memory_view,"Z":__embind_register_std_string,"R":__embind_register_std_wstring,"ta":__embind_register_void,"la":__localtime_js,"ma":__tzset_js,"p":_abort,"U":_clock_gettime,"Pa":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"Y":_emscripten_get_now,"qa":_emscripten_memcpy_big,"ia":_emscripten_resize_heap,"Na":_emscripten_set_canvas_element_size,"_a":_emscripten_set_click_callback_on_thread,"Xa":_emscripten_set_dblclick_callback_on_thread,"ab":_emscripten_set_keydown_callback_on_thread,"bb":_emscripten_set_keypress_callback_on_thread,"$a":_emscripten_set_keyup_callback_on_thread,"Za":_emscripten_set_mousedown_callback_on_thread,"Va":_emscripten_set_mouseenter_callback_on_thread,"Ua":_emscripten_set_mouseleave_callback_on_thread,"Wa":_emscripten_set_mousemove_callback_on_thread,"Sa":_emscripten_set_mouseout_callback_on_thread,"Ta":_emscripten_set_mouseover_callback_on_thread,"Ya":_emscripten_set_mouseup_callback_on_thread,"Qa":_emscripten_set_resize_callback_on_thread,"Ra":_emscripten_set_wheel_callback_on_thread,"Ma":_emscripten_sleep,"db":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"cb":_emscripten_webgl_enable_extension,"eb":_emscripten_webgl_init_context_attributes,"Oa":_emscripten_webgl_make_context_current,"na":_environ_get,"oa":_environ_sizes_get,"G":_fd_close,"W":_fd_read,"ub":_fd_seek,"V":_fd_write,"a":_getTempRet0,"Ka":_glActiveTexture,"Ba":_glAttachShader,"H":_glBindAttribLocation,"Q":_glBindTexture,"fb":_glBlendFunc,"Db":_glClear,"Ca":_glCompileShader,"Fa":_glCreateProgram,"Ea":_glCreateShader,"wa":_glDeleteProgram,"xa":_glDeleteShader,"C":_glDeleteTextures,"ya":_glDetachShader,"y":_glDisable,"D":_glDisableVertexAttribArray,"L":_glDrawArrays,"T":_glEnable,"A":_glEnableVertexAttribArray,"kb":_glFlush,"ob":_glGenTextures,"ba":_glGetError,"s":_glGetIntegerv,"Ha":_glGetProgramInfoLog,"Ia":_glGetProgramiv,"za":_glGetShaderInfoLog,"Aa":_glGetShaderiv,"Ga":_glGetUniformLocation,"gb":_glLineWidth,"Ja":_glLinkProgram,"ib":_glPixelStorei,"jb":_glReadBuffer,"hb":_glReadPixels,"Da":_glShaderSource,"nb":_glTexImage2D,"I":_glTexParameteri,"lb":_glTexSubImage2D,"P":_glUniform1i,"S":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"B":_glVertexAttribPointer,"ca":_glViewport,"mb":_glewInit,"da":invoke_diii,"ea":invoke_fiii,"o":invoke_i,"d":invoke_ii,"h":invoke_iii,"q":invoke_iiii,"k":invoke_iiiii,"yb":invoke_iiiiid,"M":invoke_iiiiii,"t":invoke_iiiiiii,"fa":invoke_iiiiiiii,"K":invoke_iiiiiiiiiiii,"tb":invoke_j,"sb":invoke_ji,"rb":invoke_jii,"pb":invoke_jiiii,"j":invoke_v,"w":invoke_vi,"g":invoke_vii,"u":invoke_viii,"N":invoke_viiii,"v":invoke_viiiiiii,"E":invoke_viiiiiiiiii,"J":invoke_viiiiiiiiiiiiiii,"qb":invoke_viijii,"F":_setTempRet0,"ua":_strftime,"wb":_strftime_l,"va":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Fb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Gb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Ib"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Jb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Kb"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Lb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Mb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Nb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Ob"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Pb"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Qb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Rb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Sb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["uc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["vc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["wc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["xc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["yc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["zc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["Ac"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Bc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["Cc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["Dc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["Ec"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["Fc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["Gc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["Hc"]).apply(null,arguments)};function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/SimpleRecord/SimpleRecord.wasm b/emscripten/examples/SimpleRecord/SimpleRecord.wasm index 263e6467dd7494d5b8aa6412ea8dd23bcef6e139..c89a91c5ea627ffed1a986bbdc2e50960208ad5b 100755 GIT binary patch delta 105578 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 OcS^=k&jrlGef|&e)W606 delta 106196 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

XcY! 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 diff --git a/emscripten/examples/SimpleVideo/SimpleVideo.js b/emscripten/examples/SimpleVideo/SimpleVideo.js index 943a0bdf9..3dd632be6 100644 --- a/emscripten/examples/SimpleVideo/SimpleVideo.js +++ b/emscripten/examples/SimpleVideo/SimpleVideo.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleVideo.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["xb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Ab"];addOnInit(Module["asm"]["yb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={248528:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"b":___cxa_allocate_exception,"m":___cxa_begin_catch,"n":___cxa_end_catch,"c":___cxa_find_matching_catch_2,"i":___cxa_find_matching_catch_3,"Q":___cxa_free_exception,"ga":___cxa_rethrow,"e":___cxa_throw,"ha":___cxa_uncaught_exceptions,"f":___resumeException,"fa":___syscall_fcntl64,"ja":___syscall_getdents64,"vb":___syscall_ioctl,"W":___syscall_open,"la":___syscall_poll,"oa":___syscall_stat64,"tb":__embind_register_bigint,"ra":__embind_register_bool,"qa":__embind_register_emval,"Z":__embind_register_float,"Ia":__embind_register_function,"x":__embind_register_integer,"r":__embind_register_memory_view,"Y":__embind_register_std_string,"R":__embind_register_std_wstring,"sa":__embind_register_void,"p":_abort,"U":_clock_gettime,"Ma":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"X":_emscripten_get_now,"pa":_emscripten_memcpy_big,"ia":_emscripten_resize_heap,"Ka":_emscripten_set_canvas_element_size,"Ya":_emscripten_set_click_callback_on_thread,"Ua":_emscripten_set_dblclick_callback_on_thread,"_a":_emscripten_set_keydown_callback_on_thread,"$a":_emscripten_set_keypress_callback_on_thread,"Za":_emscripten_set_keyup_callback_on_thread,"Xa":_emscripten_set_mousedown_callback_on_thread,"Sa":_emscripten_set_mouseenter_callback_on_thread,"Ra":_emscripten_set_mouseleave_callback_on_thread,"Ta":_emscripten_set_mousemove_callback_on_thread,"Pa":_emscripten_set_mouseout_callback_on_thread,"Qa":_emscripten_set_mouseover_callback_on_thread,"Wa":_emscripten_set_mouseup_callback_on_thread,"Na":_emscripten_set_resize_callback_on_thread,"Oa":_emscripten_set_wheel_callback_on_thread,"Ja":_emscripten_sleep,"bb":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"ab":_emscripten_webgl_enable_extension,"cb":_emscripten_webgl_init_context_attributes,"La":_emscripten_webgl_make_context_current,"ma":_environ_get,"na":_environ_sizes_get,"G":_fd_close,"ka":_fd_read,"sb":_fd_seek,"V":_fd_write,"a":_getTempRet0,"Ha":_glActiveTexture,"ya":_glAttachShader,"H":_glBindAttribLocation,"I":_glBindTexture,"db":_glBlendFunc,"kb":_glClear,"za":_glCompileShader,"Ca":_glCreateProgram,"Ba":_glCreateShader,"ta":_glDeleteProgram,"ua":_glDeleteShader,"A":_glDeleteTextures,"va":_glDetachShader,"y":_glDisable,"B":_glDisableVertexAttribArray,"K":_glDrawArrays,"T":_glEnable,"D":_glEnableVertexAttribArray,"ib":_glFlush,"mb":_glGenTextures,"_":_glGetError,"s":_glGetIntegerv,"Ea":_glGetProgramInfoLog,"Fa":_glGetProgramiv,"wa":_glGetShaderInfoLog,"xa":_glGetShaderiv,"Da":_glGetUniformLocation,"eb":_glLineWidth,"Ga":_glLinkProgram,"gb":_glPixelStorei,"hb":_glReadBuffer,"fb":_glReadPixels,"Aa":_glShaderSource,"lb":_glTexImage2D,"J":_glTexParameteri,"Va":_glTexSubImage2D,"N":_glUniform1i,"S":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"E":_glVertexAttribPointer,"ba":_glViewport,"jb":_glewInit,"ca":invoke_diii,"da":invoke_fiii,"o":invoke_i,"d":invoke_ii,"h":invoke_iii,"q":invoke_iiii,"k":invoke_iiiii,"wb":invoke_iiiiid,"O":invoke_iiiiii,"t":invoke_iiiiiii,"ea":invoke_iiiiiiii,"M":invoke_iiiiiiiiiiii,"rb":invoke_j,"qb":invoke_ji,"pb":invoke_jii,"nb":invoke_jiiii,"j":invoke_v,"w":invoke_vi,"g":invoke_vii,"u":invoke_viii,"P":invoke_viiii,"v":invoke_viiiiiii,"C":invoke_viiiiiiiiii,"L":invoke_viiiiiiiiiiiiiii,"ob":invoke_viijii,"F":_setTempRet0,"ub":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["yb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["zb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Bb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Cb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Db"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Fb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Gb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Ib"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Jb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Kb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Lb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["uc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["vc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["yc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["zc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["Ac"]).apply(null,arguments)};function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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=typeof Module!="undefined"?Module:{};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,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();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)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[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(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)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.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 tempRet0=0;var setTempRet0=value=>{tempRet0=value};var getTempRet0=()=>tempRet0;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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function 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 stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}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()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);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="SimpleVideo.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;exports=Asyncify.instrumentWasmExports(exports);Module["asm"]=exports;wasmMemory=Module["asm"]["xb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Ab"];addOnInit(Module["asm"]["yb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);exports=Asyncify.instrumentWasmExports(exports);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={248256:function(){Module["noExitRuntime"]=true}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func=="number"){if(callback.arg===undefined){(function(){dynCall_v.call(null,func)})()}else{(function(a1){dynCall_vi.apply(null,[func,a1])})(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){HEAP32[this.ptr+4>>2]=adjustedPtr};this.get_adjusted_ptr_addr=function(){return this.ptr+4};this.get_adjusted_ptr=function(){return HEAP32[this.ptr+4>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){try{return _free(new ExceptionInfo(ptr).ptr)}catch(e){}}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){(function(a1){return dynCall_ii.apply(null,[destructor,a1])})(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);catchInfo.set_adjusted_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(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:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(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:function(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)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(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;i0){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}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(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:function(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:function(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:function(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:function(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:function(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:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(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:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(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:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(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{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);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},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},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:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);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;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{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 random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);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.getStream(fd);if(!stream)throw new FS.ErrnoError(8);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.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;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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||[])}else{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)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);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{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(Browser.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)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(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]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};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}var newStream;newStream=FS.open(stream.path,stream.flags,0,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.get();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 instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.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:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function runAndAbortIfError(func){try{return func()}catch(e){abort(e)}}function callUserCallback(func,synchronous){if(runtimeExited||ABORT){return}if(synchronous){func();return}try{func()}catch(e){handleException(e)}}var Asyncify={State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId:function(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},instrumentWasmExports:function(exports){var ret={};for(var x in exports){(function(x){var original=exports[x];if(typeof original=="function"){ret[x]=function(){Asyncify.exportCallStack.push(x);try{return original.apply(null,arguments)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();assert(y===x);Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}})(x)}return ret},maybeStopUnwind:function(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_unwind"]);if(typeof Fibers!="undefined"){Fibers.trampoline()}}},whenDone:function(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData:function(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader:function(ptr,stack,stackSize){HEAP32[ptr>>2]=stack;HEAP32[ptr+4>>2]=stack+stackSize},setDataRewindFunc:function(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFunc:function(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=Module["asm"][name];return func},doRewind:function(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep:function(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync(handleSleepReturnValue=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue||0;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>Module["_asyncify_start_rewind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();runAndAbortIfError(()=>Module["_asyncify_start_unwind"](Asyncify.currData));if(typeof Browser!="undefined"&&Browser.mainLoop.func){Browser.mainLoop.pause()}}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(Module["_asyncify_stop_rewind"]);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(func=>callUserCallback(func))}else{abort("invalid state: "+Asyncify.state)}return Asyncify.handleSleepReturnValue},handleAsync:function(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";args1.push("Asyncify");args2.push(Asyncify);invokerFnBody+="function onDone("+(returns?"rv":"")+") {\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){return dynCallLegacy(sig,ptr,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){return getDynCaller(signature,rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort("")}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=(()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6})}else _emscripten_get_now=(()=>performance.now());var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var readAsmConstArgsDouble=ch<105;if(readAsmConstArgsDouble&&buf&1)buf++;readAsmConstArgsArray.push(readAsmConstArgsDouble?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(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(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function 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}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,"dblclick",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseout_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,36,"mouseout",targetThread);return 0}function _emscripten_set_mouseover_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,35,"mouseover",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(ev){var e=ev||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(function(a1,a2,a3){return dynCall_iiii.apply(null,[callbackfunc,a1,a2,a3])}(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function _emscripten_sleep(ms){Asyncify.handleSleep(wakeUp=>safeSetTimeout(wakeUp,ms))}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){if(dataType==33640||dataType==36255){sizeBytes=4;break}else if(dataType==5131){sizeBytes=2;break}else{}}err("Invalid vertex attribute data type GLenum "+dataType+" passed to GL function!")}if(dimension==32993){err("WebGL does not support size=GL_BGRA in a call to glVertexAttribPointer! Please use size=4 and type=GL_UNSIGNED_BYTE instead!")}else if(dimension<1||dimension>4){err("Invalid dimension="+dimension+" in call to glVertexAttribPointer, must be 1,2,3 or 4.")}if(stride<0||stride>255){err("Invalid stride="+stride+" in call to glVertexAttribPointer. Note that maximum supported stride in WebGL is 255!")}if(offset%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data offset of "+offset+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}if(stride%sizeBytes!=0){err("GL spec section 6.4 error: vertex attribute data stride of "+stride+" bytes should have been a multiple of the data type size that was used: GLenum "+dataType+" has size of "+sizeBytes+" bytes!")}},createContext:function(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:function(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)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=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(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _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}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}function _emscripten_webgl_destroy_context(contextHandle){if(GL.currentContext==contextHandle)GL.currentContext=0;GL.deleteContext(contextHandle)}function _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}function _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}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>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 instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getTempRet0(){return getTempRet0()}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glAttachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glAttachShader","shader");GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GL.validateGLObjectID(GL.programs,program,"glBindAttribLocation","program");GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindTexture(target,texture){GL.validateGLObjectID(GL.textures,texture,"glBindTexture","texture");GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glClear(x0){GLctx["clear"](x0)}function _glCompileShader(shader){GL.validateGLObjectID(GL.shaders,shader,"glCompileShader","shader");GLctx.compileShader(GL.shaders[shader])}function _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}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _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}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}}function _glDetachShader(program,shader){GL.validateGLObjectID(GL.programs,program,"glDetachShader","program");GL.validateGLObjectID(GL.shaders,shader,"glDetachShader","shader");GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFlush(){GLctx["flush"]()}function __glGenObject(n,buffers,createFunction,objectTable,functionName){for(var i=0;i>2]=id}}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures,"glGenTextures")}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){err("GL_INVALID_VALUE in glGet"+type+"v(name="+name_+": Function called with null out pointer!");GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v(GL_SHADER_BINARY_FORMATS): Invalid parameter type!")}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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") on a name which returns a string!");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);err("GL_INVALID_ENUM in glGet"+type+"v("+name_+") and it returns null!");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;default:throw"internal glGet error, bad type: "+type}}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;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){GL.validateGLObjectID(GL.programs,program,"glGetProgramInfoLog","program");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}function _glGetProgramiv(program,pname,p){if(!p){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.programs,program,"glGetProgramiv","program");if(program>=GL.counter){err("GL_INVALID_VALUE in glGetProgramiv(program="+program+", pname="+pname+", p=0x"+p.toString(16)+"): The specified program object name was not generated by GL!");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)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){GL.validateGLObjectID(GL.shaders,shader,"glGetShaderInfoLog","shader");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}function _glGetShaderiv(shader,pname,p){if(!p){err("GL_INVALID_VALUE in glGetShaderiv(shader="+shader+", pname="+pname+", p=0): Function called with null out pointer!");GL.recordError(1281);return}GL.validateGLObjectID(GL.shaders,shader,"glGetShaderiv","shader");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)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function 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;j0){assert(name.slice(leftBrace+1).length==1||!isNaN(jstoi_q(name.slice(leftBrace+1))),'Malformed input parameter name "'+name+'" passed to glGetUniformLocation!');arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);err("GL_INVALID_ENUM in glReadPixels: Unrecognized combination of type="+type+" and format="+format+"!");return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){GL.validateGLObjectID(GL.shaders,shader,"glShaderSource","shader");var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _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)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function 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)}}function _glUniform1i(location,v0){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform1i","location");GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform4f(location,v0,v1,v2,v3){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniform4f","location");GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}var miniTempWebGLFloatBuffers=[];function _glUniformMatrix4fv(location,count,transpose,value){GL.validateGLObjectID(GLctx.currentProgram.uniformLocsById,location,"glUniformMatrix4fv","location");assert((value&3)==0,"Pointer to float data passed to glUniformMatrix4fv must be aligned to four bytes!");if(GL.currentContext.version>=2){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)}function _glUseProgram(program){GL.validateGLObjectID(GL.programs,program,"glUseProgram","program");program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];assert(cb,index);if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GL.validateVertexAttribPointer(size,type,stride,ptr);GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"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);err("GL_INVALID_ENUM in glGetString: Received empty parameter for query name "+name_+"!")}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);err("GL_INVALID_ENUM in glGetString: Unknown parameter "+name_+"!")}GL.stringCache[name_]=ret}return ret}var GLEW={isLinaroFork:1,extensions:null,error:{0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null},version:{1:null,2:null,3:null,4:null},errorStringConstantFromCode:function(error){if(GLEW.isLinaroFork){switch(error){case 4:return"OpenGL ES lib expected, found OpenGL lib";case 5:return"OpenGL lib expected, found OpenGL ES lib";case 6:return"Missing EGL version";case 7:return"EGL 1.1 and up are supported";default:break}}switch(error){case 0:return"No error";case 1:return"Missing GL version";case 2:return"GL 1.1 and up are supported";case 3:return"GLX 1.2 and up are supported";default:return null}},errorString:function(error){if(!GLEW.error[error]){var string=GLEW.errorStringConstantFromCode(error);if(!string){string="Unknown error";error=8}GLEW.error[error]=allocateUTF8(string)}return GLEW.error[error]},versionStringConstantFromCode:function(name){switch(name){case 1:return"1.10.0";case 2:return"1";case 3:return"10";case 4:return"0";default:return null}},versionString:function(name){if(!GLEW.version[name]){var string=GLEW.versionStringConstantFromCode(name);if(!string)return 0;GLEW.version[name]=allocateUTF8(string)}return GLEW.version[name]},extensionIsSupported:function(name){if(!GLEW.extensions){GLEW.extensions=UTF8ToString(_glGetString(7939)).split(" ")}if(GLEW.extensions.includes(name))return 1;return GLEW.extensions.includes("GL_"+name)}};function _glewInit(){return 0}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}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 asmLibraryArg={"b":___cxa_allocate_exception,"m":___cxa_begin_catch,"n":___cxa_end_catch,"c":___cxa_find_matching_catch_2,"i":___cxa_find_matching_catch_3,"Q":___cxa_free_exception,"ga":___cxa_rethrow,"e":___cxa_throw,"ha":___cxa_uncaught_exceptions,"f":___resumeException,"fa":___syscall_fcntl64,"ja":___syscall_getdents64,"vb":___syscall_ioctl,"W":___syscall_open,"la":___syscall_poll,"oa":___syscall_stat64,"tb":__embind_register_bigint,"ra":__embind_register_bool,"qa":__embind_register_emval,"Z":__embind_register_float,"Ia":__embind_register_function,"x":__embind_register_integer,"r":__embind_register_memory_view,"Y":__embind_register_std_string,"R":__embind_register_std_wstring,"sa":__embind_register_void,"p":_abort,"U":_clock_gettime,"Ma":_emscripten_asm_const_int,"aa":_emscripten_get_canvas_element_size,"X":_emscripten_get_now,"pa":_emscripten_memcpy_big,"ia":_emscripten_resize_heap,"Ka":_emscripten_set_canvas_element_size,"Ya":_emscripten_set_click_callback_on_thread,"Ua":_emscripten_set_dblclick_callback_on_thread,"_a":_emscripten_set_keydown_callback_on_thread,"$a":_emscripten_set_keypress_callback_on_thread,"Za":_emscripten_set_keyup_callback_on_thread,"Xa":_emscripten_set_mousedown_callback_on_thread,"Sa":_emscripten_set_mouseenter_callback_on_thread,"Ra":_emscripten_set_mouseleave_callback_on_thread,"Ta":_emscripten_set_mousemove_callback_on_thread,"Pa":_emscripten_set_mouseout_callback_on_thread,"Qa":_emscripten_set_mouseover_callback_on_thread,"Wa":_emscripten_set_mouseup_callback_on_thread,"Na":_emscripten_set_resize_callback_on_thread,"Oa":_emscripten_set_wheel_callback_on_thread,"Ja":_emscripten_sleep,"bb":_emscripten_webgl_create_context,"$":_emscripten_webgl_destroy_context,"ab":_emscripten_webgl_enable_extension,"cb":_emscripten_webgl_init_context_attributes,"La":_emscripten_webgl_make_context_current,"ma":_environ_get,"na":_environ_sizes_get,"G":_fd_close,"ka":_fd_read,"sb":_fd_seek,"V":_fd_write,"a":_getTempRet0,"Ha":_glActiveTexture,"ya":_glAttachShader,"H":_glBindAttribLocation,"I":_glBindTexture,"db":_glBlendFunc,"kb":_glClear,"za":_glCompileShader,"Ca":_glCreateProgram,"Ba":_glCreateShader,"ta":_glDeleteProgram,"ua":_glDeleteShader,"A":_glDeleteTextures,"va":_glDetachShader,"y":_glDisable,"B":_glDisableVertexAttribArray,"K":_glDrawArrays,"T":_glEnable,"D":_glEnableVertexAttribArray,"ib":_glFlush,"mb":_glGenTextures,"_":_glGetError,"s":_glGetIntegerv,"Ea":_glGetProgramInfoLog,"Fa":_glGetProgramiv,"wa":_glGetShaderInfoLog,"xa":_glGetShaderiv,"Da":_glGetUniformLocation,"eb":_glLineWidth,"Ga":_glLinkProgram,"gb":_glPixelStorei,"hb":_glReadBuffer,"fb":_glReadPixels,"Aa":_glShaderSource,"lb":_glTexImage2D,"J":_glTexParameteri,"Va":_glTexSubImage2D,"N":_glUniform1i,"S":_glUniform4f,"z":_glUniformMatrix4fv,"l":_glUseProgram,"E":_glVertexAttribPointer,"ba":_glViewport,"jb":_glewInit,"ca":invoke_diii,"da":invoke_fiii,"o":invoke_i,"d":invoke_ii,"h":invoke_iii,"q":invoke_iiii,"k":invoke_iiiii,"wb":invoke_iiiiid,"O":invoke_iiiiii,"t":invoke_iiiiiii,"ea":invoke_iiiiiiii,"M":invoke_iiiiiiiiiiii,"rb":invoke_j,"qb":invoke_ji,"pb":invoke_jii,"nb":invoke_jiiii,"j":invoke_v,"w":invoke_vi,"g":invoke_vii,"u":invoke_viii,"P":invoke_viiii,"v":invoke_viiiiiii,"C":invoke_viiiiiiiiii,"L":invoke_viiiiiiiiiiiiiii,"ob":invoke_viijii,"F":_setTempRet0,"ub":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["yb"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["zb"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Bb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Cb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Db"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Eb"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Fb"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["Gb"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Hb"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Ib"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Jb"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Kb"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Lb"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Mb"]).apply(null,arguments)};var dynCall_ii=Module["dynCall_ii"]=function(){return(dynCall_ii=Module["dynCall_ii"]=Module["asm"]["Nb"]).apply(null,arguments)};var dynCall_vi=Module["dynCall_vi"]=function(){return(dynCall_vi=Module["dynCall_vi"]=Module["asm"]["Ob"]).apply(null,arguments)};var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=function(){return(dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=Module["asm"]["Pb"]).apply(null,arguments)};var dynCall_v=Module["dynCall_v"]=function(){return(dynCall_v=Module["dynCall_v"]=Module["asm"]["Qb"]).apply(null,arguments)};var dynCall_vii=Module["dynCall_vii"]=function(){return(dynCall_vii=Module["dynCall_vii"]=Module["asm"]["Rb"]).apply(null,arguments)};var dynCall_iii=Module["dynCall_iii"]=function(){return(dynCall_iii=Module["dynCall_iii"]=Module["asm"]["Sb"]).apply(null,arguments)};var dynCall_viiiiii=Module["dynCall_viiiiii"]=function(){return(dynCall_viiiiii=Module["dynCall_viiiiii"]=Module["asm"]["Tb"]).apply(null,arguments)};var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=function(){return(dynCall_viiiiiii=Module["dynCall_viiiiiii"]=Module["asm"]["Ub"]).apply(null,arguments)};var dynCall_viiiii=Module["dynCall_viiiii"]=function(){return(dynCall_viiiii=Module["dynCall_viiiii"]=Module["asm"]["Vb"]).apply(null,arguments)};var dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=function(){return(dynCall_viiiffffffi=Module["dynCall_viiiffffffi"]=Module["asm"]["Wb"]).apply(null,arguments)};var dynCall_iiii=Module["dynCall_iiii"]=function(){return(dynCall_iiii=Module["dynCall_iiii"]=Module["asm"]["Xb"]).apply(null,arguments)};var dynCall_viii=Module["dynCall_viii"]=function(){return(dynCall_viii=Module["dynCall_viii"]=Module["asm"]["Yb"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["Zb"]).apply(null,arguments)};var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=function(){return(dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=Module["asm"]["_b"]).apply(null,arguments)};var dynCall_iiiiii=Module["dynCall_iiiiii"]=function(){return(dynCall_iiiiii=Module["dynCall_iiiiii"]=Module["asm"]["$b"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["ac"]).apply(null,arguments)};var dynCall_iidiiii=Module["dynCall_iidiiii"]=function(){return(dynCall_iidiiii=Module["dynCall_iidiiii"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=function(){return(dynCall_iiiiiii=Module["dynCall_iiiiiii"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_viiii=Module["dynCall_viiii"]=function(){return(dynCall_viiii=Module["dynCall_viiii"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiid=Module["dynCall_iiiiid"]=function(){return(dynCall_iiiiid=Module["dynCall_iiiiid"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=function(){return(dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_iiiii=Module["dynCall_iiiii"]=function(){return(dynCall_iiiii=Module["dynCall_iiiii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=Module["asm"]["nc"]).apply(null,arguments)};var dynCall_fiii=Module["dynCall_fiii"]=function(){return(dynCall_fiii=Module["dynCall_fiii"]=Module["asm"]["oc"]).apply(null,arguments)};var dynCall_diii=Module["dynCall_diii"]=function(){return(dynCall_diii=Module["dynCall_diii"]=Module["asm"]["pc"]).apply(null,arguments)};var dynCall_i=Module["dynCall_i"]=function(){return(dynCall_i=Module["dynCall_i"]=Module["asm"]["qc"]).apply(null,arguments)};var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=function(){return(dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=Module["asm"]["rc"]).apply(null,arguments)};var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=function(){return(dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=Module["asm"]["sc"]).apply(null,arguments)};var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=function(){return(dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=Module["asm"]["tc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["uc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["vc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["wc"]).apply(null,arguments)};var _asyncify_start_unwind=Module["_asyncify_start_unwind"]=function(){return(_asyncify_start_unwind=Module["_asyncify_start_unwind"]=Module["asm"]["xc"]).apply(null,arguments)};var _asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=function(){return(_asyncify_stop_unwind=Module["_asyncify_stop_unwind"]=Module["asm"]["yc"]).apply(null,arguments)};var _asyncify_start_rewind=Module["_asyncify_start_rewind"]=function(){return(_asyncify_start_rewind=Module["_asyncify_start_rewind"]=Module["asm"]["zc"]).apply(null,arguments)};var _asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=function(){return(_asyncify_stop_rewind=Module["_asyncify_stop_rewind"]=Module["asm"]["Ac"]).apply(null,arguments)};function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiid(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return dynCall_ji(index,a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}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(); diff --git a/emscripten/examples/SimpleVideo/SimpleVideo.wasm b/emscripten/examples/SimpleVideo/SimpleVideo.wasm index cef5a1d62839bc8fc7f2f389aff667c18e08f277..520a191cc429e30efcb9c831e6094e41b501a8ab 100755 GIT binary patch delta 99098 zcmc${349dAwm&{yJ<~nYlbH;V07+OTVc+*fKuLqLiYzX;;l2h`@Z#0$RVP5yuqeSn zDoB8U0ir|Us< zZKtZvseY+u{43StOH%^u#Ajt`fdh)X-fNWo(O|X0__}CO>agU(HHmGRYj{8kyTVdd zx+^T}MQfr`T6)U*HHle6Qo}4Pw`B<#(hzs1p0_3uf6@MF>sUo;^yjq3%6!DkUlR>9 zd4%P!iRLsJ8YvbGi5gH??#*0!0f_L2e8R4*3>Tupa@eIy5BFwnksqOk24p=SgoH*B zOd!!8_D}$L;t0s(NQC(N3y#qdO?$?Q?zyn&yy<1Ea7}c7(@3+5(!{I`x5+u|4og%l zDIlRbqDoVnJ)U6ZJQR_r-05chnv+b@T`ZzYVQFfHL;?YW3^wHoA)V;e%{R0lzUdOn zr2mK+5x9|nP0dgR9pu$LT&|QNpVBqa6fLQ+!Lfixb#CdQ2cRFS3+)= zpNG;Chn3aKINqDvROSwNd65`!G&m}2Ya?}6PMQH zMh!XC-$K^ekcZuwEo71eXuJ06Y?nZ!y}wrrhUn)ni0-mCSr)8&wTmY&YtVa<=b{1= zW!ZcE9}mdITLWbShtHCl*>wtg!cy2Bnx&+ICRXnwBkp7|8dsQQwPlUdSv(Ez{7PcO z=u@K_QStbwzIHK4Zqd(1wTVwIiR6S4S$K$~`BkY%$(Mzsr0D3Yn%c<)?$N7S64%97 z^|Ye}*P5%AQ1la{yW7!JqUc+ryHNBGqa9I*=w@R!G7P#e#`JAnf$m4$N!Gp84KrzI zdNWv9(y3$GV>H@->`*Zp$1Y8GQh<;;C8XpsiN$~d-^<6{=@Z?W23oXqTtmvNa$L_w zG}st*C=9f)8$d#WpT>HFs~@M)KlkdXG?F~m2asKujel+mf;8;c6SDNlQ}pUr zKY7*j4=ORmeGmDj*$IR`$8{0+9sXW6qI-Q}B(b>~zEFxA&*{{3O zUHU%CgsNNxKuD6Np$Ns41282?p&Cmhawd4mQ!#^4R|>n$&O`kI@D_>^FeZU$)=e5i ziyXSGIV->ta(ha&^rnDP0=B2tM&G}wQ#)!jkN#NLGf`Kkpnx89V?b#csITa0)W#}W zI+}8G%dTcZk_IwEo1&MSH6&>`wL)vCS?MxK{DGT$G5i$WJi8v{S4P`-_3+0e7?LNTk5cG=F{aWumk zqOQ>aQ`D}%8lY`GvR~h@D%$<77O7&<{YwExAG+(q|3SHWMCaT+ORzE5*s#wmmbnCD zChB_6wkA$4VNzSrP^5;0WwE$N8{E4!Zo>QOUNPbQd2dgef9wgbtnYp0Dow^eJ>)D1 zVx8(X`3{PHadMsYm4}{}nniz^+>mg-DRpLhzE+nTMsJz&Pr`jV#hLPHRpfzTEG63U zVUh0ghn;y}tP&N+o0h%!u;dYo-NHv#YVK@BO5pS6$!YxDb-{H0l~h#p|*7CXBN`*gtema)C`Z__>qi&?i!Zv*H0`=B(=wliB%5!(|Elb ze2t>P8Qutprh*Ps8A@7uLRbP3)>XhBKc)c%n`LQjzW1P=ww{9%;hs&omnm{1kMl4u_{IxkJvXezMr(j4zi05S0d zF&f#0JTaZopbL9LPfHY`OG5&lR6mpt6Qk)JCsFk!$&EFT) zB~vf!%E!DUHRcIdc>R3!1fLd2=*_|{+$~5{ddsr=pVltc^r%1ar?!MrL?3?nnRbyl zCCO6bB$PLU<}zEQB0z}WiNOqP(qKstOUD0z)Ja^2U3BELtu9jUoKi*?KkFTFA#WNl zF^zLbhU+hi`qwnkpPzL`mKb%}*UQalG!D*n;wkU4M{}D}8 zT-G*L0Mq=ID@Lc&HSzJ6uz%z9U1l{=&Vp3{xh?kHO`C#8+I;*FqQ4rLyyyF7vC z{p3~on11dcKYfiinLkz{r<6TZ{s5!=zkJh~C4|bGW*n4Q{=#VO`WBJH`4B=s7pB|% z#6g(+q0-nuK2WO`iA8-r!1tC2@Pv&%Wdqp@t&~M}Oot7`gH4zY zV(Mz8;s=U~4mK1~m>+%ntuCEVuFxwUdw9yJ7@h7&*yRCUbSJmPAcKKLwBg%N_5de~ z8^)hlQAJivN8ZG^(#Z*>qKNgBQ=90IZ)=@UV9L!JRdKnkw{tU@Ah$}&ZBjJvodzwz z(c)_6sP9AsSkanUF_VSH>+|!=w!KpXsppqHuyLL=^rV@yOFzW}p>*8}O8SiaxFFMK z#|LF_iD5(6AyxE>O>J4>#u3k3~w3A0d&4lIO=_~$sIKs;%#ARX*-We>dIf1!?`jgEPLLWBH;iMoWI zX-$Wyd?FuP8oYw`{+jb z)a=CQ#*e=67w)9h3z}ZR&ghC=cV2PyPylMJL>ePNy)l-UE1+~_f8|62bfR5Qbx-af z4p50f-mn)N252*+G>?yZZ^Wa{%bD0+k(Ivm?4@^-CC~wxvJo|aGMzgwdSi74rF^Qo3vDq`3b9p> z&BjA%wbM^j2cjQVul8kc4^Zz!g2;h7x<_>5fwsiw$bq_(S=wi_B>CvkU|I3!0oK!= zx%5-7QC6v85-ngo_cd%QkWXYtnvjB36j6!qzlca|{i>A0@ zv1r4~r__d8MxQ$>YGoX4Wy{sZVQoZp1K-z46dm*ZDHO%Q`7xe%lmHBcV;{&61+IKPTHv zsJ-~jleFekjqN|zDHmTmNo!Nq^29wpLeBZq5uB*Y?msV~XzjF9AhG5_Yi(L~@9CCm zTgq6WScK7Mu}&oxop~q)GC=?}A2sCMh!8`36t*NSDY(uLb#`HHkxw#U5!4 ziI4xRNZss$QdNu&s?^UHU*Eqvmznd6)Pz#wWW`A>iuOfF8X9)m7Lyltk8N2fCN2^* zzr3E5*{=>2iIlSci?Jp&A8ebjL4yt?#QknP$&sRvZecMa>GJRY6GI5fG1tfqjS2Oo zAL5RhaNJk-tVmGmJ42~Fk}S1o?i9=<3|$c`y`bEjEDehZ=x@0Rg^mwyD0PXKFMqP3 z)J7EbPA!dZZYZVLSTTW^M{#`AU0U4=PPYcqVLvCnl9O6i#Eh{$JU44rKw_U4eB9DUiI*oLA~Ng zkdNpu)yg>sgM9b^X^8I>Vl{C({Azz`yz%n@=}Jki{xWD>cA3;yqScoFYoPREgYqLN zElu(vYv4oaCIpikYIC zPk!=2%~=P8B>Oz1-APFb9?~*+)0?F>wya2!#)*ft?se9-|8|9%H06Tn#hyPm$03OK zs^6w)62InFX@Y!sW+K18iGMiHek7>!O(Xnmc&Klp%9m`H>Km8eCOzVFcEW3qN)Chsqf%aMhQ_dh5}m6$*AFz)8h<=0-Q#B2`TW)=q{gh48~=Jj z%3+DQrgAQ2m1TtVIr%&xBCYpji^vQ%icd~-C-bi(Qj%s8mVstLwzL!s__Ay;0>gK* zrG8y&In@Kl7Hn!(2F@#S5k&_flAa@Yk-iAXJf)NY@>bKN%ZSU})1+1knCrRuM&2~3 ziPYlgUZ|G?ko4rXKa2@c^t#C)a7gXN0K0B_@!Gx-}c zqyeo@nCVHSMtYZ>zE(twNSzXF_sX*qYCf^%rOHo&{5GFFZo$)1HTA*Io{lYOVj$yu z?K>87Yen<@l%1)kPaXFG*}R|Gb!#ah!h+fESq`CV=)u#pi;?&c#xd)Wn`%gg$e@ zs%xxYDt+6GXM$1dAZ(Wo>n4I1O2ILr?g$- zuk4bZN!^^>)+J~>aqA?bRWO%K{+VB98EuP4ez;M8ZG0ri9fSndd+JcJGnS?qDy#a zEejbr)zWP~HSg;nRKTEd>?_G53Ho2ZmM%$H|FvjPrXK>X?>Ew&l3e&rkS{qb^-8Gx zM&Km<#5Y0X;9+TQLj36YZxp~J{_Zaq%CPWWGFbsSnMHYR;(FDr#PU&pnCQ* z9L3BR{Q|A%JjszXgpW8r#N_EB<5Q zN(dm_sb7M|`vG=@HP1eQs5vx@PyS?4)et~bg+B%P_7H0-7o7<5??bGH0Hd-Vd&Zr- z?|X}SJpn{rdo*a=*^q7ac=sI*>c7%i=GtfE(LAx%Q{Q;53A@g1PeII{g6Q-LdV^$7 zAv6Vz%~jj-&grb9Jr6OR=AnDinK=)Yq_f2|LyXK|&blWikf*Nq(N!#8mcg85Pizwo zXE3qs4R67Q*IDrvw_x!rp1BCb?a9QV`D07gp4g_eVs&+CEOt%ZLX&?GsK(Z&gCeXg zDSG9Q47T7Emd1CqVk_&+n{<6=&AYLAlZknAL2GvLyg7&$E=bULXu7AVv7im>A$j)E zJwEUH2J2&Z+Od~dhXbG4M-hOmqX@c1#?8R`D0EXg=%;xH1>`$Au)Z|1F!AFU#VN51 z_xxC0n7(s+&IyQ?8}>ddvnn5AX(}tMxqw4U|Aw1u&yk7 zo*BmP8za~N#Z;;IvP^HXkuZ{7%hba60{Wr%1N^>GtTQpsAH_P^y{c}jQ?GLA)mU`C z8O3_GMk2j%YXD1^H!Cz#B_sXu%h`${{nrF{stvp2J<)b64y)pPH_8|K^bYp(o)2zM`n8un&-lH~) z*3(%tWAt?9MsMHBubsh)a5`t4nZYhY$J}c4pToYFaYAjh&SUK*M@<;}s?sCcyq{{! zo5wo46E=KjP3w8kUOs%0RVl5|le^;1Q1*_!;6UcBRcvB>9yCCc(wzY+rg}P| z(_rc~8>I*jW6sTWSzd zun6O(nhmA($5JmIg3^IN>#QcdO4?*8twi}w2E=|l}$X92fKj<#S zPgq3Z+$O^VhVggPVO&h>NQ3L?&61p|Gyc$Stsx)yIZNPyr{xCqaanJbfFwlylYdgl znm1&0iZd}CCC1&qP2%QNzk9p!ynx(pK~jCU&z?8KMr1o{nc~bk&=805r*cE8@#oiU zrp!*}^PKP4V4AqLf5-OH#I@uI>!KwbqT@AEGfT1)`GH^9$fiY~h;1x%$i}t?33TJE zEWPxTfT90~jgt~`=x~oxRi6nOOMis|Ku2cAq~BNrIic#bg)BN9G-jV-dssp)9YPX) z&96b@zB6pLP;-7e8=J~pv`lw8$C_Vsw@oXaaoaieog0%Y4|zPP{0>>JOgR3tHIY^S z9OQfEdb%0+y5&EZtqlJ!_Tx{~Q7Qjlw&Di1;tS}~#yF+PYwF9eD>YteD({!m4}B2K z>LR)Ni-ilv?&cA}Vb`RIx`b8vgCJj)EM z?Id$4b^d%(vNF`RY-+lq=g)^3(7L{uBMasmZM(?ZMKezuDA(2S+jN&F(^9suyWGFd zf^x9C+<_1YJz@yaF%D(QLd~kD)J`1SvSyS+L(#@umo?>d=OjgwoX zI|cT(lfz*qbPTb1p@P%=z>}_)>*yFBp<~cCRcrzT&El(}9)k97bqj0Txj9a|pj-^x zQhh6Rbqax@Tla#BxLacds|^`$iTv)qF4jIGV%c@_eerBA5QNZ(geHi!3vArh77X{5 zeAM_@pBKCy886R{7wTUfD${K+U3+>wrc!m~^%o38%bJI-0Gts@9m3dmz5KIibew`W zrv<_mq-gkGZ!`tj^d{Lk5fF&mZj!}`z}B1OF?K5oe&L(tYoykWluQZ6od}4=G^@_I z9tkz%r4wXvTf1RGtY~7qoR}bsyF^?})GhNBx5&d}YTvoH%Z>rPkX7aF@~f<94WD|4 z?D%Ft4N1s=HZc^Uv9z`|cVMEhwYER*KvgPA`OSCAwyOqz{7#vCHTW-g%9p1&`lL`D z#Q^}6Nm48e?~)r1uvEzK|JXT0aDYuMsh8j|%vLXj9|j5wn)yE0X4Ic zkRz{?<$^iFK4zX=VFDxg(p-6fd>ElGbLB5><(dCE6O9R#dh#rJ8w^FE2=~jAr^_dy zEpN(`d&wJ~Pc;6>lZQ(JH~0k$SNVd8dowEk+sjJJ`IC#}ds*=t#&?V4wlLs-!w4;w z-wqJ4^HsUCTcloFE+-rHUza$+V|=68J{cN4gOZI{#eTOWW6ZA(7f zF6+F*Ho08jz+e`iR4LzRbGgfAV3r4IMR_RMlhg_$cA#S_=FurH&5gG4&(4 zv{55;Pg+7$9qXUH-@wT<@BgiQIqe{)eJii0-~QjpnbfJD{7z15lzd`0ZhRVJ7nxH9 zU<`oyRRR9mSvf_{2eAFDe2rWHAbd`4G^DVK)M>Hb)AIzJq4b8~IUF*qlgbQ5FNz~_ znAT7>A#g{2{K<3XeUb70IeCrLeU8Zqd_&L`#fc{fLr~I7;#gt*?hUhDSud>$y!f*F zb2cNvygbGrOyC1gv1Hj3cJr@>dRs-aE45*VXkUYSZdYi!0+ag4&~ybyf?)-AL&8M~ zhRnE1ma>EqGq%Pq%d%L(t_kEww^_o*-o-ap`5RnHH{z(9Z5f>|(>~En#?aVcU6G*# zuxS!oN0TWQH+T0ZCE{R^XlTnO4b4#aYUXbD0JP(dE}r$MQJrCO(h|{$yOLn{aH-S|&-6WFB66NV}7=Smw(e3U8E3-_NDM&J8Jz5Rg&=(S}GIf?t zo*%lLPKB7^#a0#Z0SaV00o^08Z*6huii2Jk3+Zlw-}h2LcRTn4@uBwmQsgO+$Wsw{ zB8wGOv^O>jqFRx>tH+%bL0N!PEu3a2sMrHuN1oXa{~0SX!H(P+M;WjqpY=I} zK`V~7=T&0Gb5SKaxg@>YME%zD(iB}CNqcmcFr^Pm8ORx~QNf@~j{C>pctN$tHve-8 zW5Mag7y@nCJ_)U>r0H%tM<4?Y3<}Xi92Wg45w}i52CXWiRS_=^7<9Lev6_bBVLOkm z;fy5e8miN>uFyOWx`k>oU?v0WfPm?-&3VY#oSXd|n{!&f>FVcF>MLH0V{O z!~LgB$mBlmC&jjTeqZbgC-N?f+}U!?j6}X}k$Z*!`W67#fS7j+ z+|%U(0D~6;s0DH5Vi50}o@k6*;vOb-vhL(@-j;_Z)5R71PJ;3hdw?$=^I!owNfXNo%^m6wL z_2O*-Fpk|W{?#nsCA=`;3-flX+yO%_a!>YBTRc+YJ|<1$x4-6|-cc-KUi1R7-p~|+ zMT~k7opI86mR&Sj(uU{zT1al*XN|k-U0B(O42PwZ8uwuE^RQ`Siyah7hmP3UBrxDL z7rPAdrHjvAEO!(`%U$|S-iG{&892uOV~x9!5MRC5-Q&8%);(hC-1Ws4J#p7ZhGejj zuL>A1yzU-~E()`+no{?D%69?gjYvG)wO$&p=%%Lf6YnvYH{B2j^1`+57Cd{HswH^z z3ao>2OH8>6Kd{!F(X!$o9W|L}pBk-?dL|r&%mYjDVAynw%5d@u+MDjXZ;5r+u6AcdZM*)Jnl=Ck^jI(!Qts%w7pg-BY|W_=Z_aSxs0Pc1 zq6eILUFDMvcRD}Pnx*hp4fps3(Lf5{t*b$!?Rxi5lDyCC^{GaWx7`PZ)A$d%J=X*Z zH&Q0FT4}ns6by9tiwK1~3XR25@HYa<=h?EUd&6M|Bznkz|heKPF zL(epm!^AYtY2v`|ZEhyqh~GL1x|#{Pht1mF9~N}Rrm%;J9N%wgCQNB%{yv1?It==m z3=X$4b4+XP$(0i<-7tZ4Q2u&5Pb0Ym!1i{Y+hZuGjl6ez&&ek7>o@daYiweK(AoNs z4xXpwWZQDcKJv$f6V6=^b@ohlY|Y%Zp@(oF#&wE4|B|7{Ke~DxTQj#^!Byqk{cFEXKk4>OjVKD|BDLKiMK9QK5|;p^k+ zo%z2t=i)Hu>c}JGB-NPwm}h}7?8@TVk9(T@|7YFBmW24cm!zh=%X7h|y!0d4&kJ{j zJUoB8=LDS*&zj-+N|N&q1&s%v_S~iky#}`t+a!-@NZNAt;$u<*YP9LhB;&_hsg zasywm%<~BCECb7Nzyn>X&vMVDvRsXpesqPW6SER0exr=w75jZE&wE@}`LVBki9A&7 zY2YnPl+}pz1mk;#v$SZ}${UTsV$WT$yu;?HgY3=lExg<%{$&onlXe5eebU|74)Er$ zdcIK8edJZ@Td*1y0hJq!!K*!+P0dVw-P0y0uSX%eZS*`S(O_Eku4jXk%Wv7_Sz_*c zX|=ah2DjMv)~oO&HM3S9v8H1KNS8fW@v|@&yD{1Dp%tF~w&DO9;z0&9P&}=k7F$K! z_9`NHSp;D>Ry%tY5ldWLAuPqgEfk0EDm+5lGCFSdES2i$3vnGgrZ0$&P5Odc=nJRc z^S~})1FmgmZuR&)DL5d|vEEO_s;Wn@YxCoZ58_0_t={2ztB-YlKv%}ts<}WaVNky) zjZC9kozgAh&PUICGnkbgpp6>-i@?y^SoERiWnp-c`H?4!n!n^D&)2Mpb4h>kD<;45 zd7Tp)@W~(f{QQA!fd>4tAJHq;{3{`y7lxP*I;=NcoWbt?)#sT02OK{a5Z9Wp9oot@JGE_rD;HXg00&^b>NGF7KVhCz?5`Q#I zB$i`qKLgTdbfBK0R_ileiFa$w8yzI5+}lWr#;DZRJ`o=dP)49)1JB( zM+Z-Pq7pl0-e2%-wH|S+vgqvJ*Dyu-f2v#>zw4Z*>3?6tB)$%G8J4jAvYM9Z)Gy~^ z;-DH@;xLaE!dM|JI#J>4&;MnGPlyWN;y=0>XB?#D=Do)smz2A4ylZ?VDTYK=CB`CI zQ3S+`+{#*-!p3`)(ezvFQ97o=!*J*nq=ieN_=P{9_^sK&fAT03ShXe9LPfcwWofm@ z3H}W`tSmQdvtp_QKwYo3s&ud~6R1=2!W}-`4|tVH{7W^SNrmw9L*8?2CWQ`@yS#tH zWV_ES1TmiOixG*jRC_Y9nenMl86n9Pp9c8a*}f!sCxCu_WcFektrE zCI^%x{#b&t8B>TwUkL#8O%33Vd0B;3|I&uafdNiCVa$muCDGYwU|et)1b=rHvHkw7 zd!en3l)6`CN@Hd6#aBYkI2JX6olQF5b&Hq$*@Pz?FaD48mqs>lg$pMsht&ne zTrfOE`B5%`a`}8X7&dN5Rk}+QG@egW9`<54PY#P$^G2hzvBt`l7?45J!Yxd;FXSWe zTPtO~>^t$Avwr*!RAAx>no#9feX2I!TZ(4Z@DWD{zHb|!(q2hxU%M?)pHqnw2H56q zv)--Phq(0zsPE~ymB@pJOHL(!v%S(P2ppP(CRkzi3a7dT9&C@nPU@gEY-ou_+%<~A z0VfUR>25WdKQsoK!q5)N>CDpi;HfRTyH23lSM_3mB_D`vMXU*yAeK%7Na`j~`W~Ow zQAtvX2*u%>PkS2JV?wma+Z~mjYRd7Dy3O*A#RoWHYQptOD zQd+eJ&Z?m3f0l%?MY6UUv?BuV>`qEUJ5wSw(3zS`nYr&fH6zd*%6c}y8nZeSd%^^B z0M@Np?)wY6C`l2bK`}y#jt)n2xce`9o|zUaiM3LcnC&eZIl(Tgz7JJK<84n2eT5Tt zhZ{PAy>-getC1b(LY0Ul3LfpE)c4NWPANBR=dX29nkXe(&`q}U-CdOANNmr9Lp&#^ zErR}}nNuh}r+N-e_EvaGg916#b11AawUxwfYCt;Z%u8kJvGtwg#UH>4CB*OSs-#A0 zMRp}S5<`a+y@A6F^hpl=K4b^F&^AOm6lQin#j-;nmR+)wyjEm~#K{*VMn}CWmKq^g zu(V~v;0#T&?9GNzgU1LEh!H@Lf*?MB*daaCO=*~TL7_zCWspT2E0pxYye>#(5#WRa zW;0v(``wfg5ljs6-U0gYC|PlnfgvWLLs9zyh^W;cfi}tYlQ!-Iq7cA1G!K3-n}9$0 z0qSqeM>3is-T~ktpcFuUmCN)%(aYyYFxslfG>wqkfK&*0&rY`iK(vWPU4Z~^Vw$w+ zJ8Y6l0N+CC2A%+EV~(TUoSc5I9c(oIc|b z19Zqnd{z&or9bCI^Y&NIeUYd2R=V=W1FN3fF=FU0Sf6KvXBwIhOoByk02n#|0@6?{$m!QeiVQs{T~o;q<Dm<*=(zgN-Lfio0t(I0(Z9!mjORHynWRvU# zAeyHVK&*LoA{1+$g9r&pdtoAtuP_)kp8+n|NcJus! zfM}i>+-jaPHr*)zPV<~bz-gYjpcRFh1ptK_iUkFb(>}QfIPJ3t0WmtbNesmqfYUrt z1f1siM_)8g0k@i`kekEeKwk`tVmr2kQyX<|jC5ubl>>5`Xanb?FF_Mk*yLL{HBsjX zh(rs00zk-dCjh5~_90-m5au&F;Wj5Uq-hbx{a-&<5By+pZb?7=Tz15Tg>-}8v}()d1MCpiiHwxXwZy!gR$ zE4PZI*^4ZBF-lQu6IKG)R&7^vCqf@qTL#*C-Xg04xr-7bkQ36aMwBTY!cmstGLWGt(%vah;O6;PDmnk<;G>NGk(W0pP5o69gc8ZEck;FlTl#826u@muU z_t=H5LTK8@b{otnuo9oN6YsHs<91Pnc&ibbPAr8858Ig^0=0M{@f3gsPT?c92)vmC#0nB%J7a^4AWL$|5 za*CiE#j=77*2l6!s3MjXLa!i=$YG}qd=5Z}bRU4Poeo=t(3j3=IEhe*TB63zNwn!< zgz_R(4-q_WXQfcBK0z9h)hQczcCnRJHh>x@t6JczovaFh6Itahw&W+eWgbFSXF@gd z5u$9fl|C}+KMiR_Rz)^Y20+Z+s{y=ciVR({7@=yF zrju1ILZVL`wsSK38$x;6)c-{AqzEG9rH1bqjoM-R{a}0@d=R& zVop&Ebz&(#7LTaTpunB<3YCV9{RrYFGj?nK;#?=UkoGPrGB4~ZoqcWBiLRGP>5PBPF zL{>F6a14NGpl<-IaD;UTq2-PsbCy|I9S1itmdt(@%ZbDmv4cWxN9-JOkyzx(0f?;T z0$A*1H3y-WoUBR_61B=-=46F}7a|nvcExr`G-VV?D1(SzZbAC{0E7TH0GKOUhZ<)+ zLbIK$Y7h!jgKq&lu|SFbw-cd4Y8(;ThY$s_@n)z?e-}waT@Km6&j3VDN0&u#He_an z9)1|{IZjr&%dM?@+LWS981M6*6J^>NZHA=vw zkjfjP@)p@4QI`UQMC*xAIns#g=OOyz=V#8E|G}Js4}=QytIhYY4IHwGt8I=U>T6YY zh$gj&UKz^($Sro_4T#>Hv-pJ<%?wbkqc&>h%QVJO?i>LCRSRM<>QCCh!j~-pECnD| z==lI*+pTvIG|p+2>U^(p|)c55F3&UWhv0_KpkX=?yD z+pU8Li0zhj6w$#x+~U8CP@4FUzHIHij=yZ~y@rj%-s_|td+KF#e>|(m-h5>PayDPN zMf}~7N)P{>B71{fWbTg_gGvbVWdNcP@&Uvep#Y)Sp7(WxM0H;UAd(dUaN3|40jCYt z*(9X^tTuQDplE{%3mMTj5Y}#lZ3u`)*b6{3!iN^2UJ1ZygB=JsZEz3)QK-*s+I;|= zHmF9xX@g@3h&DK4(x$ldLx7w{_yz&95qRb(?0Apc@;XsuN`2)hNd1%@TU%sG{rMHP z)N=qiQlGPeH@ON@&s$+hef|m|^{bYFN{DY203r1P05Pc-A{3K)8A76hYXFF3#Q+?s zm+;UC9QBqX&Jyz`fI`e$>;x5rw59wZ0z%6B0SGDYw&`{PaHPBo0Y}Q;ARr3yrA=E6 zz>#uIFN7R1|BQeT^D&$FFaSr&M-Z^2yks<_e8QH`$rYxQ-D4o-T01s-r77hXR@zd| z1>{IMZzX?x45U1Nr6uM3m1f^w0V*M`)c}N)3jxHWT!c_e$_7HBg6jZ?WF-I`DVHMP z^zFB8lJx*Ap}!AM2))umV%{LEE%n_92&sP#KuCSBMW|N+aHRe*0*=&=ARr3$wM|)eP1RSCNihvOM&n7MU_EA8N)Q=%xNxgO~q<+$t*Qu4J)bAJvsb^b`FM7@@Q|b$F zb!8ss%mL&`ef}z5Jq}XOx9JO3k<>dTg?@9}Pr}h6T#5%r+tcHao%!pU;y31AtqfAx zrj5ql80j=*-o)T6DEALnO(hcpQ`;`{s zW+)RSc4#C2SB~;B%iqYGJ*_N5*x3BEGKjI#jfN*zdBQ`aGoDl05L2UMuJR@xK-tLe z;)ucTa~zk+6m3$?r(iu(A0mE{LFes%uF#Jjy%6}adV^epA`~h? z=ri=?P!D}Qz+L@dy5B>OoXWwTw^yjUUcDlqAO6GzsB|Ul@Adb3g*xbSRs~S{qXZrW z=+^%raDH(>FX)VmsSN;J`ckB-rymyZ)1MMN=M{MG>l;OUIbf#0{xQYZ0G9P#0?v7r z_(gsfff58fdUP)l?GuPs1*2LKUnyWSgFgk0nL)LH%?#ez7t3IwfXxif3E1RcBjBRd z0bSAG5@~lztBprqQVLYK?uf?_jH{L_d%WVsu#DBpZIW;kyS=%;wXwQHS+0-;*61>& zvc64kKAy1d110u&g0fASFCWF@2aC5Uk4T#M2#}PHeihZfYQVc}R~l-yxKzuhIL5!4 zTdx7XW4rRZ!|}x(%5mXsl=GnyG2N+lDyDqQ@PK z?Vl=>m^^28qS5z&QmPV`A3LOcAdux>Dc4Hm2j%}pi3k@j{@h{Z5%TaNpcn7=t@5C} z1)+i8;ezJ#ZH_-_%2cRvBMSv=Pp+;!1`@6s80-1_(%QKhI~Ljbq1>z^er{0113chPamjW$~*Q~ zuV*K$918j)2Lwv`t8ZH=8uF(GAQH)+AD}K~wN|#Nb;?aTfGBsWS?+&bO64}QY{-2B zO$I3g!60{~5ES1{4I>mLlSik#WF@@dVfB_kj2vdd zhV&0LPgq_?r>gyA*bDQjscMQ$_QA)es*R;f4vUYITtNohuxv3M^UNFmLi_6k1-MhF zdPZEr6x(s73;Cu0RQun$lW+?K?hrs!4_Ej$Q3YbQm`Ko=8_f+wMSEu;%$W5HEe#Px zsdLGWeEH@ZynT$|qw08fg89@xUAW`WZ-oSG-q4(-c7MpqbyWECIVJ%JiA6yFo@FxwUwU3Gg(9i8CN z7b0fPQ|e&hO7ihj>I8B->K0K?I17TTC-U2;sSS+Frl|>%FyIOxf>OX|>*RknpT4L;#ITM>aL;dq|v*KYbbd`SGe47-(f3<4Y5-7yyPF=r zB99_yocVlQj=HNUQiaLB8_$&5bY7E=NG^RE>( z3gC6Ndy@G8U|Fu(O9UF;|NUFzoO-pRT3!>`d^04$Ie*3?*&OCFzx=Ql# zqx02r$!9EnQ5_)p@o5b)-1MA<{O|(xvM?ebh@Kd3rc`W8H1pF7wfTGySGzJ$Pvz=z zaBGyW4zRgMI`FsTtA9uuziy%0t#uBV`AC9hHdyJ2y`N%gMZ=^kl;pLA>OYg>X>AhT z=Owj6BjKh}Nscta0y-NHISCW!f4!up3D;l#k~-mj%UcGv8G^JDo@OqrH5XYrJN`1D ztbjYANde))pT%;R5#o=}P1rhv*mMfMb&)!>75Zdv2A?)>Cl}sSay((++X~%2iDn#l zD)L{l@PgZ+Md}Ob8ab4N$TLQbvxqv3js}M+_zY=0TA+T}Thz5NT0m5F3;@gj2xs}$ zkYkwBtXf(2-x^=FSZ!S&_T{SX*g(P6*~bqqR?{PvWWb@ZofLfOX(7}8JA(!TVl3A& zk&~6h#bSvonUD$<$}BYH9$R*Op|#}iQ@@4GBTLk_ijY?m^ZlwVOVqc~MIuYpW|C$s zS*l(qrTRkONP22r`zNr5D-RDYQyZn4w&NMXgHMckaH+K^1?WxXw2mZ^5loYmcjPev`5 z^k!yx@fDZmVl4>!#5Tn8-x6~H6@VtxnakCdeCI6zFMngXYP#0#Uak&m55H_OV%N|z zO@y16s;Ar8=&|mBciMRWm(_M1V$T(mDS)Vjs8p8i%qW~wWHD#XeOYabk-q+Ab%JD$ zqN8ImWr(g-I1Ugw(05#+Hfw2jBvi?b%&cCAN#W2~`qJUVj0QxE;foi0O-9z-O66|A zM8QSZ1HI|C*l4ACwU|sFSgCdoh~8K|1~??(B`eh?=xf_os^fzwkch9Y!uR`pyz?rx z3H;*YxU)QBDVSFg1F+&*t1RXft5iJy1Xk~tBMf#jWl$j?@*Pr5a@hw+STJmq56kjSEHtn-*MDB>@%J!RXwa%j4dX-SP!d^9G=8cbTBai3jaA{{W^7zgx8zH zNl+B*=h1fZ7s}N!@-vbvS}`V>pDS0DE-VvFv$csqmC0_8qWVao3i$LdW=QyUu1jB= z&4vWHXDl3(&i1dkLUCUF8|Yf&mtva{Pc$Ury_58I??!HgW9?tR#odgvLg7; zG})y-LoRhjk?g&tmC!0Z?YwhCnln2j@`vtJx*5AK@lKagOP(f$EbJovD#`qzK~;*! zy(jkfUdB#5Z>;X`^{dId8d$q5kN!ym%i>NoJ{;sNfW|T_U}RnH9jbJN@i`hGqaKX_^d5Qkt4w>Fq3B#ztT1 z%~S>S!qr|?Z7U{~%OQVjR>N9_FT0Unk7_Fl=Hus^Z}eIYX+%v^5WIVbiD5G7Ca-vO z*nhLvd2|?!vX1L*5|jAoo4p~jQ@{OYuk+3jPHNWiqMNC>MVQJmssQt2dBMY4Q$FWbZ&AD0 zJm^J}+4G%li=>g}ivTH(8W(*|{V=85zsMz6izOgUC6a)JxcPytkXjdnRCIlkN6(Gd8$={iWvB-zT6ynI9~{!7_be z_3)<%(_@cS-zV^fif@Q~2*9n1?;r9>0G}wnuJY0E6AZ8Fo9$K)9}x`r*jE#h_!>Xn zuQ+}rf&a(vyIVd9;Kl^sc)1opd4lgoIp=7CQ7_=jVW|hqGZT8U)K$K8oR)o?z^9D%70TrRlE(PHRPa_Mrdxh?cOb>6H`aGKo|D8# zx&9j8OlD4gnP7t*Cjap|Uy4kdN#A&%wV5Oo&5L)9_YF=Fi&;WgYLB@k*utgb`=JW# z!!dbOjQ91krzUJR*3q}JTk-bS`!Z-oyXtzMGv5iU{m6RJ^*(2+6Nn?%`{?Uj{Dm8Q z&gZ#k7PBTJM!phoB&Nwt&>z3SH_*+RlO>FR)uBJTsW?wx*w!PU`=cP5gZJo;hd9!b1YipfBzsIu$_T-mkEiJU5L5grT zK610~EhXj-E6(Mb8S-7eWOrM!LC=I53~|$%CA>owT17N0K$dPyEs%L%tOXR&0*mhR z4HoOsSNHkGDZ+QQ_d~uXrFQYfvS(ys8DBDFh`oHxWZ!uYpC$X3bG;v4f|z{2+>swD z@u|^~Z+0-oKJ2?IRJTKHo^ExBFQ)rO#Zc5Cde1P6!=ISpyUi92bYSu3fL)W=VS*_d zmgDR0X}EemIVV7Gv!5}5r%};-K4PZt*7il>g-zWe!KYyzq6|50D8A!YXc838H}=l- zeU67%p=*+-T4Qsgf@ZKZt#s0&s6D=z?YmZ1i#~)}`%#el%Y$jgHFJH2BvtZ+dA^cn zC89WVZUf%tkxwxh{u8Sbyox!`_c7Cte-#v8GG&=mwvH}LIC#7k#kL5|Vx=>Bga|Np zrWlua!9e`F^w;JaN9Ox_%YXk4iKz`^KD9alb_Vng$#wQF5_szYlGsxd);^NDp7Q|7 z1$^KdW-0S@9sn{@=AjE(+BU@qz1>Sry_%yjduSJ_=+J|CvxUA?(eL^%^nJ_NYx8-V zCBBRVXUB=^@-YRzMh#wrEaJXUK_W9AFYwKinvn4DhYoLkMKi&E;1_ZsZXG*9WH_-c zf-8l&zX{s@P=CcVvII<3i>cA5(1)iKAmHa-_B|vKaIVOARsd&L`o0mUuV3{Ik>Z>M zF*?llwG<_xO${mWJ;G=P*to{mAvsQkicLQJt1c|bsQ0?BRuCqx^Ep0=LWdf&&YbY3 zu8U2F0`b;5-_3II_Mp+Y%!dymLsRbmmhaOxy!0xH3ZGETLq#pw?Hgjxe?r?kyW2M}=Kg%)i>Jn_D&L0sTJa1^cMtJ%Bjo1% zs=;{k=tK_>&l`^Sxc7d8g)w`E(c!R)DcD{|;Z7E>_A98AvA{LC@myR2Y3 zf9JSw1IwLm{Od>GQje#cHVGWpCYSM>e#PukHQmhk@7=f6lfJgG@?Ye>J?y0KC56>| zXgXbfao#shGGXJ3GrraMv|tP~mhCeGZ_LnI1Y(U(&v8qknTqq8qL3T>!kZX}0@_Fk ziY4!qs7Kz&j??@JH;y4LmO-R46)qdy9${O8JGW8=3(Z7Z|i1cu|k{U$I-(QbGX zcwc=D*TvwcCu!UKmiN3u?)2fS>ZQ^haF=9_-flNWCu<+M*{L18S*msmJuvxHs@7dR zYhRYCl@P`4Y1&&%F2vLLO`B;(+7|JZQ}NDM=OK78TgTU_by^fFcJQB@X`N*d@Njc2 zqiKcp;nFZrrgvnR(FR%4L1Nt6T)R>u{;##uewE}sH39x|2kklm)OOIi5UNv0ZMTU! z-${E;pyqbg3;_)9qV;ZyR9Q5mV`dtT+jU8AG)edTQ&*?xd+;!SK^JYNpl#b#TPuK? zu39<)3%Y4j8e55xl%9aKj*%cEV`ew)o(A&K&jWnTP%VRcd&4U<=h0xXGa5T4)XbQC zh1Q?R*>Q9q5B(duuw-00T&oHYvu5M#es&D60XO2Gp9?lLBIC7w?!SJR`=gt*SH#y$ z9=kJ^h3G(gKF1cW@=ozxP5%9znxlQtfQ|mmmlO?rNwKMTdA9KG*jLuXsG=_tarqt% zCIjNjmPtJG9?f}aS-d%rb&rPcYpjbdzAB9y_h^n+zesO=%p(vzf0f3)_iDEipZo9C z9K}b>ODpe16NAMMqaB@x;tl_O+SEF40AKK#5hAjtMRS8_KHmHK{V}Ns{>SduhQ@{- zR-23czWJCeO?>TzzEsMyvoz=J0wLGpEbW>;PG;B%2oBWxVv8GB5DAM57XA40^q3ec zkLWNDP1Le3EKl6Gpajhy6NOC7F9i;mq}BBow?3W9pPUryJ|u7h-%dSdKO*dCyP^ts zm>8=X#Q$G?O3&HZ3uga^U(qx06}@E&eLcch_?UJ^^yUTGn)8Z=SaEh`YnjwxLesRC z_WB~+!3R#$=qs@N@oC!SHbT^G`!sC`A?i)noE1qR?wGD!e$ikOm3(`;Hcm(^n4?|v zgz;p<$kA5#?JtPnJq_$x?#t62WXWYMaTEl5N2t*TdEwFb5ZuPG7qnNsA!uE*sSkV^ z5H!ykD;8-#yHkI?go5HduRkskUR?A56^Ji0))Zn2ZuUtZYj4H$Z~K5J-RU#^3p3Vh z{IFc>Cnd&l5lMR#X{}`W1dgq4TBTv%3WaC=Dy;{;?wNxFt_0|x1v!cQk76ye@u%|w zBi)(wIS71v52u&-HZIc<$w$AUJuK%voye#B2}_LIzNnXE9D7B3nf;e3+VGD`w2>Di z8}yp?vMN3Rnh$oz%eB+u1EAl(p~Zgy^vXB1bmN9Mwdvvmp!`ciJ0<6T8srDoYiCop z(0BH**`<>?IjqAcINTt#5Z@Mv@)K`qIGBs_u5W8w(#?19p&$aFlY4S_z_gFuOi%or ztO@euceEw)&M$)eO#;sCb`P`z)sRB^p4p*|Y-8VYJ8!i@Heq{eC9{5nR&JgC%ITWskN~Vzp6z_G7Jum)=doezGMmm=_qrAKa@cnuJqt z^!S!|TlT5F+7&5glj)^WRyZK;V$iM`xaFG9YxZgd)OY#6_i3wrq6^%Ic%#cF+8Uv~ z9Q+jTRa4D6?$=%!<~L0UxS1R@Z3tD0}1GFSJbph#b`JXCcR_2Q7k8s2Hcd z(n=N6Y64wXv8^Vs-)W3cV>+OvyAX^#?1*6^vFE6EwP`gW$YC{Mbo*Yr!`u17^B8QJ z9ixcGVLBu?xj<}W5wZCfXp7=_E%8@c#ZAGq7m~W^q;{V;X#C)$*3~)EyTF`8`dr@!>w=nlkx7qYvK!~_x-NTf-1&O{;owyC7bz&)>@Kj zpshQl%@9D}KehXaWci<%p(~1vFaFfJN~|2#jAyh-7e72+Lfy%D{H&Ja7LdgJ|Ew=w z5tmx{Z?o;r%;(AZL&^RL7vWwowlwq)W%34;qAkAFJ7 z_R3H6@ka#ka9{rqNpo_|>lAu3F+hC?5q$C`{+n6xDvs7Kh`^}#9h_ zf#Go&80*GiX2)S*;cH_;l!rZu5*IKzzcR)iCc-u;FfcHVIOioWEsjIMPT9f0LOBit zYi9=oJLfnI45A$jET!WxFr{`du&|E9Tmma?2L=1=I24S$9SrQeZHy2js>ql1_h%(k zJ_`X)MWxH1O{ABPZgg7d5^h}Pzw07`6Bor?lte5LlfaV%Pz@@^$m_~Y`84>J8k#WIv7F&J5{HSv@5Ct-98Tg;@Lq8+@LP$)zz4>`!22Z*12-851OJ&g3><76 z4E%0v49Oq9I}Qq7J2na!xc)d8c>mZKF>>t6llXWX9UO^lI$&nUVc>TZhdKW;@#d97 z{hBUiXI#ZkgN$|(gLqv9}dvT`tRuZqLKSIfb`Nh=NmcPW=pkAZ z0ghk}3jSeniQr=9VBlP4V=(ki9SBlVc&hz>?7azmRK@Z?nsa8!WX?L1gsi|!2#`S7 z_f0t}n;?r`my4|8in!o)7fDc5RFrT*8m_2tMMXdaMGh(oC@4yRuqaVkf}(<=f})~= zyl?f{CPP5(@Av-iect^%P^M3BRb5?OUAEwSVesihm%{wijfc&t z6AuGeH+qs64eMJs8uqtNZdm@h(J=RQqG5aNM#JFPiH7yF8(j*UXD1#8*ls+muAOL@ zfV5NlgxLKXhfm@hy{&gI<7S^0J?xSfky3PfnxJFTFvm&BHi zOUq^x`%C9Xt#nLj_6^CMvsiV1iIqC>q8ksmv@R97qGR0|PDIhY8}Fg$Pe73lgc3>O zJ|b?oL`i%`JWlz&o5(~&=W%ZyudiYYzEN}ivo!rBR`HFRBhHz{1`d?2&H7^oDTZA6 zmtEz5#dNlLpp=(w-K{O~`MZnVaR-)@hAz-Dagfw#uoZzFu@wD$+&bpu$MGn4AY$Le zbqkSe+&*yLDADaUS~=PGaEU}dy^mzy45c@?aa)w#H%MyG)w(Py#j%Y=z35WYtrU6r zWnN0*3Z=1Zrlvm^FlNs*_YRWo7Q~4&+0cum)*ayFoHGX;mIFG^Px~RfZ}^1itlcT* zYC(W|6M<-jwjBD2qddV*Iu?ITlhCg4NihcKG2<2 zJ|~{V=Dg&`Y3O<3hV1ckLK16zvD93Kc5S(CBv%Y$F2!cWa`R`EkDf>Nxtz3%-OBEs>m>hSxbeJdHJj6 z{aQBlGAW-;9wxz^*g7_ISR$Op7M#b2+i(Vtu&R4(gjL<;BW*YXuCNmByTVEsI4T*= zl@^@que9LYaiz3{Fg^b&>35E4udAijgup#lOWP@7&^2~K|7)#;`>vI?dlcBtrd}gu zu=25z!X{iNZK>I)kruFVqa}&ze0a1~=kV+8I){w0>MS3VSm##>bxyeb&75yUx)!TXjBtb7GxG-8y&kW{$nZ%JtkWR`GlOA^n)T8ZYThMK|7htJI5c z54?S=lp$oY&h`$Y-*~38eU~l7zP?TREH-DVb>V3YhAu8VU5}q1Kb(pSPgf!|bE;x~ ze!H|oC`M8PMC`M+b!Z6J$LG|>d_R*+knBy*JoEEArN%-AHXq$_$<;F2jjVgOG=#Hh zjn!r+v(-J)A{b18f06JS+c-hGgtK*xY*U;lI|Ge`qzrbHoniLL8SE%K1C6ev8tkao zSl~hF8otU+%0Me%M7?IVo+NGXQAf;}Ed7&y%_k;HDt2Ts_=c2AEohn6fyw341y0nb zcJ2c6@~P6nG#|DU&GVm>E=vvWW12oiU}c}EjoIdZOO@yF_18q&lmoqKGuZYWE0XV6 zE(x6rLP*a>I^St>_K5iA-ri@W%d87RydK)z>p4$qE7AQMcJIqlbAAzL@yk+B%$q$S zxwGsDX#w8ChI??lg?*XX`4#CKkz?KXHR;AcU}lvnJFcN{u|2tww(QWYaBSw=AdLfo zSBk0U>`xtEpq^7Ud;iPdkpXJT-{CrIb%it@yOZp^jZ(+7K(mzm9=JCYU=M7RnoIoC z0>a+jC=~|-=(~8({BEN(SU}~yH%s}r3X2_ExbMPM0kmQ4W+^j_E93eSx?C@@32Vjl z-ngjkF9?#d0^>S_d47t6%Wcje+=Yih-c_h8_%$Cq`Hmjl{UQu&o%g08B-2}HH8lb)6sSY&* zuvr7|rLr~G%LBL{0dwCr30{h^RXy$_$uCmiz8%udN}&2v+(TlAFG|a3C6@ZSV~A9~ zpwU4#(arkc7g`V&Z#63C1H%5~6`P-YDLsIbuyt(2*V3h!FU{A#mUPR+u;PI9m|SP(pC@e(?|Miv zZ~8^5Yi&VK`Be(mute<4x(&zX@|=6sR5tn_zGx_upjRJP*`G(H`+W$Q6MvHqh}M0_ z?c~*KzGVajX5CLmXneC9(fghIjx&x)_E`nbPU6geTv{z;+Yb*c!QiDw8DFJe@X%6o z=bzG)0Ecy>U!Et%ZGRx34j?#p)hq~5_sQt5O{)B*SjV{s=~|U=uOQ_1x*vD*%}Voq zIqdrRL7goK%MYYI`GCZ=QU%M&$~c$|r=3 z733*AQAi?!J$HR#M_Z6>q_cJGC9n=qCI#B}=-2 z3*~sA@`;ClV|)yctO+K&Kw=|@%Y}KV z+{Ge!`LQ2B$6?!cT&J!45vLQwzt2A0w6bh5JQ%zgyD5Tpl3lU zpM9|3OAd=u3RL9hF}PijO7*)-+nDM?h>egt)RB79l*vG;`IU0L#xlt6 zA0NvK#N=2VJYI!rWV)1#tCB?sHUITC^j<}8$UoD?k8nV!#Sa4)qMT7h>y(5+9{DKe-3>>lsq1=$wAMa1< zRze#;n3Y<_BxI6EpvQc1=ME_+1qKOhhN;IbqKBx8aDq`LG&FYbYB?&vE7a9;y;3oz zI27~fB|4oiQs?6`b0N`7iNVARe(Y{5fWRPYRU(%-0NoG->L4TBuk?wNJ*h9IpHn(DKs)-zJRYg zr$La5LD6AEk&um3y|FYB?x{u!cniUnAdDlYQo##oXMv1M1O;_qHj`59>wfRw(Th$s zv^3z-41G@>4b@bPNfg42gaJs`P|%co@C7TJ7*^k-<#SqD z!|G&m^eK=@+Sk$kgBiyS%WP`7lmpA733;eW7$dCC+LdNh@rvo~`AIs_>mf#1X zsIA#yj6Buf5cVUaYeR_AT#uGRz_>e#=;R5NU>|n)X1Re%BR3omfMB4Mڮv>P$ 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 KMgn{vwfleMHgOUF delta 98570 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 Q5b4C7{}n#e0xs73KjEFr;s5{u