From 764a0df669c97f9b15a526b21c313ba08e115d22 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 6 Oct 2021 14:15:54 -0700 Subject: [PATCH] Add DynamicResolution to Settings update remote ui --- docs/remote/filament.js | 2 +- docs/remote/filament.wasm | Bin 4671657 -> 4672752 bytes libs/viewer/include/viewer/Settings.h | 3 ++ libs/viewer/src/Settings.cpp | 61 +++++++++++++++++++++++++- libs/viewer/src/SimpleViewer.cpp | 15 +++++++ libs/viewer/tests/test_settings.cpp | 9 ++++ samples/gltf_viewer.cpp | 28 ------------ 7 files changed, 87 insertions(+), 31 deletions(-) diff --git a/docs/remote/filament.js b/docs/remote/filament.js index 73609f81da..bcbbafa73c 100644 --- a/docs/remote/filament.js +++ b/docs/remote/filament.js @@ -6,7 +6,7 @@ var Filament = (function() { function(Filament) { Filament = Filament || {}; -var Module=typeof Filament!=="undefined"?Filament:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __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();TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile="filament.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Wb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Yb"];addOnInit(Module["asm"]["Xb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={3244616:function(){const options=window.filament_glOptions;const context=window.filament_glContext;const handle=GL.registerContext(context,options);window.filament_contextHandle=handle;GL.makeContextCurrent(handle)},3244830:function(){const handle=window.filament_contextHandle;GL.makeContextCurrent(handle)}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,65536);var ptr=_malloc(alignedSize);while(size=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.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:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.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:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function __embind_register_class_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn);if(undefined===proto[methodName].overloadTable){func.argCount=argCount-1;proto[methodName]=func}else{proto[methodName].overloadTable[argCount-1]=func}return[]});return[]})}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);var args=[rawConstructor];var destructors=[];whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}destructors.length=0;args.length=argCount;for(var i=1;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.includes("unsigned");registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_array(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){tupleRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),elements:[]}}function __embind_register_value_array_element(rawTupleType,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){tupleRegistrations[rawTupleType].elements.push({getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key])}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v)}function _abort(){abort()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_get_heap_max(){return 2147483648}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _getentropy(buffer,size){if(!_getentropy.randomDevice){_getentropy.randomDevice=getRandomDevice()}for(var i=0;i>0]=_getentropy.randomDevice()}return 0}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBeginQuery(target,id){GLctx["beginQuery"](target,GL.queries[id])}function _glBindBuffer(target,buffer){if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx["bindBufferRange"](target,index,GL.buffers[buffer],offset,ptrsize)}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindSampler(unit,sampler){GLctx["bindSampler"](unit,GL.samplers[sampler])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao]);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0}function _glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glBufferData(target,size,data,usage){if(true){if(data){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glBufferSubData(target,offset,size,data){if(true){GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClearBufferfi(x0,x1,x2,x3){GLctx["clearBufferfi"](x0,x1,x2,x3)}function _glClearBufferfv(buffer,drawbuffer,value){GLctx["clearBufferfv"](buffer,drawbuffer,HEAPF32,value>>2)}function _glClearBufferiv(buffer,drawbuffer,value){GLctx["clearBufferiv"](buffer,drawbuffer,HEAP32,value>>2)}function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _glClientWaitSync(sync,flags,timeoutLo,timeoutHi){return GLctx.clientWaitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(true){if(GLctx.currentPixelUnpackBufferBinding){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)}function _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)}}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx["deleteQuery"](query);GL.queries[id]=null}}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _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}}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDepthMask(flag){GLctx.depthMask(!!flag)}function _glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _glDrawElements(mode,count,type,indices){var buf;if(!GLctx.currentElementArrayBufferBinding){var size=GL.calcBufLength(1,type,0,count);buf=GL.getTempIndexBuffer(size);GLctx.bindBuffer(34963,buf);GLctx.bufferSubData(34963,0,HEAPU8.subarray(indices,indices+size));indices=0}GL.preDrawHandleClientVertexAttribBindings(count);GLctx.drawElements(mode,count,type,indices);GL.postDrawHandleClientVertexAttribBindings(count);if(!GLctx.currentElementArrayBufferBinding){GLctx.bindBuffer(34963,null)}}function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glEndQuery(x0){GLctx["endQuery"](x0)}function _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}else{return 0}}function _glFinish(){GLctx["finish"]()}function _glFlush(){GLctx["flush"]()}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _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)}}function _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}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(true)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}function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}}function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx["getUniformBlockIndex"](GL.programs[program],UTF8ToString(uniformBlockName))}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _glHint(x0,x1){GLctx["hint"](x0,x1)}function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx["invalidateFramebuffer"](target,list)}function _glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function emscriptenWebGLGetBufferBinding(target){switch(target){case 34962:target=34964;break;case 34963:target=34965;break;case 35051:target=35053;break;case 35052:target=35055;break;case 35982:target=35983;break;case 36662:target=36662;break;case 36663:target=36663;break;case 35345:target=35368;break}var buffer=GLctx.getParameter(target);if(buffer)return buffer.name|0;else return 0}function emscriptenWebGLValidateMapBufferTarget(target){switch(target){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return true;default:return false}}function _glMapBufferRange(target,offset,length,access){if(access!=26&&access!=10){err("glMapBufferRange is only supported when access is MAP_WRITE|INVALIDATE_BUFFER");return 0}if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glMapBufferRange");return 0}var mem=_malloc(length);if(!mem)return 0;GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)]={offset:offset,length:length,mem:mem,access:access};return mem}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function 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}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx["renderbufferStorageMultisample"](x0,x1,x2,x3,x4)}function _glSamplerParameterf(sampler,pname,param){GLctx["samplerParameterf"](GL.samplers[sampler],pname,param)}function _glSamplerParameteri(sampler,pname,param){GLctx["samplerParameteri"](GL.samplers[sampler],pname,param)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx["texStorage2D"](x0,x1,x2,x3,x4)}function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx["texStorage3D"](x0,x1,x2,x3,x4,x5)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}function webglGetUniformLocation(location){var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc==="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx["uniformBlockBinding"](program,uniformBlockIndex,uniformBlockBinding)}function _glUnmapBuffer(target){if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glUnmapBuffer");return 0}var buffer=emscriptenWebGLGetBufferBinding(target);var mapping=GL.mappedBuffers[buffer];if(!mapping){GL.recordError(1282);err("buffer was never mapped in glUnmapBuffer");return 0}GL.mappedBuffers[buffer]=null;if(!(mapping.access&16))if(true){GLctx.bufferSubData(target,mapping.offset,HEAPU8,mapping.mem,mapping.length)}else{GLctx.bufferSubData(target,mapping.offset,HEAPU8.subarray(mapping.mem,mapping.mem+mapping.length))}_free(mapping.mem);return 1}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx["vertexAttribI4ui"](x0,x1,x2,x3,x4)}function _glVertexAttribIPointer(index,size,type,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=false;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribIPointer(index,size,type,stride,ptr)};return}cb.clientside=false;GLctx["vertexAttribIPointer"](index,size,type,stride,ptr)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _glWaitSync(sync,flags,timeoutLo,timeoutHi){GLctx.waitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _pthread_create(){return 6}function _pthread_join(){return 28}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"Ha":___sys_fcntl64,"xb":___sys_ioctl,"yb":___sys_open,"x":__embind_finalize_value_array,"u":__embind_finalize_value_object,"lb":__embind_register_bigint,"Bb":__embind_register_bool,"e":__embind_register_class,"k":__embind_register_class_class_function,"o":__embind_register_class_constructor,"a":__embind_register_class_function,"w":__embind_register_class_property,"Ab":__embind_register_emval,"h":__embind_register_enum,"b":__embind_register_enum_value,"Ja":__embind_register_float,"U":__embind_register_function,"D":__embind_register_integer,"z":__embind_register_memory_view,"Ka":__embind_register_std_string,"la":__embind_register_std_wstring,"y":__embind_register_value_array,"f":__embind_register_value_array_element,"v":__embind_register_value_object,"d":__embind_register_value_object_field,"Cb":__embind_register_void,"q":__emval_as,"g":__emval_decref,"r":__emval_get_property,"ja":__emval_incref,"H":__emval_new_cstring,"p":__emval_run_destructors,"s":__emval_take_value,"c":_abort,"qb":_clock_gettime,"Ga":_emscripten_asm_const_int,"vb":_emscripten_get_heap_max,"ob":_emscripten_memcpy_big,"pb":_emscripten_resize_heap,"tb":_environ_get,"ub":_environ_sizes_get,"ka":_fd_close,"zb":_fd_read,"kb":_fd_seek,"Ia":_fd_write,"rb":_getentropy,"i":_glActiveTexture,"R":_glAttachShader,"Ra":_glBeginQuery,"B":_glBindBuffer,"sa":_glBindBufferRange,"m":_glBindFramebuffer,"Pa":_glBindRenderbuffer,"S":_glBindSampler,"l":_glBindTexture,"G":_glBindVertexArray,"Sb":_glBlendEquationSeparate,"Rb":_glBlendFuncSeparate,"qa":_glBlitFramebuffer,"J":_glBufferData,"Y":_glBufferSubData,"Gb":_glClearBufferfi,"E":_glClearBufferfv,"Fb":_glClearBufferiv,"mb":_glClientWaitSync,"V":_glColorMask,"ba":_glCompileShader,"Ma":_glCompressedTexSubImage2D,"La":_glCompressedTexSubImage3D,"za":_glCreateProgram,"da":_glCreateShader,"ma":_glCullFace,"Aa":_glDeleteBuffers,"Q":_glDeleteFramebuffers,"$":_glDeleteProgram,"Za":_glDeleteQueries,"ua":_glDeleteRenderbuffers,"fa":_glDeleteSamplers,"M":_glDeleteShader,"F":_glDeleteSync,"K":_glDeleteTextures,"fb":_glDeleteVertexArrays,"Qb":_glDepthFunc,"Pb":_glDepthMask,"Xa":_glDepthRangef,"_":_glDetachShader,"j":_glDisable,"na":_glDisableVertexAttribArray,"Ta":_glDrawArrays,"Ua":_glDrawBuffers,"Va":_glDrawRangeElements,"C":_glEnable,"pa":_glEnableVertexAttribArray,"Vb":_glEndQuery,"Z":_glFenceSync,"Ca":_glFinish,"Da":_glFlush,"N":_glFramebufferRenderbuffer,"O":_glFramebufferTexture2D,"Qa":_glFramebufferTextureLayer,"Tb":_glFrontFace,"ia":_glGenBuffers,"P":_glGenFramebuffers,"_a":_glGenQueries,"ea":_glGenRenderbuffers,"ga":_glGenSamplers,"I":_glGenTextures,"eb":_glGenVertexArrays,"Ya":_glGenerateMipmap,"ha":_glGetError,"ib":_glGetFloatv,"n":_glGetIntegerv,"ab":_glGetProgramInfoLog,"xa":_glGetProgramiv,"Ub":_glGetQueryObjectuiv,"bb":_glGetShaderInfoLog,"aa":_glGetShaderiv,"T":_glGetString,"jb":_glGetStringi,"db":_glGetUniformBlockIndex,"wa":_glGetUniformLocation,"Sa":_glGetVertexAttribiv,"hb":_glHint,"ta":_glInvalidateFramebuffer,"W":_glIsEnabled,"ya":_glLinkProgram,"Eb":_glMapBufferRange,"gb":_glPixelStorei,"Wa":_glPolygonOffset,"ra":_glReadPixels,"Ib":_glRenderbufferStorage,"Jb":_glRenderbufferStorageMultisample,"Ba":_glSamplerParameterf,"t":_glSamplerParameteri,"Hb":_glScissor,"ca":_glShaderSource,"$a":_glTexParameterf,"A":_glTexParameteri,"Ob":_glTexStorage2D,"Nb":_glTexStorage3D,"Oa":_glTexSubImage2D,"Na":_glTexSubImage3D,"va":_glUniform1i,"cb":_glUniformBlockBinding,"Db":_glUnmapBuffer,"L":_glUseProgram,"Kb":_glVertexAttrib4f,"Lb":_glVertexAttribI4ui,"Mb":_glVertexAttribIPointer,"oa":_glVertexAttribPointer,"X":_glViewport,"nb":_glWaitSync,"Ea":_pthread_create,"wb":_pthread_join,"Fa":_setTempRet0,"sb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Xb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["_b"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["$b"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ac"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["jc"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); +var Module=typeof Filament!=="undefined"?Filament:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __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();TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile="filament.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Wb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Yb"];addOnInit(Module["asm"]["Xb"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={3244760:function(){const options=window.filament_glOptions;const context=window.filament_glContext;const handle=GL.registerContext(context,options);window.filament_contextHandle=handle;GL.makeContextCurrent(handle)},3244974:function(){const handle=window.filament_contextHandle;GL.makeContextCurrent(handle)}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,65536);var ptr=_malloc(alignedSize);while(size=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.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:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.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:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}function __embind_register_class_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}var proto=classType.registeredClass.constructor;if(undefined===proto[methodName]){unboundTypesHandler.argCount=argCount-1;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-1]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));var func=craftInvokerFunction(humanName,invokerArgsArray,null,rawInvoker,fn);if(undefined===proto[methodName].overloadTable){func.argCount=argCount-1;proto[methodName]=func}else{proto[methodName].overloadTable[argCount-1]=func}return[]});return[]})}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);var args=[rawConstructor];var destructors=[];whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}destructors.length=0;args.length=argCount;for(var i=1;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.includes("unsigned");registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_array(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){tupleRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),elements:[]}}function __embind_register_value_array_element(rawTupleType,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){tupleRegistrations[rawTupleType].elements.push({getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function __emval_get_property(handle,key){handle=requireHandle(handle);key=requireHandle(key);return __emval_register(handle[key])}function __emval_incref(handle){if(handle>4){emval_handle_array[handle].refcount+=1}}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](argv);return __emval_register(v)}function _abort(){abort()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_get_heap_max(){return 2147483648}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _getentropy(buffer,size){if(!_getentropy.randomDevice){_getentropy.randomDevice=getRandomDevice()}for(var i=0;i>0]=_getentropy.randomDevice()}return 0}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBeginQuery(target,id){GLctx["beginQuery"](target,GL.queries[id])}function _glBindBuffer(target,buffer){if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx["bindBufferRange"](target,index,GL.buffers[buffer],offset,ptrsize)}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindSampler(unit,sampler){GLctx["bindSampler"](unit,GL.samplers[sampler])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao]);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0}function _glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glBufferData(target,size,data,usage){if(true){if(data){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glBufferSubData(target,offset,size,data){if(true){GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClearBufferfi(x0,x1,x2,x3){GLctx["clearBufferfi"](x0,x1,x2,x3)}function _glClearBufferfv(buffer,drawbuffer,value){GLctx["clearBufferfv"](buffer,drawbuffer,HEAPF32,value>>2)}function _glClearBufferiv(buffer,drawbuffer,value){GLctx["clearBufferiv"](buffer,drawbuffer,HEAP32,value>>2)}function convertI32PairToI53(lo,hi){return(lo>>>0)+hi*4294967296}function _glClientWaitSync(sync,flags,timeoutLo,timeoutHi){return GLctx.clientWaitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(true){if(GLctx.currentPixelUnpackBufferBinding){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)}function _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)}}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx["deleteQuery"](query);GL.queries[id]=null}}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _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}}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _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}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDepthMask(flag){GLctx.depthMask(!!flag)}function _glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GL.preDrawHandleClientVertexAttribBindings(first+count);GLctx.drawArrays(mode,first,count);GL.postDrawHandleClientVertexAttribBindings()}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _glDrawElements(mode,count,type,indices){var buf;if(!GLctx.currentElementArrayBufferBinding){var size=GL.calcBufLength(1,type,0,count);buf=GL.getTempIndexBuffer(size);GLctx.bindBuffer(34963,buf);GLctx.bufferSubData(34963,0,HEAPU8.subarray(indices,indices+size));indices=0}GL.preDrawHandleClientVertexAttribBindings(count);GLctx.drawElements(mode,count,type,indices);GL.postDrawHandleClientVertexAttribBindings(count);if(!GLctx.currentElementArrayBufferBinding){GLctx.bindBuffer(34963,null)}}function _glDrawRangeElements(mode,start,end,count,type,indices){_glDrawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glEndQuery(x0){GLctx["endQuery"](x0)}function _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}else{return 0}}function _glFinish(){GLctx["finish"]()}function _glFlush(){GLctx["flush"]()}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenQueries(n,ids){__glGenObject(n,ids,"createQuery",GL.queries)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenSamplers(n,samplers){__glGenObject(n,samplers,"createSampler",GL.samplers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function _glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _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)}}function _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}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);if(true)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}function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));exts=exts.map(function(e){return stringToNewUTF8(e)});stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}}function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx["getUniformBlockIndex"](GL.programs[program],UTF8ToString(uniformBlockName))}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _glHint(x0,x1){GLctx["hint"](x0,x1)}function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx["invalidateFramebuffer"](target,list)}function _glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function emscriptenWebGLGetBufferBinding(target){switch(target){case 34962:target=34964;break;case 34963:target=34965;break;case 35051:target=35053;break;case 35052:target=35055;break;case 35982:target=35983;break;case 36662:target=36662;break;case 36663:target=36663;break;case 35345:target=35368;break}var buffer=GLctx.getParameter(target);if(buffer)return buffer.name|0;else return 0}function emscriptenWebGLValidateMapBufferTarget(target){switch(target){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return true;default:return false}}function _glMapBufferRange(target,offset,length,access){if(access!=26&&access!=10){err("glMapBufferRange is only supported when access is MAP_WRITE|INVALIDATE_BUFFER");return 0}if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glMapBufferRange");return 0}var mem=_malloc(length);if(!mem)return 0;GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)]={offset:offset,length:length,mem:mem,access:access};return mem}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function 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}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx["renderbufferStorageMultisample"](x0,x1,x2,x3,x4)}function _glSamplerParameterf(sampler,pname,param){GLctx["samplerParameterf"](GL.samplers[sampler],pname,param)}function _glSamplerParameteri(sampler,pname,param){GLctx["samplerParameteri"](GL.samplers[sampler],pname,param)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx["texStorage2D"](x0,x1,x2,x3,x4)}function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx["texStorage3D"](x0,x1,x2,x3,x4,x5)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _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,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}function webglGetUniformLocation(location){var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc==="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx["uniformBlockBinding"](program,uniformBlockIndex,uniformBlockBinding)}function _glUnmapBuffer(target){if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glUnmapBuffer");return 0}var buffer=emscriptenWebGLGetBufferBinding(target);var mapping=GL.mappedBuffers[buffer];if(!mapping){GL.recordError(1282);err("buffer was never mapped in glUnmapBuffer");return 0}GL.mappedBuffers[buffer]=null;if(!(mapping.access&16))if(true){GLctx.bufferSubData(target,mapping.offset,HEAPU8,mapping.mem,mapping.length)}else{GLctx.bufferSubData(target,mapping.offset,HEAPU8.subarray(mapping.mem,mapping.mem+mapping.length))}_free(mapping.mem);return 1}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribI4ui(x0,x1,x2,x3,x4){GLctx["vertexAttribI4ui"](x0,x1,x2,x3,x4)}function _glVertexAttribIPointer(index,size,type,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=false;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribIPointer(index,size,type,stride,ptr)};return}cb.clientside=false;GLctx["vertexAttribIPointer"](index,size,type,stride,ptr)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _glWaitSync(sync,flags,timeoutLo,timeoutHi){GLctx.waitSync(GL.syncs[sync],flags,convertI32PairToI53(timeoutLo,timeoutHi))}function _pthread_create(){return 6}function _pthread_join(){return 28}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"Ha":___sys_fcntl64,"xb":___sys_ioctl,"yb":___sys_open,"x":__embind_finalize_value_array,"u":__embind_finalize_value_object,"lb":__embind_register_bigint,"Bb":__embind_register_bool,"e":__embind_register_class,"k":__embind_register_class_class_function,"o":__embind_register_class_constructor,"a":__embind_register_class_function,"w":__embind_register_class_property,"Ab":__embind_register_emval,"h":__embind_register_enum,"b":__embind_register_enum_value,"Ja":__embind_register_float,"U":__embind_register_function,"D":__embind_register_integer,"z":__embind_register_memory_view,"Ka":__embind_register_std_string,"la":__embind_register_std_wstring,"y":__embind_register_value_array,"f":__embind_register_value_array_element,"v":__embind_register_value_object,"d":__embind_register_value_object_field,"Cb":__embind_register_void,"q":__emval_as,"g":__emval_decref,"r":__emval_get_property,"ja":__emval_incref,"H":__emval_new_cstring,"p":__emval_run_destructors,"s":__emval_take_value,"c":_abort,"qb":_clock_gettime,"Ga":_emscripten_asm_const_int,"vb":_emscripten_get_heap_max,"ob":_emscripten_memcpy_big,"pb":_emscripten_resize_heap,"tb":_environ_get,"ub":_environ_sizes_get,"ka":_fd_close,"zb":_fd_read,"kb":_fd_seek,"Ia":_fd_write,"rb":_getentropy,"i":_glActiveTexture,"R":_glAttachShader,"Ra":_glBeginQuery,"B":_glBindBuffer,"sa":_glBindBufferRange,"m":_glBindFramebuffer,"Pa":_glBindRenderbuffer,"S":_glBindSampler,"l":_glBindTexture,"G":_glBindVertexArray,"Sb":_glBlendEquationSeparate,"Rb":_glBlendFuncSeparate,"qa":_glBlitFramebuffer,"J":_glBufferData,"Y":_glBufferSubData,"Gb":_glClearBufferfi,"E":_glClearBufferfv,"Fb":_glClearBufferiv,"mb":_glClientWaitSync,"V":_glColorMask,"ba":_glCompileShader,"Ma":_glCompressedTexSubImage2D,"La":_glCompressedTexSubImage3D,"za":_glCreateProgram,"da":_glCreateShader,"ma":_glCullFace,"Aa":_glDeleteBuffers,"Q":_glDeleteFramebuffers,"$":_glDeleteProgram,"Za":_glDeleteQueries,"ua":_glDeleteRenderbuffers,"fa":_glDeleteSamplers,"M":_glDeleteShader,"F":_glDeleteSync,"K":_glDeleteTextures,"fb":_glDeleteVertexArrays,"Qb":_glDepthFunc,"Pb":_glDepthMask,"Xa":_glDepthRangef,"_":_glDetachShader,"j":_glDisable,"na":_glDisableVertexAttribArray,"Ta":_glDrawArrays,"Ua":_glDrawBuffers,"Va":_glDrawRangeElements,"C":_glEnable,"pa":_glEnableVertexAttribArray,"Vb":_glEndQuery,"Z":_glFenceSync,"Ca":_glFinish,"Da":_glFlush,"N":_glFramebufferRenderbuffer,"O":_glFramebufferTexture2D,"Qa":_glFramebufferTextureLayer,"Tb":_glFrontFace,"ia":_glGenBuffers,"P":_glGenFramebuffers,"_a":_glGenQueries,"ea":_glGenRenderbuffers,"ga":_glGenSamplers,"I":_glGenTextures,"eb":_glGenVertexArrays,"Ya":_glGenerateMipmap,"ha":_glGetError,"ib":_glGetFloatv,"n":_glGetIntegerv,"ab":_glGetProgramInfoLog,"xa":_glGetProgramiv,"Ub":_glGetQueryObjectuiv,"bb":_glGetShaderInfoLog,"aa":_glGetShaderiv,"T":_glGetString,"jb":_glGetStringi,"db":_glGetUniformBlockIndex,"wa":_glGetUniformLocation,"Sa":_glGetVertexAttribiv,"hb":_glHint,"ta":_glInvalidateFramebuffer,"W":_glIsEnabled,"ya":_glLinkProgram,"Eb":_glMapBufferRange,"gb":_glPixelStorei,"Wa":_glPolygonOffset,"ra":_glReadPixels,"Ib":_glRenderbufferStorage,"Jb":_glRenderbufferStorageMultisample,"Ba":_glSamplerParameterf,"t":_glSamplerParameteri,"Hb":_glScissor,"ca":_glShaderSource,"$a":_glTexParameterf,"A":_glTexParameteri,"Ob":_glTexStorage2D,"Nb":_glTexStorage3D,"Oa":_glTexSubImage2D,"Na":_glTexSubImage3D,"va":_glUniform1i,"cb":_glUniformBlockBinding,"Db":_glUnmapBuffer,"L":_glUseProgram,"Kb":_glVertexAttrib4f,"Lb":_glVertexAttribI4ui,"Mb":_glVertexAttribIPointer,"oa":_glVertexAttribPointer,"X":_glViewport,"nb":_glWaitSync,"Ea":_pthread_create,"wb":_pthread_join,"Fa":_setTempRet0,"sb":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Xb"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Zb"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["_b"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["$b"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ac"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["bc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["cc"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["dc"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["ec"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["jc"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); return Filament.ready diff --git a/docs/remote/filament.wasm b/docs/remote/filament.wasm index 938a609cd038684b90eee9ca73ebb8853a2c0f20..b0bcc52944136f0280923881628aae538551078c 100755 GIT binary patch delta 126898 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 Tn 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 diff --git a/libs/viewer/include/viewer/Settings.h b/libs/viewer/include/viewer/Settings.h index 41639c2416..1f9c115404 100644 --- a/libs/viewer/include/viewer/Settings.h +++ b/libs/viewer/include/viewer/Settings.h @@ -66,6 +66,8 @@ using Dithering = filament::View::Dithering; using FogOptions = filament::View::FogOptions; using RenderQuality = filament::View::RenderQuality; using ShadowType = filament::View::ShadowType; +using DynamicResolutionOptions = filament::View::DynamicResolutionOptions; +using MultiSampleAntiAliasingOptions = filament::View::MultiSampleAntiAliasingOptions; using TemporalAntiAliasingOptions = filament::View::TemporalAntiAliasingOptions; using VignetteOptions = filament::View::VignetteOptions; using VsmShadowOptions = filament::View::VsmShadowOptions; @@ -156,6 +158,7 @@ struct ViewSettings { TemporalAntiAliasingOptions taa; ColorGradingSettings colorGrading; AmbientOcclusionOptions ssao; + DynamicResolutionOptions dsr; BloomOptions bloom; FogOptions fog; DepthOfFieldOptions dof; diff --git a/libs/viewer/src/Settings.cpp b/libs/viewer/src/Settings.cpp index 7f85052137..36e3a8f6f6 100644 --- a/libs/viewer/src/Settings.cpp +++ b/libs/viewer/src/Settings.cpp @@ -121,6 +121,13 @@ static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, bool* va return -1; } +static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, math::float2* val) { + float values[2]; + i = parse(tokens, i, jsonChunk, values, 2); + *val = {values[0], values[1]}; + return i; +} + static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, math::float3* val) { float values[3]; i = parse(tokens, i, jsonChunk, values, 3); @@ -241,6 +248,37 @@ static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, return i; } +static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, + DynamicResolutionOptions* out) { + CHECK_TOKTYPE(tokens[i], JSMN_OBJECT); + int size = tokens[i++].size; + for (int j = 0; j < size; ++j) { + const jsmntok_t tok = tokens[i]; + CHECK_KEY(tok); + if (compare(tok, jsonChunk, "enabled") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->enabled); + } else if (compare(tok, jsonChunk, "minScale") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->minScale); + } else if (compare(tok, jsonChunk, "maxScale") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->maxScale); + } else if (compare(tok, jsonChunk, "sharpness") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->sharpness); + } else if (compare(tok, jsonChunk, "quality") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->quality); + } else if (compare(tok, jsonChunk, "homogeneousScaling") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->homogeneousScaling); + } else { + slog.w << "Invalid dsr key: '" << STR(tok, jsonChunk) << "'" << io::endl; + i = parse(tokens, i + 1); + } + if (i < 0) { + slog.e << "Invalid dsr value: '" << STR(tok, jsonChunk) << "'" << io::endl; + return i; + } + } + return i; +} + static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, MultiSampleAntiAliasingOptions* out) { CHECK_TOKTYPE(tokens[i], JSMN_OBJECT); @@ -695,6 +733,8 @@ static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, ViewSett i = parse(tokens, i + 1, jsonChunk, &out->msaa); } else if (compare(tok, jsonChunk, "taa") == 0) { i = parse(tokens, i + 1, jsonChunk, &out->taa); + } else if (compare(tok, jsonChunk, "dsr") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->dsr); } else if (compare(tok, jsonChunk, "colorGrading") == 0) { i = parse(tokens, i + 1, jsonChunk, &out->colorGrading); } else if (compare(tok, jsonChunk, "ssao") == 0) { @@ -944,6 +984,7 @@ void applySettings(const ViewSettings& settings, View* dest) { dest->setAntiAliasing(settings.antiAliasing); dest->setTemporalAntiAliasingOptions(settings.taa); dest->setMultiSampleAntiAliasingOptions(settings.msaa); + dest->setDynamicResolutionOptions(settings.dsr); dest->setAmbientOcclusionOptions(settings.ssao); dest->setBloomOptions(settings.bloom); dest->setFogOptions(settings.fog); @@ -1154,12 +1195,27 @@ static std::ostream& writeJson(std::ostream& oss, const float* v, int count) { return oss; } +static std::ostream& operator<<(std::ostream& out, math::float2 v) { + return writeJson(out, v.v, 2); +} + static std::ostream& operator<<(std::ostream& out, math::float3 v) { - return writeJson(out, &v.x, 3); + return writeJson(out, v.v, 3); } static std::ostream& operator<<(std::ostream& out, math::float4 v) { - return writeJson(out, &v.x, 4); + return writeJson(out, v.v, 4); +} + +static std::ostream& operator<<(std::ostream& out, const DynamicResolutionOptions& in) { + return out << "{\n" + << "\"enabled\": " << to_string(in.enabled) << ",\n" + << "\"minScale\": " << in.minScale << ",\n" + << "\"maxScale\": " << in.maxScale << ",\n" + << "\"sharpness\": " << in.sharpness << ",\n" + << "\"quality\": " << in.quality << ",\n" + << "\"homogeneousScaling\": " << to_string(in.homogeneousScaling) << "\n" + << "}"; } static std::ostream& operator<<(std::ostream& out, const MultiSampleAntiAliasingOptions& in) { @@ -1426,6 +1482,7 @@ static std::ostream& operator<<(std::ostream& out, const ViewSettings& in) { << "\"antiAliasing\": " << in.antiAliasing << ",\n" << "\"msaa\": " << in.msaa << ",\n" << "\"taa\": " << in.taa << ",\n" + << "\"dsr\": " << in.dsr << ",\n" << "\"colorGrading\": " << (in.colorGrading) << ",\n" << "\"ssao\": " << (in.ssao) << ",\n" << "\"bloom\": " << (in.bloom) << ",\n" diff --git a/libs/viewer/src/SimpleViewer.cpp b/libs/viewer/src/SimpleViewer.cpp index e491ce0683..9baf01dbcb 100644 --- a/libs/viewer/src/SimpleViewer.cpp +++ b/libs/viewer/src/SimpleViewer.cpp @@ -733,6 +733,21 @@ void SimpleViewer::updateUserInterface() { ImGui::Unindent(); } + if (ImGui::CollapsingHeader("Dynamic Resolution")) { + auto& dsr = mSettings.view.dsr; + int quality = (int)dsr.quality; + ImGui::Checkbox("enabled", &dsr.enabled); + ImGui::Checkbox("homogeneous", &dsr.homogeneousScaling); + ImGui::SliderFloat("min. scale", &dsr.minScale.x, 0.25f, 1.0f); + ImGui::SliderFloat("max. scale", &dsr.maxScale.x, 0.25f, 1.0f); + ImGui::SliderInt("quality", &quality, 0, 3); + ImGui::SliderFloat("sharpness", &dsr.sharpness, 0.0f, 1.0f); + dsr.minScale.x = std::min(dsr.minScale.x, dsr.maxScale.x); + dsr.minScale.y = dsr.minScale.x; + dsr.maxScale.y = dsr.maxScale.x; + dsr.quality = (QualityLevel)quality; + } + auto& light = mSettings.lighting; if (ImGui::CollapsingHeader("Light")) { ImGui::Indent(); diff --git a/libs/viewer/tests/test_settings.cpp b/libs/viewer/tests/test_settings.cpp index bcdf0aa63e..9ad89d27b2 100644 --- a/libs/viewer/tests/test_settings.cpp +++ b/libs/viewer/tests/test_settings.cpp @@ -37,6 +37,15 @@ static const char* JSON_TEST_DEFAULTS = R"TXT( "sampleCount": 4, "customResolve": false }, + "dsr": { + "enabled": false, + "minScale": [0.25, 0.25], + "maxScale": [1.0, 1.0], + "sharpness": 0.9, + "enabled": false, + "homogeneousScaling": false, + "quality": "MEDIUM" + }, "colorGrading": { "enabled": true, "quality": "MEDIUM", diff --git a/samples/gltf_viewer.cpp b/samples/gltf_viewer.cpp index c2f13a9bf6..c9b2f5c44e 100644 --- a/samples/gltf_viewer.cpp +++ b/samples/gltf_viewer.cpp @@ -343,11 +343,6 @@ static void createGroundPlane(Engine* engine, Scene* scene, App& app) { app.scene.groundMaterial = shadowMaterial; } -static float sGlobalScale = 1.0f; -static float sGlobalScaleAnamorphism = 0.0f; -static int sGlobalScaleQuality = 0; -static float sGlobalScaleSharpness = 0.9f; - int main(int argc, char** argv) { App app; @@ -575,11 +570,6 @@ int main(int argc, char** argv) { debug.getPropertyAddress("d.renderer.doFrameCapture"); *captureFrame = true; } - ImGui::SliderFloat("scale", &sGlobalScale, 0.25f, 1.0f); - ImGui::SliderFloat("anamorphism", &sGlobalScaleAnamorphism, -1.0f, 1.0f); - ImGui::SliderInt("quality", &sGlobalScaleQuality, 0, 3); - ImGui::SliderFloat("sharpness", &sGlobalScaleSharpness, 0.0f, 1.0f); - } if (ImGui::BeginPopupModal("MessageBox", NULL, ImGuiWindowFlags_AlwaysAutoResize)) { @@ -691,24 +681,6 @@ int main(int argc, char** argv) { } else { view->setColorGrading(nullptr); } - - view->setDynamicResolutionOptions({ - .minScale = { - lerp(sGlobalScale, 1.0f, - sGlobalScaleAnamorphism >= 0.0f ? sGlobalScaleAnamorphism : 0.0f), - lerp(sGlobalScale, 1.0f, - sGlobalScaleAnamorphism <= 0.0f ? -sGlobalScaleAnamorphism : 0.0f), - }, - .maxScale = { - lerp(sGlobalScale, 1.0f, - sGlobalScaleAnamorphism >= 0.0f ? sGlobalScaleAnamorphism : 0.0f), - lerp(sGlobalScale, 1.0f, - sGlobalScaleAnamorphism <= 0.0f ? -sGlobalScaleAnamorphism : 0.0f), - }, - .sharpness = sGlobalScaleSharpness, - .enabled = sGlobalScale != 1.0f, - .quality = (QualityLevel)sGlobalScaleQuality - }); }; auto postRender = [&app](Engine* engine, View* view, Scene* scene, Renderer* renderer) {