From e3d053097823ecff792f8cbdaaef6d9c2b5d4320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Mon, 22 Feb 2021 19:20:46 +0100 Subject: [PATCH] Update web version --- bin/web/anarch.js | 2 +- bin/web/anarch.wasm | Bin 705246 -> 707786 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/web/anarch.js b/bin/web/anarch.js index 4bb0620..ba561a7 100644 --- a/bin/web/anarch.js +++ b/bin/web/anarch.js @@ -1 +1 @@ -var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":613,"maximum":613,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="anarch.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={125340:function($0,$1,$2){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)}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>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},127808:function($0){if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}return 0},127901:function(){if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},129126:function(){return screen.width},129153:function(){return screen.height},129181:function(){return window.innerWidth},129213:function(){return window.innerHeight},129291:function($0){if(typeof setWindowTitle!=="undefined"){setWindowTitle(UTF8ToString($0))}return 0},129425:function(){if(typeof AudioContext!=="undefined"){return 1}else if(typeof webkitAudioContext!=="undefined"){return 1}return 0},129591:function(){if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return 1}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return 1}return 0},129817:function($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},130370:function(){var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},130440:function($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)}},132092:function($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"])},132502:function($0,$1){var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c>2]}}},133587:function($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;i0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function dynCallLegacy(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}return Module["dynCall_"+sig].call(null,ptr)}function dynCall(sig,ptr,args){if(sig.indexOf("j")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=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);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){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;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=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+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(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:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(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:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(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:function(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:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(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(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(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:function(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(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(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:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(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);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}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>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _dlclose(handle){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}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 setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);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,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){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}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId1&&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(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var 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:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=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;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["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"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};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",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(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: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){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(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)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])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"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(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:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeCallback:function(func){return function(){if(!ABORT)return func.apply(null,arguments)}},allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=false},resumeAsyncCallbacks:function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach(function(func){func()})}},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}},timeout)},safeSetInterval:function(func,timeout){noExitRuntime=true;return setInterval(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}},timeout)},getMimetype:function(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:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(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:{},calculateMouseEvent:function(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{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;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};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];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){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:function(){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:function(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){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}else{EGL.setErrorCode(12300);return 0}}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(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:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>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){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}}function _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}function _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}function _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}function _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}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _eglGetProcAddress(name_){return _emscripten_GetProcAddress(name_)}function _eglInitialize(display,majorVersion,minorVersion){if(display==62e3){if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}else{EGL.setErrorCode(12296);return 0}}function _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}function _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=allocateUTF8("Emscripten");break;case 12372:ret=allocateUTF8("1.4 Emscripten EGL");break;case 12373:ret=allocateUTF8("");break;case 12429:ret=allocateUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret}function _eglSwapBuffers(){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}function _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}function _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}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}function _eglWaitGL(){return _eglWaitClient()}function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function __get_canvas_element_size(target){var stackTop=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(stackTop);return size}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function __set_canvas_element_size(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{var stackTop=stackSave();var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(stackTop)}}function __registerRestoreOldStyle(canvas){var canvasSize=__get_canvas_element_size(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||document.msFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);__set_canvas_element_size(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){wasmTable.get(__currentFullscreenStrategy.canvasResizedCallback)(37,0,__currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle}function __setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function __getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _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=__get_canvas_element_size(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>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function __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)}function _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}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_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}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_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;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_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}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __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}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_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}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function 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 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length: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 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_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}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_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}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[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}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[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}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_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}function _emscripten_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}function _emscripten_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}function _emscripten_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)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{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);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex>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}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function 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}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function 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}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function __emscripten_do_request_fullscreen(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}else{return-2}}return _JSEvents_requestFullscreen(target,strategy)}function _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 __emscripten_do_request_fullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(__requestPointerLock,2,[target]);return 1}else{return-2}}return __requestPointerLock(target)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function __registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(ev){var e=ev||event;var confirmationMessage=wasmTable.get(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload==="undefined")return-1;if(targetThread!==1)return-5;__registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload");return 0}function __registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(ev){var e=ev||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(wasmTable.get(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);return 0}function _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}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);return 0}function __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&&reportedElement.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}}function __registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;__fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _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,"fullscreenchange",targetThread);__registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function __registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;__fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;__registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;__registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function __registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){var browserIterationFunc=function(){wasmTable.get(func)()};setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)}function __fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=__getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function __registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;__fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function __fillPointerlockChangeEventData(eventStruct){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function __registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(ev){var e=ev||event;var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;__fillPointerlockChangeEventData(pointerlockChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _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,"pointerlockchange",targetThread);__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 0}function __registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||event;if(e.target!=target){return}var uiEvent=JSEvents.uiEvent;var b=document.body;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(wasmTable.get(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function __registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=__getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function __fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function __registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(ev){var e=ev||event;var visibilityChangeEvent=JSEvents.visibilityChangeEvent;__fillVisibilityChangeEventData(visibilityChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_visibilitychange_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!specialHTMLTargets[1]){return-4}__registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread);return 0}function __registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(96);var wheelHandlerFunc=function(ev){var e=ev||event;var wheelEvent=JSEvents.wheelEvent;__fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+64>>3]=e["deltaX"];HEAPF64[wheelEvent+72>>3]=e["deltaY"];HEAPF64[wheelEvent+80>>3]=e["deltaZ"];HEAP32[wheelEvent+88>>2]=e["deltaMode"];if(wasmTable.get(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!=="undefined"){__registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _usleep(useconds){var start=_emscripten_get_now();while(_emscripten_get_now()-start>2];var nanoseconds=HEAP32[rqtp+4>>2];if(nanoseconds<0||nanoseconds>999999999||seconds<0){setErrNo(28);return-1}if(rmtp!==0){HEAP32[rmtp>>2]=0;HEAP32[rmtp+4>>2]=0}return _usleep(seconds*1e6+nanoseconds/1e3)}function _setTempRet0($i){setTempRet0($i|0)}function _sigaction(signum,act,oldact){return 0}var __sigalrm_handler=0;function _signal(sig,func){if(sig==14){__sigalrm_handler=func}else{}return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};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)}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}__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"b":wasmTable,"q":___sys_fcntl64,"za":___sys_ioctl,"Aa":___sys_open,"j":_clock_gettime,"Ea":_dlclose,"sd":_eglBindAPI,"Ha":_eglChooseConfig,"Bb":_eglCreateContext,"Xb":_eglCreateWindowSurface,"Mb":_eglDestroyContext,"gc":_eglDestroySurface,"Ia":_eglGetConfigAttrib,"n":_eglGetDisplay,"qb":_eglGetError,"$":_eglGetProcAddress,"ua":_eglInitialize,"rc":_eglMakeCurrent,"fb":_eglQueryString,"Cc":_eglSwapBuffers,"Nc":_eglSwapInterval,"Ca":_eglTerminate,"hd":_eglWaitGL,"Yc":_eglWaitNative,"c":_emscripten_asm_const_int,"Fa":_emscripten_exit_fullscreen,"Ja":_emscripten_exit_pointerlock,"g":_emscripten_get_device_pixel_ratio,"e":_emscripten_get_element_css_size,"t":_emscripten_get_gamepad_status,"Da":_emscripten_get_num_gamepads,"_":_emscripten_glActiveTexture,"Z":_emscripten_glAttachShader,"pa":_emscripten_glBeginQueryEXT,"Y":_emscripten_glBindAttribLocation,"X":_emscripten_glBindBuffer,"W":_emscripten_glBindFramebuffer,"V":_emscripten_glBindRenderbuffer,"U":_emscripten_glBindTexture,"ha":_emscripten_glBindVertexArrayOES,"T":_emscripten_glBlendColor,"S":_emscripten_glBlendEquation,"R":_emscripten_glBlendEquationSeparate,"rd":_emscripten_glBlendFunc,"qd":_emscripten_glBlendFuncSeparate,"pd":_emscripten_glBufferData,"od":_emscripten_glBufferSubData,"nd":_emscripten_glCheckFramebufferStatus,"md":_emscripten_glClear,"ld":_emscripten_glClearColor,"kd":_emscripten_glClearDepthf,"jd":_emscripten_glClearStencil,"id":_emscripten_glColorMask,"gd":_emscripten_glCompileShader,"fd":_emscripten_glCompressedTexImage2D,"ed":_emscripten_glCompressedTexSubImage2D,"dd":_emscripten_glCopyTexImage2D,"cd":_emscripten_glCopyTexSubImage2D,"bd":_emscripten_glCreateProgram,"ad":_emscripten_glCreateShader,"$c":_emscripten_glCullFace,"_c":_emscripten_glDeleteBuffers,"Zc":_emscripten_glDeleteFramebuffers,"Xc":_emscripten_glDeleteProgram,"ra":_emscripten_glDeleteQueriesEXT,"Wc":_emscripten_glDeleteRenderbuffers,"Vc":_emscripten_glDeleteShader,"Uc":_emscripten_glDeleteTextures,"ga":_emscripten_glDeleteVertexArraysOES,"Tc":_emscripten_glDepthFunc,"Sc":_emscripten_glDepthMask,"Rc":_emscripten_glDepthRangef,"Qc":_emscripten_glDetachShader,"Pc":_emscripten_glDisable,"Oc":_emscripten_glDisableVertexAttribArray,"Mc":_emscripten_glDrawArrays,"ca":_emscripten_glDrawArraysInstancedANGLE,"da":_emscripten_glDrawBuffersWEBGL,"Lc":_emscripten_glDrawElements,"ba":_emscripten_glDrawElementsInstancedANGLE,"Kc":_emscripten_glEnable,"Jc":_emscripten_glEnableVertexAttribArray,"oa":_emscripten_glEndQueryEXT,"Ic":_emscripten_glFinish,"Hc":_emscripten_glFlush,"Gc":_emscripten_glFramebufferRenderbuffer,"Fc":_emscripten_glFramebufferTexture2D,"Ec":_emscripten_glFrontFace,"Dc":_emscripten_glGenBuffers,"Ac":_emscripten_glGenFramebuffers,"sa":_emscripten_glGenQueriesEXT,"zc":_emscripten_glGenRenderbuffers,"yc":_emscripten_glGenTextures,"fa":_emscripten_glGenVertexArraysOES,"Bc":_emscripten_glGenerateMipmap,"xc":_emscripten_glGetActiveAttrib,"wc":_emscripten_glGetActiveUniform,"vc":_emscripten_glGetAttachedShaders,"uc":_emscripten_glGetAttribLocation,"tc":_emscripten_glGetBooleanv,"sc":_emscripten_glGetBufferParameteriv,"qc":_emscripten_glGetError,"pc":_emscripten_glGetFloatv,"oc":_emscripten_glGetFramebufferAttachmentParameteriv,"nc":_emscripten_glGetIntegerv,"lc":_emscripten_glGetProgramInfoLog,"mc":_emscripten_glGetProgramiv,"ja":_emscripten_glGetQueryObjecti64vEXT,"la":_emscripten_glGetQueryObjectivEXT,"ia":_emscripten_glGetQueryObjectui64vEXT,"ka":_emscripten_glGetQueryObjectuivEXT,"ma":_emscripten_glGetQueryivEXT,"kc":_emscripten_glGetRenderbufferParameteriv,"ic":_emscripten_glGetShaderInfoLog,"hc":_emscripten_glGetShaderPrecisionFormat,"fc":_emscripten_glGetShaderSource,"jc":_emscripten_glGetShaderiv,"ec":_emscripten_glGetString,"dc":_emscripten_glGetTexParameterfv,"cc":_emscripten_glGetTexParameteriv,"$b":_emscripten_glGetUniformLocation,"bc":_emscripten_glGetUniformfv,"ac":_emscripten_glGetUniformiv,"Yb":_emscripten_glGetVertexAttribPointerv,"_b":_emscripten_glGetVertexAttribfv,"Zb":_emscripten_glGetVertexAttribiv,"Wb":_emscripten_glHint,"Vb":_emscripten_glIsBuffer,"Ub":_emscripten_glIsEnabled,"Tb":_emscripten_glIsFramebuffer,"Sb":_emscripten_glIsProgram,"qa":_emscripten_glIsQueryEXT,"Rb":_emscripten_glIsRenderbuffer,"Qb":_emscripten_glIsShader,"Pb":_emscripten_glIsTexture,"ea":_emscripten_glIsVertexArrayOES,"Ob":_emscripten_glLineWidth,"Nb":_emscripten_glLinkProgram,"Lb":_emscripten_glPixelStorei,"Kb":_emscripten_glPolygonOffset,"na":_emscripten_glQueryCounterEXT,"Jb":_emscripten_glReadPixels,"Ib":_emscripten_glReleaseShaderCompiler,"Hb":_emscripten_glRenderbufferStorage,"Gb":_emscripten_glSampleCoverage,"Fb":_emscripten_glScissor,"Eb":_emscripten_glShaderBinary,"Db":_emscripten_glShaderSource,"Cb":_emscripten_glStencilFunc,"Ab":_emscripten_glStencilFuncSeparate,"zb":_emscripten_glStencilMask,"yb":_emscripten_glStencilMaskSeparate,"xb":_emscripten_glStencilOp,"wb":_emscripten_glStencilOpSeparate,"vb":_emscripten_glTexImage2D,"ub":_emscripten_glTexParameterf,"tb":_emscripten_glTexParameterfv,"sb":_emscripten_glTexParameteri,"rb":_emscripten_glTexParameteriv,"pb":_emscripten_glTexSubImage2D,"ob":_emscripten_glUniform1f,"nb":_emscripten_glUniform1fv,"mb":_emscripten_glUniform1i,"lb":_emscripten_glUniform1iv,"kb":_emscripten_glUniform2f,"jb":_emscripten_glUniform2fv,"ib":_emscripten_glUniform2i,"hb":_emscripten_glUniform2iv,"gb":_emscripten_glUniform3f,"eb":_emscripten_glUniform3fv,"db":_emscripten_glUniform3i,"cb":_emscripten_glUniform3iv,"bb":_emscripten_glUniform4f,"ab":_emscripten_glUniform4fv,"$a":_emscripten_glUniform4i,"_a":_emscripten_glUniform4iv,"Za":_emscripten_glUniformMatrix2fv,"Ya":_emscripten_glUniformMatrix3fv,"Xa":_emscripten_glUniformMatrix4fv,"Wa":_emscripten_glUseProgram,"Va":_emscripten_glValidateProgram,"Ua":_emscripten_glVertexAttrib1f,"Ta":_emscripten_glVertexAttrib1fv,"Sa":_emscripten_glVertexAttrib2f,"Ra":_emscripten_glVertexAttrib2fv,"Qa":_emscripten_glVertexAttrib3f,"Pa":_emscripten_glVertexAttrib3fv,"Oa":_emscripten_glVertexAttrib4f,"Na":_emscripten_glVertexAttrib4fv,"aa":_emscripten_glVertexAttribDivisorANGLE,"Ma":_emscripten_glVertexAttribPointer,"La":_emscripten_glViewport,"m":_emscripten_has_asyncify,"ta":_emscripten_memcpy_big,"Ga":_emscripten_request_fullscreen_strategy,"P":_emscripten_request_pointerlock,"va":_emscripten_resize_heap,"u":_emscripten_sample_gamepad_data,"v":_emscripten_set_beforeunload_callback_on_thread,"H":_emscripten_set_blur_callback_on_thread,"f":_emscripten_set_canvas_element_size,"k":_emscripten_set_element_css_size,"I":_emscripten_set_focus_callback_on_thread,"y":_emscripten_set_fullscreenchange_callback_on_thread,"s":_emscripten_set_gamepadconnected_callback_on_thread,"r":_emscripten_set_gamepaddisconnected_callback_on_thread,"B":_emscripten_set_keydown_callback_on_thread,"z":_emscripten_set_keypress_callback_on_thread,"A":_emscripten_set_keyup_callback_on_thread,"td":_emscripten_set_main_loop,"N":_emscripten_set_mousedown_callback_on_thread,"L":_emscripten_set_mouseenter_callback_on_thread,"K":_emscripten_set_mouseleave_callback_on_thread,"O":_emscripten_set_mousemove_callback_on_thread,"M":_emscripten_set_mouseup_callback_on_thread,"C":_emscripten_set_pointerlockchange_callback_on_thread,"x":_emscripten_set_resize_callback_on_thread,"D":_emscripten_set_touchcancel_callback_on_thread,"F":_emscripten_set_touchend_callback_on_thread,"E":_emscripten_set_touchmove_callback_on_thread,"G":_emscripten_set_touchstart_callback_on_thread,"w":_emscripten_set_visibilitychange_callback_on_thread,"J":_emscripten_set_wheel_callback_on_thread,"l":_emscripten_sleep,"wa":_environ_get,"xa":_environ_sizes_get,"p":_fd_close,"ya":_fd_read,"Ka":_fd_seek,"o":_fd_write,"i":_gettimeofday,"a":wasmMemory,"Ba":_nanosleep,"Q":_setTempRet0,"d":_sigaction,"h":_signal};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["ud"]).apply(null,arguments)};var _webButton=Module["_webButton"]=function(){return(_webButton=Module["_webButton"]=Module["asm"]["vd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["xd"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yd"]).apply(null,arguments)};var _emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=function(){return(_emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=Module["asm"]["zd"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Ad"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Bd"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Cd"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Dd"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["Ed"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}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;noExitRuntime=true;run(); +var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":613,"maximum":613,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=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();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="anarch.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={125468:function($0,$1,$2){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)}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>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},127936:function($0){if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}return 0},128029:function(){if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},129254:function(){return screen.width},129281:function(){return screen.height},129309:function(){return window.innerWidth},129341:function(){return window.innerHeight},129419:function($0){if(typeof setWindowTitle!=="undefined"){setWindowTitle(UTF8ToString($0))}return 0},129553:function(){if(typeof AudioContext!=="undefined"){return 1}else if(typeof webkitAudioContext!=="undefined"){return 1}return 0},129719:function(){if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return 1}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return 1}return 0},129945:function($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},130498:function(){var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},130568:function($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)}},132220:function($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"])},132630:function($0,$1){var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c>2]}}},133715:function($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;i0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function dynCallLegacy(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}return Module["dynCall_"+sig].call(null,ptr)}function dynCall(sig,ptr,args){if(sig.indexOf("j")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i=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);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){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;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length=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+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(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:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(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:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(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:function(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:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(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(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(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:function(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(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(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:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(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);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}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>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _dlclose(handle){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}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 setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);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,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){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}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId1&&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(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var 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:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=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;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["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"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};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",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(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: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){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(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)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])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"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(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:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeCallback:function(func){return function(){if(!ABORT)return func.apply(null,arguments)}},allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=false},resumeAsyncCallbacks:function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach(function(func){func()})}},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}},timeout)},safeSetInterval:function(func,timeout){noExitRuntime=true;return setInterval(function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}},timeout)},getMimetype:function(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:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(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:{},calculateMouseEvent:function(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{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;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};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];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){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:function(){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:function(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){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}else{EGL.setErrorCode(12300);return 0}}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(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:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>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){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}}function _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}function _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}function _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}function _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}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _eglGetProcAddress(name_){return _emscripten_GetProcAddress(name_)}function _eglInitialize(display,majorVersion,minorVersion){if(display==62e3){if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}else{EGL.setErrorCode(12296);return 0}}function _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}function _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=allocateUTF8("Emscripten");break;case 12372:ret=allocateUTF8("1.4 Emscripten EGL");break;case 12373:ret=allocateUTF8("");break;case 12429:ret=allocateUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret}function _eglSwapBuffers(){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}function _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}function _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}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}function _eglWaitGL(){return _eglWaitClient()}function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function __get_canvas_element_size(target){var stackTop=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(stackTop);return size}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function __set_canvas_element_size(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{var stackTop=stackSave();var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(stackTop)}}function __registerRestoreOldStyle(canvas){var canvasSize=__get_canvas_element_size(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||document.msFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);__set_canvas_element_size(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){wasmTable.get(__currentFullscreenStrategy.canvasResizedCallback)(37,0,__currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle}function __setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function __getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _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=__get_canvas_element_size(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>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function __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)}function _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}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_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}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_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;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_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}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __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}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_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}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function 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 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length: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 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_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}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_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}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[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}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[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}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_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}function _emscripten_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}function _emscripten_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}function _emscripten_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)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{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);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex>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}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function 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}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function 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}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){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(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){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(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function __emscripten_do_request_fullscreen(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}else{return-2}}return _JSEvents_requestFullscreen(target,strategy)}function _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 __emscripten_do_request_fullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(__requestPointerLock,2,[target]);return 1}else{return-2}}return __requestPointerLock(target)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function __registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(ev){var e=ev||event;var confirmationMessage=wasmTable.get(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload==="undefined")return-1;if(targetThread!==1)return-5;__registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload");return 0}function __registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(ev){var e=ev||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(wasmTable.get(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);return 0}function _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}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);return 0}function __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&&reportedElement.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}}function __registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;__fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _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,"fullscreenchange",targetThread);__registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function __registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;__fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;__registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;__registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function __registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){var browserIterationFunc=function(){wasmTable.get(func)()};setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)}function __fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=__getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function __registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;__fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(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};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function __fillPointerlockChangeEventData(eventStruct){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function __registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(ev){var e=ev||event;var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;__fillPointerlockChangeEventData(pointerlockChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _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,"pointerlockchange",targetThread);__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 0}function __registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||event;if(e.target!=target){return}var uiEvent=JSEvents.uiEvent;var b=document.body;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(wasmTable.get(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function __registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=__getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){__registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function __fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function __registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(ev){var e=ev||event;var visibilityChangeEvent=JSEvents.visibilityChangeEvent;__fillVisibilityChangeEventData(visibilityChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_visibilitychange_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!specialHTMLTargets[1]){return-4}__registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread);return 0}function __registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(96);var wheelHandlerFunc=function(ev){var e=ev||event;var wheelEvent=JSEvents.wheelEvent;__fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+64>>3]=e["deltaX"];HEAPF64[wheelEvent+72>>3]=e["deltaY"];HEAPF64[wheelEvent+80>>3]=e["deltaZ"];HEAP32[wheelEvent+88>>2]=e["deltaMode"];if(wasmTable.get(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!=="undefined"){__registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _usleep(useconds){var start=_emscripten_get_now();while(_emscripten_get_now()-start>2];var nanoseconds=HEAP32[rqtp+4>>2];if(nanoseconds<0||nanoseconds>999999999||seconds<0){setErrNo(28);return-1}if(rmtp!==0){HEAP32[rmtp>>2]=0;HEAP32[rmtp+4>>2]=0}return _usleep(seconds*1e6+nanoseconds/1e3)}function _setTempRet0($i){setTempRet0($i|0)}function _sigaction(signum,act,oldact){return 0}var __sigalrm_handler=0;function _signal(sig,func){if(sig==14){__sigalrm_handler=func}else{}return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};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)}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}__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"b":wasmTable,"q":___sys_fcntl64,"za":___sys_ioctl,"Aa":___sys_open,"j":_clock_gettime,"Ea":_dlclose,"sd":_eglBindAPI,"Ha":_eglChooseConfig,"Bb":_eglCreateContext,"Xb":_eglCreateWindowSurface,"Mb":_eglDestroyContext,"gc":_eglDestroySurface,"Ia":_eglGetConfigAttrib,"n":_eglGetDisplay,"qb":_eglGetError,"$":_eglGetProcAddress,"ua":_eglInitialize,"rc":_eglMakeCurrent,"fb":_eglQueryString,"Cc":_eglSwapBuffers,"Nc":_eglSwapInterval,"Ca":_eglTerminate,"hd":_eglWaitGL,"Yc":_eglWaitNative,"c":_emscripten_asm_const_int,"Fa":_emscripten_exit_fullscreen,"Ja":_emscripten_exit_pointerlock,"g":_emscripten_get_device_pixel_ratio,"e":_emscripten_get_element_css_size,"t":_emscripten_get_gamepad_status,"Da":_emscripten_get_num_gamepads,"_":_emscripten_glActiveTexture,"Z":_emscripten_glAttachShader,"pa":_emscripten_glBeginQueryEXT,"Y":_emscripten_glBindAttribLocation,"X":_emscripten_glBindBuffer,"W":_emscripten_glBindFramebuffer,"V":_emscripten_glBindRenderbuffer,"U":_emscripten_glBindTexture,"ha":_emscripten_glBindVertexArrayOES,"T":_emscripten_glBlendColor,"S":_emscripten_glBlendEquation,"R":_emscripten_glBlendEquationSeparate,"rd":_emscripten_glBlendFunc,"qd":_emscripten_glBlendFuncSeparate,"pd":_emscripten_glBufferData,"od":_emscripten_glBufferSubData,"nd":_emscripten_glCheckFramebufferStatus,"md":_emscripten_glClear,"ld":_emscripten_glClearColor,"kd":_emscripten_glClearDepthf,"jd":_emscripten_glClearStencil,"id":_emscripten_glColorMask,"gd":_emscripten_glCompileShader,"fd":_emscripten_glCompressedTexImage2D,"ed":_emscripten_glCompressedTexSubImage2D,"dd":_emscripten_glCopyTexImage2D,"cd":_emscripten_glCopyTexSubImage2D,"bd":_emscripten_glCreateProgram,"ad":_emscripten_glCreateShader,"$c":_emscripten_glCullFace,"_c":_emscripten_glDeleteBuffers,"Zc":_emscripten_glDeleteFramebuffers,"Xc":_emscripten_glDeleteProgram,"ra":_emscripten_glDeleteQueriesEXT,"Wc":_emscripten_glDeleteRenderbuffers,"Vc":_emscripten_glDeleteShader,"Uc":_emscripten_glDeleteTextures,"ga":_emscripten_glDeleteVertexArraysOES,"Tc":_emscripten_glDepthFunc,"Sc":_emscripten_glDepthMask,"Rc":_emscripten_glDepthRangef,"Qc":_emscripten_glDetachShader,"Pc":_emscripten_glDisable,"Oc":_emscripten_glDisableVertexAttribArray,"Mc":_emscripten_glDrawArrays,"ca":_emscripten_glDrawArraysInstancedANGLE,"da":_emscripten_glDrawBuffersWEBGL,"Lc":_emscripten_glDrawElements,"ba":_emscripten_glDrawElementsInstancedANGLE,"Kc":_emscripten_glEnable,"Jc":_emscripten_glEnableVertexAttribArray,"oa":_emscripten_glEndQueryEXT,"Ic":_emscripten_glFinish,"Hc":_emscripten_glFlush,"Gc":_emscripten_glFramebufferRenderbuffer,"Fc":_emscripten_glFramebufferTexture2D,"Ec":_emscripten_glFrontFace,"Dc":_emscripten_glGenBuffers,"Ac":_emscripten_glGenFramebuffers,"sa":_emscripten_glGenQueriesEXT,"zc":_emscripten_glGenRenderbuffers,"yc":_emscripten_glGenTextures,"fa":_emscripten_glGenVertexArraysOES,"Bc":_emscripten_glGenerateMipmap,"xc":_emscripten_glGetActiveAttrib,"wc":_emscripten_glGetActiveUniform,"vc":_emscripten_glGetAttachedShaders,"uc":_emscripten_glGetAttribLocation,"tc":_emscripten_glGetBooleanv,"sc":_emscripten_glGetBufferParameteriv,"qc":_emscripten_glGetError,"pc":_emscripten_glGetFloatv,"oc":_emscripten_glGetFramebufferAttachmentParameteriv,"nc":_emscripten_glGetIntegerv,"lc":_emscripten_glGetProgramInfoLog,"mc":_emscripten_glGetProgramiv,"ja":_emscripten_glGetQueryObjecti64vEXT,"la":_emscripten_glGetQueryObjectivEXT,"ia":_emscripten_glGetQueryObjectui64vEXT,"ka":_emscripten_glGetQueryObjectuivEXT,"ma":_emscripten_glGetQueryivEXT,"kc":_emscripten_glGetRenderbufferParameteriv,"ic":_emscripten_glGetShaderInfoLog,"hc":_emscripten_glGetShaderPrecisionFormat,"fc":_emscripten_glGetShaderSource,"jc":_emscripten_glGetShaderiv,"ec":_emscripten_glGetString,"dc":_emscripten_glGetTexParameterfv,"cc":_emscripten_glGetTexParameteriv,"$b":_emscripten_glGetUniformLocation,"bc":_emscripten_glGetUniformfv,"ac":_emscripten_glGetUniformiv,"Yb":_emscripten_glGetVertexAttribPointerv,"_b":_emscripten_glGetVertexAttribfv,"Zb":_emscripten_glGetVertexAttribiv,"Wb":_emscripten_glHint,"Vb":_emscripten_glIsBuffer,"Ub":_emscripten_glIsEnabled,"Tb":_emscripten_glIsFramebuffer,"Sb":_emscripten_glIsProgram,"qa":_emscripten_glIsQueryEXT,"Rb":_emscripten_glIsRenderbuffer,"Qb":_emscripten_glIsShader,"Pb":_emscripten_glIsTexture,"ea":_emscripten_glIsVertexArrayOES,"Ob":_emscripten_glLineWidth,"Nb":_emscripten_glLinkProgram,"Lb":_emscripten_glPixelStorei,"Kb":_emscripten_glPolygonOffset,"na":_emscripten_glQueryCounterEXT,"Jb":_emscripten_glReadPixels,"Ib":_emscripten_glReleaseShaderCompiler,"Hb":_emscripten_glRenderbufferStorage,"Gb":_emscripten_glSampleCoverage,"Fb":_emscripten_glScissor,"Eb":_emscripten_glShaderBinary,"Db":_emscripten_glShaderSource,"Cb":_emscripten_glStencilFunc,"Ab":_emscripten_glStencilFuncSeparate,"zb":_emscripten_glStencilMask,"yb":_emscripten_glStencilMaskSeparate,"xb":_emscripten_glStencilOp,"wb":_emscripten_glStencilOpSeparate,"vb":_emscripten_glTexImage2D,"ub":_emscripten_glTexParameterf,"tb":_emscripten_glTexParameterfv,"sb":_emscripten_glTexParameteri,"rb":_emscripten_glTexParameteriv,"pb":_emscripten_glTexSubImage2D,"ob":_emscripten_glUniform1f,"nb":_emscripten_glUniform1fv,"mb":_emscripten_glUniform1i,"lb":_emscripten_glUniform1iv,"kb":_emscripten_glUniform2f,"jb":_emscripten_glUniform2fv,"ib":_emscripten_glUniform2i,"hb":_emscripten_glUniform2iv,"gb":_emscripten_glUniform3f,"eb":_emscripten_glUniform3fv,"db":_emscripten_glUniform3i,"cb":_emscripten_glUniform3iv,"bb":_emscripten_glUniform4f,"ab":_emscripten_glUniform4fv,"$a":_emscripten_glUniform4i,"_a":_emscripten_glUniform4iv,"Za":_emscripten_glUniformMatrix2fv,"Ya":_emscripten_glUniformMatrix3fv,"Xa":_emscripten_glUniformMatrix4fv,"Wa":_emscripten_glUseProgram,"Va":_emscripten_glValidateProgram,"Ua":_emscripten_glVertexAttrib1f,"Ta":_emscripten_glVertexAttrib1fv,"Sa":_emscripten_glVertexAttrib2f,"Ra":_emscripten_glVertexAttrib2fv,"Qa":_emscripten_glVertexAttrib3f,"Pa":_emscripten_glVertexAttrib3fv,"Oa":_emscripten_glVertexAttrib4f,"Na":_emscripten_glVertexAttrib4fv,"aa":_emscripten_glVertexAttribDivisorANGLE,"Ma":_emscripten_glVertexAttribPointer,"La":_emscripten_glViewport,"m":_emscripten_has_asyncify,"ta":_emscripten_memcpy_big,"Ga":_emscripten_request_fullscreen_strategy,"P":_emscripten_request_pointerlock,"va":_emscripten_resize_heap,"u":_emscripten_sample_gamepad_data,"v":_emscripten_set_beforeunload_callback_on_thread,"H":_emscripten_set_blur_callback_on_thread,"f":_emscripten_set_canvas_element_size,"k":_emscripten_set_element_css_size,"I":_emscripten_set_focus_callback_on_thread,"y":_emscripten_set_fullscreenchange_callback_on_thread,"s":_emscripten_set_gamepadconnected_callback_on_thread,"r":_emscripten_set_gamepaddisconnected_callback_on_thread,"B":_emscripten_set_keydown_callback_on_thread,"z":_emscripten_set_keypress_callback_on_thread,"A":_emscripten_set_keyup_callback_on_thread,"td":_emscripten_set_main_loop,"N":_emscripten_set_mousedown_callback_on_thread,"L":_emscripten_set_mouseenter_callback_on_thread,"K":_emscripten_set_mouseleave_callback_on_thread,"O":_emscripten_set_mousemove_callback_on_thread,"M":_emscripten_set_mouseup_callback_on_thread,"C":_emscripten_set_pointerlockchange_callback_on_thread,"x":_emscripten_set_resize_callback_on_thread,"D":_emscripten_set_touchcancel_callback_on_thread,"F":_emscripten_set_touchend_callback_on_thread,"E":_emscripten_set_touchmove_callback_on_thread,"G":_emscripten_set_touchstart_callback_on_thread,"w":_emscripten_set_visibilitychange_callback_on_thread,"J":_emscripten_set_wheel_callback_on_thread,"l":_emscripten_sleep,"wa":_environ_get,"xa":_environ_sizes_get,"p":_fd_close,"ya":_fd_read,"Ka":_fd_seek,"o":_fd_write,"i":_gettimeofday,"a":wasmMemory,"Ba":_nanosleep,"Q":_setTempRet0,"d":_sigaction,"h":_signal};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["ud"]).apply(null,arguments)};var _webButton=Module["_webButton"]=function(){return(_webButton=Module["_webButton"]=Module["asm"]["vd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["wd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["xd"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["yd"]).apply(null,arguments)};var _emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=function(){return(_emscripten_GetProcAddress=Module["_emscripten_GetProcAddress"]=Module["asm"]["zd"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Ad"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Bd"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Cd"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Dd"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["Ed"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}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;noExitRuntime=true;run(); diff --git a/bin/web/anarch.wasm b/bin/web/anarch.wasm index 64a1b5c6f2de92256f4c691402e82a3950b672cf..f5f05240c7781a6c10748d2e89aad13dc46ac8d7 100644 GIT binary patch delta 94245 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

q$QPQ;tBW!luxB(jr)WY`mdW_;)neV1 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 vvgbl@-VLp`!1)MBuyp