From 94f121f37d33a98b6473ce2cbf94d5ddea67acdc Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 16 Feb 2023 15:03:34 -0800 Subject: [PATCH] Add a camera near/far setting in gltf_viewer --- .../src/main/cpp/AutomationEngine.cpp | 4 ++ .../filament/utils/AutomationEngine.java | 2 + .../android/filament/utils/ModelViewer.kt | 19 +++++-- .../android/filament/gltf/MainActivity.kt | 2 + docs/remote/filament.js | 2 +- docs/remote/filament.wasm | Bin 2656598 -> 2654766 bytes .../include/filamentapp/FilamentApp.h | 5 +- libs/filamentapp/src/FilamentApp.cpp | 13 +++-- libs/viewer/include/viewer/Settings.h | 2 + libs/viewer/src/Settings.cpp | 6 +++ libs/viewer/src/ViewerGui.cpp | 49 +++++++++--------- samples/gltf_viewer.cpp | 4 +- samples/material_sandbox.cpp | 7 ++- samples/material_sandbox.h | 3 ++ 14 files changed, 83 insertions(+), 35 deletions(-) diff --git a/android/filament-utils-android/src/main/cpp/AutomationEngine.cpp b/android/filament-utils-android/src/main/cpp/AutomationEngine.cpp index 44eb5ed6b1..e55a9605ee 100644 --- a/android/filament-utils-android/src/main/cpp/AutomationEngine.cpp +++ b/android/filament-utils-android/src/main/cpp/AutomationEngine.cpp @@ -166,6 +166,8 @@ Java_com_google_android_filament_utils_AutomationEngine_nGetViewerOptions(JNIEnv const jfieldID cameraAperture = env->GetFieldID(klass, "cameraAperture", "F"); const jfieldID cameraSpeed = env->GetFieldID(klass, "cameraSpeed", "F"); const jfieldID cameraISO = env->GetFieldID(klass, "cameraISO", "F"); + const jfieldID cameraNear = env->GetFieldID(klass, "cameraNear", "F"); + const jfieldID cameraFar = env->GetFieldID(klass, "cameraFar", "F"); const jfieldID groundShadowStrength = env->GetFieldID(klass, "groundShadowStrength", "F"); const jfieldID groundPlaneEnabled = env->GetFieldID(klass, "groundPlaneEnabled", "Z"); const jfieldID skyboxEnabled = env->GetFieldID(klass, "skyboxEnabled", "Z"); @@ -177,6 +179,8 @@ Java_com_google_android_filament_utils_AutomationEngine_nGetViewerOptions(JNIEnv env->SetFloatField(result, cameraAperture, options.cameraAperture); env->SetFloatField(result, cameraSpeed, options.cameraSpeed); env->SetFloatField(result, cameraISO, options.cameraISO); + env->SetFloatField(result, cameraNear, options.cameraNear); + env->SetFloatField(result, cameraFar, options.cameraFar); env->SetFloatField(result, groundShadowStrength, options.groundShadowStrength); env->SetBooleanField(result, groundPlaneEnabled, options.groundPlaneEnabled); env->SetBooleanField(result, skyboxEnabled, options.skyboxEnabled); diff --git a/android/filament-utils-android/src/main/java/com/google/android/filament/utils/AutomationEngine.java b/android/filament-utils-android/src/main/java/com/google/android/filament/utils/AutomationEngine.java index 93987d6c36..daa1da4274 100644 --- a/android/filament-utils-android/src/main/java/com/google/android/filament/utils/AutomationEngine.java +++ b/android/filament-utils-android/src/main/java/com/google/android/filament/utils/AutomationEngine.java @@ -97,6 +97,8 @@ public class AutomationEngine { public float cameraAperture = 16.0f; public float cameraSpeed = 125.0f; public float cameraISO = 100.0f; + public float cameraNear = 0.1f; + public float cameraFar = 100.0f; public float groundShadowStrength = 0.75f; public boolean groundPlaneEnabled = false; public boolean skyboxEnabled = true; diff --git a/android/filament-utils-android/src/main/java/com/google/android/filament/utils/ModelViewer.kt b/android/filament-utils-android/src/main/java/com/google/android/filament/utils/ModelViewer.kt index 8e5939fe39..c9bd36a30d 100644 --- a/android/filament-utils-android/src/main/java/com/google/android/filament/utils/ModelViewer.kt +++ b/android/filament-utils-android/src/main/java/com/google/android/filament/utils/ModelViewer.kt @@ -27,8 +27,8 @@ import com.google.android.filament.gltfio.* import kotlinx.coroutines.* import java.nio.Buffer -private const val kNearPlane = 0.05 // 5 cm -private const val kFarPlane = 1000.0 // 1 km +private const val kNearPlane = 0.05f // 5 cm +private const val kFarPlane = 1000.0f // 1 km private const val kAperture = 16f private const val kShutterSpeed = 1f / 125f private const val kSensitivity = 100f @@ -80,6 +80,18 @@ class ModelViewer( updateCameraProjection() } + var cameraNear = kNearPlane + set(value) { + field = value + updateCameraProjection() + } + + var cameraFar = kFarPlane + set(value) { + field = value + updateCameraProjection() + } + val scene: Scene val view: View val camera: Camera @@ -368,7 +380,8 @@ class ModelViewer( val width = view.viewport.width val height = view.viewport.height val aspect = width.toDouble() / height.toDouble() - camera.setLensProjection(cameraFocalLength.toDouble(), aspect, kNearPlane, kFarPlane) + camera.setLensProjection(cameraFocalLength.toDouble(), aspect, + cameraNear.toDouble(), cameraFar.toDouble()) } inner class SurfaceCallback : UiHelper.RendererCallback { diff --git a/android/samples/sample-gltf-viewer/src/main/java/com/google/android/filament/gltf/MainActivity.kt b/android/samples/sample-gltf-viewer/src/main/java/com/google/android/filament/gltf/MainActivity.kt index 6e449261fd..8291f02040 100644 --- a/android/samples/sample-gltf-viewer/src/main/java/com/google/android/filament/gltf/MainActivity.kt +++ b/android/samples/sample-gltf-viewer/src/main/java/com/google/android/filament/gltf/MainActivity.kt @@ -356,6 +356,8 @@ class MainActivity : Activity() { automation.applySettings(modelViewer.engine, json, viewerContent) modelViewer.view.colorGrading = automation.getColorGrading(modelViewer.engine) modelViewer.cameraFocalLength = automation.viewerOptions.cameraFocalLength + modelViewer.cameraNear = automation.viewerOptions.cameraNear + modelViewer.cameraFar = automation.viewerOptions.cameraFar updateRootTransform() } diff --git a/docs/remote/filament.js b/docs/remote/filament.js index 62b746bc4d..4a33d0b283 100644 --- a/docs/remote/filament.js +++ b/docs/remote/filament.js @@ -6,7 +6,7 @@ var Filament = (() => { 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=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}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}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 keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function 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()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);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;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"]["Zb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["$b"];addOnInit(Module["asm"]["_b"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&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={1007180:()=>{const options=window.filament_glOptions;const context=window.filament_glContext;const handle=GL.registerContext(context,options);window.filament_contextHandle=handle;GL.makeContextCurrent(handle)},1007394:()=>{const handle=window.filament_contextHandle;GL.makeContextCurrent(handle)},1007475:($0,$1,$2,$3,$4,$5)=>{const fn=Emval.toValue($0);fn({"renderable":Emval.toValue($1),"depth":$2,"fragCoords":[$3,$4,$5]})}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(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.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;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){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(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}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},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}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[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}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{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function __embind_finalize_value_array(rawTupleType){var reg=tupleRegistrations[rawTupleType];delete tupleRegistrations[rawTupleType];var elements=reg.elements;var elementsLength=elements.length;var elementTypes=elements.map(function(elt){return elt.getterReturnType}).concat(elements.map(function(elt){return elt.setterArgumentType}));var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;whenDependentTypesAreResolved([rawTupleType],elementTypes,function(elementTypes){elements.forEach((elt,i)=>{var getterReturnType=elementTypes[i];var getter=elt.getter;var getterContext=elt.getterContext;var setterArgumentType=elementTypes[i+elementsLength];var setter=elt.setter;var setterContext=elt.setterContext;elt.read=ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))};elt.write=(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}});return[{name:reg.name,"fromWireType":function(ptr){var rv=new Array(elementsLength);for(var i=0;ifield.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))},write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":function(ptr){var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":function(destructors,o){for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError('Missing field: "'+fieldName+'"')}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>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 finalizationRegistry=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 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)}var registeredPointers={};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}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}var delayFunction=undefined;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 attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.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}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(){}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 "'+embindRepr(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 "'+embindRepr(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.toHandle(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 "'+embindRepr(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 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)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2])}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);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]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){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;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}function validateThis(this_,classType,humanName){if(!(this_ instanceof Object)){throwBindingError(humanName+' with invalid "this": '+this_)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name)}if(!this_.$$.ptr){throwBindingError("cannot call emscripten binding method "+humanName+" on deleted object")}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}function __embind_register_class_property(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],function(classType){classType=classType[0];var humanName=classType.name+"."+fieldName;var desc={get:function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>{throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])}}else{desc.set=v=>{throwBindingError(humanName+" is a read-only property")}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this["fromWireType"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this["fromWireType"](heap[pointer>>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 embindRepr(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){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=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+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,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+i]=charCode}}else{for(var i=0;iHEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_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}})}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);HEAPU32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function __emval_get_property(handle,key){handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(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)}return symbol}function __emval_new_cstring(v){return Emval.toHandle(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,arg){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readAsmConstArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else _emscripten_get_now=()=>performance.now();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=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;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){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw 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 _glBindBufferBase(target,index,buffer){GLctx["bindBufferBase"](target,index,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&&size){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){size&&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||!imageSize){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}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 _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx["copyBufferSubData"](x0,x1,x2,x3,x4)}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)}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}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 _glGetBufferSubData(target,offset,size,data){if(!data){GL.recordError(1281);return}size&&GLctx["getBufferSubData"](target,offset,HEAPU8,data,size)}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 _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]}GLctx["invalidateFramebuffer"](target,list)}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 _glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}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 _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 days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_embind();init_RegisteredPointer();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={"Ga":___syscall_fcntl64,"yb":___syscall_ioctl,"zb":___syscall_openat,"ub":___syscall_stat64,"x":__embind_finalize_value_array,"m":__embind_finalize_value_object,"nb":__embind_register_bigint,"Eb":__embind_register_bool,"e":__embind_register_class,"k":__embind_register_class_class_function,"l":__embind_register_class_constructor,"a":__embind_register_class_function,"w":__embind_register_class_property,"Db":__embind_register_emval,"h":__embind_register_enum,"b":__embind_register_enum_value,"Ia":__embind_register_float,"T":__embind_register_function,"D":__embind_register_integer,"p":__embind_register_memory_view,"Ha":__embind_register_std_string,"ea":__embind_register_std_wstring,"y":__embind_register_value_array,"f":__embind_register_value_array_element,"n":__embind_register_value_object,"d":__embind_register_value_object_field,"Fb":__embind_register_void,"Bb":__emscripten_get_now_is_monotonic,"s":__emval_as,"g":__emval_decref,"t":__emval_get_property,"S":__emval_incref,"H":__emval_new_cstring,"r":__emval_run_destructors,"u":__emval_take_value,"c":_abort,"ca":_emscripten_asm_const_int,"qb":_emscripten_get_heap_max,"Ab":_emscripten_get_now,"Cb":_emscripten_memcpy_big,"tb":_emscripten_resize_heap,"vb":_environ_get,"wb":_environ_sizes_get,"da":_fd_close,"xb":_fd_read,"mb":_fd_seek,"Fa":_fd_write,"rb":_getentropy,"i":_glActiveTexture,"W":_glAttachShader,"Wb":_glBeginQuery,"o":_glBindBuffer,"ta":_glBindBufferBase,"U":_glBindBufferRange,"q":_glBindFramebuffer,"Na":_glBindRenderbuffer,"aa":_glBindSampler,"j":_glBindTexture,"A":_glBindVertexArray,"wa":_glBlendEquationSeparate,"va":_glBlendFuncSeparate,"fa":_glBlitFramebuffer,"K":_glBufferData,"ha":_glBufferSubData,"Kb":_glClearBufferfi,"E":_glClearBufferfv,"Jb":_glClearBufferiv,"ob":_glClientWaitSync,"_":_glColorMask,"eb":_glCompileShader,"Ka":_glCompressedTexSubImage2D,"Ja":_glCompressedTexSubImage3D,"Ra":_glCopyBufferSubData,"db":_glCreateProgram,"gb":_glCreateShader,"xa":_glCullFace,"$":_glDeleteBuffers,"ia":_glDeleteFramebuffers,"oa":_glDeleteProgram,"Va":_glDeleteQueries,"ja":_glDeleteRenderbuffers,"za":_glDeleteSamplers,"X":_glDeleteShader,"L":_glDeleteSync,"ka":_glDeleteTextures,"ib":_glDeleteVertexArrays,"ba":_glDepthFunc,"Z":_glDepthMask,"qa":_glDepthRangef,"pa":_glDetachShader,"v":_glDisable,"Nb":_glDisableVertexAttribArray,"Xa":_glDrawBuffers,"Xb":_glDrawElementsInstanced,"Yb":_glDrawRangeElements,"G":_glEnable,"Qb":_glEnableVertexAttribArray,"Vb":_glEndQuery,"V":_glFenceSync,"Da":_glFinish,"lb":_glFlush,"M":_glFramebufferRenderbuffer,"Pa":_glFramebufferTexture2D,"Oa":_glFramebufferTextureLayer,"ya":_glFrontFace,"O":_glGenBuffers,"la":_glGenFramebuffers,"Wa":_glGenQueries,"Y":_glGenRenderbuffers,"Ba":_glGenSamplers,"N":_glGenTextures,"hb":_glGenVertexArrays,"Ta":_glGenerateMipmap,"Ib":_glGetBufferSubData,"Ca":_glGetError,"kb":_glGetFloatv,"C":_glGetIntegerv,"ab":_glGetProgramInfoLog,"na":_glGetProgramiv,"Ub":_glGetQueryObjectuiv,"bb":_glGetShaderInfoLog,"ma":_glGetShaderiv,"I":_glGetString,"$a":_glGetUniformBlockIndex,"Za":_glGetUniformLocation,"jb":_glHint,"ga":_glInvalidateFramebuffer,"cb":_glLinkProgram,"Hb":_glMapBufferRange,"B":_glPixelStorei,"ua":_glPolygonOffset,"Sa":_glReadPixels,"Lb":_glRenderbufferStorage,"Mb":_glRenderbufferStorageMultisample,"Aa":_glSamplerParameterf,"J":_glSamplerParameteri,"sa":_glScissor,"fb":_glShaderSource,"Q":_glStencilFuncSeparate,"F":_glStencilMaskSeparate,"P":_glStencilOpSeparate,"Ua":_glTexParameterf,"z":_glTexParameteri,"Tb":_glTexStorage2D,"Qa":_glTexStorage3D,"Ma":_glTexSubImage2D,"La":_glTexSubImage3D,"Ya":_glUniform1i,"_a":_glUniformBlockBinding,"Gb":_glUnmapBuffer,"R":_glUseProgram,"Ob":_glVertexAttrib4f,"Pb":_glVertexAttribI4ui,"Sb":_glVertexAttribIPointer,"Rb":_glVertexAttribPointer,"ra":_glViewport,"pb":_glWaitSync,"Ea":_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"]["_b"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ac"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["bc"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["cc"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["dc"]).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"]["ec"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiij=Module["dynCall_iiiij"]=function(){return(dynCall_iiiij=Module["dynCall_iiiij"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["nc"]).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=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}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}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 keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function 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()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);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;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"]["Zb"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["$b"];addOnInit(Module["asm"]["_b"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&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={1007244:()=>{const options=window.filament_glOptions;const context=window.filament_glContext;const handle=GL.registerContext(context,options);window.filament_contextHandle=handle;GL.makeContextCurrent(handle)},1007458:()=>{const handle=window.filament_contextHandle;GL.makeContextCurrent(handle)},1007539:($0,$1,$2,$3,$4,$5)=>{const fn=Emval.toValue($0);fn({"renderable":Emval.toValue($1),"depth":$2,"fragCoords":[$3,$4,$5]})}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(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.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;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){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(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}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},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}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}var tupleRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[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}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{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function __embind_finalize_value_array(rawTupleType){var reg=tupleRegistrations[rawTupleType];delete tupleRegistrations[rawTupleType];var elements=reg.elements;var elementsLength=elements.length;var elementTypes=elements.map(function(elt){return elt.getterReturnType}).concat(elements.map(function(elt){return elt.setterArgumentType}));var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;whenDependentTypesAreResolved([rawTupleType],elementTypes,function(elementTypes){elements.forEach((elt,i)=>{var getterReturnType=elementTypes[i];var getter=elt.getter;var getterContext=elt.getterContext;var setterArgumentType=elementTypes[i+elementsLength];var setter=elt.setter;var setterContext=elt.setterContext;elt.read=ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))};elt.write=(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}});return[{name:reg.name,"fromWireType":function(ptr){var rv=new Array(elementsLength);for(var i=0;ifield.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>{return getterReturnType["fromWireType"](getter(getterContext,ptr))},write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,"fromWireType":function(ptr){var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},"toWireType":function(destructors,o){for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError('Missing field: "'+fieldName+'"')}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:rawDestructor}]})}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>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 finalizationRegistry=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 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)}var registeredPointers={};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}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}var delayFunction=undefined;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 attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.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}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(){}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 "'+embindRepr(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 "'+embindRepr(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.toHandle(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 "'+embindRepr(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 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)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2])}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);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]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){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;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}function validateThis(this_,classType,humanName){if(!(this_ instanceof Object)){throwBindingError(humanName+' with invalid "this": '+this_)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name)}if(!this_.$$.ptr){throwBindingError("cannot call emscripten binding method "+humanName+" on deleted object")}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)}function __embind_register_class_property(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],function(classType){classType=classType[0];var humanName=classType.name+"."+fieldName;var desc={get:function(){throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>{throwUnboundTypeError("Cannot access "+humanName+" due to unbound types",[getterReturnType,setterArgumentType])}}else{desc.set=v=>{throwBindingError(humanName+" is a read-only property")}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function enumReadValueFromPointer(name,shift,signed){switch(shift){case 0:return function(pointer){var heap=signed?HEAP8:HEAPU8;return this["fromWireType"](heap[pointer])};case 1:return function(pointer){var heap=signed?HEAP16:HEAPU16;return this["fromWireType"](heap[pointer>>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 embindRepr(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){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=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+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,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+i]=charCode}}else{for(var i=0;iHEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_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}})}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=Emval.toHandle(destructors);HEAPU32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}function __emval_get_property(handle,key){handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(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)}return symbol}function __emval_new_cstring(v){return Emval.toHandle(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,arg){type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)}function _abort(){abort("")}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readAsmConstArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=()=>{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else _emscripten_get_now=()=>performance.now();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=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;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){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw 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 _glBindBufferBase(target,index,buffer){GLctx["bindBufferBase"](target,index,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&&size){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){size&&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||!imageSize){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}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 _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx["copyBufferSubData"](x0,x1,x2,x3,x4)}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)}var tempFixedLengthArray=[];function _glDrawBuffers(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}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 _glGetBufferSubData(target,offset,size,data){if(!data){GL.recordError(1281);return}size&&GLctx["getBufferSubData"](target,offset,HEAPU8,data,size)}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 _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]}GLctx["invalidateFramebuffer"](target,list)}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 _glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}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 _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 days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_embind();init_RegisteredPointer();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={"Ga":___syscall_fcntl64,"yb":___syscall_ioctl,"zb":___syscall_openat,"ub":___syscall_stat64,"x":__embind_finalize_value_array,"m":__embind_finalize_value_object,"nb":__embind_register_bigint,"Eb":__embind_register_bool,"e":__embind_register_class,"k":__embind_register_class_class_function,"l":__embind_register_class_constructor,"a":__embind_register_class_function,"w":__embind_register_class_property,"Db":__embind_register_emval,"h":__embind_register_enum,"b":__embind_register_enum_value,"Ia":__embind_register_float,"T":__embind_register_function,"D":__embind_register_integer,"p":__embind_register_memory_view,"Ha":__embind_register_std_string,"ea":__embind_register_std_wstring,"y":__embind_register_value_array,"f":__embind_register_value_array_element,"n":__embind_register_value_object,"d":__embind_register_value_object_field,"Fb":__embind_register_void,"Bb":__emscripten_get_now_is_monotonic,"s":__emval_as,"g":__emval_decref,"t":__emval_get_property,"S":__emval_incref,"H":__emval_new_cstring,"r":__emval_run_destructors,"u":__emval_take_value,"c":_abort,"ca":_emscripten_asm_const_int,"qb":_emscripten_get_heap_max,"Ab":_emscripten_get_now,"Cb":_emscripten_memcpy_big,"tb":_emscripten_resize_heap,"vb":_environ_get,"wb":_environ_sizes_get,"da":_fd_close,"xb":_fd_read,"mb":_fd_seek,"Fa":_fd_write,"rb":_getentropy,"i":_glActiveTexture,"W":_glAttachShader,"Wb":_glBeginQuery,"o":_glBindBuffer,"ta":_glBindBufferBase,"U":_glBindBufferRange,"q":_glBindFramebuffer,"Na":_glBindRenderbuffer,"aa":_glBindSampler,"j":_glBindTexture,"A":_glBindVertexArray,"wa":_glBlendEquationSeparate,"va":_glBlendFuncSeparate,"fa":_glBlitFramebuffer,"K":_glBufferData,"ha":_glBufferSubData,"Kb":_glClearBufferfi,"E":_glClearBufferfv,"Jb":_glClearBufferiv,"ob":_glClientWaitSync,"_":_glColorMask,"eb":_glCompileShader,"Ka":_glCompressedTexSubImage2D,"Ja":_glCompressedTexSubImage3D,"Ra":_glCopyBufferSubData,"db":_glCreateProgram,"gb":_glCreateShader,"xa":_glCullFace,"$":_glDeleteBuffers,"ia":_glDeleteFramebuffers,"oa":_glDeleteProgram,"Va":_glDeleteQueries,"ja":_glDeleteRenderbuffers,"za":_glDeleteSamplers,"X":_glDeleteShader,"L":_glDeleteSync,"ka":_glDeleteTextures,"ib":_glDeleteVertexArrays,"ba":_glDepthFunc,"Z":_glDepthMask,"qa":_glDepthRangef,"pa":_glDetachShader,"v":_glDisable,"Nb":_glDisableVertexAttribArray,"Xa":_glDrawBuffers,"Xb":_glDrawElementsInstanced,"Yb":_glDrawRangeElements,"G":_glEnable,"Qb":_glEnableVertexAttribArray,"Vb":_glEndQuery,"V":_glFenceSync,"Da":_glFinish,"lb":_glFlush,"M":_glFramebufferRenderbuffer,"Pa":_glFramebufferTexture2D,"Oa":_glFramebufferTextureLayer,"ya":_glFrontFace,"O":_glGenBuffers,"la":_glGenFramebuffers,"Wa":_glGenQueries,"Y":_glGenRenderbuffers,"Ba":_glGenSamplers,"N":_glGenTextures,"hb":_glGenVertexArrays,"Ta":_glGenerateMipmap,"Ib":_glGetBufferSubData,"Ca":_glGetError,"kb":_glGetFloatv,"C":_glGetIntegerv,"ab":_glGetProgramInfoLog,"na":_glGetProgramiv,"Ub":_glGetQueryObjectuiv,"bb":_glGetShaderInfoLog,"ma":_glGetShaderiv,"I":_glGetString,"$a":_glGetUniformBlockIndex,"Za":_glGetUniformLocation,"jb":_glHint,"ga":_glInvalidateFramebuffer,"cb":_glLinkProgram,"Hb":_glMapBufferRange,"B":_glPixelStorei,"ua":_glPolygonOffset,"Sa":_glReadPixels,"Lb":_glRenderbufferStorage,"Mb":_glRenderbufferStorageMultisample,"Aa":_glSamplerParameterf,"J":_glSamplerParameteri,"sa":_glScissor,"fb":_glShaderSource,"Q":_glStencilFuncSeparate,"F":_glStencilMaskSeparate,"P":_glStencilOpSeparate,"Ua":_glTexParameterf,"z":_glTexParameteri,"Tb":_glTexStorage2D,"Qa":_glTexStorage3D,"Ma":_glTexSubImage2D,"La":_glTexSubImage3D,"Ya":_glUniform1i,"_a":_glUniformBlockBinding,"Gb":_glUnmapBuffer,"R":_glUseProgram,"Ob":_glVertexAttrib4f,"Pb":_glVertexAttribI4ui,"Sb":_glVertexAttribIPointer,"Rb":_glVertexAttribPointer,"ra":_glViewport,"pb":_glWaitSync,"Ea":_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"]["_b"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["ac"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["bc"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["cc"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["dc"]).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"]["ec"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["fc"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["gc"]).apply(null,arguments)};var dynCall_iiij=Module["dynCall_iiij"]=function(){return(dynCall_iiij=Module["dynCall_iiij"]=Module["asm"]["hc"]).apply(null,arguments)};var dynCall_iiiij=Module["dynCall_iiiij"]=function(){return(dynCall_iiiij=Module["dynCall_iiiij"]=Module["asm"]["ic"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["jc"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["kc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["lc"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["mc"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["nc"]).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 c51608d4c8fceaa0d70e16ddcd63950eb50a4415..0f0b96d04996906c07dafffdee73f767ae99a908 100755 GIT binary patch delta 206467 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 z%0A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 z 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 z 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%0D-8z3i~5RCQ690hUCGj+^m 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 delta 208385 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 z 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%0Av=3mT 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

9K~^u_ssR?<3gZWWh5V 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

R|B3_JE7$G`88E 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 C&_Tff diff --git a/libs/filamentapp/include/filamentapp/FilamentApp.h b/libs/filamentapp/include/filamentapp/FilamentApp.h index f39c8db7aa..99e6799e55 100644 --- a/libs/filamentapp/include/filamentapp/FilamentApp.h +++ b/libs/filamentapp/include/filamentapp/FilamentApp.h @@ -88,7 +88,8 @@ public: void setSidebarWidth(int width) { mSidebarWidth = width; } void setWindowTitle(const char* title) { mWindowTitle = title; } - float& getCameraFocalLength() { return mCameraFocalLength; } + void setCameraFocalLength(float focalLength) { mCameraFocalLength = focalLength; } + void setCameraNearFar(float near, float far) { mCameraNear = near; mCameraFar = far; } void addOffscreenView(filament::View* view) { mOffscreenViews.push_back(view); } @@ -241,6 +242,8 @@ private: std::string mWindowTitle; std::vector mOffscreenViews; float mCameraFocalLength = 28.0f; + float mCameraNear = 0.1f; + float mCameraFar = 100.0f; }; #endif // TNT_FILAMENT_SAMPLE_FILAMENTAPP_H diff --git a/libs/filamentapp/src/FilamentApp.cpp b/libs/filamentapp/src/FilamentApp.cpp index 0d00f24f50..c92cf4079b 100644 --- a/libs/filamentapp/src/FilamentApp.cpp +++ b/libs/filamentapp/src/FilamentApp.cpp @@ -191,6 +191,8 @@ void FilamentApp::run(const Config& config, SetupCallback setupCallback, int sidebarWidth = mSidebarWidth; float cameraFocalLength = mCameraFocalLength; + float cameraNear = mCameraNear; + float cameraFar = mCameraFar; SDL_EventState(SDL_DROPFILE, SDL_ENABLE); SDL_Window* sdlWindow = window->getSDLWindow(); @@ -200,10 +202,15 @@ void FilamentApp::run(const Config& config, SetupCallback setupCallback, SDL_SetWindowTitle(sdlWindow, mWindowTitle.c_str()); } - if (mSidebarWidth != sidebarWidth || mCameraFocalLength != cameraFocalLength) { + if (mSidebarWidth != sidebarWidth || + mCameraFocalLength != cameraFocalLength || + mCameraNear != cameraNear || + mCameraFar != cameraFar) { window->configureCamerasForWindow(); sidebarWidth = mSidebarWidth; cameraFocalLength = mCameraFocalLength; + cameraNear = mCameraNear; + cameraFar = mCameraFar; } if (!UTILS_HAS_THREADING) { @@ -791,8 +798,8 @@ void FilamentApp::Window::configureCamerasForWindow() { // the sidebar. To prevent this we simply clamp the width of the main viewport. const uint32_t mainWidth = splitview ? width : std::max(1, (int) width - sidebar); - double near = 0.1; - double far = 100; + double near = mFilamentApp->mCameraNear; + double far = mFilamentApp->mCameraFar; mMainCamera->setLensProjection(mFilamentApp->mCameraFocalLength, double(mainWidth) / height, near, far); mDebugCamera->setProjection(45.0, double(width) / height, 0.0625, 4096, Camera::Fov::VERTICAL); diff --git a/libs/viewer/include/viewer/Settings.h b/libs/viewer/include/viewer/Settings.h index e66aa209e3..33ff8c0ef8 100644 --- a/libs/viewer/include/viewer/Settings.h +++ b/libs/viewer/include/viewer/Settings.h @@ -214,6 +214,8 @@ struct ViewerOptions { float cameraAperture = 16.0f; float cameraSpeed = 125.0f; float cameraISO = 100.0f; + float cameraNear = 0.1f; + float cameraFar = 100.0f; float groundShadowStrength = 0.75f; bool groundPlaneEnabled = false; bool skyboxEnabled = true; diff --git a/libs/viewer/src/Settings.cpp b/libs/viewer/src/Settings.cpp index 7167f3181e..ceb13cc1c3 100644 --- a/libs/viewer/src/Settings.cpp +++ b/libs/viewer/src/Settings.cpp @@ -444,6 +444,10 @@ static int parse(jsmntok_t const* tokens, int i, const char* jsonChunk, ViewerOp i = parse(tokens, i + 1, jsonChunk, &out->cameraSpeed); } else if (compare(tok, jsonChunk, "cameraISO") == 0) { i = parse(tokens, i + 1, jsonChunk, &out->cameraISO); + } else if (compare(tok, jsonChunk, "cameraNear") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->cameraNear); + } else if (compare(tok, jsonChunk, "cameraFar") == 0) { + i = parse(tokens, i + 1, jsonChunk, &out->cameraFar); } else if (compare(tok, jsonChunk, "groundShadowStrength") == 0) { i = parse(tokens, i + 1, jsonChunk, &out->groundShadowStrength); } else if (compare(tok, jsonChunk, "groundPlaneEnabled") == 0) { @@ -773,6 +777,8 @@ static std::ostream& operator<<(std::ostream& out, const ViewerOptions& in) { << "\"cameraAperture\": " << (in.cameraAperture) << ",\n" << "\"cameraSpeed\": " << (in.cameraSpeed) << ",\n" << "\"cameraISO\": " << (in.cameraISO) << ",\n" + << "\"cameraNear\": " << (in.cameraNear) << ",\n" + << "\"cameraFar\": " << (in.cameraFar) << ",\n" << "\"groundShadowStrength\": " << (in.groundShadowStrength) << ",\n" << "\"groundPlaneEnabled\": " << to_string(in.groundPlaneEnabled) << ",\n" << "\"skyboxEnabled\": " << to_string(in.skyboxEnabled) << ",\n" diff --git a/libs/viewer/src/ViewerGui.cpp b/libs/viewer/src/ViewerGui.cpp index 4215d4e13c..c7cdb257a0 100644 --- a/libs/viewer/src/ViewerGui.cpp +++ b/libs/viewer/src/ViewerGui.cpp @@ -939,34 +939,35 @@ void ViewerGui::updateUserInterface() { if (ImGui::CollapsingHeader("Camera")) { ImGui::Indent(); - ImGui::SliderFloat("Focal length (mm)", &mSettings.viewer.cameraFocalLength, - 16.0f, 90.0f); - - bool dofMedian = mSettings.view.dof.filter == View::DepthOfFieldOptions::Filter::MEDIAN; - int dofRingCount = mSettings.view.dof.fastGatherRingCount; - int dofMaxCoC = mSettings.view.dof.maxForegroundCOC; - if (!dofRingCount) dofRingCount = 5; - if (!dofMaxCoC) dofMaxCoC = 32; - + ImGui::SliderFloat("Focal length (mm)", &mSettings.viewer.cameraFocalLength, 16.0f, 90.0f); ImGui::SliderFloat("Aperture", &mSettings.viewer.cameraAperture, 1.0f, 32.0f); ImGui::SliderFloat("Speed (1/s)", &mSettings.viewer.cameraSpeed, 1000.0f, 1.0f); ImGui::SliderFloat("ISO", &mSettings.viewer.cameraISO, 25.0f, 6400.0f); - ImGui::Checkbox("DoF", &mSettings.view.dof.enabled); - ImGui::SliderFloat("Focus distance", &mSettings.viewer.cameraFocusDistance, 0.0f, 30.0f); - ImGui::SliderFloat("Blur scale", &mSettings.view.dof.cocScale, 0.1f, 10.0f); - ImGui::SliderInt("Ring count", &dofRingCount, 1, 17); - ImGui::SliderInt("Max CoC", &dofMaxCoC, 1, 32); - ImGui::Checkbox("Native Resolution", &mSettings.view.dof.nativeResolution); - ImGui::Checkbox("Median Filter", &dofMedian); + ImGui::SliderFloat("Near", &mSettings.viewer.cameraNear, 0.001f, 1.0f); + ImGui::SliderFloat("Far", &mSettings.viewer.cameraFar, 1.0f, 10000.0f); - mSettings.view.dof.filter = dofMedian ? - View::DepthOfFieldOptions::Filter::MEDIAN : - View::DepthOfFieldOptions::Filter::NONE; - mSettings.view.dof.backgroundRingCount = dofRingCount; - mSettings.view.dof.foregroundRingCount = dofRingCount; - mSettings.view.dof.fastGatherRingCount = dofRingCount; - mSettings.view.dof.maxForegroundCOC = dofMaxCoC; - mSettings.view.dof.maxBackgroundCOC = dofMaxCoC; + if (ImGui::CollapsingHeader("DoF")) { + bool dofMedian = mSettings.view.dof.filter == View::DepthOfFieldOptions::Filter::MEDIAN; + int dofRingCount = mSettings.view.dof.fastGatherRingCount; + int dofMaxCoC = mSettings.view.dof.maxForegroundCOC; + if (!dofRingCount) dofRingCount = 5; + if (!dofMaxCoC) dofMaxCoC = 32; + ImGui::Checkbox("Enabled##dofEnabled", &mSettings.view.dof.enabled); + ImGui::SliderFloat("Focus distance", &mSettings.viewer.cameraFocusDistance, 0.0f, 30.0f); + ImGui::SliderFloat("Blur scale", &mSettings.view.dof.cocScale, 0.1f, 10.0f); + ImGui::SliderInt("Ring count", &dofRingCount, 1, 17); + ImGui::SliderInt("Max CoC", &dofMaxCoC, 1, 32); + ImGui::Checkbox("Native Resolution", &mSettings.view.dof.nativeResolution); + ImGui::Checkbox("Median Filter", &dofMedian); + mSettings.view.dof.filter = dofMedian ? + View::DepthOfFieldOptions::Filter::MEDIAN : + View::DepthOfFieldOptions::Filter::NONE; + mSettings.view.dof.backgroundRingCount = dofRingCount; + mSettings.view.dof.foregroundRingCount = dofRingCount; + mSettings.view.dof.fastGatherRingCount = dofRingCount; + mSettings.view.dof.maxForegroundCOC = dofMaxCoC; + mSettings.view.dof.maxBackgroundCOC = dofMaxCoC; + } if (ImGui::CollapsingHeader("Vignette")) { ImGui::Checkbox("Enabled##vignetteEnabled", &mSettings.view.vignette.enabled); diff --git a/samples/gltf_viewer.cpp b/samples/gltf_viewer.cpp index 9e88b14bdb..b2c953f925 100644 --- a/samples/gltf_viewer.cpp +++ b/samples/gltf_viewer.cpp @@ -854,7 +854,6 @@ int main(int argc, char** argv) { auto& rcm = engine->getRenderableManager(); auto instance = rcm.getInstance(app.scene.groundPlane); const auto viewerOptions = app.automationEngine->getViewerOptions(); - const auto& dofOptions = app.viewer->getSettings().view.dof; rcm.setLayerMask(instance, 0xff, viewerOptions.groundPlaneEnabled ? 0xff : 0x00); @@ -862,7 +861,8 @@ int main(int argc, char** argv) { // Note that this focal length might be different from the slider value because the // automation engine applies Camera::computeEffectiveFocalLength when DoF is enabled. - FilamentApp::get().getCameraFocalLength() = viewerOptions.cameraFocalLength; + FilamentApp::get().setCameraFocalLength(viewerOptions.cameraFocalLength); + FilamentApp::get().setCameraNearFar(viewerOptions.cameraNear, viewerOptions.cameraFar); const size_t cameraCount = app.asset->getCameraEntityCount(); view->setCamera(app.mainCamera); diff --git a/samples/material_sandbox.cpp b/samples/material_sandbox.cpp index 7df322fc1d..bcd5e9c3b3 100644 --- a/samples/material_sandbox.cpp +++ b/samples/material_sandbox.cpp @@ -596,11 +596,16 @@ static void gui(filament::Engine* engine, filament::View*) { if (ImGui::CollapsingHeader("Camera")) { ImGui::Indent(); - ImGui::SliderFloat("Focal length", &FilamentApp::get().getCameraFocalLength(), 16.0f, 90.0f); + ImGui::SliderFloat("Focal length", ¶ms.cameraFocalLength, 16.0f, 90.0f); ImGui::SliderFloat("Aperture", ¶ms.cameraAperture, 1.0f, 32.0f); ImGui::SliderFloat("Speed", ¶ms.cameraSpeed, 800.0f, 1.0f); ImGui::SliderFloat("ISO", ¶ms.cameraISO, 25.0f, 6400.0f); + ImGui::SliderFloat("Near", ¶ms.cameraNear, 0.01f, 1.0f); + ImGui::SliderFloat("Far", ¶ms.cameraFar, 1.0f, 10000.0f); ImGui::Unindent(); + + FilamentApp::get().setCameraFocalLength(params.cameraFocalLength); + FilamentApp::get().setCameraNearFar(params.cameraNear, params.cameraFar); } if (ImGui::CollapsingHeader("Indirect Light")) { diff --git a/samples/material_sandbox.h b/samples/material_sandbox.h index 273ba788fc..2bc0a24315 100644 --- a/samples/material_sandbox.h +++ b/samples/material_sandbox.h @@ -184,6 +184,9 @@ struct SandboxParameters { float cameraAperture = 16.0f; float cameraSpeed = 125.0f; float cameraISO = 100.0f; + float cameraFocalLength = 28.0f; + float cameraNear = 0.1f; + float cameraFar = 100.0f; bool colorGrading = true; ColorGradingOptions colorGradingOptions; };