From 6be8e4c4f36955a68cb4e30512d3c8ee6c6976d9 Mon Sep 17 00:00:00 2001 From: blankhex Date: Sun, 20 Jul 2025 12:35:29 +0000 Subject: [PATCH] deploy: ad5a130e8b592a814d98a83818612b29b1fcbb71 --- index.js | 2 +- index.wasm | Bin 1385748 -> 1385736 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index ce29a76..6858b1f 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483408:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483633:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483780:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},484014:$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},484507:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484575:($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)}},486227:($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"])},486637:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487722:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491352:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491435:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491504:()=>window.innerWidth,491534:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406748;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483392:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483617:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483764:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},483998:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484491:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484559:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486211:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486621:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487706:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491336:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491419:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491488:()=>window.innerWidth,491518:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406736;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/index.wasm b/index.wasm index a5ceaee0474cfe5f6d6d920afd250a22645e09a8..f033ecdadc27d3170689b64f8a17b03607e025ab 100755 GIT binary patch delta 145161 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%0Ao@x%`2P8G;i?pq zaqG|Ssz_>4m0mq$hYDAvXAaLCDyAyMYRo-cxGKeHOg-YR>OvUfGO|5K{8xJi2jeiB z*Z$)FlDMbNQU4U=qP(O2x0Ffd;A5aJ@Hc#aKFP0z<1qXTC~xg#*cZz3KLIlkE*Ziz zAuRK_zhBMM*3CH>6ea8W_Z`F^>a3Z)Mw#`#-8tAOeB&z+ORk zs~3))jE8$KT>^0T1!wm`bIl3=^-7_#DwI_Vm2LC8KS6N?hk=v7?7CC_mT*LB{3(Ch zjm4eVii5rN|N1UrK0hY10r~MPkp3Z^Y`w)n)@rxh<$2uSc z)7eo<1>c-Sc)%#J4)F-z`u`I5((ol4l6I*+d0GT_ky)EF{%T+&-FgOWvHA3nCo~8} zrxU>IavYyTV+Ghe7UFmS7>=g_hmm~1q2fZc+=vF9O^1>2DNy$F8UL-YxqkIo|FiNT z&P^x>yvKg_zJQ2rOQPo?U!W;wyzP@UNaAep1@6ZOT-(J5%ELbL4e^1|UM0eQ ziVxhV{APCc2YgC#Z%aoNZH%9;Py5;#i`dXWAUS2xYQ;FYPBB(|s(|+Q53Lf}1;>mc zNAU0s=1pP?0|7@Qrmq8mHiZySV!dodXKx1t11sTnd-a6CgNl4BE*iv#c7ita?I~TfuLWWZ$PN9?2u4NGOHy5xl;E*Cjktd=s++e znZGR&7~w2|lS-UyA`zWcGLRx|i0u$06wW6JASk2Fl_di+GzbK8Ya(oM!r!bafp>iH zw{g|L{TMo8cD2CIaCBi}G%y^qOQ*t{7x1@HjX(|t1lrp=P#gZ}Z35NdPX_;UuuY%} zyT469gHMmQiCv(k2;l?af7ws10~mHF2AJ2{1~357mu&+z;LoYHfF-q4z61oyjzSy^ z9-V--Y3D7#UTzn_C`B6z=cF5fesC~itP$7_1@3B3D2{JWeYmOv{Tb3BPzBGjh3m&v zqZk70ToJ`?#Wp&`0MV{v;2Ovq-;prO=|re+>=Y=^4t9i7vN`Nz;hgI`5zb>edFni* ztTnrI4m@7Pw!W>^%7*@d`*h3JhS=}0sO)-MppmkT4ZAJS@xNF)9=R>>Fg!MU_w9jR zz77~0BDEs&TP2L9P&Ks-Q3AhK#;*`Q2ctKX6<@31*CZZ!p*(#x&khLm3SJaQlLrTG z@dMS43<;F4PpDPG<|=a}Bx;HHwF*aqqh>Z98fX;{RfjxiSCzd=PAx6)m%U1|`f4tI zFmM*DE_yUjzM`|$pd(1d*N+A=u~4aDcA@f!M8zl-if~G_92U6N&k>io&eqFeol3k8 z?~b`VJD^x~BA8nmbCXj`2#m|%*YdnhN#0JusK6c{N3|s8MtGf4l*@KM1M)b>{Oy^* zaSSF?T(=l>>oxPeae?mfh0&HMIML=Pum)40;--m#2EIR5(S(XxlDcdKKD!3d-E&#b zcLP1m$%_K-_#IzO_yH6I-HBOu*Y1y=d_kL%5T zYXX(y;Rh6}#_FyKB(cbwf%4|Mj{|3w!k;Uz3;gN>VhybnEDL{9J`3QV5!+!Vf0`et z!yfo7@PP3BR;3EO zk`;nx<=()IKTw`Q`99{}?*i$v(s?m60kiwX#DM56EN6dUg*`9e5fS##fxtTZcO3lg zdN8oq{tf;|Gw@TOiI_<6fps_(*yTInX-1f)n{7@_=CSWoK=W*#&2eJ{4EY~sSD^-JGd#V-D zpGXSecC1?Pmtq^63&jvn(QPqktESmEHTb11TVgk8_Nfu9Eoahsg|4}vX0X{GDPOX7 zu-bY03@Fq$pR5x+BxMbWh~!i*A}p~{iPMtD&@!jh3qB$7IKKoi8U)Awf$|K>w>O(- z1RKdp=S7MEQtizzGlL)d+|;g`YO(90CJyEx*_f2dWg}bEC78y}GzlIORcSD)T1E|1 znmVeM;NFMCM(xT>X(EwU2}C#PCw(veoE>djTngEM@s z?I}q`s#-;?YGn|^YkmM9&{a*93I0 zh!^9Wh+|sS9Sbjsk28<8XpMbU&YgUHXg2K@gexRDY<2fwS2-YoShr8vWH;%AtX9Rz8Y%+^0&g|Nm!Ivm_F5dOQ;JI-;cy1gv3D5$wf^}r@ z+>^h+u3wySgteU&e9Zwb0PZZl4}N4;a8x1pkK!mpiwFgw`SNernLcxa-xRx4 zhl}{pLeV+d;CaELg}QYA8^K`gxI-@j>tgJ-nuaj*7PVQ{fF;mk+g3XTjE zYB;ng*d&AAK8KFQ6Tih1zr`DQ(6JCu3p=Lsj?q#KIyQJwumR_pQNZCC-YVM%U3+U$ z@J=gEGpC1#)zTLS8tYKL_hEY<>nde|Smoy5cI{y40>XN;IF16<=E#+)EYlW^;_W zHT~V76`1-CyTN`??W=c#R~6S@YtycVM+AsW?V#GDW^jLTtqogdR|9tA-9v^mmj#`H zeK8gVpULgs3-+V2_rcivXzYD7_7G?h#y%ddXJMZdKK5{&ftWh~Jtr5^<>ezRygZm( zYV$nn00c&RHge6&mIvvYVE&3=MVJosf_e(z;7KAdrIIg zi)vW1O%o!e1O9=r81kmJ6M^WS{yX2u%GuD*DLLfP;)G7h4EH1$mem4N$VtMhoy zYF6-JFkL-q{XCh+l0OQ55FTUw9>WSg3a;ui=4DF*aRk)`pebn*zKi?PkTVr{UO zpV%V-*du}11DuqgiV}!DKui;R_&IyPjW}YDPuENKfL8;#GVy;FOe>G$;5JetJ3=VO? zOb14@+~%G+)6z4S;22ItoJ(aYp?r|1wF2_AR`Q-;EjX>!X-}|4dDwfhSu*Me#>08D zh)v!TOt16v8hozP6b5McPGR}gT5D*dats!dxQ6- zegJoxm-6RuAZaLY6i9;r-Y`d+`rx%(#n{6(>^-TpYhw&6!vM<<61eK2y zjAK^*E;w4r+6^1h7+^@#UhpfWvgq_3-clIYx$(LN6ZjEqM!Cb%4KfX0nkcjcXh% zbMgM*%M?@NuL$xYcHNB+@v%5K4d#O=63#;sI2$2%keuei=MuK`YM8$*F)})! zX*eGFpE%O*Q96v@@r6{Ygt=r_!ZdtSrpL*I>hR}5{%6l_Us?05lL@16c^V_@xl=`E z4LVa~R=0CSW~D2kqT15pi_ALU4^1orLqI-NF;69gd_m|!&(a~>uwIlJ!cHD3M}PXK zhTypb_ClrDc~#hbNudr3T! zRK3J)^hKV#bi)l+g<2zok277mHfk&8;M$>d+zd7vhwzXEJS2jLEHW<-rNAGhf%79g zKGGFGHuroi&wg$Y8Vfmp3dY8aKM!L`qdyOWHTm-}{?+u)!|2oe&%%uO-#Jw5;yVMB_4);_gvx* z+`~Q^6zUkO7ZupTdr4BK6vwpAQby?nc%c>dg<$W;I+a<7lbscaohz6H_lE9M;CSOJ zkA&(e?8zaZE9@WphB|(9dcg7H^#>h45*~K^xcd?NhlFZ2|5qp*mD9|ZX=bgSM)R@f zv`__h_GOxnJ*I$G%YTcsn#@L9XHVgr{x5(`DK$Ejh5GP?X9?!QF$6Pz47|d2;8{|I zCkp3mnF!eBuxH0O>X=YxGD0dnk-h?SlxwRe0(SRJw6Q~3D03{t+#k!EE1u^#{dq_e z#$PN*cTKujkXpZZu^^RwDfB#2{9^LM@oAxl@DPeIgOB1&8pR_sU=&}SL8F-SmL~^C z(U|Y~Sf2gowa^n61rVEgkpK;veUSjQ{r5!zRCew~0`$YYiv(!Jo1y1iqgH{nT^dGX zH#QGAvol%k`DAxXZg6IoH(!|_s)Y>Oe-UxZh{eQQGpmJD;Nytoa22-uZ4%d3PU*#D z6s=m|EZ)CXxH7A@F!aDh09273$O%1kQ2@QS_#y#%X30eYbp5**2~hQA7YWdj_d-wF zhk~N<<=OpTl17VcER-{NBWbjmg>%kq4DGsj&>C;Pn9%Oo68cHdGr&qO2_rrG z&jfltzm@3eoV0mgQMWzWm05Hv(X;2)SlQ*xx3`9t;H1slMfpdz6FoQXC%?+4+dUsE zupS3OjiLB0JDfSno=`=$d`IX;$QinamMAGfn8!cuk(Xx-s9{S!^jK zAzYQU_&U@Mia!2zu|+o~gpfS!i}H?U{YLBk~-ni;cSKNDG|O8D*Vk5`}uE3tSp6PR1D*?;crH) zY{mScN;m^a2F7a@7EL7W3Yvb7u>5ASVny=bNYhgrAPfR zx_MwhB)r6h%Dh)Uj4l|Pv5Ev{UfCdg5Q%fDImx+dm(!m;O~PH^lc@R(>r;0n)OszZSkb`it|H3bI>ghuyogLSF)Jo8KXn!b=Dxa#ngbAOx8b8Y-;+SD`8Z)l;xC z`(jBrLly*j#x7W%^<9dcH1n2*{}HTV-&loPWpE)D?^W1eg7}5sK!lqx;jew7Yy#%E zVkU&}3%^Xu+N=t17DWk&t0+~riZ;s&9}q>0g=%(L9lp7Yo->0k_TWX2eD?OHa3VaH zw00BtiVE22P2uj!JhR(owEpL@=3BzQz|Zur!r;rD$98WGcd0OTY!qTWVXQ-csvm;F z!7Ci_dO2&oEqoYaBQ@9_p5iM3FC0gX1@UlgyfNL(--%1$gG~7*+@{1){)BGiYd1a2Brqm?8vNer2gm}JY4N> z2UlIcB@jpAA91j1yGA3ey`o>K|nM4w2L1u7pboC+4uT--Ii5heq(4 z0-U(d_D7z^8<^|IM)CjHCwk`B;4dgAx-#&6@j{Pa!xPwd>%pRFDgU#XAhevRv0QVkye1!~$I$oBCb?4xLa ziN?X#?JP*qodjsCfHL7BL+I*3Hf&EgO~qV#cCUcFxhGt&%RC!z&9Fd0J8-Q5+JQ=V zzky0ab9(|v=Jn4YwZwaIhB6e#a4k#zHoR9^ZYq1jWff&PE59#1R{7eTwJ#i2D!%$5 zhAsU(4&s&?83Q8`9)oiN`{29q{`yBp0=h_~!y}^<%MebSmm6&C{;|?PcxDkVqCkeB zVu_<8*|zV)4V%CR#35*?aDxKA(yw^&3$IpS;9q#}v)o|(@!&v+QrPMTxbN^B8~#K1 zAIb){<%e)j-SEEh;TOg%|eVf(zXyg==3#AY<0+2g8M5FfR2|xKg2u zb4`B=XNSZS-0%Msu2~^(Zj4K3%h>Nfg)>SVgg*G-RWLyH)Je11&*9FB@!HRDxsL}J z#+b84+=X6Tn~US3L3q0N4~2hHMzZ;b!zl*jyAzZZW|tG;D?;)PK|Do|6BkKbp0P^d=^u;$n*y_f zqAD9F=#6IJ$kR0i+gMK!CxVm<_)vJ^?KC5Yo$aWmDPvjnPHJssC%dYXS}*IDImk31 zz@U}!***%c2V6IQ4L!C9AK{J(9XT=Aoi4z{W@3|KDP-C1oIUHPfP$G{!{ z8m@*4UJU~&Hl8)?qJEY2>r$GhK^Q{*j}K%vNffxw1|y4sw?U9B9cg0;&mtPHTS0&m z1@wSsz07StHr=s=Uo-d<-L6mkt#1Aag1S*L{%W_Q80&e3nimf*d$LGZwF-N@s~XKZ zP2A-|3SQD$7TlXrpRwWznb9-%R z8;^=+G`r_2^~TD%)NQy4NJ;}jL&D4F)LV1=Rq7QA&Y|vVQ}}apcl93*Ns8KwOWQTw z)zmb*k+{gn_(a@lNP4WBtdhoQ9BfSH5OU|dErsrEUkx{TJO6F zUM>XkTd456f&qx8&ilju2{oV}Q+mMLUwQ1q9?+|NcDjf9Z}>B-r`o^7dQOTsATKD~ z$hB%8&!>M~tEMY!*z4D-9Rb3DYt?RWXS!K0wUM&f9N0_kpp@9^0I|kgex2Ia6%PXp z+NdMsC&fc;cBASF&WUd{iz~Yn7`4<*sw+4r-t-c8!6-uN{F_wA8_o6LqL<^E9fkm% zlrg%TdFCdyni2t~2AxVTs?!_mtRIUn&tB=RMp)0@YH}i%vUt}N=A_{>ko~61k|vbw zsVFPipb4zzBYzgjUmQ-Ku^Wt)_$~%mv{m4D ze4*hz(?|U$Ts9watNMU4jqSTtZ5!J55}7eyvh==cT9r|6L=E^qXcx<}JjiXp02t2$ z`>KsFaz#^LB~UfBeMumcU`**tk{0_`INS&qR}qbDwym$)qJJKIJMZ;zu7$yz1B!id z)|z4(;wJDz0~bVH0Eued6b_<}c%41iPyJ`lrUfy37 zZyk`0`8s>Jzj}M2DOAv3y&o?_-gKL4*q0%lmn#9f`#s(7;oWSALSKwreH zkhgFR1ymm0#FZ2=>Y$|;fk@tnGIq*+0k<~Z8;#>PPI(j6K>>R1j?xv&jRVwkSW-PN0f@<5%R+P zTzioEO#R)j`8rq8+A2yG3K`wWFJAyy8LELG-a107Y#ti~%ED=rCwZm4dG$#3pi60h zyTYk7NZ?;R)U7lyqB9LIc7S3&H+;seG*GPwGAAjsVCTBOqxlp>4P$Iy}AmyHm zM?2MS#7Hrqd&aE!Xae{^y|3BoiWzv`!PQ6y+`vRpAS*b?yNu>%xGhB^jC*Fu9z7o+C z%XwZ+Yi7Z#DB)G4i7S7{8|?-G{^x{HtAyaRacWh`yS0I48;;>b5ynGh0fCH%$_UkE zJcIzKW9CW2CklRu3$Y!l(3E~_oca$LQXijIsONZEfz(&E7u34)#R`y}MyY>-y_=c< zVpiarjJ>+|1(hC1$$dd`R8`E_^@6&w5cMDy7s$FXV?)hbOa&PtO-)3B%%JyAFQHJ~6|uTpy#J(@MK z$oCV~8aQ!EOp=ci)xwO1lhmH|Yz{ZT>PA+u3~w=|hlhvU(o4Ey78;}J#0a4QOe{)SEsgQgaddYqt zrQZ~_oXvRk5M0(2^>L)i=_zUo&P!~k0c2Q0q5;)}=ussSVp#r2C}{dEche0;b(+Bq z-J?gAw@Y_s*yZcTMKdmJ3TGnfpS-AcDtZ7KVUctQyCBIbXK>g#gBxSX2btPamUIsQ zu^tkp36}hkshLGLdl?pKHdU>KMC~_KvRYHj7&*1*VWvnx*h(`jd3vh)ic?Nnq(0^r zmd&B4#R<63XpW>NVZpfr7aA^7UoOf=FF!w}Lx@ca#3uT(IvzW;_+_=542kBCgvn6A zVl5@)mH@d#7!4p#?6Q)EA7hu%>Imz!LeN)EQ}-h1hSSw*HUqYnz*=LM{LwZsSDrTS zdl;~-s7?&n7C}f!Q$%3dGi2Co-)d|(a0DO#sV_%#@iL}Q;Z@!{- zy+RZMl3`;AqJ!OPT(kpX7<5^R82*r`B_vQsgx2y^b)SR=O$Oycr;`NO35US%iAfi7 zGJR)+cGqj_12xvZlLY9bf`E?$vqLfTLGW{+v6(*8M|{NT+-vG86wREm;%PgBtRn16 z7uj+bqF+>jSB-qYe8znC%M7)Lq*7jdG!pfJ?JpGQ6^Kdynd-B??3dV(f2)@((^=*_ z>a~uaJ?E-j!tX0eJgoI#?_%3*bubhfI$OP=Ou>v~#4%1=;mw9h-F?|p+040WB9vY< z2ew;WKRdG_^VBf-67T;v*s#1&`3u`*S+A=h-wei57D}|_Piz6s2F#eNR7o`6OC`=ao|4l&FYbqJXbpvWr6Urzip#L>EdJ;ujVOud-+~kG=M` zdM{uDB)l@5>-{Q$jkbYdLH6wewKd>q!55``>nFJgB!AjP!tfTMlZ5ldPrF3OH&%S3 z!IwW}k%JRmP~=Z6qCRVNW4^vcFV<}`eVa(GoU)oCT|4ja4Q zjKcKle?U#eJ|adjP z5&}eKsvpG#;mqZWdwfu%F<9QDNXom124y6xzg$gfWOoIFCOd}4I|9%y#zuS)>t#Qn z)v-+?900a(xmsQ>z#a5Ng5X%O-OE*atTO9CO+2rLL&7?*P-jUi!c*1hjbv?mYt>kK zu38hB#R-QZ&^?r^jwGMV$(7P4Lu9D&zWNweneo2bz{Z*~w!N-Bp5~f zh~%P?8TO%?!m8w{0}=6O^3*gNaYE?bJhcaAgjTEV>#)3uB8pGB z9pJV#@?kEbS1JzlyL^<sc6r+P+(ObVSZNFgMFt zVzVOfhy=%-fB2i_exx=;j~haCi$#oy8=}(*a3BJ9u#C~!=u&wh-s#z<-oQ4OF=xGE zlyUUMz1PqgmNh@Ho*%1KYq|*$t18X#DIcr#E}$$)-5)+y8(ctH62vXns*T&79|x~I zjyDc90kx2%rO@16uvV>zq6?|!mCWP>WP8@CiQTLc?rjJ3y3$CYSJ)cB(l}BGnIOvD zglHL@{U}&i=TFqeHbD3GfdD9-z)^T(%mL8rjUs?+8~`12wF0%sF?4#JBridq(Zyt; zUP)lsew|v+7A)vpG9O!~u2bYL1WahykivaZ(NiL3`sZpbHfBBF-8;2jt!@J$MyT_d z`t1e5XpS-rs#h!HZUcwXeDQNN>`Tp#B_D)cK~w?rq@fhsFisB3gbWXDqw26sK=nJ+ zAE~wW8`bJUt#MH(gCn#fj73INGgY+T>%3zqBtAadta!vB@rX84kFjH(_g5`a(x@KBi>1X z;@=XXR!4~4aR!oW_s&gfYe9A+o}SMZRKW?rR&7%Mc|P>X6?@%g^+t()MHl+yT>W@6 z_y2La#zdct0m?7ZlWlcF2z2R@jgmJuE}H0cGI+Y=uY!HL>&x@^iF~Z5zf^n5J|(;Q zL>|<;x2RQn2@+pWpFokJZBl4pqWA>|2HmJ^+ZOfi^N~FT3*PaSdZk1$)rDepEbz%! zYI5rNQA88AY+4bx)v$3(Lx^p+ssqvm#Mm5N6Kn7pRgfQg&_gfkzeWIER+3jiq*PQ>&ruQnst9cJ(@t0q3IO&>`lu-l5jC zbI6thDV4%r*rB$=+>JZbj&?3dpy*EZ=4;-XroeHH7IC;;KYJRt*l-JLnw7>axJgzT zr}=YM8s7qW(n_N!01$`_`(&rYfuz{)&`SF6FLTHU;TJ275cXSX3j)oWtgj^m674x( zt2cG{%)%3K`_O^gN(XLB9k{*i#*H}Vs&CX9HU-Ec81{|&4w5Ewm&_pb-+z}n5;MMY zWS|&i<#(%}N-l+%+_?eYKX^>^pV5lDeD4 zSbdWq!pZnQU6suFL7kqO7Yjcjqix16$1a|Cpu&%TGw(n}_VtgT&S5|=j*B4qfSO#( zVhgV!N+Zuzlyo@Q(}X+(;|{3H{HZg}KPn!=XKh&dss^nh7b42 zpui$sAq^YrXo6(&u*)aoU0FD~>2U-&=Lu>mTu{cbhmWY4(s$4hoXM5Ih=D))K=O`Ut#M90{lyBhwRthzp8J`gclHm8C7&Ap&-7lkN~g!#t;X*n>x;S$7(V`zGLFC4_Sj_d>8)yV`>wdH%K5Z zfQ+KBlc2$3^lpXQ_|d8d5h=u%QF@wL0*N~Cb1sSuHuyKyz{%po4kal2`8Tz$u=d~# z6}&(*8U+Zk5>XmdWR&$Ntt7D_$JJ7zELev4zC1AvB8NsKn|55i+C73m;=&_HR%FQ& zPTQ77O#mb7vF8c3BjU_XsF$HZg{?RjQaD6@TwmScUPgtTUGUn1U^rj}@_|%4DV>XG zJTl{?nuIO(J*h@pS}me=Xz7S5*kTX?+>(N}p!FGcBPvNc(DwTBlWGbA`ue2Wu9XD{ zjYF$ORRlzs^y8e$g^P!xWc1ziyLz?Mk~k+?#ULmeitN+h)o$2mrBiA{n*&oY(8q1+4VNSEXRXp zWcJlgfWfPQ$ecT+Ru(IkXf0!`Z=fU|nsFAi+K7$HM+@yH>vJ7rGE@-LyDowpa9TA4 zUq;iZgy>*BEb+l<^z`FG7ofb8AQMZB zJj;F88_&wK6^$_C=vnnf9H8#!6_4CM{MjhYK?S)9YHIQ-@7`9ijQHEt~q<0dl+^PQ(BmDGC@iB}ra> z0|?a@rPgAp1gT-Yk`obSDG8cz%G1)~<^)Zi^2FmkE#lT@V@?$NP0pyP3EEL5RknkO z!l@tE0FX3Y5Y{ROZ~)e@^bz&hyB7eU?_z|Cn7+?b%3g6bP~Wq zDXvwrMO!*-6p9ko)DmaMkR0t4?EiLEOG_7^fIZMR3BR$eR7~({sWx7$jwaa`MJMZ} zX~(1+l-SWr3>147pc)7Wu65M*wd2=!4NjlYx^|u5B@caY0c=&Th1E&+alCB$kbFd( zz49|YS_eN9i`x_s9EY;g0$djWv)(1NG)dP$3QA6*M7k`PP8dY%Ayfxl9j|KDhr(

tKJZsRy)8E`c(Z8f^#((Q8v_umq!%mjg4oXnuL-l|nQ5!6)-7XHg2OtK*bthspd%1P*HptbKiXtp?5A zu`H{+_GCBFdP_J>Ehmv=0q&dw`v69iR-)7k(2o%?0jLQM=NgHSfh39suf>oAa^TR;R%_f*smhB!a;94xcyf%vmGIPfhaj z{qW+MceBY~Qu?7$9J2eWX%C=M-djzpgN6bkLBq{?h4$VNJ60>IRU2Rx@GgDiuz;&2 z4{#->LQoD(u5qdoQVu55T~0*u0KFB}90y}TDWM`rbNSHS>`{n0Tz+&w1MLBeL?u0Z zMEk;mjl@DIi|(qx>27inxJCOGjN>z^L6VG|IS3 z@|Cv3U5<+c4ij#lI2j-JjU1Z^g_Jvvl`mDRjY1!>Lj`U@qJ1MdR>;!|Oa<_wIS(dy z)p;D}BU05IBe>2ASCkPhHsBr#!L+CadAr8DxO7j0>kd+GqP}PAQng0c+NGk22vrP( zcX0%60c?y^3}L|yv?TNkIL_aq%4glHYe{ubKneRy-~yZiYj}Y>Y5hsnwVBdJuIl1P z#D`szrlrY?7ZyJzx%d%RR2G%VK#=0r_z?GWp7hZgg$Nc!n5)yYWZ7tntI<>}a1siL z)ePTA!o$W+4S$Mp z6Z*#cv@pw)!-f-|t*WEl+tF?rR$1~KpJR%^Y=>iaFmt3g!*zQJB>)>zS9=|WPo;FN zy3McNsp=SUxK|Lc?iGj;lr{@+UOYc>hn#}SL`-Iw%V7GbKs%wh-IEsPIa{8t^+rD( z=PtN-fX}q!DFCq3ozFhvyl1WIX>?rWj(S=P+f*jo{f&CsHQ1%!>uGgb05oJ;ufgsZ zC&yI@fg0LWtWSN-aaE!mbPdrbQI8;T+OsM3wfkDTF$Ocnv3KE}`_Lz-%#Sq^DOkG( zT6G&u@5H|lG+$|;B?`Apw2~K1oaPpXR%Wl%*Y5P7tGm#pZ8k1q;Qj(S1B*k~DI_s zTs+nGLKotjI;iX1(>p)9-lfciQ1_L_&MAi12ap-Wq8*n$ z?90a5-Ew=7gaTf=kq3fssbltOqRmmnG%!rESm32@Ff;Mi5{X5ewIn`kHPx;clHXVc zTlDhWGD$_&RO{?|5gP{%t4mQDg@XfKN>EGzn`4c55Lbtl!64Fwlpr@q&1M>dqp>@vB6vb1M{&5#@c;uG z+*+gK9j~|6qJ1oc9Sd%{%P3ci=Q-^u3*u?dko09BDOvS4S__o1ecNz55ozPHC_#2e z2)rp$D}{;ZTJ)B5HRaSE$beGQ7<}zPI-U-el2^#zR%?Y=&Fr8h+A4u`#a(SR+UZPc zCn@8#1ik1wEJ1sK@fxzTUuXzAybh!hUTUYckX{EEusXicO0)P3^m*a1K~N^4X2`R1 zww?CIg$yz32KKqZhd9(;cEo8Gy7A+5Cz+0Pcd7z+L2mg8=K&p>c&a^bYE^qp+`{*| zbG$Tj`EqPA?jE^lRo4)EWpeBxrmYY(+ANq+rnl9a*h6ja__~Dg{cW{r?4FKVNi6kP zN3EJYBfLV`+lMr42Fc}>zp`L7%{A^QRoStQoLmh%X~{P4p#Ww7=%h_T91eDpOiAY+ zN_W=o!Hi*@HQ~}n9}j!CvsV2^yRUo+o2pm==E#jU+4l3wc3=sZr@%cU1=kZq7i>{75CMv(e&fkn z>%!EnS4dW9D1kM!>BBq0$&iWp2$URG+$@4SVXn1cri%>duwvV<(3*=G4T~cX0X^_o zFGv8z>AAw~0rT>%S~H(0Z7hZ|a9%7GcVQJgGbSj7q(nCr?bij_sseuku_`x~-$8{3 z|2KAm|4h`u1S{yKJu2C$=mtn<@lKKxLsHTZ(2qKylhRps)rCR#Dk9mMgkIo;PK%+@ zS6>)(RO=S|LAVs>{Y(ix+o>=~i{04$!k~LKoBS=Ik99&vGr_EVjn+Yd$d7}2Xf1^Q z*T{iElGaA?)7e<$Dl7*C3?(-g#-TG`u&bPPblDOju9-D@0y4GN((NBXE01iElba1G zP|FJo38%8d*@bAZylb^2u~Wm(Ej9vgyFe;F2058VeoaY~hx!qRON+~~jaoT7QViajuvf3n*4N%Mq#I&2Q)9C)S^CAT@=-f`%Yf9?qV#k1p3$wf&+x3w4CvX4YK@w?- zxJekRPjvajCL{L5no;C|baa~hbuNqAIrStLMKu>0<*bR)&Y>(=h>SRYSO(l@VF#|$ z=pc}jmSj`Ud{FzDHM&U~l3FmiICt*FBq&^`s>piWtm#gw`W=kx07ArDHS>JfO^TJ?^WBD)Ku3d>;a0*nfZk3V%#Ilq7NhEN& zPdg2=AeX$fct(L*v?Pd@K#@WEt9B-oq%|W4NxKHIWd_2;wIW+`ht^(h@Z*7+C|@j> za~MUmR7@P8O_NHQBpNLU5fm;NEs0hdHHbr_l#%E`L9bU)7IaE91WAiY-j8w!GKjVs zE1#=YU{~I$)jTiGxU@7U->GGS{*%ccA8oTjt)3k|r0fCb)mwW&Xn= z#Ia>U9L|TC?v>ESO^90(^chz{ewg(z{PEK6DQWZ;9Ou~_Bhv~OIK=rjqg&ir3R#Kl z8QvydkEGpVLK_PcuYWv9tJ_61K*xCmG%v3^pz#9;D#spyk$1iMV6ASUEp(g+?BT&$ zuPog2IXVe9r6H~}-O1v(8gFBdNt7Tc_nujo5FuEqR#(flv!J>c#>W z46kcF2ytiYS+(tbak9)faeOWlnY<|v-m6{ZuyS1m(5u3B+^bDYT|enU?2AgpN?()= z=fAG))r3yr8dDQqbHB8E|0V_-m==+kSBY(_tt>pou8o$mS1tt_$r<7G{3(0~6xrG0 zeQ*gSN!IkTu|xGZOmv%x0R$T}RJ+opj`1ims0lH3h^LPZ)fS}AzaR#<6cQI0@Bf%7 zRA}LY!)}7H9#T@r{?F(LR|5Z!(Xk@y{z%a_`p@jeN43P%gA*@AGF=MBJTF1VJ;t4i zIOYCMlIiw;@m=HCHu|*3wcaV~iK-C9Wn(D5QkHMH?}_Sg1AP#^ks)_#>J8IcWzHCb z0}%C5d>J8|j91XK*ZH=!yo!#>kG(WZOP4AK6m}CS#K=V7HB76F7WnVOG!gX??PYe^ z6WSd@YN9v{!2v2T47jljWG-ZU2!sF|II1rj@>pGRViHs1uR<#n1tK(}$yBBQF zaIG3TOR=2WhTs>#En`CrQ@zUQc(p2c4F-pj5EUYcjtXQXJfEdiCba)_B}7L!Rc>C#%V+Uo{>4H z`(j4Bg~*&EnD!yk( zm-}M~jO>Uq>0LNGR=IVcv<{a-0H|yE%qqO3H4q1h489#o$YHZ&YxR3cD=!3w0bz&( z(*Bn77`hSX>4x(>ky`@5AssT)aYpg=j5EBqd+K+AaGr7O=u29QCi7k;F&X4xxct#z zQ&^`65S!woDy)Ybn?fWaZhKkljnrTDvR2;aUt~76>t!wJGEuuW-{g-sK7**&4w`zm zcWE+aOp|+GWZzvgO=}=&#HlDa+AUyUky0qQIm~zEzaXkx5T#mFb%-M;RY?d{ovyW4 zMzQ|WwQ|)&*T?yy5cmML69l{AqQ#s%UHj0FlCMK^)auLXQ4mLy$^c`D z#UP1?oinw>6w$^=+>gpK;8=*ec?SMCnE`4u%8aFZnfs)KRi35QP{yJ(J!!zPNvfym_S(ma!$gI!5wZ%yD(ywbG)H@w! zXz{vsXV%mgNDReA&iFLEFl5*tK&HX3`Qtp<_6MH5=6O%H{efri9P7!pKk)3M&-t>@ zRFsXw7y7{S$6CJxZuSSBZ5f)fw*7%;FL~C}xcz}=uNjTm>5j(v7qD@u=lRcgs^_y$ z=7PT7$6C(Q=49@B+QKv#XMFQxoCbfkPf_sC)NOHE73dT`#SlktIc=VnZ0s{5Z)kan z@90zJ7jJ5x_#wewS*SG%VCE>cd7(D9%lfBNKvD7M(jaZ@d^!c~qHiF1Ca$Fd``D1m zRxrhjro?IS&`3(W58ZHabmI%&a{C}hyGMl*z=ggC;rC^Ww2adEPp7~MV?9obgO}X& zIAalec#+mtn%!VgMtp)5NvY&7(rUmRg5MTtvy|uAON+Idl6fbWB=sbjm$drVi?#K= zM?YnerW{ZKCgzDiD!fl)M}fRn@n;p9UlU74v36Z^167R>j+610I^m!x>+;|AB`pOpdB^}Uo8;u6&qb98(kx6z(*r{XBKq~ zzFIZlE7q7N+gKuMz(-@(8@vtpYSny@e4v$KXOpP~Ak4Q02^CVQJ0$3S=BKyD}Y_wp6qtOxAXufRp z^a<-h#uF#3MxnUXD5R`Lp@MNJM~S=?Z|ubOf8=SX%o~Nu2oxKIKiFuVvr+2ljC1(j zr>3oiLPzaZ58JImd8<`OS*=11qad4lIvIaS)Q(d~8lYa=bN6(772rIUbTZJUJbbc|17}lKDKj1d_XX66nPV z4fHZ*WSxs5rGY$1>G9{HlBZ~R51;0g&Vxb+ZAur|l!o#ar6FZe8fqBRG#uX3keW!T z(PyH@8wcX><77yFx0{kPAenWx1b&?l$#W2X5R%Ivxr1u0fz*G}@LN8l4t`15J29Il z3n00dCyzq%H=fKs8#SKYNoB`E@`IO%)uux7RS-%5Yz`#f`wt~^&SpgojzKPboxF{{ zu7zYCM{zSG7jndRLvk*Ma1fF+(-GDQNWEJYQ=@x( z9s?a22JJ~XIqbGIS|fOoc*+{>a(J|D!y2t>vas;8bu_%B{XjZ@bz7whtMQ?B1sd-6 ze<&CG)3Av8kk%tu;{LYNC*E7^=~Kh~B)ACG;ky^6R`Su3xP)2_#=wc0NV z=Df2`dc$x9YVKO6_3$Z^&5X~qc8W5Y4gFmE227qF8{i4495#M~)&>4--JmsvKc(`u z3h+X7&3tV@U=$3-C^kM{OV7%-8SC_MOHG|P9);&(j~=(w*J1h&d!ok9Q7PPd+6sxS zPoXttU^3_HBs+Ox%$^3C>z<)JjSFa1A^i{8WnZ^=kBf zk^PB;Bq|NwsAXnN25lWjJOl{~h4GNIP{8D<@7*YTs1cHoC4G$2YlH_I@w(k~8}L*K z7?T!YOwRc}371}IJ8~R8;*cRvLM9gqWuptvd66&jk#L7g=N~^YNFC)c*K(LMoG_^# zWoLntihwS$(an+QV$wnvlLdTK1h$`W$dDzm^==0Hj9eS=G6@)y9B`I_>C@l1DZGwD zhAau$yI14r;-{LtW=IYdPA)oc>nOIKL(OwS&5{lSJ4EF!H@=^7 z$dD!R^}3qC8DRt7DgkF<+JcP96MNi{Kj)AkOG0-0qmU!^*^qZj$e6SMV{()S@CFVz z3-Tmn@Aiw&IA}vIkdQHHLB{04Z`~;8bI6b-0eih$VpOu?jE#=b^Ln*JIe4~`gFWm7 z>)l*;6yM~4>h-ufie+u)U`Idcz}D;Q@)`4=w4}s5NLW$=lNK2;xyBxM&uis`Mz9V_4SPO{|qoVA5&=lk0!A zn?Qk%UOO&CqZHBD0c$&N8|uimh4&7w@>8%@pRw6)GG8`{Nvlar?mlWa$wli94jHl} zWOCl{P9<{5y3+={RRYE&0S5lZ^yXu3$U8Y?$dZr?-)Y@vL*6YRW70wylWTu-1OA!= zhAa*^3yJ5wJmnzXLA!|p*#su7CNPIUbVZxp{_PbAO`N@#{gJwEJ#+&)b7ivb`FzJ&HsG zwh`2%9!|}Il-0$lkhI#H0m&u2J^Z@n5VeP2kMg8w?+4x4EI zOa4%ZBL}si z5*C#(X;BH2>rXowAzi}qT#7S(;%!46NvL|piJNVvt;gHmY&V%No5ZBmBqrCKv76+` z{mdalmV{g%5Mg_EYE1_mJPwQ3QRHrd1pr^U!2-a5?`ZnMAGnJV$DdVF@bCzj&jWE6 z7M2mbG%OVfCqCe!&w#;!e)Gnv5CLwKz-EBr%ks4|=Gz#}gM`%#Car;U zHj{InW~kZ`9AsFdMdBg~cmi=Z2GBVD8>h;Pd$mM%W{;Lw-)ag3jNKF_xqPBpM(!B} zB`gjXYy2(jFj`e&ic`CxT+u(E_5~{fyY>=iZLbQejGTmu%OVXXxejBKzSXMVVs&-8 zfMI=@EI!Z{o!u=B*#SWCi3$m;duwG2nB?XPE3;Rto3+!TqU0^_hkSS-m2+SFIAg30 zeYAv*Neln+Po}hAke!{K7r?iHFk}1fBql`(L zUm&?)EA4mT*MjW?@iZ9U4v2X+M7xO`=HCaK@AJIhXNV7j;BhkG)-?c=2$ly4i(r_v zTF2xv-lSmM5n9Ca7L}!LeSC7P9hriWuz+Xrz;* zHtgtD-H;!&j>2sbEe)}mW@r$~p+2}RXjO!A43|;ts~_NAF8qxYXd>h-{^RA0fsIn5j%1wA&-ms>>YMqdzPy8xLN@oR*`1Ho? z(68F6*yzz&fs^rieXRW3QLVF0R0rKEG)# zq*rg0S`3@C34xoIy2wf%*DBZ`i8&e`=b={zAD2C$vmL-3J=y8w+K$*gaWTk{lYCFQ zNCsJVQuc%xo5K{e9}bGMfg~oPmfEdH@Dd5QHsriu5s5d{`-;q*Z=`PWJ_WO3>X8x0MR%H`EdID?<-rBw!F$3>D{xH`?7t z0mp@OI=8tdRj+Z2)ivpR#PbsP4_%NhK?;)?LpZyvGE3Og^*z||$9FAC@!Q=fk=g99 zE<#n1dp@hW-iVb__3N(`=z=^=AbCob6_VNOmLe(76%(8pz&DwN+(#MAdZg)<JGGqZ;HQ9QR+0xj zKvcmy9VpoLdb;Ib<%CI9Y`nC+j1|AxP;gd%L zfrT5}s}OLR04Ly*K<7A!!6@Y%3_3aWXZ#TUC^SU1# z1L5c&dJ1S>dOZwUG};Nl_p&-*#Oz^;pgGXoxau_*m(d?kQp7MiC?gmJm%XfW zIsIADShP#DZe&w}JD@K+SWf?kHEKe0;Ur@z8G1PphSeUY29QI9#|5P&0w{_L#AHD( z!O#YH{MF7hJS1p{kUuZ4-yj$z(}tKKDn)tZlxU_CkVS5BKC_W5-UyeR6-7=}qP8lI(~ogN&OCQz6CR6)NFu|8K( zPqgC*T_%BE#`-tX(~2DXrU+tPMZK{N!nP8cVMbadonjP$IH=ItqHuEwn_~TjKrkzK zo<-2sB1sGUf@ofjpx&;er#BZxJmhaFDo0x)5kjyV4Wm}hh`WlviiZf;m=PCbR@N)Z z$d=yO+DgJ}#r+kcW#UN~1QbVYYz$i?hEpo*jpZTt*c5Lo0k=iKPJ!%20x7~OChBQO z+SZA>I74e-#vO_Joffkd?wObyHh*`(c9E9tv2IEgy>pQx+7U}USw$z?Kevi5On^?9 zv8#&yJvRGsk~DizfAa9rTC!eBwhihP-?($B^)Z6tOer+J>7gis^9E*9_Dkj z>)eW(tfuCv`WS5gkJ>OQwCf@Ad2E=9%_ zqW3dtdRJ+_yi?eGK{Lea2}GUqnlCTF;~55o9D@IjhQLF9z5+w&Xo#4#Yv}L-`E+)d zu4l0CYUz_$trB_(SS{cO6FzjMa|s!BBq>}5OlISl28>()j)(ToXTY!?P4pyoxPhK< ze#?c;NY~5TGLlp)w}xy>rCwabX{i9+i?&n{`KvC}Qt@^qmZc&)l6qbf1&jsgi7jl= zBw=~*K~7OG>M?8(FHY4FN~e0d<3Xm0M1Ns}kh#Jsmd1{h)_cqLyuip@DN|q1lp@dr z46PNjZ+);ua6;OH7`FR_Rt@tv)Snh@MB7JeN46wzA3O3OSt)ZHauWoG!!4rG1d*)o z#n0mg>(XK*uwxS%-0#%YFFNC-0o4H|3mQD8V)u64@P z#naqq*09GixpsOjQ}z%IAC{M?{}XA4Mukl_v~1W-jr4j&(j9FXHnUM-V}cBoQ;oPW zf#kF&iqlXb#b3yn@KToymQjuMhDBmQmdl35I^A66fFh3#tmAG$UuT@WXp_d z!n=rMYi22CuLg@We#wZ+>CnQYYMdN78^8rySnHf6kUXDnb*4NE!pSS=_Of0SN-wg3!6~5 zl#*dx7V`FKMzMWj;coh52YBwybajbAmkye*U!@-jx(cGvRH$EF*r{GFe7SKY%DFlx zSD*$s_+0Spa$VWV>-Fm*)nqVk)caKc~@I$9PjSX!Vt{kdg$$tBX zo|R$Uj1utpls8^2o>uuc>KV#rrre~j61PgYH(glhWN$z5fLg-$yI(HUm zW_@|H{&?)^O+G8_A-!7Ypf4p%^cvq=uW8?um)QEy5eVKrmm_dC%X&yoI5Gt1JjCT& z%Ug8eOea59=wWcCkGe&FxHRtgyd9qc`54bA2zRgEeptUu`bWWU2eIYzz%~^FNtSQF zKKgZHIfA<{x`F1gpdfX1Qy)FuT?jn&jzZMoRgdTu+5SE-&-Oi{S88JultxvUMmVuK zp`qs#$uLfQ!Gvuyvlfr)9b4ID-7v7{)?m@4NrxxIf*o4~wUgQovWSefZiq06WSBO3Nh^zZT zHoN-{eL(Co#MIy4q1Qn5R$_o&1L=n}m+V4Q6AshzsmXc{kjkC7{fPm5O1?WlPDxtq z?HQm)$W(v+9$h>TNEYkLd-QQ^(OvrU*lN4GWiDyEA$RLlimdlqS!;f4Q5EKQYKUg| z{R8#pu0gf;K;$M35j5i|pvJC&db&#-z#GfP}rIBC| z#ckVf8ymB^Fv5aOly7&AqC2wi6%U*H}>=s^<#pg zpQJ}`d0g+}9$&X5L`w97$Mt(rnq&@>0trorWj1+;6EO_zyM)+>1PLW*`v-%5q)AS4FhN%tsH5b-3@kG0E7zF$v8+ z*kF+Mom2&&2w4B+`VEpS47}1{kO+qXP0!8C^|sPjgL4-_BiDxu#$`U-xDd7x?ZvcM zp%0VH$>ABwgAydI(YLJ7>lfWBad|XX&qOK>9j8~YkBiZ|iF?V#E0Jteu3oRrWIvBO zhqjT^cqC01E$e*B2=-p%9mj`BRQ#N)Un!Pg24Nkn?OOt;HU>$|k-+Shl{&rg$q7x% z96>GO*BLAI^76jxNIYR3ZyeZykIHE&bW8+sB!=C-Qco_1u&&c0tm^x)jrafB`x5Xd zimmPL$x5axnLrN-Szy8{dlGgOO^XO32uKijc4XfS0{2r0i-dhk;Dkj9g6vCxK!cz} zz#Bji5L^KXB7!Uu1O)`m_f~b!^kkBYdhh=|KhNVGsGL5hPMtb+YOk)Y>M~1ttBBoD z(kunVpfLVzr4F^6tyJU2>yV*DGSBo-EbGjjt-Q{?W`C%7?sw%yf)eKVevOh}X`UNu$nXmNyd*z7LKHTL8=SdIPcJe!w zniv<&y7Pz*Em9(Q75MkFq#3>QmNN8@jVlhIJi5usSkWRJU0uASi$*?m!@Zgc-XYM* z%|`PbmSdIjVyysYOv+IjxSNS$?Yk@d9?gU(eCu(|vJ}q&rJ|WQlVuoB+h~>N zl9mZ5VTqM&(HX4YqI9L-HY$Vv4t6`V%t}3Pk?D=E|7$m+b>y4myhjQ}%G)<9|7$n? zxsovs`}6fQ>9i8%?ue`r06HQ+cSmI7N5-Kb{+ku|hjo9C29JHGlw*7$#nY$Lf15n_ zF!Y{Px7`o_FRSjrc=L2c-%-!}dyaYn#c4Z7==H7246C2P94`=aJkLUts0h_`=BGt5aBG9e}4wl-hetVXR21-n&5UF81DGd0gzh`#+q* z*7KMg8&yQC715_yA6^w3^6;h)Q`!Xgn27f}=G>}u3A0)3pz`jc?wi?cF&h_~&GwAH zVVu3`TX8b)S#jvp2TFPOIhP8~xeVB)WXY3g`7R|9;HzEA600U)CSPP0Yt4{9$~C5U z*!|)=LoV}S@nP>@nISjI_1*lWO|$hA*z+A=dp4c9#~LP=IGZlEO$f8;N))kIdBL3-{4mqk z_bQRdh1C6ulUDCl%HetMUS;;5$&sv&j2wCUaIqZu@uUAJN5nc(hp!Yh_TKhyocE_E z-2c+_xd)YY);pL&b9$G}4PUH&Wa?rCjCAw$Vsp3UkbhurP+-t5arsL(mGUnPS;+~~aQPPd2QsW{s-mkEuN}Wfs zF6@}=^Rcwq6onZbjKh1#2 z|0RY7;uX*6PnCi3<_XQdy#(F6mw5b`(*19h7k_FZ{}&A3mD+sqH#6a%n$!O!6Fz-H zdBnTD=z7wRw-;kh`tkN+@kzfbRCq$6zg0o~_f`P@lG&T)D=|gPp08Acy(i_1W_o45 zvg2=MaV!-?yVqR)Pa5g26nxGal=I<7{5fH9bc`|ne)w#YMxIlK#4nm4PTuux%IE#J zDKFBk{;36uzf>WfxTr+nr2TFel``?>0sp?4F!$b>aQLD!$*MHiMD|DP6nMk_N9z<9 z!Q#CF;aR8P^B?2Q;3Yn3{^NBDllyWAJ-p3&55UJyIugsFS5nFI;<6dxBZ^A8?m*p)O95W2Pjv)t~`PhGkRZFs-l^l zeqE{H$ekP8uPzpHb0^03!{*DK`p)ahTG_m?A`VSLI=%X{QrYn?k{#lh7#QWk{Y1Q> zSn;#c+L3A;(d|hm$-h{eV7R6f_lshkg@Zkhzlny8Plv=?jG@0Mwc;}h#fe%TDP}2| zb#H6k`URiLuKc~kpfm3s^v9dZ!*Zrx`gMXyy z*#yql1*uH{tMAzhgOB1R4gb8(FcC`?iv!pb@n7C8F%i?b29AEn{F1)+H5Mi_>4`vA z1BX|q1hRT@p6WOs>nU0$b~}1)Iv3m2_64#*R`ZZ)?5^=-i6|=_gIHJ3&Je!I9eSs_ zyc8EJna6_Imn}bAAS;Sp%lceW>~`(^8CeOjYu^E22k=DzY#UoWU&f8Y+CKpT?bv+Xv@7~)i*OU1S2Ys#$zYM={P|JT#i|j%3eK~9%S~g5L_;Tdjl0Ac%Vx?cvi45~65gIGcW-seY|AbD^y$U54Gf zuQVHL750f(TGb+pZm1S*56&Trq+J*MgXw7}YwF1Ww2-!b{31+|r#ve}iC*nwwX7s! zU6dbI?{9oJz?pm(!Er!_&zG(KXahVld0{jQj5y>+G{{DQ}2O*KnRk8@N zK;Ar(y>Dg7eNmOaDaTfO4*&9$Bu@)!H7hpWJBt(U#mk}hqL}BFS<%e?9L3^1W!M!^ z-7nZB<4*^x$q~IsqiFW5$BKy0A0=0{dKw-vt&3)nR-SraD#;7BSqOvCYOw&E4(RnI zOp!blqq>k7mhL%R1kw44isC6k-pR8PXSRV;P!BOWv*E;&BF!dUj$zMwvJpaMkp>Ts zRmNa3>~lgxjMh{hTI5!H?^KD`ZlWrQqqdkoPnA_Yi=@hJ0ooJG#(R{&-Js&$;Qznf zLgfnVHF*{-tiZb6Uz+J(yI3#V{iPGdR%UHqau;XKfegeY^5SKvy9u{SIzHyZa6?o< zKh56G`(sZ(bQWR5a42s@{&|gO$R;BaqfrSd6s;m7m;Z2;(mc zJ;KC-@RTa-nFl=jhGUG#H5M{)w4B{%KW=bU_Li++39YEgss$7*kI}N}SXCC6;1Mv6 z_i~>&&?9*o8+X~Z;Q&9Q+Su?Je3fdfPQ~n%F;|JiEM9>yhR__lsRR<@ei^&vYe`yZN^&5 z_l^3-xcT8n?jwsDDs@Y`?^K$g-A^jDf0T^~@Z9oFXC7q@?z2*Lqd9x&K2xb~3)b#F zQ|ZOWSu}3L8u>VDZq3YtwSx<=uy7vVu3BR}F$Tq4t1Qhp5fV&y9%pTz@N`>#+5_kr zJp;(1(`fH+?)lge{o>Rhs~Z&q;MpzN6Z|Fd$(Ag(^pX1LIE(auq_kqsJn0o(E$`^8 zL80;OjnKmwIr?EkH;#FAObfCEiXMJlE2g#a5_m8*(p#kOyiRob#=K5J8n9x6@vlck z@!q%T6YL>xiyY^RMIMv*z5%wz*c#&ky?cBy(cAR|)2su%{WR5E8lU8u;~?>t*fO}r zZ9JI)tdG9R_;QP6GnWum{>z^EzDOOpY`c?TeD!X4X~*UQ1h!|Z0XDY3?<&AI9qy-QRjeb)9ocW4ZZDA?dvO&cW=Rr1Hdw-^ zOWM9YB@n0K^4VgX>3Rvo<={*qtJ$npQE%Xn3ZZD(j%SN=!8#l zJ>+ywo{T%_OtuV;XIuVrIew0Q?8NHI=c)WNtiQa4raZ$Qk#p(5GwdPx00nhsPlZph zf~?~~PEha8>;)`m?(WQfma}NvvrL!Q(vaua`{B8Tk~_MSocD8j_<2?*eA8Hu7WtgK zg5G$ZbwN^2JC+Fefhr{3&k<}ZhTgo`W9j1`U28 z4|z^0u;*KNI>!%Mcm~I}SomCy7tj}7*fn_#?eEH_$m{jwZhYjqj?Q;y{kwa`d4w~c zuyi=e@rAf6)zs-zj=yQ)$2dO2!jE(Ohq)g9&p7_;Ts@};%aX?|$@O?#;~w)ZEq~&8 zq3Vw3I!Bki?O~tF@$ao{x*^zid;AR>T2}p;`+sVMpT_Yqvr&D`g#5w@nW(uYj(jST zP1CvmMN7aj_ z{#s-SB@SiHMpv{e){Zxo_6OxCzHdH|PQ1#R%b8Rmg*B3YqRuI-iu@J5 zk-}QY+i6by-6~F9mC73X`SMc1c-G#R zsJEK{<9MYj*psez-((N^veVT!S!RMyDH1l(Fj}G#L6?+qxV@W z@YqaNi>0pOOI#HL_#)SGnti}Of-+{J9Dhdd&15n1XZja2+4J|?s!Z4%Ry)GfJcw)V za-8(nq*gcrJ(W7nVRc;FX3C;5iNZ|~m}HGjm0Mx)GBs6hGnDh6r6qG%g%(A)grHBC z@NjE!#}nQJV3`uH0PybFuo0T1=V$^ z@5(MI+Of~Cp)FWTr4I917h6H9zG*)5^Ya{-=nAhbB@{g>fsQO)p55 zkZa6rRlYko03Q?ZTPOHg2j+ax$whkBsKvV!Vlm;$+bp73dc_IWhFY;=W3|U* z{DE7<_pEB`U9QWoNDBEGL8i4U_=w7NCvZ$Zq|+ybE-ReNC!DE5oW&7WGDk&=qhe8x zqDr=ot7LIjD$1!f6}j*bS8;FAOsH%Hs_YI#ZL*l>Ywjvw(1&HQ#eO&ksq`||3gCrh ztg)P~XDnmAZKcmFcVWSYpMEwqPvrS$y0QWuq1oeHcq1rP42G{Zg;H0ce&y400LOP@ zc?Mu$gW_!03d88cD%Kd)g`BHd9Zx{X2-smYE7NNFWUsad1-F)V!H~7UT^LnuxxK!)k#Y>GPS6L(Q8?>_3rA7kA&(x+O2DSqm|cr2m010Pz@fa$vUq< zJ2yes2}J^(^$Apy2ij=`^17SpJ0I3sob{3QEY8PvbNPi}O(kKwQR|uKQ0v;9e;xRF z%8#sPPM$62*IUM|!x@|#ycC9UYg$%0@1sCn&Y$VS@1V0AysdJ>8Vo*#;@eoOP^dW;e-qB%Du>1S#yTR$inS?c z$_A4sT}G|T@ve2(eG=z;RJyZhtsAt(JJ)ac1QutfZ{5P;RJSo=nlG3?|KY~C3Kpf; zE9EZrXKZlwuI~JJb!xa(XsbWBm6as+Lo~9jtD!7zs&Odt0)D zMPiil-VQcco}1e#9j2Uw>&s)y`iOJzA4b5NPgBfuurS4%9 z;uGjhJZ%?Gv+(quc$$Q#9pY&jo_30-X;gk6t5a-Z@WMXUHzvO@7A<~QKa4#c7?j}| ztq6m=C2YXETcjsMY(ZU#zI{3Gt11Ta z@ipwmqp)Gf9jN6B4-J7qi#8bc2^wcTNv<=jrF?|?oWZWZBQ*I8CbBq=`V4!e!VyFR zSA$2iDZQ~xg1ms{5`HhEbRHK$;*JZ3ir9l;_(bC!g2D7sG~aA|oKn7JuLOV%kNMxS zsz^=HS21$qXfB_me|*Qz*$P%tw{xs!Ou)2_NFfJq3tLnJ~Z*qaO>dyIzetl&ANxyWh0*o zlIoA@-=DTA3v+k{%cY=K9o%gZ9*igK0F01C>@9#C;s3 z&;<@AQ1IZ;xN>hB##4*YoX;ny)`@Sq~`A94HDOK#JxXU|^4%z#|xWw&2^ z@{_$rxg{ED3Z8DtOh`^_+t-pQ5?tBsnV8&s_^?-tM3}_===GtY(L(PRP1XjUEL5x7s3^S4O$?b;w_{F&W5|fh$59`s# zZ62;fW4B-ZQ%FDJTw#Jttp|+LxT3@*z9l0{&aLjXbnmk9r|M6?JYL@c0W2ZI@Co4 zqeJbwJSKFO9Qf&Wn|)MUT9O(XN!h8PrD$7f=yO36ci8OX{ro6yY-m}E9~&B^Hy9iG z3f9W?x5kCGkb|atXtS>hh@flZL(9yY5bD2mLTI`z=#zii?5AyEIE6DbO3#@X`nW6~ zOS_X6s^3WqON^2yQ=NChB1?Vzd!SuLk9$gQ_fFV0IdJ~CAp1CfJ$zYMRhb+|!|e3% zyJ5!y-<=p_pBT)^WkJ@%0`$ZcVOMO}i{)A!_StjtO!~#oQQmLM?qCW_a@3}z)nWdW zg!K?T+21i;mdDe#0gi?N@BcH{zJ^2ln>hSK`HyExiWEe^(v1#>U8x>FASmh zcf!hsepVPFQg#V&w~an|$8nWTz2ji~simK`V;r4X;V5JKVjLx`a;Wk+>Xrj^=6Hj= zX1sytji=e`KtF5J3r&3C1jApSKpVF>)X)ibd*HD`NrKZ(!*8P_!gdF6xg$a*IqSFWC&WhA%IgbQa2T-NE@D%kFr0Jf{M4bx7YW7u-V z9Qtq@yyqA;I}Ip`#vFr<(hYpG2@jj_5}+s>xWk*nr5OhQt_(x$36p-)gz0k)IUD90 zd>@{~8nK0Ycrdv*eYx*U7Nf%uKVYWE!T< zGhoEo%o6gYFjHhY)~h?LLmANLi!iX-ETHmL0c=wj2)o->EHGl&W8$Yx{EmPsgzy4j z+q}?VJ8Z&BCQMso(3hHU*CN3$pU{`Aci?ivHH!_!^A;Ng@$6zF0fi=gVU~gGS%#cr z7?<;=;;M;HU1IpJSYi~DT}!-*$zgc%9KHl7a_}9)v`gPH=(|jK0+9RPH1YJM0!In$ z$}{R?0c_`&iVQ;Yr=g137B4db?N}y+qJDF-eBJP!`L5x+29T?e_bw%@g|~?onsDKA zBh&Te2HP<}uF2KqhNe?j81xk;+ylt{Pn-B114pxVbTg!H7NGLsm0m^UG>~G||ISKb zMudyYL7s1>t{faTz$F1}X{*hwTWy$pmx-TPZJ7M#YGLw-^fe_!uwji6=;Jj8^LZ1F zUuy_myw=F?9R`H;hN9`VT{pdFt`lt7?2!#}*q(J>xq57!VUw#SoVwn$(R!nL0~ID( zZiR;=p!zgAwS`27@at+rXEaaF+>B0E(hv!t{*>|Avi527SEI@ISwi z5_B~A;b>rNi#G`-d51ueHcmy!5S}wP8zI)1FmJOV@hmcrxA=u7ePNElrvvhOe=Nr< zQ_toYW-QDx%)D@mSxpQWacoNod2)4&Ve_e54Y*>f5opg=L)d8(-q~u@Y0`~MfMVN` zH-`<>cFBZk+YGj)+l=75On71&g};Z=WTNTY4JjLF+k1{ye!p$Ei!njiuJ`O>OmGx% zKQU_W7haJ*SrVR+_RS6lTsT~5{hJ+SoKL#)K8>_TDi{{>X}>nSXWzkfJN6pTt4B(m z5#3&sv@|Lcq*j#ks38Yw^qhgc9;C(qn;)dc!cPZyDedz}d)Xf_-5M0^7Sww9z#)d1 zJb0GtjG^M}5VvRh!6SMN>ty<;eE}^l%$KC+YkBe3YVn_tN=Vdcu>l#bvyUzo6^gOBkh|=yK`}*EWPRR zeY#gqcl@VIsV+HfUWi)xk-XE;wM{iyN`YNF4jBds5Y%nJ08>srymR5*-OKxllwJef zqI!e~mEH^y)?XRI1=Iczk+2^OEW{3$JgQ|EiEd*D%RU-tM~c#D8V7l_#_;=?gFL!q zV0K0L)lfvZ)&|yB5iv{wRw3_)Nc$OicpID4x{V)rh_E)d0vvBChTg4+g1(os!CEKU?7}S z#UV+YxVAE4oQ2b={Al17wU0iet2zf;J2Rr}!C2EsLLEtxvsw*FUVFj}SCD-ggDQQli)HOX2D~s>oMgB5yEukJg)$1YI%S=3% zy7p3UgdACJ;`#c^z17F$kla-!;R}83E9xMZns+hEzTJkQuat}bg~wkCl4?<%N$Lvc zbI|;AWMmc!LK3v+E{-lvQitM;x)&#_SFm*4dWzaI@W|CD`%gCdeX?3X-#SI@B+Ey1 zWt!U77MOK2%ARY}6Q-+}R=hS-tr=KwJIX%MMxcB{BS6rzXQ@{zcF*4$D5dIw(h;~> zcy??Hl-h3(l(OK4ycZ}H?8NhqKuP)_P>TN$w7r2+b{^b;Kq>bS!W{{e@{fV|x3{U=<-Pjm?Wz-7%Juyps(OH2j>hJxcjOWD#y+(_ z8_^2&z&1G4#Y581Ajz0X>{mOMd-D-V`pEQ|{g5R6(|jI5hxV(LP)4qSiycDv$Ni1) zhx85y)b2KUpPqA2&9T{jzoYj%tTyqJchj;@)oQkD(NWV69%$B z|09(`?Zyv(;kN;Pa%l;#9v(cSR<`|wVelEXOsS>sfULrs-Z-O1mpaAKvXb_LzT}KL z%TGQ|iRaYjV-$2PwF4xn4&1H6!b0vituF9*xQCoUQhPYGJ>r)PzXZ?|;qHQ$J5H+y zygu9j@TS5UiIAkr@M{2iLpUyj%jdL4z#9ih4W%0(aL0*FKx_)P2m(d|p9Yr&mjkyK zv}`#3Yfm-4S09mG)bD%s6|pSZr)-ckiN5|`Z4|&)(zB@Sd9_~nT|AzI5C5T?mNMx1 z^J=4)IJq)JddOh$gAQ(;75KSr;#QB-+%~zVE$GMd>VxHY6gv?FU6zDKP~yQkOr}RK zs85Q;J|!|pI*yo=K<2-UazRoXB)%=T3~+8KPJ0S?JGfln+;Lia;2q%lK*mA1V9;XV z;^7{Hy8&80+$^});gWa+_+5q?$c-@~JKT|QqM03@NI1=%8%ZLlkp{O}+{*BDxy{1m z@t=1Q*$0KW^DZJ!b)>03sE-RHw1KibF4R5oYZVnFJ&lBQgxia7+;Lhm@J?`R!T%lH zEx24bcQ~$xTQ_$&Z{42im{PAxm&Al7-MhWow?~)0uci#6_7~L#-S`Tmga|nE08@$Y zfIoxCI>Ti^0q!{MS>VsXb;WZg+*-I4ICnU2CEVc@`u?K&peUm`U{$EbB@|2^YXMN6 z|NQqQ4Z5UOa;}XIl3qdtz2JJo@gL5@y`)wUr86_C2b9qpx?fDgeLj|pQoleP**KUkK!L}H?pMQ*Kl{#Nm+XQBp$8*k#RhLzp z!jCxe%dHH;-u?RO%c{Rj+pnTQ&7~~`YHerzL$A206%>p&i7M$~SjQxu3 zZUQA-SLwi8W6MoFx+|E5|~cz;=^^Dxj1>`^8HW!%BJmS~QXYYt_fu`kL zh_Qc+eb%*pRp}wlnNz=H2}4Y}w}gYBX_GF-*iWNa7XGR(6}rr6VCeEXpj(%<=Cddx z=Cik?9MH6aOELCcat3{WN1ZBk>DjPk2`-cFE#Y<0v~5>n>4}jmwS^?jXykS)uxZs8%m>GJgMxwK2V4 zXja6E^WF7ejtc_`% z>>N>x=SbOy42_SJ6a;?S$y>-(Y(Z#mGef**hDZVQ)%-XQk@_nSkxJLyAzp4~#1RST z8)77A+Oj)5L}i-iXU1WB*a)$+gb*?C)Arqsv2PDvL{0piPuAh-7-fd&3FsR~254@} z-*}id`8yLudvvlSUi~+J=WBjJ)834=uX9Y}rMQCVx<>LcSV@*>cd)ajDA(W7PoRiV zS+LpU^O`T|RZBU?1z`le%He#g#w3chV;`|l3V-TiX1Efhzy|&;{h#rdv=4yTvheUJ z4GDKX5I7+-)_x*{9?4f-^g+1uOPGa9JFAJtNkN}@lJZJBjSe)PE|qo~?Nl;++Q9MO zGKwf;2ABrYB5LVIvwqYjwyIDG+BG<``x>%;M%KZU8zYWNnWk?MR> z_~ydL-}HTq(m`&*d+wNa7Wp8ad2d<=GR#g)`qHHF?#Jv6pkRd4OwlxY(CMt1z$Lv8 z&P8zic^M#=#(y#GgQW6+yhSwIGT4M5LFlExn+M~+WXf}ziFpWQ9+LkiQK1w0#s#N% zk#|zPvd&7v&MP^Yx|DTB2(EoV-7+1N1};Iq3-U=g{!6AEWt|l&@{$wQ%d< z+M{_}M*}K3WARn!luFKqA=BPRndv@C(z574CFgW}I{Iv7=ZF?-@v)HYE{f7#JlKCl pnY#_=-y|5d7!>}N_A+3wdlZE^ac-n349dAw)a$ZXCWKImVN1&gbv&sycP* z)H$cBXS{X!oVPAto!Ok#mS;8pIDtLs`_ZdlGTB|-xNd0XN}1F@KGG}$ASF|j3^b0lQdNnFRwWW3{=!Q19lI;Rx3pyk z2hVKZ$(9Lhxi2<%c~<3dqtL5U9zxI14NjQwcxKx8XZXI$z3x049~V_&5I&7#f$k|b z2)SJ5edEoFAB;i|<3%RA1Lb*j6J2F$6DN3G<1awVOMNA+CU~hnPZTdg_Z3kU1jzu& zCwO%UHs6<?*5m_G1xH~&wEl%1_kGi*3p?QRv`uYRvM_^6bD2jMSb>ASOWF=do$<3F#}VVr z-7zL!QI1DPpnP@P%NVQm>G_L#9ax5Laj(?Sb1n}vPfQ`G3*wpkACd7a)?^<16wfpa z*3;!Or_MCYx))W33(V!d!}%Uo;?vr9Nh*1X^5yXo&5PVFt$_LlEg00k51a3s)jloV zLC0k#k8&@JvJqkki0dZBrW7q=OfNF4DyY3c#mT_jjcj0-6U$M9$@&9r8_s+_!QAvD zGhJ@Y2Io#9dXDv{2D#i(?#8K3JY`z;p^Gxb*|{jY==2+F;d{74bW5lBXA@9kTA}&S zcrSBvk3@wqrAmA&I`ocLecihu<$c_s^`A**!c~0=a0^Pds7d zyJ%F+Bfg8fw2VMm2u(a(ZikS)>fU(oC=I)ChHfk8<-uVJrVS{-4jWfb_NP*PVe9K&7`s$pXbT5 z3TY82q=hWxOlT(pxP01q87#qWt<$uWA}WYzDLGJLGL;x-^y%xFvCKT;8fPXCj1MY* zF?UC*SxEVaZKy7!1<3%@?FV|W;|!L^qXWPxfrJzZX!r(P(2Uyl-GFSnJ82I3p19z~ z2C#KzVj961{W1pF6`B75R_RpOw0?3}gYd|p=nwjx5syrQ8Pz}YFTo>=3ftG;#-o`v zG6te8A~k$9{qlWR4aomX>hn;2RRiq$?Ed#sbjF1@7TMLFv2RZ|=8`UmK(YhqXV)hV zQ#0M*my)3qWKIAw2avu+m!|ttFG?fw*nV-cjb2MaZ`eh5{6*;H1}e=xGkUE8kgW*4 zz5~05pq59dEg1M$q1HN3Ve2!a)+PYihERL-VjDG^h}s4q+WN*1&G+@VB+i#TDDN*J zq;}M9-ylgy8wO?Db>;`^%$J0la!IGZXw=#Vif(`AuIUhf>_Av^rkQhNpp?kVwi-W9LwMeoFt&T$fqbLs;cy=Y~NwgG!1;L|Q|-^y+|q&lrN zcX!uZ=6Y^K8(Kj4JQuL#S6_aJH?B~E9z-c6tU5e)5y2r=A^K;$vvAY zBBtR=0^*v1ty;ad&*Xt!la!}aL2-nO7VCC-Xhcqjo8~wKEbT?O}K3gbPJ!|_89h; zciw&}v>_F@ufp%RJFWmuZ`_fE)X(p@J09f_+7VD7K#y{3;m8;&S?=^#`t}tz&r;eE zFTW4~2xG4wIm#>3p+qrP`(o~D>+3MeJ+SU4DhNO)WB^+_^W;xP-=gk7_BaB?WyScX z($|Ni+eRqt$iJkE69o;no zMVR}2k#`n!M@?33hOX2>W|gema8dgamP!|@*Q$av0|$H$-@uliT&B?<+e~wbFMmubTkRV##uK>?#TNhU8#^XHO{%=i`wVTA88zMuWtSX7 zssHl%$F%CLK&jhMe4HjRri~yFkHhR#tuy$*;8uYcbZDE<0cm5~LEkc9Y{zt>5#7ui zg^sw-;Ic9{$}4GhwQtT?2dB+r+nrVWlhK;Hx^p+0gFcbrXcMt`k1nL12=B5ZzVvao zd8i{iu7H|LDzD^h;nr;VXhKWho^b;Vsp?{qDy(@DVKT!NP;_+~ztLk6xyy(g1P)0} zKrn>N+hfZ2xNGQOHSmUhIz3`ks2-7~f>PY6Of-k3@)0x5Ec1PM*VUFzu-o0;Fe~r8 z`>{N!4+JZ5$s7g?(FaQEHXkuu!qbd5_jR5yy}=HN3h9u0RA;z?J41Hd1aE|;^&5Ln zWtyysk9qgmk^4^ld~)G#6m z*#ij3xqo!2A?LQKO7cX5m#mcey^SbyG$vS`RSDE$XuA<j+IR!C82b8llCizEoiP3~s>4;cjEA%%o&C3mKFzF?25OXJ39~8Dy zu%S9gzf|6FMjnef@lRR^(0j*yH$Ijd@%av-*IAFXyI|wSbPrJmo@TOpwuWWWthVCt zbmGA2%&MQI22L-~3cz}?lFt7bT-Jq>et#^nCsLJSa2*0j0Rk9XEWke-sDXHvm(z<= zB;b(1&2_#@9`BnD3|02y|1>P>kG+IxMJRu{ShFOipYMmqo3UzN!opOa@x-q5Ew%;} zvjOOUIHU?wO36>pJO{j@*UZ7J&Np*r_x$6N2%9D@7irKg_e$9|kLP$frWy|was~77 zW?|IdbXIov5NSAAYzC#}@d2vj&;os+)0<>n<9!te=?072Gm-AF&%!wUV z`h4H{Pud<1<3hMJzYK4igS@n_u76hTVUz#Kf03uyV`sL5~er3JuiZc-b696)F zbx+ZhmRzxeC`@E7HSd(CzG}XooR06zeJtu`yK+>-O})@9G>I>*l{u_`^&J1}+0*%Yl1p^8a#FW>xpDhui=5R=taM;Ek|^m%<4@jSF}D68?kvoN(; z&2(l&n(jhNvCj)kqUbDNYFV$aT(^|93#unDBumOVuxc^n2A=5qs>~e(LgJtrwfIFw zSaH1;wd!<+k+ixa1j09GQEqItRLavBSNnD^%2kuFJaTa-9{uG`DJj+X`YdS?{SSI^ zn>D@>OES^k2ba_a7N99H)R`E@XlEE{XvCKGETw$T(nETP3FMI#4}$IfvZ6PB&whCj zejj~#B&#Vu`ttn@FE_r@k(HGDURlqJN|sq%$wWx8kkVy_yEIbDm{t@h-dv4X0ikWV z$^gy@bV?&ZqS$YkWzy<4%B+~$`_7eQd2pF129JmP9*uhBAtH1avMbpmx%>tR403Uvqm%D=%DY*fAQRyUI6lZO1IN0C_mAOmD#c^M#*@t6%{9<(=7{@~_GVXhA$bm!lbt#?w-17mgi&ufl+;Bd~$x1qQaT!MjUN^9{;7>OlGt(M=AV)jd-1@yN=$<$p=2_? zFR&6D^O5Jv$$LeKGj&dIFh@}-o(e-X~ zl7V(|v&1)b+bw|oYFjV63`t(Ad|kGm9lcWUhF%c?~Oi1 zvlcRGKHszU{k0MO;+vrt-(UOTTM_-^lgyLPA$_Mb{6&Jc%&hYAyLx`Qmr3VO|2^7KrIK z1B+mQvu9Ly3}UkZPJBakRw$blJ4&<^-?Hla!2mt`^23rF5-!S%_7w&%DKVgC#m7&+ zdsAo$zA^8u>ATUAfnAtiWT>4ZP3ZA>g(yqYikQi26$1Hgks*j*u#@5k3tEM5X|l#RaZ_q)Vxe9@3<4;gXe``y^a@_FyOS%y9T&8eg=;{lc- z`O0e_UR$31_xpJe7*>H$u=3YF?4yCo|8=m(V50JLkT@t$%4Q(CnQXLK{IXGqfctqZ z74={U1JS_9N{AiC7#tsDPk1eEI_c1j(VxtwY}SqfZtv@UaVjYa78T#66tl;xS)6c5*hKRrqhvSQcZ;MX}COSgm+g zXFZ!Pu||>%_C^B6yH0$rvn!g>21@Bn5Rkj(IyaK+&Oy8s&+BV0b`$ z*NC+^OGOzmh1ir~pNeFoQ6a=im7AsuZCWLXRoTN)DSE`PoW|C)i!)spq3bKe=ot2@ z7eFTdsGOKWRH??u8%0vFS&76-(JPj9v3VI$rnyQy6w7{Om10~R%WMW9Bi@L`|M&q) zmaYCv{kj}V5l*F^8?SQ`2 zW#vGF3qg1e<}`IIwVjZGtBdRk^t)LlMkcWIvyRM!(}?6rFj6ShT&-eJg!O*u7ead~ z)N@eABTy^$P0*5ugov}jTbJ0_*xoXOl?lob>K9dVDn&X8a@Cbsh}6c+XthpyI;EoW zjmqZ<9l}l0+?dA>ps}=?K&c=`HfHVE7V%_bmU!{>?ch44``Pku`KkB)`z$FeASGPF@cC_Q>2jV)=oGfnIKfaxX=ys@JRO8~> z+wi4JoVfg0BTcnvO(3$J4LD1*YtFJ`W;~gyHqARkb#vB2jA_m?lXibk{ZcSW_Dfqk z#{$ZcBDOSVF){P&W$Tjsq|8z6QeD}`&hoZMYr!&-RX^8RsjcnQFT{`*?DF*AW-)Wx zlMIbxB&g1yx~&0PFDhEFME>N78 zB-YoidO;G)Pucq|>TElA)yv|lB-T|VC$o4PzHKtgPgd}&EqJdD|E3t1%zCo5 z;^k!4Be{~Mg;{L@d2FDk#E=wVG%$@d5*aBhE%}ISS+S-n2k%qkyqDkxCeQm$qGqLL z*{Q{89=a_0N0Bz z8US2b53pl80N)e+(;Wm?LoY(4lW3!`S3Hc=!3zBfE4784`qdVDb`d*i&GqhDbx;i| zSGAR^xt(jrD@0ML;@b??TqI|(_9;(&ElJM;Y-R)2yc`5LD*#v$p|EUf1AZrIRF>G6 zJtaD2qFqbGfJ}C6@|t5*be)yMZRhw=Y|UgdlXrbZsb!I>JP4Mm<4eWJEQU>&_%;hv zvE@~2zdc=>-pvu6o5Yn0A9^nh(UKU!q6^?ccnslSd`1! z#8q3XCf3OP;_taEJ7qsgBnuj3929~=5psD@r)buSz1RWCR4VPM2r?#*#{qA-aRX7TTg5@gTF z%(jC?l(q7s^%PPTYuSFWIgfeS0a263lABvH2K?Mzh7_z}nDEE6W-Bx(|JJu-2CMde z(2k9UGT3?*cI)ec7DTtKE7yJ6~uaxVz713SXl8ga5CO9e+v z>cl!+U~RF~E_;UB9FdnY_9m`8UWFzo`Eb4tfhFL^44t#os-PCbTq>UE#QGWsp2yys z#1U-7G!kw0ueLT@gp#>WeA9{D$!h$=JG0*+*m3_gXG4T<3Vj!pz9bvi3NQbJ-mEzb z-FyjgF3b5ttv!@IQhW;$6~zzdLJ1KX*`W`+gWPl_oteG_Y(Loqv!XPk&_v_hLAqj6 zQi~mZn765;6D%nsCwq!7DB+HNO9EbB!jt@M3)onmqGa|okB+j7i(x4SbZZ7#fwz)Z zyjQ8aSs``olC2r$RAnbb=!<9M_GLMOWyd8EtVD3jBqDi27$I}cR*5@{rHFNiSSKF4 zfb}dwJfNUeK)~E6vzT>@DUO`eHIt7@&|I96`W2a^)K23- zLGpEXqZ;Y+t~MK?CKX4H&!mY6c)ejbaYH}WGHejbMziLLO2H6Xu-Mj*rDv^iPiHp4q&EJt||-V zrgr$_Vq;BYwD@O<7&d_2d~OK!2P2`zlg7_IJqqom;g?hdlMA*!l0Z%lV17rjO#0_& z__Y{VjsyDVfMXS%x53(6?^uQr4Q}m)M!IW#&5}YBY>_OYT%Bdax=-k| zBDfDlg18BAi@4z$mT2Pz753@zas}hnVK_?~9fX(5MAJ-i529|+Cc=Ji*P!s^IGpB+ z&32jYQScPQE?f1)Usa18bSCV)=QWUqsQJ7uDRyZ2rTK{X;vWv7ZZryYw>&0rs;F0VW_vBfyqDR7$0f%9@ zIr%BEYb48VJozc35OFZnP~Bw)@=ohv%t$kH3nSZcUG)Xr66 z;MApJ_>F8%Z1F6k1EVuU#k0gOH?n8rRm3?AI#wtk7v03#Crp|}Gs%S0A^Pg1ICK-s zjGw&Sb_=1X=$qMDiSuWYw;6GC9PrbNNDTuEzyGqE*(9ic#rwCgbHkeHy_JPq3*gz? zCKR$ECtR`VR@N?!)Y=+EDa<@LL#P4!7K;u{vVz^l=4CIOMCf~20@oOLHdbWWZ4d~K zOVwYhc|vTxjU~4_p%l7Ip3FKRm-r?za8L=TC=_d!}w~6te+?HFg6%Hi|>HLp`xkxbI+|&^{3bcd+DcXF!C^gvMzE zJu=ChajA1Z0c4bjB7211ZOmnBo)@3o!E)QqJ8f&ei!|*-nPHyjSjbwoopag@Q=&{e zQD&GUiYdd~(`KlMFzrN{VXmkyWa&jEr^^8Oqjot7cv9*@kff;Q#K9YshJ%-WDSy}n z%gXRVg77Fv19BGtxmB_go(S#$CcHpl;j-yYOd7@RZ@Tv-=3Y-LiM7?ifX9tyDMf1A z2UN@-|3w7-Buu1g|3yNc26h8i8!&(d{bPa=H6o-e28F5G0|w=eJbiAlWHf71WbHGZ zEO8$ApkPYDbSA540yYq=q*c!IQC5Z4rZXsa^qLcQJwNt<@$yt#cdceg(P#2|lGH;POh^ge~KWZSI1y!{m zmo=|(fYfxEaqelFHIRX#Nb>xnc3(z^KS2SiG^{ahNXO>-HO%}-hpfFvGe3cL`a>&B zM~?q)h3Pc$0V`}%m?XyqV&)h&7=Deye1K=#egx!G=Z_rAzT+NSEHf8Fihy2=VdLfq zdE`1T67OQ)2Ed*<4Vb^>-Ru$O$d%@_SQwkR^l73&sdw@b-CxfS!hBMhOdVIh`VLCi zZIG8A%>oD8*@OlQxc6Bn3553^w%{@c3Z__cG?e-N5Q(QqjH=$3Zho~d9Yx1F&N<|t zA(~BOFI?ml{3Q-{{OQ&mSC-y-t$XHP)*@gF{wXHBH6rUCc30b#OnGfotR!1-p#9Gx zN01vB9exmhyO$-UI4G*q2+FZU?yFDT%ML=xckn)TRstE9J5qr~@EF)7vhHVFS*icf z{cI}3hWW+^v7Igz^B;twqtx$zkTup4Elr1V7qK)QaZGe-!p`w06)_xyKPW~OL#Y2q z%qwQ4O>8@@i$mamTzX9Ooy3+mu3JuiM22f9#0CvZ?7t?ltm}>~r^Oc=XQUb~Is}9m zwLw0C7={=qL=0EoqD!GhS#Fu;q)(8_N+O6|@}&qP7uCWjd`wK7%w7%JR5&&zfA=Zu z4YDu)K9waVR<210iJ(tF1;y0caR^k2Hq+R9>}B!$GC6X*7#4Bu;Ia$bH~9#6h6bw4_(v!Tc3e8 zGN=s^=uydX#kYd>4Fm5}%3i02!B_Mmaq+V(I?pm!GQ&l)iL_G8j0LZ9xtC*)id5-m zY9192J|Ga=*!RCpJ7qYCB z`6scXNQ*G>jP;-!NVQCaH&0Am$odDB86dTqh3v+#G6$Ej+%_SrV?9X%qcwwhqKUSn zQToC%w!6s;B@%)xvED|QGiQo>7O`#(R=RBwOF5(SB^=vPa0mt>dNJz|hHJmYEUQBZ zWIbHr*8vke)FSAN<|e~Ru+cwfF?*Q*7cl6%lwHMV%oNWpWi9FX`cl?6%l4S^C`&e2 z#$&sfdza>opt%)^#jm(aWr3cgP8jG>VOx zE5dXninla*KZ%qm5O$;vgx8Dcl`J=FBcv2rt|hQS%TNM`1Xm8`yE$W-7_^ezz!r#C zSF*Hb5Q$AoMs}%+O2omHEHeU9x;a;zS_!*LiAa0}i${ex{}uK@(bT!%M`p1bPWa#g z&f8S*2#O}DsFW0RW+fw8t9Cu6p-xe5V7PoKGymbdz3yk`=g!+Fc>BV6Ta34(&f5v( z`%=F3r(zD{^(!ZFEvoq1c{}_HGmklMV1TMG-~b{;H)46b0CS`ERdzw%%59_`aF^hS zD|W*0c`#KBxRvJq1vh>m3jU(&#GqBI^~iM+x(Qed8mq-)PD^hy^X1zQT7AQb0o(3Smt6No9YaOlFD96R(qtzY1Rv zUj$PPBr&=|3hS^UwJjhuCBDE^@#`cST_wweA&52y)iu*W5PcThmLlrJ`I9kAY|cat zl0;WTO`z6&CH3`RX&!K`Dw#+r2$^47tjvk5M&vOSx!;LI$oxh{9&jQNGQU-k2c1ZS z%Y z6)zxd4DhqT8E06m&G*GRfW*&M3#h#FYqoH2WQDEIkc)(nf>Al7Y%!;mix)Ps+@RXQ z9V|Kd;6`>`(V5CIUw(<1FlV`l`5#%#%!4XSs@Z5-ab{zWU1Oym{4WWBu|X1`^vMfb z+`oPeeK=1v*~GFUpjI=V7iVpPUHf^lcoXY71ZqRmQXQ(HhDB59A!)Elz35D^ShI*U zPi|@iE>%l4SKAnyS@(dW4Zv<|p~&6LX7K~%(omXkq&#>7PRj|O3i3QSnPK%2k zFj+arR>XT-*-L>d)YdJw3?N6u>}@c~l!|w@v1`}~k++@Q9B&ky4wl2}gi&|6wOPpSM|}oTQ~b%l(ZGPj9nAUY({? zH;6LWT@-uNf5RJWGq;^ll~=WR>McD<^x4C%!`ilB5A(29qGAsl*38~6=kepT0R(Yw z6Zvnkb^sgp7W>>Tg;djUY0X^5JBy;XSu;Ccxg3avZzIPtQS~-LLkx7niTpQcN( zt47SJVw(^-crSdUYsA>S>}Nb~eTUt}=KDW3!6s2Mj3Wfq!&?LMp=YP*js(}Z_F%O}@?q5Gxl zz-{~4+(188!A}{QsGy^*^5kmT`z$R0v=@t~!C(V-j`ffcR9x{s>lc_!R!KVbjRQwV zRK?c!SxS!6zP1oBu-|giPxAmI-SQ!Rd7otjdO8nVy}EzatCueQu=)uChk^Z1u$k6u zO=SlYMg42i$c`L*zR=9Z{{Psb3^ONyMhP)R$$)-xv|GLZ1;hio@@5_lltwS%k?>uXn`IaOFzo>Uwka)D(S5Vo-Qk{Vu& zvT2ERw+4%alP_8Ea2(90sQfG7h6cIinyUli~_Swm8~< zx-B4S$*vNw{J??_?*tadx*yo2FieYoWZ7(sf60$Hi_yZ`;M1a+OWyL;wPBJ z=lSRT#0HWv?;k(2sX<-gY<9&%|72f>l|S(W6UdbCFSai%ZR|^tErj+gX3<3=Ay~(EOCULgJwJ$g<-d2FlnV9NyTnj-J$Kp z&7G<4nVLEe=zyI*<3|6K-`P;ks@K2IUt$6M^0zU8n{gyR`aPO=&bF&HAH!sXXm%2A z-?~R~7Q%~Ik~qeB%4qbDW(s9I^@vQ;WUP6qP{ z+R-GSdM68A+bEvXc=y0n1T$r+PPfvXi{e|2ZwN4SS&SRSNFNrenV|ixVtF3(e;vWE zgxjINZxnyw&v(vj()XXfbBHp=G~$W&V%$Jylt}%5pk;w(pQbaui}@3s@w6;8tTSE| zzsB(RK#$0>8tjpgEUCo48NozIdDviPRf>giJiCiCHU}Y2nvZ_q!a7<16to&UkULQ= zV77>#;&}T&-Ig560*jD6Z<53{@qDav4+X8kINXq|<^l~H$qnN3c;4D6&4O`Xpv+SQ zBui_bz%LqTD>Q?QSoO_b z4c@aGY}Fx~m*~-$-wD0?vc|lvB@O?*F-`(67bhC?;%M9)Blq-TM^oNH%ysjQL03qV z4=;#l~R zot^^;IxKRh!NaxtlaXb0WzRmu^E_0RskeZ-=%_eCy#jt1g;(d9K|)sjFEf`gwU9?90Y``FUXo?u3^? zSmZBW-aRa`Ae)DunI4lZNBQw=UXXJpaRgHilZCL%=J{8g0n#2#7x_rcAPssRFT?fX zeud?SG_m1m?Hm?NIu8lNTh zwdAc~4*sE)%O-@ov$( zAGLPg-?T!v)cA46p>-slo!axB8lIy&@rf(|^;Kt{kJ#icyg9>pru?qFQ_y4wYSuPk zd{>^MfrCHO9TRM^*wme8U9@t$+zRNBvbBC`30kC!LB$cKAwB}9Mso(=JvSI*%Znpv1Ij4v=D z6ZT>;u@^7Efg^t}tTRi*0rmKodZhN|7sgc`vyK%O$HarXOGJr%>Cb9z`F%DzkvkNtv|od$q?sc5EcFT z%UD5158&s+S7OZoeu*2~RIH;|n{Zql3(-^l#uxGg&W`#s2lBRh7%Eo}=HZ*sCkFF{ zFu1iHf`zh1Tswrf%s6V9qp&fCoB~e>%c|cGp9eT577pR<*-`P%5FWmlYKZeT~_q>dSd%W}pE)QNBL=uVd`NSO_X)Rn&0 zuFAfe4tstBg0}&Q(z=QcELse@nr9RRw_A3+azk;yr~?lcxC*aQcDD!a5@<%1)%WN* zc{QG_-L4c}qQ-#Cp!RTM@a!>$LWltq@I&AdMfxE^rtWH<_#b(=wM^8X(58;oL|?jJn(tF*4DsUqV6*c3kHS=eev<|JD%f~E7dRP! zJIkhoarRGd;N623D)O6?QjKUglAjlR_n3HKB$k~Lv1TN1(f`kz_m0dA+#W$zJ;fEl z&QMXUh`*617nS@D^0e%|=!K)oY=n(5Od!G8M|q_s+j4cHWy`sI0xk_fhAvb|lh%mB z07GPg7px4OMsO3+ck%?W_C}uiANXh4&4S^}thMc4Ua$g)pdekC*i|HxI%9cfAKX{$ zhJ&i1Id%7#1{Qz%7SnK_rp02%C@nc`Y}uXIfmhtbH`&fopm^*xaAV9&@x;x%hW$en z-om@HXT;)LcyIQbsKujb)?o@-?JbI#kt(rj93OC|lghMCZea~? z|3v%o{LJ2k4eklWed8ev*Z7x>=lIy!>M7)oOqz_DQw(#nay&<9iwu<@v{i=YAhb<} zN)g&FL-P@;kfAb!cF52YgkG1Sh9xjpg2FgqZ_n*6h6R9y!JTL!B=Uo#kIWw1umUF73mN1)QJ5!DO@eid60XH z>@1j`IG{?ZTLTSLdRn=laI!(wJ4OIdI-=_M*`NO6e|Z@YmFs9}gDySA7P?>jkbtkf z0;ZCsewMHZy#+D|n64y_G@|J6t7CScdma7l9^%)qPDduu6f!hY#z;h!^x`893==l> zOTh3gJ7&YfyltA(8!%RN4fKYz(w}^or%=}?J;FQM76WRIxbzXoSWZrC$fCU(HQMQ* zGc*IzBpU2=ySkZDuH(+dl=jpmjGTT9JwV(o&^2aH`1YYxbP&D`;FgtBXV(9$7{p`3 zeN+)ovl}Cg>`xW(bNV=q!KIwZ9?3tb1Tvgk*ff=P176_7P=H{hi7K|3w+Zy6EJPYk z2tb;qh7@yis8bluQ_GK%;9?F6MR(`Ur%vkI$`#TU3ND(?o$Pw0?dH>B{ss-vib;Vp zIMlb|y-B>35_U}Cnf8Z(WM3+oDN@u;gZ5C*@}z zspy6-p2+U&+)xqt4CF%GD&S6V#Xig;;3kb}6uhcUigiZ@=83c(?JD7hV<&}+#WZJj zNL$cvCA@FI0_DQ0$ldEA0?VQVTJ%P2JMs8ad=+)qIZp@3h8pL;`Dv(KoT*JWPDTcw zMhe)Gz$ByUGf5N2oWNvp%&88?oOsYNC+i3mv8U*eJUGl%uL4O*P*)Lb$ep(4(v z|E16JXgtO6=Xf~;`^NLJl9!4b=0jD1yYKsthZu(Y?&TAg)XV2O@#1_~Bu;Lqe+=zo z7%{Qaa5%A~|Cr~wXn){Q52m0xW{mUFkR@W_IXDXnce8;h=KtICd`4vFvX^YhYtc)F z`)+C;q8#z)5&n>g1PEtv`u0fK$N$(8ehJ4;_`r+2hi#<^c-8f+A7z`!nv2=XIQimj zSq5uFjresLhjY6BlI1*>!*DTd1;=M^!~-jMtG>&nk&mW*94s7Amw@I?E0Vd#NcVfZ z%6L*y$ioTp{^gep0-d_T|Je#YD>C3h_c3ib;N?aSd^{$`h^fC8ig|1J+wt=)zeH4E z&KKj?@~$oR%WLG(fkk8*ce#IqptfIZTFcLicxHuRJ|lQJZ3>nfi7X`DK8PAVb zs>4Dc95M-2iPh`)xz|<6NEqzP3KY?tMnNDgJEnp*G>nJ2yh8fgqg3l7s8pY1P2jCc z+g2qmUeB{f9Cc24WA}3=+ySTtTGjJs5E5^%=V#?Oryl79Bk0t+N}}G`M3J+BKg*W; zw{L)|K2G7}q5Cxp!$1c6CV(y!2<1A8mtdDaZmqU%ZMJJIW!TH+B4d0xZIOTYXSVC z3uS_qMjH-!0}$*5KqzFagt?hFZ;dPNt!)}Yl1I=j^&ywtLnFUhJhB-eejN1a{Fkh5x;THv!6;RcEvxT21 zs-B$+68rj?i~exD#OrczA-!U%c|fL={(u|He_-`eYGuj~KQj}5^-_+?l!aZ)gZg>*l(&(Bzu-J5 z=}RDtKRXuesgpO z7^IIY`sIrI)QQNQybtaS>$ekb6?Ni{oje1N={vcnXB}pQ@+~o~Omw)a5MNOTe$k^4 zrVndO(O|BoeohLCp-IPOUiyd^fT+E7V)!ne+ctnZ6pH#?(6EX9yZG3!uD*0P&kfk3i+A(uqNiH+YyaoFp=R`y ztS5&+$(T|0)b&`{N26WXhAIc?IpW+mc?OA}*S^V9ud%jK(pg#ZMyKlYJ3$3H(Q`NAf^!&CtwiZX;kRVax4+}OMDS9ytR9HTSy~uZ}Ie& z@&X%j54Vn9qv$8=_8m1DnzFm-dq%X463exn=Qik zehiUEf_g+$Eh1hy#A6U~D+Fp7 zhzAN!70>^JXHyZnIQvsxgxHOrHiSi6aph;wK2&VZkgFvISk!$22bC~2-+Tq@ zK&5E=HP}{_81*&OZ&jl6FGtYQZ9~xC}z?} z9Hlg1&O9cXe$U%9d7>0D0gjBDtA3PDF29ID-*b~46|=v`y1q+nqeq$eh8`zH`VTzc z*^~#I@x|~Tc-RMj#GW6xCyYJ)>jyqGEE4|o&BW**`B10qn1I{F-+tt+$vuQb-x%f3 zUySouBIY<~phomL4!#Y)hvT648c}?lx5i_|aXFtpIL;sElYQdGpLlf&&8sMREwq|g z_$CT2$#a?Ci-AA$l;$d#wCYH50}lmP|*w?FgCb^FURRziVU zBQE=uUmOyR4=VUq|H?I%tSX{gv8kdc)zBM|>+O>~r6ak>&_YIscB?hHt|*8SR47|e zQXj?Uzwxe;XGEFB^-`=;8CC^DQ2(93@n)QTFD9MhgRJ(#Isq)O$yYt`=_%gXLQpXv ztXR%S%x$L)XEk$YXy-Y@6wu4eJ)|W$PCOBTV;7N3drfoTgS=$+=^FV`eXVQP2A`sc z13#9QPyg^pZBv6@J^s8#+VtQ&&iMfU>oHoZaOvYjtTsA~=I)Nut_h3$I8M8`o$aNR z;Ith5oS>5V!S-dteNE&od5eMV7fk6qd`C0AinV_`{ckLO|R10%G z@|QN%=Icc??6P{(rOvuoC~SHQGy+E{O19Pu8$x463u}OzU2WCdxMTqNP#i9<;Eks_1 z)&wv;Gcp|y3p3Bs3Ipf6(kfI?cg-HAUPFdQ3pqqv0q!U!-a38OK+$o^H zGKtwq9ag|CULJR1Fh4m8-(Y>H)EcA7Qr)7qej&%5aQ!AejRF14GajwT`Lvr6TTlDl zfR2gG0kq+P98>PmTH11qR9JoH(H?RXRz`e1Lr170U5YUw%5qZCJF-;B4V$oZW8reC z8#rZ)j3$Ju6yPYqQks)MYCvlqtipz-o=HtT-Q*b&&`yvJ-B4vUlQ~osflfALpu!`pRug%u_X12B#TMzE)03~_TBrT~0*pozY>E28k z=dU!i_ZVnv{(0Jcc(gcQyNEs&bG~M3PASb)DJj9FG*P9bs#4zSueFMG;G5E?I5WH| z&8oFI#ie@_6@2Pt+FexZtjlGskyprChhCvQ!ktnQR4K{9wKi6zB&kwPT%|n(S5a}# zaIFp7EXsyU=C^6Mb~P*dcW>vkk9@(>Pe;D6VU|a}PJ6Eu>D@r zq_3G#PoXX?sxaCPB(F1a`Xvy&~kxNU^8nX+}CMQ=-}k*wDeAnR}mO3SOQ!WWJM%z6JJ7!@U9{(xZ1^4 zh+D4HN`@)-8`7nqeRS-Z9C9ewUmYtzO+@DVRbJ^c7I5B??mdu-LasQHPCv)Q;On(c z1sf$6j=~Dd!S-jK|zchFT~!kI#f8mO(LHDQLRy+KQZ^m+0I&Ep0x zh7SLHj1&>ka*;n$ODRGRhxu`lTUz9gK{K*2~JZBZK%Pyeg-$4MtR{oiG{@S9zWi@;1T~>p) zpv!9T7Iaw+-hwWx!CT<68oCxR=&l;P1>IFcX|FhU)$Gw?bD7wAqt+He{C78MNgUV4 zM&G2h#B2MTw46MPz(EW;baEu<)Ti`VIPihqPl^X_(lVhwpGOb4v{4ZyqUI*86_pru zv-U%f%o9+J#oeO)8YXNd-l|<2>?Zf{ts1$>mENk2?C@`Twu!vkv^E1zo2dwv@8CpI zCD-%ta$Mp-{>mlp`P;PQq4oTQ@BuEzB@Vt<^&Q0I<>Qu190OT94q}m*DySNyi$Lue z9K`zGu4ROL3nez+u4Vt*-57s|mUj8End-{|+46uQCgOG{SGa!7kU$21WgUZ8W-KBg9xPzYp8rJxct*} z>Yzfc-Twpa@BjaA)3d~h(OTR8p7tk;1$Syq{_XLvxl>CSV$(khrhi8JzYzNWkLKr? zG1}#S<$TW^tL6S@?ft{~F6F$2_z|l=9~*RuM0?Xj=D4s%|3`(sGfvC>FS!eoR@h2!>2O0m2y;X0@%~ySUHh zzd8tF$V6--oa?$E;~rUTUDt*1atAT%gw&aK2xZhr++sw&{_Fmoj4Lk;${9QeqZA=P z@-s;_X3|K>K!9T!e}X&sufA9Njki{oc*_ODbuk2UT-Z!v`IAqQhyU-qajaGVL9@#L z$OBqm#wz_g9>k5;tj_=L!&+ax)rNV@T@~ShJnL~~!#PFX;Ks2VB&}YgX@3t`oHJQ# z@N}vunyg(AI>r3&P1d@F>sRqTs1_oBsutZCH=|=xcy+ZouNCJ{)$-DhKVd*yh-x+3 z?VMJ)N1f)9%5BDthL+F0N+ahB6G>97fQ{)9@zqq#lLsg& zNxDD8e#V$qWZ#{S?!fJ&D2eu`yF{01+C_iT0lwhB>;Ml@l-%F_KTku?1nqqS{ttbo zYvK1amrU38XmQnBQwrN~*Bq!Up~!ebyQ5x=|Dz|gFPXe(Hd;y_F6o(VNX2Zlc}m?Y z?f-NZdLwkC#P?5WDPfWOo^Bx0d|C@XY)>EX7F%a)!M6tC^o~+tKU1O=gq8iDRp>{B zp1-^mH$AO|AHM(35EW@Y?OeFM5A$i8qjA+Gs7)^r7tGP_Z(S#^6>_hETYwWf;e<{) zq19sh9PFM?h=p^t@M{3}&ehVcIRoeVW8UVRZC^ea9Ei5MtL?x#Q9Sp|RiAkQ{iBu9 zz$eJ$gjng+Xb05gmT(BPu3u8DO&$xA@|UI0Avfxz%>Yqu(udN$W#S_nHUEpQ0 z{TVG89vlar(MBb$Lq(|7{Y-?k(tux3tCx#mLMw!dVzc8L;EPzs(|;-6Bg zJxrgCW6x?2!0iv0ruXaB@DY{_gPr*Z3u&ZE=>$uXzr}M}Rs^{(T#^`-Z>#;ufFQ<{ zX_s7RYto@kDy9b-H~xi~i~J`SYm>P5puF$Vb^xg^$NJsNfPU6?0I4k(eJs}u z@&LJ`K@Sl4)r9+h*kzepsL&v%)(;!-|4_t9rcQjw5VaSt6a_D88G(-@yhc`tAYWfH zviKi(QESJ&8=tQ47rdCm8C%vz-6@?>m>8Sh)*drxV6lXqZCf@1hNpnhNfh55+nQ`Ugh+i$6Pg(qRf(}2WdaO!3l5m0 z$k61LEs`Y$``lB<1prOWG(aM<6Qs>bl0wG`u}Na!3au>>N)cXcLXqD0izdW=D`vc` zH=?wNYJaANO2{2~_*2XE1KIHAua$j{>zHRKCO!q{t?5hgh4`4nw2# z+iLBKp#YG(D4L%5aMd|D*h!xiz&N2SIBHF#7%f63k|hSQu$&n4Co%^V zC#YUnqu~Y{|JQ4@j@%&(^Qo}o1p>zly#A}#X%ixGJ<#4w+DELpO(r&dP>cPWw`d~+ zC1Eb3WsY+ZT zdfgZdSMsh*q__$h1e1i=W!G%}la4|-yh)C;tc2t=a@zoApbT=&6$k&O4Pht!`PJHO z%;{bXmt3c;StC1T)jsXs)|DTrrvLHLi^1<|nWsN`;eYg9ZM)vVLD(RAIn#+m;EZpT zP58U^4G&z(htI8%!Hq8Yq-#grO9Pkk(SZ6N`$*f%V(^6(ng)?r4sJMz#kN!w9n`Ww zBMT2|&(eo#d)8>@!BFx@4J5|ZVttLa6N&eKqAj6oS~3r7NqKb}(+l03BGfhsvNN6S z`+hA8jXEW+Jq-K$DIpGPz0*(aX6{pTi3585-RCJxE``#;a*n7wtThKF5ua)ua1i&b zPqmz+QpuvoKL8;qW0Un~j(^;z+C`j$8E-kFbqfp;=5WwwXC!6E|3iD6kFYzHMj38X zLD#MY2!R*a|80_hktgUB+@rW%ReHt;oq>~7@Z%R+_P{?^1C>lhJ{#IR-F<9c!vQ(X zRczvgquL_J_Q9t3!Ac`}CuV<4y@`5k5jeN!m|EVvvtfm;?tdm+} z#ukYVziH>kEP5fGKGrud-Zi&EPi|yreO>OaG_%yd;5UsE)S}<+)+lv({sR=R{Muug3d+8QG@lxtk$0}L_f%y6;DquY^xCMHcYo%U_f_%hwdUb_dEFiAghd~U!C)^zmEpon}#%odkkrU&0c=lC0m z!_#KQ* zAcI`HW5oAqYm&gFU% zy&PVyx1eX%YkHzg+^Dx{DBk^2!|}t$>yHxr*2nb@^!)a5J(Hg9O?rEJ7Hra6q}nLC zC)@?D%?r)QiRLM7yovO&oAlKpW2VAv#NB%9tYF|qMq|T0+UpL^0rX|bt7e9j+{ma0 zSG!psF0PxPrw|(VPtfz}xqO12PR~WNa8KXC3Ho5wb)Cg^_vnHW{&|m{OV6x{>e+vy z?oG2$>gkFA`msjSV05mZtvd2~08+*s6ZND(2FPv5&?Gp+JG1MTNC5Rp?0By#@xpuc zX;fnMy|Tg2+^1*JtLHvFH&B5T&W%RF74&{e<$v%#{Y}}Fr*Uc-8OPkO+CKAs)wJ19 zE4aP)>q#+A6E#t{Sx**`59pUsrr{6h+4L-aK+jEafUpw67b*_-OyNRr`razYZ=U#M znckXUubZPfd)6F<@vC!GJlm#dt!|E@wT{~wj^Flb!|{h7QXO*p!;04CJ*;T0Zk4Jp zYqcu>)WfR$OIGWvL>5{@NYy@~3XLt&)9C&BHG00?Ak#g;2%(-aMXHR)cId-IZIPm) zUyD>lZHiS-7OmA=h--`W`#?p9*Xhqwx%W&`^^{Fg^=zG_x9?=rbn*lv-bf7^EHzbW zUc?&lLGdDevVIp8S29^uxqY&#^3Y`cK~>vb;_WGVXM#C3MGbK4sd~CS-+Q`*r%ZMK z*r~x3iThVV>smBbA5Y~ppQgsT$23JCBd6)@R9(|Vn{w5S`Hu!o(P-cuZzLP3qrJh6 z5|!)qe5cLm+xl%&ZB}{fWy{^5UoHMtrYDFV)Ad-wsNZxw->^H6a=0K{$8=yi4n_rd z$mbjMY_VawehrZQzr_bfy`+y4Wsh59{=beH*38r=P=_|a2X9fm_P>$^=9K);u|Vpc z9Z&0b)ANj6FYbSq>us6)KhO0>ma2Yeh~YKDem%hT_fdECTCCQ-8y4$1^nTs5ih;bk zSngisa1!>S- zG#(G07i%Ps_QnP?q2mixU5RCSn~V_n`utB^Tc)aipiD2O>Q7pXI%AQlzF?7_rzYip zYwy1J!hc`yCOADX@vd_i7voAHQ%rwRzpkO~Zo5oRRqYMP5HZWuy4Pd58k)aUXa%#D zLhJU|lps;}+P^KdR#HRmd^u<_q(!`u5oaWg_QnMhhApqI*&HUX)`J6!9_~mQkFV78 z?WNpwi%!K#vXNrzH!JmM)m=*BCrmcIqPpwLSN>X&3(Tj`S=JV=Qr%U(>JR0vH-nHr zcc$VF2|E3?ja=(UUMl@eTj@DuWRZ{A=j@{l|Q-8k->6A^*Y_HFpy$j@p@JH%j;F;BmxDCmm!rTY*3Aa z$RkCsc^gy}l^awQ5NX=}k4_2f<3@>r4=d#VSIrCTh@VY)MRQuqM+o`u<>}P-XU3wy(;*#BZ?@%D| z>~6hJkU>45&^WeRzb-}DE2QT=DVJAAx=ZDE<4VL$Z|L5OoMa%f%KB)vx|>)*BDy@! z@}sctNk=iYOy2mwNZN0rk%z)F;%{&0DfVR|A>aN=6y7)W`F5gp`N-RE>PGUK5~#H0 zkuh9v0M#jUKV%PEDzr+yZ%BqqEA{qljhIxaCuS}E99jyTj-jly)72g1;J1N0`8QP7 zD;(5k7w$&k-&X3U?83uPZS|IZt({0-ASeyrFw1XV_AG-clH5WxbIS>dW{r6FExj`o zcoA>wJAGxAh!P;N}Vd)idcz*9|Dl*1fG?-hIbx)l<^9ffqpK#>aaj z$%DfhLmVR555F0@3P|?i`Ou$DUL*Qc>14^hwMs9*V_8+8TLX=2C%k*Hz?X>Ld-aYX zZGT{|PG2{8bFWTcO!#`Q?tIF?%75NF`uQPw=Deeyo2<~1XHEVOcV7Y@MX@}b+3Zes zX9ieq$N`%roZ(0S0l9}$L=i-NDk7lb0jTi2pGd-?qN0S$20;yq;(=U(gPg&KiiiS& z7!KuBkwd@-67H|6dS-fNvI+PEpa1XY<85cUySlo%x~jUmyBg61l+6nJzxHRQjhF|% z$FTnEj}o9scPJ@BCk!gM3W23k@gdeW>--%mT5#Z+41@)M4w_(IS?6z&O!a{YQhgX7 z!>SCy7BTSu(RCoAb6CoH|20)DC|FF!c-I!$Ol};#-hZp77l+sTM?&?7Hu#&u&-)wb zuLj@vTY1U>chqHXedAA$@qNPf;TkKy(T{fl8gKNc#VEqYZS?nz_5J)Ne~2~Ow9WT7DOB$1e1CT+vN_-1 zsB-=}I31vugcm8oVSYsvx6n%H@3ZI@f6GEu@89Atbkj3dh;_Dji+^aP{uJpeW9v5md`WD-{`XtBVlRF> z?0|Upa2f33{?4A<;lEazYJ9Q7|CR&@J-7?p-xJxmUH;C1(3V~PnGl3%_-_9hc%gUL z9)C+XJF{euzka!?rc|cW8gOR|M(9&^b`S96GKKS7&Ia6%x$`Zo2cEN`E`1?<31 zI;YtCH^%wt}UKsX1Cmj#?;TL~9+`Aoj$ZuDr?V%3)i>XRGMDYg-SEXYj_Z=vv zDsG;$S_cbPr6VCP9W16Q9SFGgP~oa{7U07}?y7j0!0s!BqQ@TjHMD z$NZC!i}H^7--qWj2OS4>fq%pI7nA*J2m&Wipc?gL$QR7=KLs-o12#d4%oF~;H864w z$a_4kL&YGNIPe~ZuEFCe@L2Oqid|!z0Dj)bww&;PR=vQE3(n(w$?z~b96QN@doP^> zaQ6jg_ZeeVf&WISP+0}aDuv3nKIKo4T)|=BXD;E>Er4HfWM@bcY3qXCt!J^v4 zBYf-sTii>-hiypOMSbG52<{@Y)@S`yrA6%avtWxYrFT7{K`1(l0N#-2_+&R$Fqa=5 z&^aCehU2NjVI&`LsC^+?Y(#_3ro%}1GAR4?tp9e{T)+05|2gq4=SGx+pu-`&wcqi8 z8Of7V=lm_Muv;-pwjEfgphYfh4UR`({|21*r&vcnNPLVx@9%}Id-%NH4u^_TV^aA* zwYv+q5lzsWInePQCvp(lL@UjWKOIEkXExxfA3s(!>9v536AG6}p9O|hx0=Q+>!$H= zrIzU7*tRDjbDtDQX>JwO!$7b!$M(7RhP#AsI0Jw9brrW4q1Sm*z?P;YdUi{Jn~)sM zeE~bvEs35-e1RsI@qtg&Ac?ci7kCigb8QHi`kGsASHG2N=YB_CES+(QUdMoACeT_0mqEONAd6t=1pUB0s%)P zrtbrR)`bv|Vm)+4XK(wZWBLV zN4ZEWPMiFYWBe2h$bNCY0inXOL&Rk!$*hzJEET#BItgItLRIQ27)r$SXMHSt3n`<+Y@1n6MnOj0w4O|w^5bAgBUvE&8mT4 zrRR+Ck-#v_E**s@FyOag^}t*V2(+hFpcedStpnBICxibSY#m5q54H}d@af6cu?y6& zL-;^6V0Nfg0K*Q&0P}jAz!i}5ZJR)K_&MDMu%vd%mw>q05r~7qqZ6>!ZM_B9D{TW9 zrD$E@oOC_V7Y;^@(F0qdz&-5<#hiB3hilr?&*1ifBs|L&sux$4VhFJFMHIUo+h`vH zMB5I5>mV2eyI|7eN3ypj44D|H1$Jh|jipX!3Fq%S@ zXc?jeeyxmOA$$%-ZzyYjO~S9qJn}+$`f8l(ALuDx5=avV1#a^L)s7Ahl&?pqRl?>f zb0h?6iTE{%Bf(KK8Vw1wjEAa&AGWHBUZq4!+xUxKC7XRU=06-bhgIi29w=YY*{bXa zQt|!cflMq^YN%DHJR(ssLWRPd5-o-XuJ?1qMXs~;a#*Jlufw}zEY1!{W}PtRmd4za zXbBtRGWfMTuTzq@vu{*jmye@b5_7}6PASS|JD&x4oM-(0Y~Tb2lPRuS47&BY@$pN6 zZt;cD7AQE;<|wfGlc3_p@qzljKUUFzifXd5dI`S52EpFfvK}7=dKeSu1wQmUz8diL zj(F=s5H8^?`#8|f=lH;$|a84@xx$>I8e|$i!A(iB^@RRyg0Dp#Wg_->2`ao^=&{u&^>|i8HM8zS( zptZUcTm`m`kXy_Fy8Y`wDbROjxRVQ(XHdQs+qf>UI3@}PpzuTy*xmYFAcM`{7|8!) zt!1(+HwVhH6Pp72{)>uxVxtMToGXN;0Yq%}2We5w2y73e{ozWFd=D}=7HS=h!#@NL zh-fn9`2h0xGv**wD-y#LNK99<(P0L~mhp_Xn0(^8(%!VUHXLtg-&a5Wrmy2IgCT$HPPl911kH zClY*M?GFd?9R*nRBY~f-zY$=Cqk(nS-|$wIarkK9V;6w=#{&Pc3SbL!j)S%5_`sI@ z9@uaFjS%LX2yC<=DDYv-slYXM4fw#Ol#w&pr{@A?*p}mgitOCEfWkVR37oK?s8FV$ ztX$uCnql5Q(n$Apypu|3kxNAIs82AlfQzWcJcB;X{}KZFE_=^3|Za=KU#vk zAAU|G$lpNbnxMQCGoMxE-{H?;njDanwOm@kLByAX@}sQj37B(jG`T)|RFzA{1C5M- zmXtR`HKR*u`8p6U2H<}?{sNAj@E5T{^?~xGyd@V(a_-^EgY8d}Yp@lS}>pgi`^x<5lI~ifwEr6hlBo zx5c2X8b+U}{H-NhVmD~?t}fRSGwFgt*O*;HZu&>cm#igMy+EG>x#tG(H#3K zoICmY&}hVzCj3~W{)-w zPm)iCD&o`BQhZzR#%z8W+!e5?2_ek%FJ8`-EBYYZZRK3KPAMzgEf2kMid~;8A98Fm zCxH8j?^|C#U7kY0bMdYZ2G5P-!E@uVNq`o3L#{1?=Z>&~=eBu6e%%2tV8c85hCHf} z`)Aafa^c6%KY3H`<0J=c@PgCCc2=Tm&uBA4mL+E)ypt3s3ZehUxbrQL#MW}%+zy20 zdS!enzRZN%SIDg1Ot}GUi1nT+|4{5w-3Ob)g`#t^LGQ@N3U%qhcjca~Xe97mvU^Jh zdBDKJ!vb-M@i9{*ZIF`|W2_@-&%bL8R2ts3!W&AbShM%!8ig9W|2?@&QNzx@dXJC$ zPw!da;8ksF+^fD{7+kDPIODPRVTKTx|Zx0{MpG zD&D@(syNDSJ{v2(zEIvn74c?sjJY-KBiRg0eV5f>U#RxoNAfkrwb#n9s^JjzwEZoGTQaK<9p8Q2%5fGHW;ek}K;vG>8)`)KTaH1<9k`*^sXg?*Cv z*u!xKV(RrDJGqc9FP~ze#d1oi@82;GKwz|I{Zr$L#WGwI{DQ4tB3FdzKo6>?!tOpi zB-F%L4t}6=7_RILe+~ZDAhD|i?y^9{Y#z#6u|s*oI4f-ZGP#`5a;e6LOl5HYns0Zp7^bp1r0B!#{>0|#4R+I+!&`M2CUw9))?qmi)+va2l_ zE>Sl8hF^jxAWeJ|K_%e6*qS_^vxe>aR8Ch$tmJ==Sjkd8lRpVfFtaDHeV@rIdQW(T zXTz@vXQu_n%vodSz|4ZP6>x+C-eO-r6E^LDwsHDeNbQ^%!6Zy}eKqaz0V0X|TIOFZ zH!6L2juc)PAElE=AYJs`##O83o_=DF1YnN@Vh?aqf+|WN_5d+W?BVC^0XO1^J-%Ek z*aIFB#1>C6|5tKav2q#CL;)E+yL;@GujIkk+W!A9VVlf-bCGX9@f+(teEiWa>xeX9 z`|)Y3y297;aNK2?^0nOA6~KThqp!@pB~^~V3qj;O2!D>p>y|F% z-}2bLU2Q0c025k>4^=7g*d*lbAU&5W{g?RcWQHP{1!BHR;0(iq5Y2t&&b0z&KTenC4 zHayqNY~q^?UJm^wwqUQ^(+(;hXETmb`A2!Qlyw9`u3~^8RUPY>N@daMJH9c+cQ}3F zEdjA3M%z*51~$wlyh9wpFzy!fLO<6+xNUm}jRGBTKnb*4>@2wnN@m#`T(ROqn6nR# zsW?J%<0LaP=v6((er+CZb3?rEC}8Cd%I%(VBDh2r4vFizPcaiCw7V<7;~+X?iF?CK zI7_-P#%*2`V|o`<6x3@r2X67;T4>7`s@UUBv_n&vOo$4VJ{Y-p?splIt}*A87Rj3?U&27GBd;& z=~5~^fXKJxO=#5s{=w-fdYUk(%XU>9%*KGAKJtgLCNts7TN3SI zsvdR(e?W2?b6!Z;+_S;XEs5dL0aeBE*!hJc{V}CO_#GciHA@%^b|g&2H)Xn?OsEDw z5A&a0JAGx1_fIB_!sTgN8`LXXlx+_0V(4PqycmZP73(I7mRz{XaJotMNONDj7#0(~mSE|6&CL?DM%E*-?@ zaV~2cgUVh0Hda);{B4v;y8LbQuX35&=z~0W`G&iu#FXm6PM5WfT9PrSRxlkmgY`y1 zJY)e6iQplN%qxSb@FUfCeuT$Iy5PrVo{#0(ul0jtAm>lP*pTt(VJv9)=V7qMe;&ra zn*4bfy_@}c7;T#eUlHRXwTLmc=0_OYOt!Q|5YP3P11xgN8<{PGO_1G(Umc9Fxm|*E zd_X5~^z_UyJ&1=|HnbwvnCHyt9K?e-05gg8Z4<<|&z#xITL+)H9B`+$y*zLqZ+Cg% z-q_*tz-`#+^1v;1)#ZVEuuE_v=ZC`52)HXEiwBQLPIa|J5^-0+la0?M8Q*mcM)8r8 zQ`eIMU(%D*{to^#uqSE%@jYYbLD=jYg6-|&YOr!((|QK+xLP4FiN>KDg00ca=ywOr zg3LiQKT`YfpWA|!+1z`AcrGq-d+Y)|AW!cXJFgNOdv|aE>)ktuN8&DL6RY}M_9oKr zxa>`gzw0tL@%m*RhQ9Y*<__G)J{uV95UUpz*qr-GQl}Qjw9Zm`=>+{ex>j)S$2^r; zh?AWah@C4K`|b}uAi?p*S04-3mDtF^pew9D_6~9U(eWY2A8$YG_#@#_#~=4TX8j?c z8qNL{%tqxj{S}&7E2q+Y>@hW1ft`DW=41Cspw-sDPg+f6qph>6a8AFmAX7?>4rZY~ z9Qz!>obx=vT>m`0!gk;}QiTPDb2g6$?DE)i&pYZEP-h}SDm|XQ0(6vXE5`$N4~)04 zLs=+tOvKzD%Nt8x&a1`}fo{#0(zh4hNbx8oR>6Zx5z&9@upf+z^B0yzlULrt0 zzjKKIEqO2af@{<&ur>=rXza%30cUn5t2K-4Zov)C?DEE|vw}5|Vf)P^ZW%tGm}`2~ zP%3;Jo)Su8J3k?NA*@3yiM=lAVkLO<^K+i6? zM1XGm=n?^{w&)T8I{I;Nq;)7L63;LAXTRw{&lmHFp3X^|_Z@ZHlU&5$!>7cEgzWthi@w)0_E zA^qTPN{@Rygl^3Dw-;MVN(fb9&A$(}g`!V>Uu@A0387>o3|HESjYWjxc}J!smOL8_@8#=?NY!JSH_3HD?e#o2%Yj({PY8I zCkgL(!D_<1fwduaDZGF+-Cr0$KVN9Zq#Hswr7joz?=BdQYZsS2F7a=i$sYBCt$Y`+7q=!y82HSS= zf_t?B%c#d?P9Jc*bgvgeHxDd`Y%g)4G9T9qp$o=htRjIKSJw|6MBu36DwqB@Dp&J{{_3^yw8Eg1!E0n=C7_=6%U>_zT-Te8>N&t84E0tGk*t z;D6NBTOa(ZyISg>|BJ2$BxC!dq4s~-%rRiHJ}R*no(%Q;t0t@2SDo5&$ScnEN0--P!AlFc4S&8@3OWr0e1(Q zzd=}>euHqQgA>!<2$h5!+^A-GZ-h!i`kM=ulG*KVhTOZ-+usP`u5>Y=14g|Wp}Kzq zG_HLoR4D+s-u(elW9$b+4RDY_DAU=3uyc1Ikdo_hF+W-!cBQZfa1!)Z6b3Ab7kyOEM+cPk=M_S353m_3#;aQR%%{o zJ;2>LkGeU1K6Mk^h~?SV`P9uG^T}oR`21oDBr*SoAjb08RUZ~xYSV{=QfL98M9xa@ z282zfga#7p_gydvpn3{cX5TCbWr%`6&)5aavpx&4lSbac&_Cqr){RxTRR$Mg@m_`X zMaD1u1|r;q34QOg%O+rsD`r9vzwpbnto4e}Cc7vBaTTS?X3?g3p#yf&VxbzHSB7pa zqvhq&#U8xqv6FqUF_b7xVXHTSuc&~X*%<03Ei$@pLhFAKYqmM`8~mC6T?l-+i`dTm zQ0EHM#zY|26UI99NBs~K4qoAa_sUqSEukaQ4@Uj1p-H|H@WOHUxQvHuZ_isJHNNwZAP~b&1nQyvXMM5UO4qKGOMY2ZX% zPK&!5E+ve9i=F!+RH+*@g4Yz_#C^6u{0!c}+&(6P|FBQ=%&*R0P)>AZ3`ElHg_7`3 zl-$Se+7W67>G$eMil>_4| z_4eGaalK2b!sEZAL08;@%CTHa2WU( z-uo;!2>*C^07NNl`7_*in97Fz9Quc}gKhpf)I-|HYV8ZPl-^_g_l0h)Iqwt1vJ~)4 zILza?=A4Z)Lo4G+4%UwthI?B6%9_W$4SEnY_|R(yX!!xspA%}2t7UfK&W}8C8zPi-fkK0 zH~@*@+7}T>fB)@+A*s+Exl)Hhl?r`qawwD?w4dN!ekfFNb(gQA0IAf*K743+ml$51eMuP-pT4QlH8D1v? z-f`SbMi|B~EtC?4h-Cy?DP0nh^F~DQJvw+v82U9~F~1#|2%%jutmS|Xa1Zhrd!d6; zt$Q9lzl_tU;90X2p8mlIu&FRBD5|nPn%-RojyzMtW*hSf;zW>g0Uru4yq%`!v2z`i zGzdRit)o&)`jK7JQK_4CdImBL2ry_RC)-EC^?>UZuA;{l;UnBJp(987BKy;5vz#7= z3nh}i=o9N~aXx9S5D!}Qz{!=TZ< zY(*y+uus{}PD+EwXAm!uqM};^K*QBQ!mD8*#ip@rqRE8ns|M7v$p@D?U zVlc88cpC)C@(~u6@GPQk1p!X9p$FKjS1Dj%bWswo2EmE%|8^+h2T4kxtQV;16MwSX z^$Fkbrm2_znd;5B&13)-%z0wu#NjL4OG?exl19~d$ zr4subAT}9`Z&3QUVqky~>x_XxF;JV{thfSl;=9cDHC+mZTIv?X6_C?)|BIrc&bmc$ zyvtk{E_XSu)?wJs2^piy8E0=%s!Cx}ru-FkdRLwGW%1?NtG$#k>(NU|N#v3h@0Y?n z)O|X#AAftk@*@JHF8Hp6#vt6E2t!zFm1pn!)zouCxj6osmQgRvVGs9J{#kl`UJ6j;2cU>A+&+pI zl~43lbmpsLgrPBozUMj>Lr%!le?SKBuAXd^Q)Y z3|8YVWgKGo@m)%~6%d(1vD0(zIp0Wr8O=*5QKG++V!gBOy^{;~IFSm$@Qd;M;x3_~ z*8((F7D&(+`&Oj5d8=k+5x^61_#*mWng+J_JxV7xBE#K?p!9JdQU(#BVJZR<3_;AxN6PXmz!w^b za*lh@<=E?YE9oJ)Y~I9|jO^6!UZsk~a1@yM`FoXaK0)B`iNnKtAY?N(j0}!U!PY${ zRkR--FU-%i1}e|iJNUY%6z93Yvu>qy931>6wLF71_!QL1p{-t!1P(0lD zq>^fl7WQK1@Fx{Xuva=LiXi9>km&e-5i#Grk^Sk$7H~D@c^LKfCy+E zfD;8hAEx<9y4-E0^UkccPF;Vbh+2oKLa^Vo7@-c!mr z@cOhLrd(Cd0u90g(5(bN*%9{oFvX6DP7`hGFr}`D5D%+&{Q%gd4lKm%hS(NT=MqvF zSQ(_;3-MY&%n&_Q59*Ts#w-a;c^|0vRr$Vf8POM458+wKE1tQ4V&vGx{&P5$X42bPv}Ip(){l^r&h3O9M=GJ^csnrh1hWts~MlzGHo_uX#Sln8D351{0 za|d!!6hRG^G4FGw1E@q%)%2uQHh2QN~_>-k`lzE613+Oc@kJ%6nb{GP!lr;Pj~$@cG1M_Ax*8gk!l&(cGWe_q zyZ=R{sb*I~cynJ=(wds^DhhZN5uP9vz-v1Y@IP-0wMqz1eMzYzc()eNEdMx86x(>H zY(pgDp)x{s84p1K>X>=L@QHx$;bLruB%0Fizoh&_gwe<66zV#jQy}$Kb*xfHyix(O zQ!n*Tuy>;gAZBfRQ;0}o6?zn9=~%&0RWM`6SY<;Y>OuU+9Hp!^c$OuW2upA`PjM2$ z`qw65Rhu}Gs)foj)@7V9-y))D#4|Dwv)%zSRTND16ok<}iMkvRfuD%}3F!~`D;a#& zV#uNbLR4?=8m|b1tZ}qeO_Z#LZHa*epo~==uOu}#IV(*RO~ax>^hDhFSBHXdrAp~l z^k~+=B0r5+s^i2dF+n^?R1-5AOi+5%wK!Y{s~cItG`#J(P)ndwiydW3GFv@CDN%Hj zwGr}f6O@`4WS}}&veiW8CQ;Ij14(m~Lg`r2n5YcF*~~4tT7WFb35blg<#*RK5()`q z6{;jKDxr4YNlH13@#^A-tVzm~NR=~_lvJFT*iL=OFoi^YstFOJN+iUv{E<-5^a6L& z4eaVPgB!R_R{?Yz#rPw_1&hv_}kOm!*gy4~bf~1nPj$TD+$070{qbSuAuq3Vj@evs(s$PNwgK(C&F%d8m5+hsl6W6a;)6m>rU?4TL`j=zHlieZ+^G&cCj#K+((@ zE1tG6NZDgoI@`@eIurdO61-#t+c@B;XTRkt-368M;v->*MeEqRxC$}pH(hzoH)aYO z{FZX1^bX7XP`TdmXOEdm=g@LViifoxc$l`lsSJWbL*7(wDpQb~f;h&hOT5`oshe-i zWHx=Kk_e^e&44Wy*Por(;CGY|M1FtpEwEvEqv9`YlV!cF1bwp@OPwRo5`SU~;E~Lo zsU(>Vxc=hsuFE00xmc0*3t; z76`2{X|#a7{(*8oU;`w)I<(aLRREi40mFi9_iUvV;Aq0POZoCAxCkWv6h#)fi-$6$!){-w zluEKnp<@BIn~=G&6qnYL5*mp-UR4ccYDufZ z`jPh{upij(fD*+%B1SQT%mo%HRj)J)2wxZXb2<9`!);Fnw^6sHQA<613R+1Z9UBO7nj-m060JMt%5g*2S z*$=6;Et?1jfX!K~lou;-2R)G>I96=uVufC)%z9Y0-&DgPVV#yJZwNEOQ`PB?WNmt> zRayE{r3NyK6Ap!)dt|9Hf}AoZmkFl~k)ir>l_ljV0}%0N^OQ6TaYE>$Jf%Bk1Xn6;tqe3@S|TvQ5&P4G@kgMBkYGiBeJ$Cg1x$bZ-ft4B@)v-wK5;bPfv%j5e#3;n7)t*I{`N zMHHWM+rV$DuZOvaZmBp>@IhKy;~;v8E@qSd9nx*e32;BzrIBVPeQ7}pLr}|i8xM)d zSqJ83Ia6#_1n>eJ_x|DEZ0To819Z7z`);v_fpCL#BmquAz!sK1E*pI+W8tz2kgTTC+?~BzsfeNrspgf;FD2*(D?)?KBpzs1m;9)TbK(9NB0IqTXbj;NX)FQ{w>2?yl z1bs#ylZkpI8^d;Ml)9E+LHCmJ#2RIdB(@=7Lc@*}Zj{dYL={d>D9=5F|~u)F3Xd z1-#e|j{0&fq%zn%>-~*#Wi@Ny^?VdbQe1r^7wWy6l`1`L5?@rGK#`$sQfOcz_yq?B{itlqX64=skv$a)-u0bwwLmfI zLa`ba_~JVyC3;~L(S$9VRs?RXM8hl38U@N~-Dzkn0N*Rwa zKVh6+o~3M2N?5Y1CW60Wi}HeyU0ZzMQUyECp(Sf!shwMtswlgptxD9YUK=vtFf^Pr z#GF>!lp0nJ*>WJIQrXyTN?Xj`uubV;<&p%7Y*%i*ZoyOu&TBM}!~ObMQ@O>4dss8f zH15GoGt)TDCz@$|0A!4rMo|DD5E=Hxc7X#)u~X1W`bY6e{PH*R4pd~{{{re9 z2K3Un2vQCxDK$;D@EW2t@?1p;hl4du$V2eb0cDXtI_tv2LOZrk9#KjP`Rq20XbpBj zr%l^O)nwc7;XWA@Sfne2VPl?65KJC&`DDB+3r9CSjsWL8K~04V$~gAuQ6*FO4jOS+c-s+tR4nz{q;+QJ{1{oLPZ#1sYV?igO`_L*&Qx)m`poRLI!{uPq3M z16Cj(NY#_VxroLi(@!eN*kYfPN~DF^B3g&0j!425Wdv|rD%yhPXV{LYBx)k+ zsR-!%lSLnmt%F&PC(X$0tCawQR~?Z#e_E+*uUH~A^)bEyf_P}gnb2w>HVPjtw42P&we^Wm z!CocRL6H5=D7wv;k#s6ycd#y&_~eXozbH}9U7|jg=z3OJVVf;@7%T&xrfc9Xn1KcB zol~x~L3t-ZCYBg+j{B}RoD+vD8e+z=bIQ#)K;6!Z0iw;^(dU(JLLoGExg2PN_UL(~ zXOWFI0oarJs<#2?Ny}B+e#33qNx!Nsu*GyqwVeUD2g`1eRO0l-e}mP;dkY%1o99Kv}=g z5M*D@45(Ez5Z~=DBffZBgl4WwFoMT`*29Q4%2D=vKur@$4R{_Nv4Mj@Q9Q##f)-1X z3@4T)hl2o^mm^4|r94^dkm|oWs9Xo8|>j2H?w`k&P3&`<$ zI1vMMrYN9Wlq7li10Yn-F0~p!iC3(Mn@Z1Fx9n6Hfc+zje-%vnp)!Q7!;$Oiv8cJsA=goC}0otO~T*URumJw zTGYae)m8=j(o(vosvZ|^P+~_fF;MK8fT|-PxYtq3*OuSe)j54eYw8U)FL~&L3t+Q) zO{`9`kK<+0hvXyT?3JJKk=po~Slpt3&2cC@O~7>kFzZ!9O%rqtq@v^`N~DW|>4ZU~ zE<$zC)$x>8Jt)jp0jLHxbT?g5+?vh8X&vm3IrV_HDJ4+GQlkwZVdy2*|46A;dHpzC z_yTSNr@!E9l&r>$Vf9(}IuMWS+ghSAlwl`Js|N)r@}YV_k*Jl+s(0F_Y@r?@gI&c9 z*Rm|9tg7PP4yR^7unS6I_F-AI=LMz)ie*--oLZ$f4*eODO?2TT08fFE^x&ZVuGhOz zXq#=)p&5sWMP{N0yzCVK3Uc;lIrU%7u!+fxi$8Fd*MV0Qo#!~D58KDZ{j0;INc)NW zOau;VbF6)1d9^yt-N`JgygIV0-Fgc+PAw*pU;*x&1N#6*lvbkD3(${YFaf9-!ln~6 z*H%zzGjd!7)jm{+CurE53To;Nc1v;i>=(cbj|-&I2^j>?TF{|2H5F;&m=Lwe@WqoMsdg?5tBIJv@Z;E~c1 z*A_5pcN2{=?vi|^?QoalB7wt%>nBde$9*HmW7EAn9faIOeb3fJ z)rQwwr6P$4)gB1%;t1RV*cho8!h#!U$>t7pM6d|LT$!e( zh(=RgjYhG+Nhn~iX81-Do;G%RFwsmf8?A;+B1S_03>&pJl7Mcwm@@9Hu5OLDjr|C? zYMl}kXFa>6wtAI)L|wcT-TRS z0a~Iq^z_;1)6ad)i&bJJjB)H; zc;`O!2`ck*jYJC8w!T`;Leo3(F9yw5>#K>jTP9M;izZHUlS3=BSL>;Fd(hQf=+ZVD z7cp>w0iA)xq3e|p7lZEi4V>uWX?_<~Q5=})ro=)QUT}6$*XwpE9$l}5xEOR(GM(r~ zyyyxM8%d3YuHr&BDmoXvFm;QOEk*NeLnpdvUUZ$Sm00LPP*VqWoqKv0M%TNPxftrc z+Q>P@@csZYgS}|Sr4ReIk$SJ#9wecFw{FCNAYAGgy&J1DBzqd@23aidJU5t`cx{Qq zBF^`3hN2Ea@ z(rqb0Zjc&HRR*!TmN!)^loUsqUu3t#R1$dYs z4;&(RLS(MwaGT=+1~#abO2<3iZly+gn+Q7=+;H2^b@R9Q)1HoHC7kvQ3SS12l2vQ1 zHb)uTr!}_|kv1-iGDcIRRtgi*wdgJBYRaiS5P6|#biVc=9Zv^K$t&brngrU zEtNpJ;+{4t?Q|x$6_oK>f}+EPEJ164@gB01glGslybh!hrnFU?3$FtVSZ&{EscC!$ z`n+)1AQF?UX2`R1uC4m+#SAg(2KKeihd9_ybi`>Ey7A*3A(@VJcd7z+L2mik&I39$ z@pL=h)QWbheGT91&hgUB<;$_exO?OxRa`^tmC3P(n6^UDXft6(nAS#ZYz?)wN{#Qf-$$`gqt!oz!YKTYcqYXd7F?s-@Mb=llj*=#F&( z%1@JGwQ&>>3d`)Q+PAJybh7T9Rk4G>o2!czkp}4k0(pmoP)9dWP&oI|Gh{YZ51Rt{ zi}eM~aIxScZ!X^Ywppz{uXit=z9x^6kFUCG`6f$dR5@~^V;Pb4h};-^;q9pw4%7spn*d5YukDL8S}W&WjYtpffw(s7ld^#f||H z7iM`mw&M}?Pu~8)gCxQfag#7spXl<5MMmt2Iitt}>F6{WjxLMZIrRh=MN}6V#jJ_Y z&Y>t+h>SRYSO(l@VFzwd=^&7kmSj^;e^~vMHM~U~96dI%ICt))Bq&^`s>r(Es%lQE z`W=kMzkve;HN1Yzik7Z0Gg=6@qqsFFwrvb)TAq23>4k9p6VC zA=a_5MFqBi>zEWuZKH8twUJM(0NL<6)FIIY7c~}%#fl74);Hhjyf7H!SpL{M)vK`! zPJ!yxtwIujSaxzhi3Be9X{SLH>1uBm4!ojyg|gDc>VK%YMst@19Y6nhUVpU2Q+>FK@q^nyWVV& zTBpz!I!*-k=peOc7Vi0EPsB}W2ij}@787_QX+p7tk!ZoHQyzW6^_x?=`HZU#1F|QI^R$Ezkfn6OfWUp8XG!!$! z%j6Q@0Y!E;B{R5$k_Bse+1R0a940z)p6T{u&ks?rcBx}LiVSLkW;_-oo<252ogH0t zQ4DZ7BrY)C|1ndj(833Y-2h`fC`Bj#&*%tO0{@TEu_EjCSkX56uk7W=)x>DQ_=}ND zmxD1cNYIy_;7&!HNq;BFbmzbLu5oM|ed?2Huhe{^DnxPF5R9*s$b-G-@2mQx%>HG6oN+CqfKfG2e-aTD1Ryrz(+ z{T3+_SKHT;b}!hjVQN)$mSQ=#4dD#;$3utUhFaaq=y)|Ncnt=JlCZ}$oam@PM#76( zYDIq1)p$2c9WB*cJ+8=Lug|#rbqJq9u-9#6j=miM{4k)=3!j4{3Qar7aD3TdW8M1Tg2opd*C^>6Y|SP΀RAQvvlIW7qR)#G*a1 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 z

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 TZnHC8ZBWMwQio6s>-_&8Qo!s$