From 0a958c3bf6e192e4d2aa538b67058c63fa2bf1fd Mon Sep 17 00:00:00 2001 From: blankhex Date: Fri, 17 Apr 2026 12:37:28 +0000 Subject: [PATCH] deploy: 00aeda6f64a4c1b7beb904a8296fea57c51e3d17 --- data.pak | Bin 369791 -> 369791 bytes index.js | 2 +- index.wasm | Bin 1385981 -> 1385946 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/data.pak b/data.pak index f243df837efa9c09496a6d5a846e96033cb898cf..02dedc09de59468dbaf8e513ce4843dd4f142db8 100644 GIT binary patch delta 826 zcmW;J?@Lo*6bJD0+}(4pPBay?B*irXr@LwhW}BND!fZ7$3<<*`e9;Rj4HTrBNQn-8 zqqgk$V`{o6%S!A9gW4(x(m$XV{eW~N1rY^BLFSLn^~H1V=RSP-o`>gdFK2EqXAac` z4k>`6vulo4ULUN?WBEBk-q+;oOPN1hq zP*0IG5a{$tyiC00NT&~v`1F~zJ}G$ob4jpa^{3wV$s&Sp8q15);Wa!g`{G-Ibr{Km=>fMkkJ zVY%vaFjb(fFgldRDu9+8iiOdszB&ys0D>xRqeHDdBjBjdL=_=)nCQMtmqR>aYhH$2 zL0uDkhMb2x-ejZekqj1!PVh0C7G$WDXmgAs6N@r@V~?`~Ph>cyk(>8T@m1~{x3C=3uOrM+be8#)SwJp>Ys^`4g_(Up1Up4%n2Ss=`KOud%w}>K4NW(U zfXmnoFgs|2v&uiF3uu#X8p}oy_LARdt7m#?!zRk)e)G?F&YU}wV+E6A1=pjFe;wE6 zIv?MeZ=y~^gi{_THE4b_oXsH~w;jI7bvaIE87JMw7C(9hO^-A1&@A&i-b4I$4kquK z0YvYaKb(C7X2@{D_f4mSSJ>$jg`-xw zB!8Bj4teF^K>2qo5hLi!qRx_W#+-Ba3tBu@;11(&GQ_VcjnSX;Dl{>I3P_#Ty zR8~}m%}MrPMHAnGw}q?m8|=r+1aHE;B>T_}&W9_(H}L?x9#5*=!jSw0drB1bA=@X$ zs9+6ZTAsQ{kq_Bkk;?_oD1`e(eq5@k6xoy*9|dnCqwB8t6jdXp@s*$-*=|Ad>uy=y ztwyi{F-ffk!CpeRPr4N^)<%Vv4-1weBlmHe;8A3Bnzuwx5z|ww7OWw}+x4poUm}Gy Y@~ZZfr3Td%5{6}yb39_u#)yml1MQ^;1^@s6 diff --git a/index.js b/index.js index 1b07ceb..de228d2 100644 --- a/index.js +++ b/index.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;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}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.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;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 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++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483424:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483649:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483796:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},484030:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484523:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484591:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486243:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486653:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487738:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491368:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491451:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491520:()=>window.innerWidth,491550:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){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;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>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(...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;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});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;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}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;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]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _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};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _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);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _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,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;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|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var 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};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[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.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var 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];var 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};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[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}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};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};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406764;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)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 getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)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{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)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)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(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()}}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;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}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.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;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 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++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483392:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483617:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483764:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},483998:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484491:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484559:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486211:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486621:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487706:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491336:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491419:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491488:()=>window.innerWidth,491518:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){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;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>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(...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;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});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;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}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;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]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _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};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _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);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _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,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;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|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var 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};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[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.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var 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];var 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};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[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}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};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};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406728;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)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 getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)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{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)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)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(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()}}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/index.wasm b/index.wasm index 011f89ca87b925ab9187a4212f496c112a06bd7e..d0c2af5a40530a68b3a40d38ab4ab0da09342516 100755 GIT binary patch delta 143870 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∾h2zNJfW@X_He% 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 mj|5