8 lines
111 KiB
JavaScript
8 lines
111 KiB
JavaScript
var rhino3dm=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var Module=moduleArg,moduleArg=!!globalThis.window,ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope,ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type,thisProgram="./this.program",scriptDirectory=("undefined"!=typeof __filename?_scriptName=__filename:ENVIRONMENT_IS_WORKER&&(_scriptName=self.location.href),"");if(ENVIRONMENT_IS_NODE){var fs=require("node:fs"),scriptDirectory=__dirname+"/",readBinary=filename=>(filename=isFileURI(filename)?new URL(filename):filename,fs.readFileSync(filename)),readAsync=async(filename,binary=!0)=>(filename=isFileURI(filename)?new URL(filename):filename,fs.readFileSync(filename,binary?void 0:"utf8"));1<process.argv.length&&(thisProgram=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),0}else if(moduleArg||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}ENVIRONMENT_IS_WORKER&&(readBinary=url=>{var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=async url=>{if(isFileURI(url))return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=()=>{200==xhr.status||0==xhr.status&&xhr.response?resolve(xhr.response):reject(xhr.status)},xhr.onerror=reject,xhr.send(null)});var response=await fetch(url,{credentials:"same-origin"});if(response.ok)return response.arrayBuffer();throw new Error(response.status+" : "+response.url)}}var wasmBinary,readyPromiseResolve,readyPromiseReject,out=console.log.bind(console),err=console.error.bind(console),ABORT=!1,isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile,HEAP16,HEAP32,HEAP64,HEAP8,HEAPF32,HEAPF64,HEAPU16,HEAPU32,HEAPU64,HEAPU8,runtimeInitialized=!1;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b),HEAP16=new Int16Array(b),HEAPU8=new Uint8Array(b),HEAPU16=new Uint16Array(b),HEAP32=new Int32Array(b),HEAPU32=new Uint32Array(b),HEAPF32=new Float32Array(b),HEAPF64=new Float64Array(b),HEAP64=new BigInt64Array(b),HEAPU64=new BigUint64Array(b)}function abort(what){Module.onAbort?.(what),err(what=`Aborted(${what})`),ABORT=!0,what+=". Build with -sASSERTIONS for more info.";what=new WebAssembly.RuntimeError(what);throw readyPromiseReject?.(what),what}function findWasmBinary(){return path="rhino3dm.wasm",Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path;var path}async function getWasmBinary(binaryFile){if(!wasmBinary)try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}response=binaryFile;if(response==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(response);throw"both async and sync fetching of the wasm failed"}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE)try{var response=fetch(binaryFile,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(response,imports)}catch(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation")}return(async(binaryFile,imports)=>{try{var binary=await getWasmBinary(binaryFile);return await WebAssembly.instantiate(binary,imports)}catch(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)}})(binaryFile,imports)}var callRuntimeCallbacks=callbacks=>{for(;0<callbacks.length;)callbacks.shift()(Module)},onPostRuns=[],addOnPostRun=cb=>onPostRuns.push(cb),onPreRuns=[],addOnPreRun=cb=>onPreRuns.push(cb);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr,this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){HEAP8[this.ptr+12]=caught=caught?1:0}get_caught(){return 0!=HEAP8[this.ptr+12]}set_rethrown(rethrown){HEAP8[this.ptr+13]=rethrown=rethrown?1:0}get_rethrown(){return 0!=HEAP8[this.ptr+13]}init(type,destructor){this.set_adjusted_ptr(0),this.set_type(type),this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var initRandomFill=()=>{var nodeCrypto;return ENVIRONMENT_IS_NODE?(nodeCrypto=require("node:crypto"),view=>nodeCrypto.randomFillSync(view)):view=>(crypto.getRandomValues(view),0)},randomFill=view=>(randomFill=initRandomFill())(view),PATH={isAbs:path=>"/"===path.charAt(0),splitPath:filename=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(filename).slice(1),normalizeArray:(parts,allowAboveRoot)=>{for(var up=0,i=parts.length-1;0<=i;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash="/"===path.slice(-1);return(path=(path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/"))||isAbsolute?path:".")&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:path=>{var path=PATH.splitPath(path),root=path[0],path=path[1];return root||path?root+(path=path&&path.slice(0,-1)):"."},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)},PATH_FS={resolve:(...args)=>{for(var resolvedPath="",resolvedAbsolute=!1,i=args.length-1;-1<=i&&!resolvedAbsolute;i--){var path=0<=i?args[i]:FS.cwd();if("string"!=typeof path)throw new TypeError("Arguments to path.resolve must be strings");if(!path)return"";resolvedPath=path+"/"+resolvedPath,resolvedAbsolute=PATH.isAbs(path)}return(resolvedAbsolute?"/":"")+(resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/"))||"."},relative:(from,to)=>{function trim(arr){for(var start=0;start<arr.length&&""===arr[start];start++);for(var end=arr.length-1;0<=end&&""===arr[end];end--);return end<start?[]:arr.slice(start,end-start+1)}from=PATH_FS.resolve(from).slice(1),to=PATH_FS.resolve(to).slice(1);for(var fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}for(var outputParts=[],i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return(outputParts=outputParts.concat(toParts.slice(samePartsLength))).join("/")}},UTF8Decoder=new TextDecoder,findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;for(;heapOrArray[idx]&&!(maxIdx<=idx);)++idx;return idx},UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{maxBytesToRead=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,maxBytesToRead):new Uint8Array(heapOrArray.slice(idx,maxBytesToRead)))},FS_stdin_getChar_buffer=[],lengthBytesUTF8=str=>{for(var len=0,i=0;i<str.length;++i){var c=str.charCodeAt(i);c<=127?len++:c<=2047?len+=2:55296<=c&&c<=57343?(len+=4,++i):len+=3}return len},stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(0<maxBytesToWrite))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(endIdx<=outIdx)break;heap[outIdx++]=u}else if(u<=2047){if(endIdx<=outIdx+1)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|63&u}else if(u<=65535){if(endIdx<=outIdx+2)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|63&u}else{if(endIdx<=outIdx+3)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|63&u,i++}}return heap[outIdx]=0,outIdx-startIdx},intArrayFromString=(stringy,dontAddNull,length)=>{length=0<length?length:lengthBytesUTF8(stringy)+1,length=new Array(length),stringy=stringToUTF8Array(stringy,length,0,length.length);return dontAddNull&&(length.length=stringy),length},TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops},FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty)throw new FS.ErrnoError(43);stream.tty=tty,stream.seekable=!1},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char)throw new FS.ErrnoError(60);for(var result,bytesRead=0,i=0;i<length;i++){try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.atime=Date.now()),bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char)throw new FS.ErrnoError(60);try{for(var i=0;i<length;i++)stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.mtime=stream.node.ctime=Date.now()),i}},default_tty_ops:{get_char(tty){return(()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var buf=Buffer.alloc(256),bytesRead=0,fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,256)}catch(e){if(!e.toString().includes("EOF"))throw e;bytesRead=0}0<bytesRead&&(result=buf.slice(0,bytesRead).toString("utf-8"))}else globalThis.window?.prompt&&null!==(result=window.prompt("Input: "))&&(result+="\n");if(!result)return null;FS_stdin_getChar_buffer=intArrayFromString(result,!0)}return FS_stdin_getChar_buffer.shift()})()},put_char(tty,val){null===val||10===val?(out(UTF8ArrayToString(tty.output)),tty.output=[]):0!=val&&tty.output.push(val)},fsync(tty){0<tty.output?.length&&(out(UTF8ArrayToString(tty.output)),tty.output=[])},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){null===val||10===val?(err(UTF8ArrayToString(tty.output)),tty.output=[]):0!=val&&tty.output.push(val)},fsync(tty){0<tty.output?.length&&(err(UTF8ArrayToString(tty.output)),tty.output=[])}}},mmapAlloc=size=>{abort()},MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(63);MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,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}};mode=FS.createNode(parent,name,mode,dev);return FS.isDir(mode.mode)?(mode.node_ops=MEMFS.ops_table.dir.node,mode.stream_ops=MEMFS.ops_table.dir.stream,mode.contents={}):FS.isFile(mode.mode)?(mode.node_ops=MEMFS.ops_table.file.node,mode.stream_ops=MEMFS.ops_table.file.stream,mode.usedBytes=0,mode.contents=MEMFS.emptyFileContents??=new Uint8Array(0)):FS.isLink(mode.mode)?(mode.node_ops=MEMFS.ops_table.link.node,mode.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(mode.mode)&&(mode.node_ops=MEMFS.ops_table.chrdev.node,mode.stream_ops=MEMFS.ops_table.chrdev.stream),mode.atime=mode.mtime=mode.ctime=Date.now(),parent&&(parent.contents[name]=mode,parent.atime=parent.mtime=parent.ctime=mode.atime),mode},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;newCapacity<=prevCapacity||(newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<1048576?2:1.125)>>>0),prevCapacity&&(newCapacity=Math.max(newCapacity,256)),prevCapacity=MEMFS.getFileDataAsTypedArray(node),node.contents=new Uint8Array(newCapacity),node.contents.set(prevCapacity))},resizeFileStorage(node,newSize){var oldContents;node.usedBytes!=newSize&&(oldContents=node.contents,node.contents=new Uint8Array(newSize),node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes))),node.usedBytes=newSize)},node_ops:{getattr(node){var attr={};return 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,FS.isDir(node.mode)?attr.size=4096:FS.isFile(node.mode)?attr.size=node.usedBytes:FS.isLink(node.mode)?attr.size=node.link.length:attr.size=0,attr.atime=new Date(node.atime),attr.mtime=new Date(node.mtime),attr.ctime=new Date(node.ctime),attr.blksize=4096,attr.blocks=Math.ceil(attr.size/attr.blksize),attr},setattr(node,attr){for(var key of["mode","atime","mtime","ctime"])null!=attr[key]&&(node[key]=attr[key]);void 0!==attr.size&&MEMFS.resizeFileStorage(node,attr.size)},lookup(parent,name){throw MEMFS.doesNotExistError||(MEMFS.doesNotExistError=new FS.ErrnoError(44),MEMFS.doesNotExistError.stack="<generic error, no stack>"),MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode))for(var i in new_node.contents)throw new FS.ErrnoError(55);FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name],(new_dir.contents[new_name]=old_node).name=new_name,new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name],parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){for(var i in FS.lookupNode(parent,name).contents)throw new FS.ErrnoError(55);delete parent.contents[name],parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){parent=MEMFS.createNode(parent,newname,41471,0);return parent.link=oldpath,parent},readlink(node){if(FS.isLink(node.mode))return node.link;throw new FS.ErrnoError(28)}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;return position>=stream.node.usedBytes?0:(stream=Math.min(stream.node.usedBytes-position,length),buffer.set(contents.subarray(position,position+stream),offset),stream)},write(stream,buffer,offset,length,position,canOwn){return buffer.buffer===HEAP8.buffer&&(canOwn=!1),length?((stream=stream.node).mtime=stream.ctime=Date.now(),canOwn?(stream.contents=buffer.subarray(offset,offset+length),stream.usedBytes=length):0===stream.usedBytes&&0===position?(stream.contents=buffer.slice(offset,offset+length),stream.usedBytes=length):(MEMFS.expandFileStorage(stream,position+length),stream.contents.set(buffer.subarray(offset,offset+length),position),stream.usedBytes=Math.max(stream.usedBytes,position+length)),length):0},llseek(stream,offset,whence){if(1===whence?offset+=stream.position:2===whence&&FS.isFile(stream.node.mode)&&(offset+=stream.node.usedBytes),offset<0)throw new FS.ErrnoError(28);return offset},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);var ptr,allocated,stream=stream.node.contents;if(2&flags||stream.buffer!==HEAP8.buffer){if(allocated=!0,!(ptr=mmapAlloc()))throw new FS.ErrnoError(48);stream&&((0<position||position+length<stream.length)&&(stream=stream.subarray?stream.subarray(position,position+length):Array.prototype.slice.call(stream,position,position+length)),HEAP8.set(stream,ptr))}else allocated=!1,ptr=stream.byteOffset;return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){return MEMFS.stream_ops.write(stream,buffer,0,length,offset,!1),0}}},FS_fileDataToTypedArray=data=>data=(data="string"==typeof data?intArrayFromString(data,!0):data).subarray?data:new Uint8Array(data),FS_getMode=(canRead,canWrite)=>{var mode=0;return canRead&&(mode|=365),canWrite&&(mode|=146),mode},asyncLoad=async url=>{url=await readAsync(url);return new Uint8Array(url)},FS_createDataFile=(...args)=>FS.createDataFile(...args),getUniqueRunDependency=id=>id,runDependencies=0,dependenciesFulfilled=null,removeRunDependency=id=>{var callback;runDependencies--,Module.monitorRunDependencies?.(runDependencies),0==runDependencies&&dependenciesFulfilled&&(callback=dependenciesFulfilled,dependenciesFulfilled=null,callback())},addRunDependency=id=>{runDependencies++,Module.monitorRunDependencies?.(runDependencies)},preloadPlugins=[],FS_handledByPreloadPlugin=async(byteArray,fullname)=>{"undefined"!=typeof Browser&&Browser.init();for(var plugin of preloadPlugins)if(plugin.canHandle(fullname))return plugin.handle(byteArray,fullname);return byteArray},FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent,dep=getUniqueRunDependency("cp "+fullname);addRunDependency(dep);try{var byteArray=url;"string"==typeof url&&(byteArray=await asyncLoad(url)),byteArray=await FS_handledByPreloadPlugin(byteArray,fullname),preFinish?.(),dontCreateFile||FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}finally{removeRunDependency(dep)}},FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return 0!=(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){this.parent=parent=parent||this,this.mount=parent.mount,this.id=FS.nextInode++,this.name=name,this.mode=mode,this.rdev=rdev,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path)throw new FS.ErrnoError(44);opts.follow_mount??=!0,PATH.isAbs(path)||(path=FS.cwd()+"/"+path);linkloop:for(var nlinks=0;nlinks<40;nlinks++){for(var parts=path.split("/").filter(p=>!!p),current=FS.root,current_path="/",i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent)break;if("."!==parts[i])if(".."===parts[i]){if(current_path=PATH.dirname(current_path),FS.isRoot(current)){path=current_path+"/"+parts.slice(i+1).join("/"),nlinks--;continue linkloop}current=current.parent}else{current_path=PATH.join2(current_path,parts[i]);try{current=FS.lookupNode(current,parts[i])}catch(e){if(44===e?.errno&&islast&&opts.noent_okay)return{path:current_path};throw e}if(!FS.isMountpoint(current)||islast&&!opts.follow_mount||(current=current.mounted.root),FS.isLink(current.mode)&&(!islast||opts.follow)){if(!current.node_ops.readlink)throw new FS.ErrnoError(52);islast=current.node_ops.readlink(current);path=(islast=PATH.isAbs(islast)?islast:PATH.dirname(current_path)+"/"+islast)+"/"+parts.slice(i+1).join("/");continue linkloop}}}return{path:current_path,node:current}}throw new FS.ErrnoError(32)},getPath(node){for(var path,mount;;){if(FS.isRoot(node))return mount=node.mount.mountpoint,path?"/"!==mount[mount.length-1]?mount+"/"+path:mount+path:mount;path=path?node.name+"/"+path:node.name,node=node.parent}},hashName(parentid,name){for(var hash=0,i=0;i<name.length;i++)hash=(hash<<5)-hash+name.charCodeAt(i)|0;return(parentid+hash>>>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 for(var current=FS.nameTable[hash];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);for(var errCode=FS.hashName(parent.id,name),node=FS.nameTable[errCode];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){parent=new FS.FSNode(parent,name,mode,rdev);return FS.hashAddNode(parent),parent},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return 32768==(61440&mode)},isDir(mode){return 16384==(61440&mode)},isLink(mode){return 40960==(61440&mode)},isChrdev(mode){return 8192==(61440&mode)},isBlkdev(mode){return 24576==(61440&mode)},isFIFO(mode){return 4096==(61440&mode)},isSocket(mode){return 49152==(49152&mode)},flagsToPermissionString(flag){var perms=["r","w","rw"][3&flag];return 512&flag&&(perms+="w"),perms},nodePermissions(node,perms){return FS.ignorePermissions||(!perms.includes("r")||292&node.mode)&&(!perms.includes("w")||146&node.mode)&&(!perms.includes("x")||73&node.mode)?0:2},mayLookup(dir){return FS.isDir(dir.mode)?FS.nodePermissions(dir,"x")||(dir.node_ops.lookup?0:2):54},mayCreate(dir,name){if(!FS.isDir(dir.mode))return 54;try{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}name=FS.nodePermissions(dir,"wx");if(name)return name;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){var mode;return node?FS.isLink(node.mode)?32:(mode=FS.flagsToPermissionString(flags),FS.isDir(node.mode)&&("r"!==mode||576&flags)?31:FS.nodePermissions(node,mode)):44},checkOpExists(op,err){if(op)return op;throw new FS.ErrnoError(err)},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++)if(!FS.streams[fd])return fd;throw new FS.ErrnoError(33)},getStreamChecked(fd){fd=FS.getStream(fd);if(fd)return fd;throw new FS.ErrnoError(8)},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){return stream=Object.assign(new FS.FSStream,stream),-1==fd&&(fd=FS.nextfd()),stream.fd=fd,FS.streams[fd]=stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){origStream=FS.createStream(origStream,fd);return origStream.stream_ops?.dup?.(origStream),origStream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr,stream=setattr?stream:node;setattr??=node.node_ops.setattr,FS.checkOpExists(setattr,63);try{setattr(stream,attr)}catch(e){if(e instanceof RangeError)throw new FS.ErrnoError(22);throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops,stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>255&dev,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){for(var mounts=[],check=[mount];check.length;){var m=check.pop();mounts.push(m),check.push(...m.mounts)}return mounts},syncfs(populate,callback){"function"==typeof populate&&(callback=populate,populate=!1),FS.syncFSRequests++,1<FS.syncFSRequests&&err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var mount,mounts=FS.getMounts(FS.root.mount),completed=0;function doCallback(errCode){return FS.syncFSRequests--,callback(errCode)}function done(errCode){if(errCode)return done.errored?void 0:(done.errored=!0,doCallback(errCode));++completed>=mounts.length&&doCallback(null)}for(mount of mounts)mount.type.syncfs?mount.type.syncfs(mount,populate,done):done(null)},mount(type,opts,mountpoint){var node,root="/"===mountpoint,pseudo=!mountpoint;if(root&&FS.root)throw new FS.ErrnoError(10);if(!root&&!pseudo){pseudo=FS.lookupPath(mountpoint,{follow_mount:!1});if(mountpoint=pseudo.path,FS.isMountpoint(node=pseudo.node))throw new FS.ErrnoError(10);if(!FS.isDir(node.mode))throw new FS.ErrnoError(54)}pseudo={type:type,opts:opts,mountpoint:mountpoint,mounts:[]},opts=type.mount(pseudo);return(opts.mount=pseudo).root=opts,root?FS.root=opts:node&&(node.mounted=pseudo,node.mount)&&node.mount.mounts.push(pseudo),opts},unmount(mountpoint){mountpoint=FS.lookupPath(mountpoint,{follow_mount:!1});if(!FS.isMountpoint(mountpoint.node))throw new FS.ErrnoError(28);var hash,current,mountpoint=mountpoint.node,mount=mountpoint.mounted,mounts=FS.getMounts(mount);for([hash,current]of Object.entries(FS.nameTable))for(;current;){var next=current.name_next;mounts.includes(current.mount)&&FS.destroyNode(current),current=next}mountpoint.mounted=null;mount=mountpoint.mount.mounts.indexOf(mount);mountpoint.mount.mounts.splice(mount,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var parent=FS.lookupPath(path,{parent:!0}).node,path=PATH.basename(path);if(!path)throw new FS.ErrnoError(28);if("."===path||".."===path)throw new FS.ErrnoError(20);var errCode=FS.mayCreate(parent,path);if(errCode)throw new FS.ErrnoError(errCode);if(parent.node_ops.mknod)return parent.node_ops.mknod(parent,path,mode,dev);throw new FS.ErrnoError(63)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:!0}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};return node.node_ops.statfs&&Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root)),rtn},create(path,mode=438){return FS.mknod(path,mode=mode&4095|32768,0)},mkdir(path,mode=511){return FS.mknod(path,mode=mode&1023|16384,0)},mkdirTree(path,mode){var dir,d="";for(dir of path.split("/"))if(dir){(d||PATH.isAbs(path))&&(d+="/"),d+=dir;try{FS.mkdir(d,mode)}catch(e){if(20!=e.errno)throw e}}},mkdev(path,mode,dev){return void 0===dev&&(dev=mode,mode=438),FS.mknod(path,mode|=8192,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath))throw new FS.ErrnoError(44);var parent=FS.lookupPath(newpath,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var newpath=PATH.basename(newpath),errCode=FS.mayCreate(parent,newpath);if(errCode)throw new FS.ErrnoError(errCode);if(parent.node_ops.symlink)return parent.node_ops.symlink(parent,newpath,oldpath);throw new FS.ErrnoError(63)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path),new_dirname=PATH.dirname(new_path),old_name=PATH.basename(old_path),new_name=PATH.basename(new_path),lookup=FS.lookupPath(old_path,{parent:!0}),lookup=lookup.node,new_dir=FS.lookupPath(new_path,{parent:!0}).node;if(!lookup||!new_dir)throw new FS.ErrnoError(44);if(lookup.mount!==new_dir.mount)throw new FS.ErrnoError(75);var new_node,old_node=FS.lookupNode(lookup,old_name),old_path=PATH_FS.relative(old_path,new_dirname);if("."!==old_path.charAt(0))throw new FS.ErrnoError(28);if("."!==(old_path=PATH_FS.relative(new_path,old_dirname)).charAt(0))throw new FS.ErrnoError(55);try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node!==new_node){new_dirname=FS.isDir(old_node.mode),new_path=FS.mayDelete(lookup,old_name,new_dirname);if(new_path)throw new FS.ErrnoError(new_path);if(new_path=new_node?FS.mayDelete(new_dir,new_name,new_dirname):FS.mayCreate(new_dir,new_name))throw new FS.ErrnoError(new_path);if(!lookup.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!==lookup&&(new_path=FS.nodePermissions(lookup,"w")))throw new FS.ErrnoError(new_path);FS.hashRemoveNode(old_node);try{lookup.node_ops.rename(old_node,new_dir,new_name),old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}}},rmdir(path){var parent=FS.lookupPath(path,{parent:!0}).node,path=PATH.basename(path),node=FS.lookupNode(parent,path),errCode=FS.mayDelete(parent,path,!0);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,path),FS.destroyNode(node)},readdir(path){path=FS.lookupPath(path,{follow:!0}).node;return FS.checkOpExists(path.node_ops.readdir,54)(path)},unlink(path){var parent=FS.lookupPath(path,{parent:!0}).node;if(!parent)throw new FS.ErrnoError(44);var path=PATH.basename(path),node=FS.lookupNode(parent,path),errCode=FS.mayDelete(parent,path,!1);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,path),FS.destroyNode(node)},readlink(path){path=FS.lookupPath(path).node;if(!path)throw new FS.ErrnoError(44);if(path.node_ops.readlink)return path.node_ops.readlink(path);throw new FS.ErrnoError(28)},stat(path,dontFollow){path=FS.lookupPath(path,{follow:!dontFollow}).node;return FS.checkOpExists(path.node_ops.getattr,63)(path)},fstat(fd){var fd=FS.getStreamChecked(fd),node=fd.node,getattr=fd.stream_ops.getattr,fd=getattr?fd:node;return getattr??=node.node_ops.getattr,FS.checkOpExists(getattr,63),getattr(fd)},lstat(path){return FS.stat(path,!0)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:4095&mode|-4096&node.mode,ctime:Date.now(),dontFollow:dontFollow})},chmod(path,mode,dontFollow){path="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path,FS.doChmod(null,path,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,!0)},fchmod(fd,mode){fd=FS.getStreamChecked(fd);FS.doChmod(fd,fd.node,mode,!1)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow:dontFollow})},chown(path,uid,gid,dontFollow){path="string"==typeof path?FS.lookupPath(path,{follow:!dontFollow}).node:path,FS.doChown(null,path,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,!0)},fchown(fd,uid,gid){fd=FS.getStreamChecked(fd);FS.doChown(fd,fd.node,!1)},doTruncate(stream,node,len){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);FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0)throw new FS.ErrnoError(28);path="string"==typeof path?FS.lookupPath(path,{follow:!0}).node:path,FS.doTruncate(null,path,len)},ftruncate(fd,len){fd=FS.getStreamChecked(fd);if(len<0||0==(2097155&fd.flags))throw new FS.ErrnoError(28);FS.doTruncate(fd,fd.node,len)},utime(path,atime,mtime){path=FS.lookupPath(path,{follow:!0}).node;FS.checkOpExists(path.node_ops.setattr,63)(path,{atime:atime,mtime:mtime})},open(path,flags,mode=438){if(""===path)throw new FS.ErrnoError(44);mode=64&(flags=(str=>{if("string"!=typeof str)return str;var flags={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[str];if(void 0===flags)throw new Error("Unknown file open mode: "+str);return flags})(flags))?4095&mode|32768:0,"object"==typeof path?node=path:(isDirPath=path.endsWith("/"),node=(lookup=FS.lookupPath(path,{follow:!(131072&flags),noent_okay:!0})).node,path=lookup.path);var node,lookup=!1;if(64&flags)if(node){if(128&flags)throw new FS.ErrnoError(20)}else{if(isDirPath)throw new FS.ErrnoError(31);node=FS.mknod(path,511|mode,0),lookup=!0}if(!node)throw new FS.ErrnoError(44);if(FS.isChrdev(node.mode)&&(flags&=-513),65536&flags&&!FS.isDir(node.mode))throw new FS.ErrnoError(54);if(!lookup){var isDirPath=FS.mayOpen(node,flags);if(isDirPath)throw new FS.ErrnoError(isDirPath)}512&flags&&!lookup&&FS.truncate(node,0),flags&=-131713;path=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:!0,position:0,stream_ops:node.stream_ops,ungotten:[],error:!1});return path.stream_ops.open&&path.stream_ops.open(path),lookup&&FS.chmod(node,511&mode),path},close(stream){if(FS.isClosed(stream))throw new FS.ErrnoError(8);stream.getdents&&(stream.getdents=null);try{stream.stream_ops.close&&stream.stream_ops.close(stream)}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return null===stream.fd},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(0!=whence&&1!=whence&&2!=whence)throw new FS.ErrnoError(28);return stream.position=stream.stream_ops.llseek(stream,offset,whence),stream.ungotten=[],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(1==(2097155&stream.flags))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=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;buffer=stream.stream_ops.read(stream,buffer,offset,length,position);return seeking||(stream.position+=buffer),buffer},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(0==(2097155&stream.flags))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);stream.seekable&&1024&stream.flags&&FS.llseek(stream,0,2);var seeking=void 0!==position;if(seeking){if(!stream.seekable)throw new FS.ErrnoError(70)}else position=stream.position;buffer=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);return seeking||(stream.position+=buffer),buffer},mmap(stream,length,position,prot,flags){if(0!=(2&prot)&&0==(2&flags)&&2!=(2097155&stream.flags))throw new FS.ErrnoError(2);if(1==(2097155&stream.flags))throw new FS.ErrnoError(2);if(!stream.stream_ops.mmap)throw new FS.ErrnoError(43);if(length)return stream.stream_ops.mmap(stream,length,position,prot,flags);throw new FS.ErrnoError(28)},msync(stream,buffer,offset,length,mmapFlags){return stream.stream_ops.msync?stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags):0},ioctl(stream,cmd,arg){if(stream.stream_ops.ioctl)return stream.stream_ops.ioctl(stream,cmd,arg);throw new FS.ErrnoError(59)},readFile(path,opts={}){opts.flags=opts.flags||0,opts.encoding=opts.encoding||"binary","utf8"!==opts.encoding&&"binary"!==opts.encoding&&abort(`Invalid encoding type "${opts.encoding}"`);var stream=FS.open(path,opts.flags),path=FS.stat(path).size,buf=new Uint8Array(path);return FS.read(stream,buf,0,path,0),"utf8"===opts.encoding&&(buf=UTF8ArrayToString(buf)),FS.close(stream),buf},writeFile(path,data,opts={}){opts.flags=opts.flags||577;path=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data),FS.write(path,data,0,data.byteLength,void 0,opts.canOwn),FS.close(path)},cwd:()=>FS.currentPath,chdir(path){path=FS.lookupPath(path,{follow:!0});if(null===path.node)throw new FS.ErrnoError(44);if(!FS.isDir(path.node.mode))throw new FS.ErrnoError(54);var errCode=FS.nodePermissions(path.node,"x");if(errCode)throw new FS.ErrnoError(errCode);FS.currentPath=path.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,llseek:()=>0}),FS.mkdev("/dev/null",FS.makedev(1,3)),TTY.register(FS.makedev(5,0),TTY.default_tty_ops),TTY.register(FS.makedev(6,0),TTY.default_tty1_ops),FS.mkdev("/dev/tty",FS.makedev(5,0)),FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0,randomByte=()=>(0===randomLeft&&(randomFill(randomBuffer),randomLeft=randomBuffer.byteLength),randomBuffer[--randomLeft]);FS.createDevice("/dev","random",randomByte),FS.createDevice("/dev","urandom",randomByte),FS.mkdir("/dev/shm"),FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd"),FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);return node.stream_ops={llseek:MEMFS.stream_ops.llseek},node.node_ops={lookup(parent,name){var name=+name,stream=FS.getStreamChecked(name),name={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:1+name};return name.parent=name},readdir(){return Array.from(FS.streams.entries()).filter(([,v])=>v).map(([k])=>k.toString())}},node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){input?FS.createDevice("/dev","stdin",input):FS.symlink("/dev/tty","/dev/stdin"),output?FS.createDevice("/dev","stdout",null,output):FS.symlink("/dev/tty","/dev/stdout"),error?FS.createDevice("/dev","stderr",null,error):FS.symlink("/dev/tty1","/dev/stderr");FS.open("/dev/stdin",0),FS.open("/dev/stdout",1),FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096),FS.mount(MEMFS,{},"/"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.initialized=!0,input??=Module.stdin,output??=Module.stdout,error??=Module.stderr,FS.createStandardStreams(input,output,error)},quit(){FS.initialized=!1;for(var stream of FS.streams)stream&&FS.close(stream)},findObject(path,dontResolveLastLink){path=FS.analyzePath(path,dontResolveLastLink);return path.exists?path.object:null},analyzePath(path,dontResolveLastLink){try{path=(lookup=FS.lookupPath(path,{follow:!dontResolveLastLink})).path}catch(e){}var ret={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:!0});ret.parentExists=!0,ret.parentPath=lookup.path,ret.parentObject=lookup.node,ret.name=PATH.basename(path),lookup=FS.lookupPath(path,{follow:!dontResolveLastLink}),ret.exists=!0,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="string"==typeof parent?parent:FS.getPath(parent);for(var parts=path.split("/").reverse();parts.length;){var part=parts.pop();if(part){var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(20!=e.errno)throw e}parent=current}}return current},createFile(parent,name,properties,canRead,canWrite){parent=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),name=FS_getMode(canRead,canWrite);return FS.create(parent,name)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name,name=(parent&&(parent="string"==typeof parent?parent:FS.getPath(parent),path=name?PATH.join2(parent,name):parent),FS_getMode(canRead,canWrite)),parent=FS.create(path,name);data&&(data=FS_fileDataToTypedArray(data),FS.chmod(parent,146|name),canRead=FS.open(parent,577),FS.write(canRead,data,0,data.length,0,canOwn),FS.close(canRead),FS.chmod(parent,name))},createDevice(parent,name,input,output){var parent=PATH.join2("string"==typeof parent?parent:FS.getPath(parent),name),name=FS_getMode(!!input,!!output),dev=(FS.createDevice.major??=64,FS.makedev(FS.createDevice.major++,0));return FS.registerDevice(dev,{open(stream){stream.seekable=!1},close(stream){output?.buffer?.length&&output(10)},read(stream,buffer,offset,length,pos){for(var result,bytesRead=0,i=0;i<length;i++){try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(void 0===result&&0===bytesRead)throw new FS.ErrnoError(6);if(null==result)break;bytesRead++,buffer[offset+i]=result}return bytesRead&&(stream.node.atime=Date.now()),bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++)try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}return length&&(stream.node.mtime=stream.node.ctime=Date.now()),i}}),FS.mkdev(parent,name,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return!0;if(globalThis.XMLHttpRequest)abort("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 try{obj.contents=readBinary(obj.url)}catch(e){throw new FS.ErrnoError(29)}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{lengthKnown=!1;chunks=[];get(idx){var chunkOffset;if(!(idx>this.length-1||idx<0))return chunkOffset=idx%this.chunkSize,idx=idx/this.chunkSize|0,this.getter(idx)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var header,xhr=new XMLHttpRequest,datalength=(xhr.open("HEAD",url,!1),xhr.send(null),200<=xhr.status&&xhr.status<300||304===xhr.status||abort("Couldn't load "+url+". Status: "+xhr.status),Number(xhr.getResponseHeader("Content-length"))),hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&"bytes"===header,xhr=(header=xhr.getResponseHeader("Content-Encoding"))&&"gzip"===header,chunkSize=1048576,lazyArray=(hasByteServing||(chunkSize=datalength),this);lazyArray.setDataGetter(chunkNum=>{var xhr,start=chunkNum*chunkSize,end=(chunkNum+1)*chunkSize-1,end=Math.min(end,datalength-1);return void 0===lazyArray.chunks[chunkNum]&&(lazyArray.chunks[chunkNum]=((end=end)<(start=start)&&abort("invalid range ("+start+", "+end+") or no bytes requested!"),datalength-1<end&&abort("only "+datalength+" bytes available! programmer error!"),(xhr=new XMLHttpRequest).open("GET",url,!1),datalength!==chunkSize&&xhr.setRequestHeader("Range","bytes="+start+"-"+end),xhr.responseType="arraybuffer",xhr.overrideMimeType&&xhr.overrideMimeType("text/plain; charset=x-user-defined"),xhr.send(null),200<=xhr.status&&xhr.status<300||304===xhr.status||abort("Couldn't load "+url+". Status: "+xhr.status),void 0!==xhr.response?new Uint8Array(xhr.response||[]):intArrayFromString(xhr.responseText||"",!0))),void 0===lazyArray.chunks[chunkNum]&&abort("doXHR failed!"),lazyArray.chunks[chunkNum]}),!xhr&&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=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}properties=globalThis.XMLHttpRequest?(ENVIRONMENT_IS_WORKER||abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"),{isDevice:!1,contents:new LazyUint8Array}):{isDevice:!1,url:url};var properties,node=FS.createFile(parent,name,properties,canRead,canWrite),stream_ops=(properties.contents?node.contents=properties.contents:properties.url&&(node.contents=null,node.url=properties.url),Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}}),{});for(let[key,fn]of Object.entries(node.stream_ops))stream_ops[key]=(...args)=>(FS.forceLoadFile(node),fn(...args));function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice)for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];else for(i=0;i<size;i++)buffer[offset+i]=contents.get(position+i);return size}return stream_ops.read=(stream,buffer,offset,length,position)=>(FS.forceLoadFile(node),writeChunks(stream,buffer,offset,length,position)),stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);mmapAlloc();throw new FS.ErrnoError(48)},node.stream_ops=stream_ops,node}},SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){return SOCKFS.websocketArgs=Module.websocket||{},(Module.websocket??={}).on=SOCKFS.on,FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(2!=family)throw new FS.ErrnoError(5);if(1!=(type&=-526337)&&2!=type)throw new FS.ErrnoError(28);if(1==type&&protocol&&6!=protocol)throw new FS.ErrnoError(66);family={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops},type=SOCKFS.nextname(),protocol=FS.createNode(SOCKFS.root,type,49152,0),protocol.sock=family,type=FS.createStream({path:type,node:protocol,flags:2,seekable:!1,stream_ops:SOCKFS.stream_ops});return family.stream=type,family},getSocket(fd){fd=FS.getStream(fd);return fd&&FS.isSocket(fd.node.mode)?fd.node.sock:null},stream_ops:{poll(stream){stream=stream.node.sock;return stream.sock_ops.poll(stream)},ioctl(stream,request,varargs){stream=stream.node.sock;return stream.sock_ops.ioctl(stream,request,varargs)},read(stream,buffer,offset,length,position){stream=stream.node.sock,stream=stream.sock_ops.recvmsg(stream,length);return stream?(buffer.set(stream.buffer,offset),stream.buffer.length):0},write(stream,buffer,offset,length,position){stream=stream.node.sock;return stream.sock_ops.sendmsg(stream,buffer,offset,length)},close(stream){stream=stream.node.sock;stream.sock_ops.close(stream)}},nextname(){return SOCKFS.nextname.current||(SOCKFS.nextname.current=0),`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if("object"==typeof addr&&(ws=addr,port=addr=null),ws)if(ws._socket)addr=ws._socket.remoteAddress,port=ws._socket.remotePort;else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result)throw new Error("WebSocket URL must be in the format ws(s)://address:port");addr=result[1],port=parseInt(result[2],10)}else try{var parts,url="ws://".replace("#","//"),subProtocols="binary",opts=void 0;SOCKFS.websocketArgs.url&&(url=SOCKFS.websocketArgs.url),SOCKFS.websocketArgs.subprotocol?subProtocols=SOCKFS.websocketArgs.subprotocol:null===SOCKFS.websocketArgs.subprotocol&&(subProtocols="null"),"ws://"!==url&&"wss://"!==url||(url=url+(parts=addr.split("/"))[0]+":"+port+"/"+parts.slice(1).join("/")),"null"!==subProtocols&&(opts=subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */)),(ws=new(ENVIRONMENT_IS_NODE?require("ws"):WebSocket)(url,opts)).binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}result={addr:addr,port:port,socket:ws,msg_send_queue:[]};return SOCKFS.websocket_sock_ops.addPeer(sock,result),SOCKFS.websocket_sock_ops.handlePeerEvents(sock,result),2===sock.type&&void 0!==sock.sport&&result.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(65280&sock.sport)>>8,255&sock.sport])),result},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=!0;function handleOpen(){sock.connecting=!1,SOCKFS.emit("open",sock.stream.fd);try{for(var queued=peer.msg_send_queue.shift();queued;)peer.socket.send(queued),queued=peer.msg_send_queue.shift()}catch(e){peer.socket.close()}}function handleMessage(data){if("string"==typeof data)data=(new TextEncoder).encode(data);else{if(0==data.byteLength)return;data=new Uint8Array(data)}var wasfirst=first;first=!1,wasfirst&&10===data.length&&255===data[0]&&255===data[1]&&255===data[2]&&255===data[3]&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)?(wasfirst=data[8]<<8|data[9],SOCKFS.websocket_sock_ops.removePeer(sock,peer),peer.port=wasfirst,SOCKFS.websocket_sock_ops.addPeer(sock,peer)):(sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data}),SOCKFS.emit("message",sock.stream.fd))}ENVIRONMENT_IS_NODE?(peer.socket.on("open",handleOpen),peer.socket.on("message",(data,isBinary)=>{isBinary&&handleMessage(new Uint8Array(data).buffer)}),peer.socket.on("close",()=>SOCKFS.emit("close",sock.stream.fd)),peer.socket.on("error",error=>{sock.error=14,SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})):(peer.socket.onopen=handleOpen,peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd),peer.socket.onmessage=event=>handleMessage(event.data),peer.socket.onerror=error=>{sock.error=14,SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})},poll(sock){var mask,dest;return 1===sock.type&&sock.server?sock.pending.length?65:0:(mask=0,dest=1===sock.type?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null,(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)&&(mask|=65),dest&&dest.socket.readyState!==dest.socket.OPEN||(mask|=4),(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)&&(sock.connecting?mask|=4:mask|=16),mask)},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;return sock.recv_queue.length&&(bytes=sock.recv_queue[0].data.length),HEAP32[arg>>2]=bytes,0;case 21537:return HEAP32[arg>>2]?sock.stream.flags|=2048:sock.stream.flags&=-2049,0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(void 0!==sock.saddr||void 0!==sock.sport)throw new FS.ErrnoError(28);if(sock.saddr=addr,sock.sport=port,2===sock.type){sock.server&&(sock.server.close(),sock.server=null);try{sock.sock_ops.listen(sock,0)}catch(e){if("ErrnoError"!==e.name)throw e;if(138!==e.errno)throw e}}},connect(sock,addr,port){if(sock.server)throw new FS.ErrnoError(138);if(void 0!==sock.daddr&&void 0!==sock.dport){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest)throw dest.socket.readyState===dest.socket.CONNECTING?new FS.ErrnoError(7):new FS.ErrnoError(30)}dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=dest.addr,sock.dport=dest.port,sock.connecting=!0},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE)throw new FS.ErrnoError(138);if(sock.server)throw new FS.ErrnoError(28);var WebSocketServer=require("ws").Server,host=sock.saddr;sock.server=new WebSocketServer({host:host,port:sock.sport}),SOCKFS.emit("listen",sock.stream.fd),sock.server.on("connection",ws=>{var newsock,peer;1===sock.type?(newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol),peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws),newsock.daddr=peer.addr,newsock.dport=peer.port,sock.pending.push(newsock),SOCKFS.emit("connection",newsock.stream.fd)):(SOCKFS.websocket_sock_ops.createPeer(sock,ws),SOCKFS.emit("connection",sock.stream.fd))}),sock.server.on("close",()=>{SOCKFS.emit("close",sock.stream.fd),sock.server=null}),sock.server.on("error",error=>{sock.error=23,SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){var newsock;if(listensock.server&&listensock.pending.length)return(newsock=listensock.pending.shift()).stream.flags=listensock.stream.flags,newsock;throw new FS.ErrnoError(28)},getname(sock,peer){var addr,port;if(peer){if(void 0===sock.daddr||void 0===sock.dport)throw new FS.ErrnoError(53);addr=sock.daddr,port=sock.dport}else addr=sock.saddr||0,port=sock.sport||0;return{addr:addr,port:port}},sendmsg(sock,buffer,offset,length,addr,port){if(2===sock.type){if(void 0!==addr&&void 0!==port||(addr=sock.daddr,port=sock.dport),void 0===addr||void 0===port)throw new FS.ErrnoError(17)}else addr=sock.daddr,port=sock.dport;var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(1===sock.type&&(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED))throw new FS.ErrnoError(53);ArrayBuffer.isView(buffer)&&(offset+=buffer.byteOffset,buffer=buffer.buffer);buffer=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN)return(dest=2!==sock.type||dest&&dest.socket.readyState!==dest.socket.CLOSING&&dest.socket.readyState!==dest.socket.CLOSED?dest:SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)).msg_send_queue.push(buffer),length;try{return dest.socket.send(buffer),length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(1===sock.type&&sock.server)throw new FS.ErrnoError(53);var queuedLength,queuedOffset,res,queued=sock.recv_queue.shift();if(queued)return queuedLength=queued.data.byteLength||queued.data.length,queuedOffset=queued.data.byteOffset||0,queuedBuffer=queued.data.buffer||queued.data,length=Math.min(length,queuedLength),res={buffer:new Uint8Array(queuedBuffer,queuedOffset,length),addr:queued.addr,port:queued.port},1===sock.type&&length<queuedLength&&(queued.data=new Uint8Array(queuedBuffer,queuedOffset+length,queuedLength-length),sock.recv_queue.unshift(queued)),res;if(1===sock.type){var queuedBuffer=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!queuedBuffer)throw new FS.ErrnoError(53);if(queuedBuffer.socket.readyState===queuedBuffer.socket.CLOSING||queuedBuffer.socket.readyState===queuedBuffer.socket.CLOSED)return null}throw new FS.ErrnoError(6)}}},inetNtop4=addr=>(255&addr)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255),inetNtop6=ints=>{for(var str="",word=0,longest=0,lastzero=0,zstart=0,len=0,i=0,parts=[65535&ints[0],ints[0]>>16,65535&ints[1],ints[1]>>16,65535&ints[2],ints[2]>>16,65535&ints[3],ints[3]>>16],hasipv4=!0,ints="",i=0;i<5;i++)if(0!==parts[i]){hasipv4=!1;break}if(hasipv4){if(ints=inetNtop4(parts[6]|parts[7]<<16),-1===parts[5])return str="::ffff:",str+=ints;if(0===parts[5])return str="::",str+=ints="0.0.0.1"===(ints="0.0.0.0"===ints?"":ints)?"1":ints}for(word=0;word<8;word++)0===parts[word]&&(1<word-lastzero&&(len=0),lastzero=word,len++),longest<len&&(zstart=word-(longest=len)+1);for(word=0;word<8;word++)1<longest&&0===parts[word]&&zstart<=word&&word<zstart+longest?word===zstart&&(str+=":",0===zstart)&&(str+=":"):str=str+Number(_ntohs(65535&parts[word])).toString(16)+(word<7?":":"");return str},readSockaddr=(sa,salen)=>{var addr,family=HEAP16[sa>>1],port=_ntohs(HEAPU16[sa+2>>1]);switch(family){case 2:if(16!==salen)return{errno:28};addr=HEAP32[sa+4>>2],addr=inetNtop4(addr);break;case 10:if(28!==salen)return{errno:28};addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]],addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}},DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var id,addr;return null!==(str=>{for(var b=str.split("."),i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0})(name)||null!==(str=>{var words,w,offset,z,parts=[];if(!/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i.test(str))return null;if("::"===str)return[0,0,0,0,0,0,0,0];for(words=0<(str=str.startsWith("::")?str.replace("::","Z:"):str.replace("::",":Z:")).indexOf(".")?((words=(str=str.replace(new RegExp("[.]","g"),":")).split(":"))[words.length-4]=Number(words[words.length-4])+256*Number(words[words.length-3]),words[words.length-3]=Number(words[words.length-2])+256*Number(words[words.length-1]),words.slice(0,words.length-2)):str.split(":"),w=z=offset=0;w<words.length;w++)if("string"==typeof words[w])if("Z"===words[w]){for(z=0;z<8-words.length+1;z++)parts[w+z]=0;offset=z-1}else parts[w+offset]=_htons(parseInt(words[w],16));else parts[w+offset]=words[w];return[parts[1]<<16|parts[0],parts[3]<<16|parts[2],parts[5]<<16|parts[4],parts[7]<<16|parts[6]]})(name)?name:(DNS.address_map.addrs[name]?addr=DNS.address_map.addrs[name]:(id=DNS.address_map.id++,DNS.address_map.names[addr="172.29."+(255&id)+"."+(65280&id)]=name,DNS.address_map.addrs[name]=addr),addr)},lookup_addr(addr){return DNS.address_map.names[addr]||null}};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?(maxBytesToRead=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul),UTF8Decoder.decode(HEAPU8.subarray(ptr,maxBytesToRead))):"",SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path))return path;if(dirfd=-100===dirfd?FS.cwd():SYSCALLS.getStreamFromFD(dirfd).path,0!=path.length)return dirfd+"/"+path;if(allowEmpty)return dirfd;throw new FS.ErrnoError(44)},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev,HEAPU32[buf+4>>2]=stat.mode,HEAPU32[buf+8>>2]=stat.nlink,HEAPU32[buf+12>>2]=stat.uid,HEAPU32[buf+16>>2]=stat.gid,HEAPU32[buf+20>>2]=stat.rdev,HEAP64[buf+24>>3]=BigInt(stat.size),HEAP32[buf+32>>2]=4096,HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime(),mtime=stat.mtime.getTime(),ctime=stat.ctime.getTime();return HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3)),HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3,HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3)),HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3,HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3)),HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3,HEAP64[buf+88>>3]=BigInt(stat.ino),0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize,HEAPU32[buf+60>>2]=stats.bsize,HEAP64[buf+8>>3]=BigInt(stats.blocks),HEAP64[buf+16>>3]=BigInt(stats.bfree),HEAP64[buf+24>>3]=BigInt(stats.bavail),HEAP64[buf+32>>3]=BigInt(stats.files),HEAP64[buf+40>>3]=BigInt(stats.ffree),HEAPU32[buf+48>>2]=stats.fsid,HEAPU32[buf+64>>2]=stats.flags,HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);if(2&flags)return 0;addr=HEAPU8.slice(addr,addr+len);FS.msync(stream,addr,offset,len,flags)},getStreamFromFD(fd){return FS.getStreamChecked(fd)},varargs:void 0,getStr(ptr){return UTF8ToString(ptr)}};var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,ret},syscallGetVarargP=syscallGetVarargI;var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=num=>num<INT53_MIN||INT53_MAX<num?NaN:Number(num);var tupleRegistrations={},runDestructors=destructors=>{for(;destructors.length;){var ptr=destructors.pop();destructors.pop()(ptr)}};function readPointer(pointer){return this.fromWireType(HEAPU32[pointer>>2])}var awaitingDependencies={},registeredTypes={},typeDependencies={},InternalError=class extends Error{constructor(message){super(message),this.name="InternalError"}},throwInternalError=message=>{throw new InternalError(message)},whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);myTypeConverters.length!==myTypes.length&&throwInternalError("Mismatched type converter count");for(var i=0;i<myTypes.length;++i)registerType(myTypes[i],myTypeConverters[i])}myTypes.forEach(type=>typeDependencies[type]=dependentTypes);var typeConverters=new Array(dependentTypes.length),unregisteredTypes=[],registered=0;for(let[i,dt]of dependentTypes.entries())registeredTypes.hasOwnProperty(dt)?typeConverters[i]=registeredTypes[dt]:(unregisteredTypes.push(dt),awaitingDependencies.hasOwnProperty(dt)||(awaitingDependencies[dt]=[]),awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt],++registered===unregisteredTypes.length&&onComplete(typeConverters)}));0===unregisteredTypes.length&&onComplete(typeConverters)},structRegistrations={},AsciiToString=ptr=>{for(var str="";;){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}},BindingError=class extends Error{constructor(message){super(message),this.name="BindingError"}},throwBindingError=message=>{throw new BindingError(message)};function registerType(rawType,registeredInstance,options={}){return((rawType,registeredInstance,options={})=>{var name=registeredInstance.name;if(rawType||throwBindingError(`type "${name}" must have a positive integer typeid pointer`),registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations)return;throwBindingError(`Cannot register type '${name}' twice`)}registeredTypes[rawType]=registeredInstance,delete typeDependencies[rawType],awaitingDependencies.hasOwnProperty(rawType)&&(options=awaitingDependencies[rawType],delete awaitingDependencies[rawType],options.forEach(cb=>cb()))})(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): `+name)}},throwInstanceAlreadyDeleted=obj=>{throwBindingError(obj.$$.ptrType.registeredClass.name+" instance already deleted")},finalizationRegistry=!1,detachFinalizer=handle=>{},runDestructor=$$=>{$$.smartPtr?$$.smartPtrType.rawDestructor($$.smartPtr):$$.ptrType.registeredClass.rawDestructor($$.ptr)},releaseClassHandle=$$=>{--$$.count.value,0===$$.count.value&&runDestructor($$)},attachFinalizer=handle=>globalThis.FinalizationRegistry?(finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)}),detachFinalizer=handle=>finalizationRegistry.unregister(handle),(attachFinalizer=handle=>{var $$=handle.$$;return!!$$.smartPtr&&finalizationRegistry.register(handle,{$$:$$},handle),handle})(handle)):(attachFinalizer=handle=>handle,handle),deletionQueue=[];function ClassHandle(){}var createNamedFunction=(name,func)=>Object.defineProperty(func,"name",{value:name}),registeredPointers={},ensureOverloadTable=(proto,methodName,humanName)=>{var prevFunc;void 0===proto[methodName].overloadTable&&(prevFunc=proto[methodName],proto[methodName]=function(...args){return proto[methodName].overloadTable.hasOwnProperty(args.length)||throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`),proto[methodName].overloadTable[args.length].apply(this,args)},proto[methodName].overloadTable=[],proto[methodName].overloadTable[prevFunc.argCount]=prevFunc)},exposePublicSymbol=(name,value,numArguments)=>{Module.hasOwnProperty(name)?((void 0===numArguments||void 0!==Module[name].overloadTable&&void 0!==Module[name].overloadTable[numArguments])&&throwBindingError(`Cannot register public name '${name}' twice`),ensureOverloadTable(Module,name,name),Module[name].overloadTable.hasOwnProperty(numArguments)&&throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`),Module[name].overloadTable[numArguments]=value):(Module[name]=value,Module[name].argCount=numArguments)},char_0=48,char_9=57;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=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{for(;ptrClass!==desiredClass;)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},embindRepr=v=>{var t;return null===v?"null":"object"==(t=typeof v)||"array"==t||"function"==t?v.toString():""+v};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(null===handle)return this.isReference&&throwBindingError("null is not a valid "+this.name),0;handle.$$||throwBindingError(`Cannot pass "${embindRepr(handle)}" as a `+this.name),handle.$$.ptr||throwBindingError("Cannot pass deleted object as a pointer of type "+this.name);var handleClass=handle.$$.ptrType.registeredClass;return upcastPointer(handle.$$.ptr,handleClass,this.registeredClass)}function genericPointerToWireType(destructors,handle){if(null===handle)return this.isReference&&throwBindingError("null is not a valid "+this.name),this.isSmartPointer?(ptr=this.rawConstructor(),null!==destructors&&destructors.push(this.rawDestructor,ptr),ptr):0;handle&&handle.$$||throwBindingError(`Cannot pass "${embindRepr(handle)}" as a `+this.name),handle.$$.ptr||throwBindingError("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&handle.$$.ptrType.isConst&&throwBindingError(`Cannot convert argument of type ${(handle.$$.smartPtrType||handle.$$.ptrType).name} to parameter type `+this.name);var clonedHandle,ptr,handleClass=handle.$$.ptrType.registeredClass;if(ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass),this.isSmartPointer)switch(void 0===handle.$$.smartPtr&&throwBindingError("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:handle.$$.smartPtrType===this?ptr=handle.$$.smartPtr:throwBindingError(`Cannot convert argument of type ${(handle.$$.smartPtrType||handle.$$.ptrType).name} to parameter type `+this.name);break;case 1:ptr=handle.$$.smartPtr;break;case 2:handle.$$.smartPtrType===this?ptr=handle.$$.smartPtr:(clonedHandle=handle.clone(),ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle.delete())),null!==destructors&&destructors.push(this.rawDestructor,ptr));break;default:throwBindingError("Unsupported sharing policy")}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(null===handle)return this.isReference&&throwBindingError("null is not a valid "+this.name),0;handle.$$||throwBindingError(`Cannot pass "${embindRepr(handle)}" as a `+this.name),handle.$$.ptr||throwBindingError("Cannot pass deleted object as a pointer of type "+this.name),handle.$$.ptrType.isConst&&throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type `+this.name);var handleClass=handle.$$.ptrType.registeredClass;return upcastPointer(handle.$$.ptr,handleClass,this.registeredClass)}var downcastPointer=(ptr,ptrClass,desiredClass)=>ptrClass===desiredClass?ptr:void 0===desiredClass.baseClass||null===(ptr=downcastPointer(ptr,ptrClass,desiredClass.baseClass))?null:desiredClass.downcast(ptr),registeredInstances={},getBasestPointer=(class_,ptr)=>{for(void 0===ptr&&throwBindingError("ptr should not be undefined");class_.baseClass;)ptr=class_.upcast(ptr),class_=class_.baseClass;return ptr},getInheritedInstance=(class_,ptr)=>(ptr=getBasestPointer(class_,ptr),registeredInstances[ptr]),makeClassHandle=(prototype,record)=>(record.ptrType&&record.ptr||throwInternalError("makeClassHandle requires ptr and ptrType"),!!record.smartPtrType!=!!record.smartPtr&&throwInternalError("Both smartPtrType and smartPtr must be specified"),record.count={value:1},attachFinalizer(Object.create(prototype,{$$:{value:record,writable:!0}})));function RegisteredPointer_fromWireType(ptr){var registeredInstance,dp,rawPointer=this.getPointee(ptr);return rawPointer?void 0!==(registeredInstance=getInheritedInstance(this.registeredClass,rawPointer))?0===registeredInstance.$$.count.value?(registeredInstance.$$.ptr=rawPointer,registeredInstance.$$.smartPtr=ptr,registeredInstance.clone()):(registeredInstance=registeredInstance.clone(),this.destructor(ptr),registeredInstance):(registeredInstance=this.registeredClass.getActualType(rawPointer),!(registeredInstance=registeredPointers[registeredInstance])||(registeredInstance=this.isConst?registeredInstance.constPointerType:registeredInstance.pointerType,null===(dp=downcastPointer(rawPointer,this.registeredClass,registeredInstance.registeredClass)))?makeDefaultHandle.call(this):this.isSmartPointer?makeClassHandle(registeredInstance.registeredClass.instancePrototype,{ptrType:registeredInstance,ptr:dp,smartPtrType:this,smartPtr:ptr}):makeClassHandle(registeredInstance.registeredClass.instancePrototype,{ptrType:registeredInstance,ptr:dp})):(this.destructor(ptr),null);function makeDefaultHandle(){return this.isSmartPointer?makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr}):makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}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,isSmartPointer||void 0!==registeredClass.baseClass?this.toWireType=genericPointerToWireType:(this.toWireType=isConst?constNoSmartPtrRawPointerToWireType:nonConstNoSmartPtrRawPointerToWireType,this.destructorFunction=null)}var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr),embind__requireFunction=(signature,rawFunction,isAsync=0)=>{signature=AsciiToString(signature);var fp=getWasmTableEntry(rawFunction);return"function"!=typeof fp&&throwBindingError(`unknown function pointer with signature ${signature}: `+rawFunction),fp};class UnboundTypeError extends Error{}var getTypeName=type=>{var type=___getTypeName(type),rv=AsciiToString(type);return _free(type),rv},throwUnboundTypeError=(message,types)=>{var unboundTypes=[],seen={};throw types.forEach(function visit(type){seen[type]||registeredTypes[type]||(typeDependencies[type]?typeDependencies[type].forEach(visit):(unboundTypes.push(type),seen[type]=!0))}),new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))};function usesDestructorStack(argTypes){for(var i=1;i<argTypes.length;++i)if(null!==argTypes[i]&&void 0===argTypes[i].destructorFunction)return!0;return!1}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){for(var argCount=argTypes.length,classType=(argCount<2&&throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"),null!==argTypes[1]&&null!==classType),needsDestructorStack=usesDestructorStack(argTypes),returns=!argTypes[0].isVoid,retType=argTypes[0],instType=argTypes[1],closureArgs=[humanName,throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,retType.fromWireType.bind(retType),instType?.toWireType.bind(instType)],i=2;i<argCount;++i){var argType=argTypes[i];closureArgs.push(argType.toWireType.bind(argType))}if(!needsDestructorStack)for(i=classType?1:2;i<argTypes.length;++i)null!==argTypes[i].destructorFunction&&closureArgs.push(argTypes[i].destructorFunction);cppInvokerFunc=((argTypes,isClassMethodFunc,returns,isAsync)=>{var needsDestructorStack=usesDestructorStack(argTypes),argCount=argTypes.length-2,argsList=[],argsListWired=["fn"];isClassMethodFunc&&argsListWired.push("thisWired");for(var i=0;i<argCount;++i)argsList.push("arg"+i),argsListWired.push(`arg${i}Wired`);var argsList=argsList.join(","),argsListWired=argsListWired.join(","),invokerFnBody=`return function (${argsList}) {
|
|
`,dtorStack=(needsDestructorStack&&(invokerFnBody+="var destructors = [];\n"),needsDestructorStack?"destructors":"null"),args1=["humanName","throwBindingError","invoker","fn","runDestructors","fromRetWire","toClassParamWire"];for(isClassMethodFunc&&(invokerFnBody+=`var thisWired = toClassParamWire(${dtorStack}, this);
|
|
`),i=0;i<argCount;++i){var argName=`toArg${i}Wire`;invokerFnBody+=`var arg${i}Wired = ${argName}(${dtorStack}, arg${i});
|
|
`,args1.push(argName)}if(invokerFnBody+=(returns||isAsync?"var rv = ":"")+`invoker(${argsListWired});
|
|
`,needsDestructorStack)invokerFnBody+="runDestructors(destructors);\n";else for(i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=1===i?"thisWired":"arg"+(i-2)+"Wired";null!==argTypes[i].destructorFunction&&(invokerFnBody+=paramName+`_dtor(${paramName});
|
|
`,args1.push(paramName+"_dtor"))}return returns&&(invokerFnBody+="var ret = fromRetWire(rv);\nreturn ret;\n"),invokerFnBody+="}\n",new Function(args1,invokerFnBody)})(argTypes,classType,returns,isAsync)(...closureArgs);return createNamedFunction(humanName,cppInvokerFunc)}var heap32VectorToArray=(count,firstElement)=>{for(var array=[],i=0;i<count;i++)array.push(HEAPU32[firstElement+4*i>>2]);return array},getFunctionName=signature=>{var argsIndex=(signature=signature.trim()).indexOf("(");return-1===argsIndex?signature:signature.slice(0,argsIndex)},validateThis=(this_,classType,humanName)=>(this_ instanceof Object||throwBindingError(humanName+' with invalid "this": '+this_),this_ instanceof classType.registeredClass.constructor||throwBindingError(humanName+' incompatible with "this" of type '+this_.constructor.name),this_.$$.ptr||throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`),upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)),emval_freelist=[],emval_handles=[0,1,,1,null,1,!0,1,!1,1],__emval_decref=handle=>{9<handle&&0==--emval_handles[handle+1]&&(emval_handles[handle],emval_handles[handle]=void 0,emval_freelist.push(handle))},Emval={toValue:handle=>(handle||throwBindingError("Cannot use deleted val. handle = "+handle),emval_handles[handle]),toHandle:value=>{switch(value){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:var handle=emval_freelist.pop()||emval_handles.length;return emval_handles[handle]=value,emval_handles[handle+1]=1,handle}}},EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);return __emval_decref(handle),rv},toWireType:(destructors,value)=>Emval.toHandle(value),readValueFromPointer:readPointer,destructorFunction:null},enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this.fromWireType(HEAP8[pointer])}:function(pointer){return this.fromWireType(HEAPU8[pointer])};case 2:return signed?function(pointer){return this.fromWireType(HEAP16[pointer>>1])}:function(pointer){return this.fromWireType(HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this.fromWireType(HEAP32[pointer>>2])}:function(pointer){return this.fromWireType(HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): `+name)}};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];return void 0===impl&&throwBindingError(humanName+" has unknown type "+getTypeName(rawType)),impl},installIndexedIterator=(proto,sizeMethodName,getMethodName)=>{proto[Symbol.iterator]||(proto[Symbol.iterator]=function(){return((size,getValue)=>{let index=0;return{next(){var current;return index>=size?{done:!0}:(current=index,index++,{value:getValue(current),done:!1})},[Symbol.iterator](){return this}}})(this[sizeMethodName](),i=>this[getMethodName](i))})},EmValOptionalType=Object.assign({optional:!0},EmValType),stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite),UTF16Decoder=new TextDecoder("utf-16le"),UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{ptr>>=1,maxBytesToRead=findStringEnd(HEAPU16,ptr,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(ptr,maxBytesToRead))},stringToUTF16=(str,outPtr,maxBytesToWrite)=>{if((maxBytesToWrite??=2147483647)<2)return 0;for(var startPtr=outPtr,numCharsToWrite=(maxBytesToWrite-=2)<2*str.length?maxBytesToWrite/2:str.length,i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit,outPtr+=2}return HEAP16[outPtr>>1]=0,outPtr-startPtr},lengthBytesUTF16=str=>2*str.length,UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{for(var str="",startIdx=ptr>>2,i=0;!(maxBytesToRead/4<=i);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str},stringToUTF32=(str,outPtr,maxBytesToWrite)=>{if((maxBytesToWrite??=2147483647)<4)return 0;for(var startPtr=outPtr,endPtr=startPtr+maxBytesToWrite-4,i=0;i<str.length;++i){var codePoint=str.codePointAt(i);if(65535<codePoint&&i++,HEAP32[outPtr>>2]=codePoint,endPtr<(outPtr+=4)+4)break}return HEAP32[outPtr>>2]=0,outPtr-startPtr},lengthBytesUTF32=str=>{for(var len=0,i=0;i<str.length;++i)65535<str.codePointAt(i)&&i++,len+=4;return len},emval_methodCallers=[],emval_returnValue=(toReturnWire,destructorsRef,handle)=>{var destructors=[],toReturnWire=toReturnWire(destructors,handle);return destructors.length&&(HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)),toReturnWire},emval_symbols={},getStringOrSymbol=address=>{var symbol=emval_symbols[address];return void 0===symbol?AsciiToString(address):symbol};var isLeapYear=year=>year%4==0&&(year%100!=0||year%400==0),MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335],MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334],ydayFromDate=date=>(isLeapYear(date.getFullYear())?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE)[date.getMonth()]+date.getDate()-1;var ENV={},getExecutableName=()=>thisProgram||"./this.program",getEnvStrings=()=>{if(!getEnvStrings.strings){var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:getExecutableName()};for(x in ENV)void 0===ENV[x]?delete env[x]:env[x]=ENV[x];var x,strings=[];for(x in env)strings.push(x+"="+env[x]);getEnvStrings.strings=strings}return getEnvStrings.strings};var symbolDispose,___getTypeName,_malloc,_free,_htons,_ntohs,wasmMemory,wasmTable,wasmExports,info;if(FS.createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)},FS.preloadFile=FS_preloadFile,FS.staticInit(),moduleArg=ClassHandle.prototype,Object.assign(moduleArg,{isAliasOf(other){if(!(this instanceof ClassHandle))return!1;if(!(other instanceof ClassHandle))return!1;for(var leftClass=this.$$.ptrType.registeredClass,left=this.$$.ptr,rightClass=(other.$$=other.$$,other.$$.ptrType.registeredClass),right=other.$$.ptr;leftClass.baseClass;)left=leftClass.upcast(left),leftClass=leftClass.baseClass;for(;rightClass.baseClass;)right=rightClass.upcast(right),rightClass=rightClass.baseClass;return leftClass===rightClass&&left===right},clone(){var o;return this.$$.ptr||throwInstanceAlreadyDeleted(this),this.$$.preservePointerOnDelete?(this.$$.count.value+=1,this):((o=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:{count:(o=this.$$).count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}}))).$$.count.value+=1,o.$$.deleteScheduled=!1,o)},delete(){this.$$.ptr||throwInstanceAlreadyDeleted(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&throwBindingError("Object already scheduled for deletion"),detachFinalizer(this),releaseClassHandle(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||throwInstanceAlreadyDeleted(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&throwBindingError("Object already scheduled for deletion"),deletionQueue.push(this),deletionQueue.length,this.$$.deleteScheduled=!0,this}}),(symbolDispose=Symbol.dispose)&&(moduleArg[symbolDispose]=moduleArg.delete),Object.assign(RegisteredPointer.prototype,{getPointee(ptr){return ptr=this.rawGetPointee?this.rawGetPointee(ptr):ptr},destructor(ptr){this.rawDestructor?.(ptr)},readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType}),Module.noExitRuntime&&Module.noExitRuntime,Module.preloadPlugins&&(preloadPlugins=Module.preloadPlugins),Module.print&&(out=Module.print),Module.printErr&&(err=Module.printErr),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Module.arguments&&Module.arguments,Module.thisProgram&&(thisProgram=Module.thisProgram),Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);0<Module.preInit.length;)Module.preInit.shift()();function receiveInstance(instance){return(wasmExports=>{___getTypeName=wasmExports.qa,_malloc=wasmExports.sa,_free=wasmExports.ta,_htons=wasmExports.ua,_ntohs=wasmExports.va,wasmMemory=wasmExports.oa,wasmTable=wasmExports.ra})(wasmExports=instance.exports),updateMemoryViews(),wasmExports}return info={a:{t:(ptr,type,destructor)=>{new ExceptionInfo(ptr).init(type,destructor),abort()},P:function(fd,addr,addrlen,d1,d2,d3){try{var sock=(fd=>{fd=SOCKFS.getSocket(fd);if(fd)return fd;throw new FS.ErrnoError(8)})(fd),info=((addrp,addrlen)=>{addrp=readSockaddr(addrp,addrlen);if(addrp.errno)throw new FS.ErrnoError(addrp.errno);return addrp.addr=DNS.lookup_addr(addrp.addr)||addrp.addr,addrp})(addr,addrlen);return sock.sock_ops.connect(sock,info.addr,info.port),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},ea:function(dirfd,path,amode,flags){try{var node,perms;return(path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path),-8&amode)?-28:(node=FS.lookupPath(path,{follow:!0}).node)?(perms="",4&amode&&(perms+="r"),2&amode&&(perms+="w"),1&amode&&(perms+="x"),perms&&FS.nodePermissions(node,perms)?-2:0):-44}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},m:function(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:if((arg=syscallGetVarargI())<0)return-28;for(;FS.streams[arg];)arg++;return FS.dupStream(stream,arg).fd;case 1:case 2:return 0;case 3:return stream.flags;case 4:var arg=syscallGetVarargI();return stream.flags=-289793&stream.flags|289792&arg,0;case 12:arg=syscallGetVarargP();return HEAP16[arg+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},ba:function(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},Z:function(fd,length){length=bigintToI53Checked(length);try{return isNaN(length)?-22:(FS.ftruncate(fd,length),0)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},z:function(fd,op,varargs){SYSCALLS.varargs=varargs;try{var winsize,stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:return stream.tty?0:-59;case 21505:if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream),argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0,HEAP32[argp+4>>2]=termios.c_oflag||0,HEAP32[argp+8>>2]=termios.c_cflag||0,HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++)HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0;case 21510:case 21511:case 21512:return stream.tty?0:-59;case 21506:case 21507:case 21508:if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){for(var argp=syscallGetVarargP(),c_iflag=HEAP32[argp>>2],c_oflag=HEAP32[argp+4>>2],c_cflag=HEAP32[argp+8>>2],c_lflag=HEAP32[argp+12>>2],c_cc=[],i=0;i<32;i++)c_cc.push(HEAP8[argp+i+17]);return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0;case 21519:return stream.tty?(argp=syscallGetVarargP(),HEAP32[argp>>2]=0):-59;case 21520:return stream.tty?-28:-59;case 21537:case 21531:argp=syscallGetVarargP();return FS.ioctl(stream,op,argp);case 21523:return stream.tty?(stream.tty.ops.ioctl_tiocgwinsz&&(winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty),argp=syscallGetVarargP(),HEAP16[argp>>1]=winsize[0],HEAP16[argp+2>>1]=winsize[1]),0):-59;case 21524:case 21515:return stream.tty?0:-59;default:return-28}}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},_:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.writeStat(buf,FS.lstat(path))}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},$:function(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=256&flags,allowEmpty=4096&flags;return flags&=-6401,path=SYSCALLS.calculateAt(dirfd,path,allowEmpty),SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},G:function(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path),path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return 64&flags&&(mode&=~SYSCALLS.currentUmask),FS.open(path,flags,mode).fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},E:function(domain,type,protocol){try{return SOCKFS.createSocket(domain,type,protocol).stream.fd}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},aa:function(path,buf){try{return path=SYSCALLS.getStr(path),SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},R:function(mask){try{var old=SYSCALLS.currentUmask;return SYSCALLS.currentUmask=mask,old}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return-e.errno}},S:()=>abort(""),o:rawTupleType=>{var reg=tupleRegistrations[rawTupleType],elements=(delete tupleRegistrations[rawTupleType],reg.elements),elementsLength=elements.length,elementTypes=elements.map(elt=>elt.getterReturnType).concat(elements.map(elt=>elt.setterArgumentType)),rawConstructor=reg.rawConstructor,rawDestructor=reg.rawDestructor;whenDependentTypesAreResolved([rawTupleType],elementTypes,elementTypes=>{for(var[i,elt]of elements.entries()){let getterReturnType=elementTypes[i],getter=elt.getter,getterContext=elt.getterContext,setterArgumentType=elementTypes[i+elementsLength],setter=elt.setter,setterContext=elt.setterContext;elt.read=ptr=>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:ptr=>{for(var rv=new Array(elementsLength),i=0;i<elementsLength;++i)rv[i]=elements[i].read(ptr);return rawDestructor(ptr),rv},toWireType:(destructors,o)=>{if(elementsLength!==o.length)throw new TypeError(`Incorrect number of tuple elements for ${reg.name}: expected=${elementsLength}, actual=`+o.length);for(var ptr=rawConstructor(),i=0;i<elementsLength;++i)elements[i].write(ptr,o[i]);return null!==destructors&&destructors.push(rawDestructor,ptr),ptr},readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})},ha:structType=>{var reg=structRegistrations[structType],rawConstructor=(delete structRegistrations[structType],reg.rawConstructor),rawDestructor=reg.rawDestructor,fieldRecords=reg.fields,fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var i,field,fields={};for([i,field]of fieldRecords.entries()){let getterReturnType=fieldTypes[i],getter=field.getter,getterContext=field.getterContext,setterArgumentType=fieldTypes[i+fieldRecords.length],setter=field.setter,setterContext=field.setterContext;fields[field.fieldName]={read:ptr=>getterReturnType.fromWireType(getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o)),runDestructors(destructors)},optional:getterReturnType.optional}}return[{name:reg.name,fromWireType:ptr=>{var i,rv={};for(i in fields)rv[i]=fields[i].read(ptr);return rawDestructor(ptr),rv},toWireType:(destructors,o)=>{for(var fieldName in fields)if(!(fieldName in o||fields[fieldName].optional))throw new TypeError(`Missing field: "${fieldName}"`);var ptr=rawConstructor();for(fieldName in fields)fields[fieldName].write(ptr,o[fieldName]);return null!==destructors&&destructors.push(rawDestructor,ptr),ptr},readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})},M:(primitiveType,name,size,minRange,maxRange)=>{name=AsciiToString(name);minRange=0n===minRange;let fromWireType=value=>value;if(minRange){let bitSize=8*size;maxRange=(fromWireType=value=>BigInt.asUintN(bitSize,value))(maxRange)}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:(destructors,value)=>value="number"==typeof value?BigInt(value):value,readValueFromPointer:integerReadValueFromPointer(name,size,!minRange),destructorFunction:null})},N:(rawType,name,trueValue,falseValue)=>{registerType(rawType,{name:name=AsciiToString(name),fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},readValueFromPointer:function(pointer){return this.fromWireType(HEAPU8[pointer])},destructorFunction:null})},d:(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=AsciiToString(name),getActualType=embind__requireFunction(getActualTypeSignature,getActualType),upcast&&=embind__requireFunction(upcastSignature,upcast),downcast&&=embind__requireFunction(downcastSignature,downcast),rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=(name=>{var f=(name=name.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return char_0<=f&&f<=char_9?"_"+name:name})(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])}),whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0],base=baseClassRawType?(baseClass=base.registeredClass).instancePrototype:ClassHandle.prototype;var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype)throw new BindingError("Use 'new' to construct "+name);if(void 0===registeredClass.constructor_body)throw new BindingError(name+" has no accessible constructor");var body=registeredClass.constructor_body[args.length];if(void 0===body)throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`);return body.apply(this,args)}),instancePrototype=Object.create(base,{constructor:{value:constructor}}),registeredClass=(constructor.prototype=instancePrototype,new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast)),base=(registeredClass.baseClass&&(registeredClass.baseClass.__derivedClasses??=[],registeredClass.baseClass.__derivedClasses.push(registeredClass)),new RegisteredPointer(name,registeredClass,!0,!1,!1)),baseClass=new RegisteredPointer(name+"*",registeredClass,!1,!1,!1),constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,!1,!0,!1);return registeredPointers[rawType]={pointerType:baseClass,constPointerType:constPointerConverter},((name,value,numArguments)=>{Module.hasOwnProperty(name)||throwInternalError("Replacing nonexistent public symbol"),void 0!==Module[name].overloadTable&&void 0!==numArguments?Module[name].overloadTable[numArguments]=value:(Module[name]=value,Module[name].argCount=numArguments)})(legalFunctionName,constructor),[base,baseClass,constPointerConverter]})},e:(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName),methodName=getFunctionName(methodName),rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync),whenDependentTypesAreResolved([],[rawClassType],classType=>{var humanName=(classType=classType[0]).name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}methodName.startsWith("@@")&&(methodName=Symbol[methodName.substring(2)]);var proto=classType.registeredClass.constructor;return void 0===proto[methodName]?(unboundTypesHandler.argCount=argCount-1,proto[methodName]=unboundTypesHandler):(ensureOverloadTable(proto,methodName,humanName),proto[methodName].overloadTable[argCount-1]=unboundTypesHandler),whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var argTypes=[argTypes[0],null].concat(argTypes.slice(1)),func=craftInvokerFunction(humanName,argTypes,null,rawInvoker,fn,isAsync);if(void 0===proto[methodName].overloadTable?(func.argCount=argCount-1,proto[methodName]=func):proto[methodName].overloadTable[argCount-1]=func,classType.registeredClass.__derivedClasses)for(var derivedClass of classType.registeredClass.__derivedClasses)derivedClass.constructor.hasOwnProperty(methodName)||(derivedClass.constructor[methodName]=func);return[]}),[]})},f:(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker),whenDependentTypesAreResolved([],[rawClassType],classType=>{var humanName="constructor "+(classType=classType[0]).name;if(void 0===classType.registeredClass.constructor_body&&(classType.registeredClass.constructor_body=[]),void 0!==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!`);return classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)},whenDependentTypesAreResolved([],rawArgTypes,argTypes=>(argTypes.splice(1,0,null),classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor),[])),[]})},b:(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName),methodName=getFunctionName(methodName),rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync),whenDependentTypesAreResolved([],[rawClassType],classType=>{var humanName=(classType=classType[0]).name+"."+methodName;function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}methodName.startsWith("@@")&&(methodName=Symbol[methodName.substring(2)]),isPureVirtual&&classType.registeredClass.pureVirtualFunctions.push(methodName);var proto=classType.registeredClass.instancePrototype,method=proto[methodName];return void 0===method||void 0===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2?(unboundTypesHandler.argCount=argCount-2,unboundTypesHandler.className=classType.name,proto[methodName]=unboundTypesHandler):(ensureOverloadTable(proto,methodName,humanName),proto[methodName].overloadTable[argCount-2]=unboundTypesHandler),whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);return void 0===proto[methodName].overloadTable?(argTypes.argCount=argCount-2,proto[methodName]=argTypes):proto[methodName].overloadTable[argCount-2]=argTypes,[]}),[]})},a:(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{fieldName=AsciiToString(fieldName),getter=embind__requireFunction(getterSignature,getter),whenDependentTypesAreResolved([],[classType],classType=>{var humanName=(classType=classType[0]).name+"."+fieldName,desc={get(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])},enumerable:!0,configurable:!0};return desc.set=setter?()=>throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType]):v=>throwBindingError(humanName+" is a read-only property"),Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc),whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],types=>{var setterArgumentType,getterReturnType=types[0],desc={get(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType.fromWireType(getter(getterContext,ptr))},enumerable:!0};return setter&&(setter=embind__requireFunction(setterSignature,setter),setterArgumentType=types[1],desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter"),destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,v)),runDestructors(destructors)}),Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc),[]}),[]})},ka:(name,type,value)=>{name=AsciiToString(name),whenDependentTypesAreResolved([],[type],type=>(type=type[0],Module[name]=type.fromWireType(value),[]))},la:rawType=>registerType(rawType,EmValType),i:(rawType,name,size,isSigned,rawValueType)=>{name=AsciiToString(name);var valueType=(rawValueType=>0===rawValueType?"object":1===rawValueType?"number":"string")(rawValueType);switch(valueType){case"object":function ctor(){}ctor.values={},registerType(rawType,{name:name,constructor:ctor,valueType:valueType,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null}),exposePublicSymbol(name,ctor);break;case"number":registerType(rawType,{name:name,keysMap:keysMap={},valueType:valueType,fromWireType:c=>c,toWireType:(destructors,c)=>c,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null}),exposePublicSymbol(name,keysMap),delete Module[name].argCount;break;case"string":var keysMap;registerType(rawType,{name:name,valuesMap:{},reverseMap:{},keysMap:keysMap={},valueType:valueType,fromWireType:function(c){return this.reverseMap[c]},toWireType:function(destructors,c){return this.valuesMap[c]},readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null}),exposePublicSymbol(name,keysMap),delete Module[name].argCount}},c:(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");switch(name=AsciiToString(name),enumType.valueType){case"object":var Enum=enumType.constructor,Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value,Enum[name]=Value;break;case"number":enumType.keysMap[name]=enumValue;break;case"string":enumType.valuesMap[name]=enumValue,enumType.reverseMap[enumValue]=name,enumType.keysMap[name]=name}},L:(rawType,name,size)=>{registerType(rawType,{name:name=AsciiToString(name),fromWireType:value=>value,toWireType:(destructors,value)=>value,readValueFromPointer:((name,width)=>{switch(width){case 4:return function(pointer){return this.fromWireType(HEAPF32[pointer>>2])};case 8:return function(pointer){return this.fromWireType(HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): `+name)}})(name,size),destructorFunction:null})},p:(primitiveType,name,size,minRange,maxRange)=>{var bitshift;name=AsciiToString(name);let fromWireType=value=>value;0===minRange&&(bitshift=32-8*size,maxRange=(fromWireType=value=>value<<bitshift>>>bitshift)(maxRange)),registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:(destructors,value)=>value,readValueFromPointer:integerReadValueFromPointer(name,size,0!==minRange),destructorFunction:null})},x:(rawClassType,rawElementType,sizeMethodName,getMethodName)=>{sizeMethodName=AsciiToString(sizeMethodName),getMethodName=AsciiToString(getMethodName),whenDependentTypesAreResolved([],[rawClassType,rawElementType],types=>{types=types[0];return installIndexedIterator(types.registeredClass.instancePrototype,sizeMethodName,getMethodName),[]})},k:(rawType,dataTypeIndex,name)=>{var TA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2],handle=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,handle,size)}registerType(rawType,{name:name=AsciiToString(name),fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:!0})},w:(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)},ma:(rawType,name)=>{name=AsciiToString(name);registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2],payload=value+4;return payload=UTF8ToString(payload,length,!0),_free(value),payload},toWireType(destructors,value){var length,valueIsOfTypeString="string"==typeof(value=value instanceof ArrayBuffer?new Uint8Array(value):value),base=(valueIsOfTypeString||ArrayBuffer.isView(value)&&1==value.BYTES_PER_ELEMENT||throwBindingError("Cannot pass non-string to std::string"),length=valueIsOfTypeString?lengthBytesUTF8(value):value.length,_malloc(4+length+1)),ptr=base+4;return HEAPU32[base>>2]=length,valueIsOfTypeString?stringToUTF8(value,ptr,length+1):HEAPU8.set(value,ptr),null!==destructors&&destructors.push(_free,base),base},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})},D:(rawType,charSize,name)=>{var decodeString,encodeString,lengthBytesUTF;name=AsciiToString(name),lengthBytesUTF=2===charSize?(decodeString=UTF16ToString,encodeString=stringToUTF16,lengthBytesUTF16):(decodeString=UTF32ToString,encodeString=stringToUTF32,lengthBytesUTF32),registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2],length=decodeString(value+4,length*charSize,!0);return _free(value),length},toWireType:(destructors,value)=>{"string"!=typeof value&&throwBindingError("Cannot pass non-string to C++ string type "+name);var length=lengthBytesUTF(value),ptr=_malloc(4+length+charSize);return HEAPU32[ptr>>2]=length/charSize,encodeString(value,ptr+4,length+charSize),null!==destructors&&destructors.push(_free,ptr),ptr},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})},n:(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{tupleRegistrations[rawType]={name:AsciiToString(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),elements:[]}},fa:(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})},ga:(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:AsciiToString(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}},K:(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:AsciiToString(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})},O:(rawType,name)=>{registerType(rawType,{isVoid:!0,name:name=AsciiToString(name),fromWireType:()=>{},toWireType:(destructors,o)=>{}})},h:(argCount,argTypesPtr,kind)=>{var[argTypesPtr,...argTypes]=((argCount,argTypes)=>{for(var a=new Array(argCount),i=0;i<argCount;++i)a[i]=requireRegisteredType(HEAPU32[argTypes+4*i>>2],"parameter "+i);return a})(argCount,argTypesPtr),toReturnWire=argTypesPtr.toWireType.bind(argTypesPtr),argFromPtr=argTypes.map(type=>type.readValueFromPointer.bind(type)),captures=(argCount--,{toValue:Emval.toValue}),argCount=argFromPtr.map((argFromPtr,i)=>{var captureName="argFromPtr"+i;return captures[captureName]=argFromPtr,captureName+`(args${i?"+"+8*i:""})`});switch(kind){case 0:functionBody="toValue(handle)";break;case 2:functionBody="new (toValue(handle))";break;case 3:functionBody="";break;case 1:captures.getStringOrSymbol=getStringOrSymbol,functionBody="toValue(handle)[getStringOrSymbol(methodName)]"}functionBody+=`(${argCount})`,argTypesPtr.isVoid||(captures.toReturnWire=toReturnWire,captures.emval_returnValue=emval_returnValue,functionBody=`return emval_returnValue(toReturnWire, destructorsRef, ${functionBody})`);var functionBody=`return function (handle, methodName, destructorsRef, args) {
|
|
${functionBody}
|
|
}`,argFromPtr=new Function(Object.keys(captures),functionBody)(...Object.values(captures)),kind=`methodCaller<(${argTypes.map(t=>t.name)}) => ${argTypesPtr.name}>`;return argCount=createNamedFunction(kind,argFromPtr),toReturnWire=emval_methodCallers.length,emval_methodCallers.push(argCount),toReturnWire},na:__emval_decref,C:(first,second)=>(first=Emval.toValue(first))==(second=Emval.toValue(second)),s:name=>name?(name=getStringOrSymbol(name),Emval.toHandle(globalThis[name])):Emval.toHandle(globalThis),B:name=>(name=getStringOrSymbol(name),Emval.toHandle(Module[name])),u:(handle,key)=>(handle=Emval.toValue(handle),key=Emval.toValue(key),Emval.toHandle(handle[key])),J:handle=>{9<handle&&(emval_handles[handle+1]+=1)},A:(object,constructor)=>(object=Emval.toValue(object))instanceof(constructor=Emval.toValue(constructor)),g:(caller,handle,methodName,destructorsRef,args)=>emval_methodCallers[caller](handle,methodName,destructorsRef,args),ja:handle=>"number"==typeof(handle=Emval.toValue(handle)),ia:handle=>"string"==typeof(handle=Emval.toValue(handle)),l:()=>Emval.toHandle([]),q:v=>Emval.toHandle(getStringOrSymbol(v)),j:()=>Emval.toHandle({}),W:handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors),__emval_decref(handle)},r:(handle,key,value)=>{handle=Emval.toValue(handle),key=Emval.toValue(key),value=Emval.toValue(value),handle[key]=value},T:function(time,tmPtr){time=bigintToI53Checked(time);var time=new Date(1e3*time),start=(HEAP32[tmPtr>>2]=time.getUTCSeconds(),HEAP32[tmPtr+4>>2]=time.getUTCMinutes(),HEAP32[tmPtr+8>>2]=time.getUTCHours(),HEAP32[tmPtr+12>>2]=time.getUTCDate(),HEAP32[tmPtr+16>>2]=time.getUTCMonth(),HEAP32[tmPtr+20>>2]=time.getUTCFullYear()-1900,HEAP32[tmPtr+24>>2]=time.getUTCDay(),Date.UTC(time.getUTCFullYear(),0,1,0,0,0,0)),time=(time.getTime()-start)/864e5|0;HEAP32[tmPtr+28>>2]=time},U:function(time,tmPtr){time=bigintToI53Checked(time);var time=new Date(1e3*time),yday=(HEAP32[tmPtr>>2]=time.getSeconds(),HEAP32[tmPtr+4>>2]=time.getMinutes(),HEAP32[tmPtr+8>>2]=time.getHours(),HEAP32[tmPtr+12>>2]=time.getDate(),HEAP32[tmPtr+16>>2]=time.getMonth(),HEAP32[tmPtr+20>>2]=time.getFullYear()-1900,HEAP32[tmPtr+24>>2]=time.getDay(),0|ydayFromDate(time)),yday=(HEAP32[tmPtr+28>>2]=yday,HEAP32[tmPtr+36>>2]=-60*time.getTimezoneOffset(),new Date(time.getFullYear(),0,1)),summerOffset=new Date(time.getFullYear(),6,1).getTimezoneOffset(),yday=yday.getTimezoneOffset(),time=0|(summerOffset!=yday&&time.getTimezoneOffset()==Math.min(yday,summerOffset));HEAP32[tmPtr+32>>2]=time},V:function(tmPtr){date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var guessedOffset,start,summerOffset,dst,date,dstOffset=isNaN(date.getTime())?-1:(dst=HEAP32[tmPtr+32>>2],guessedOffset=date.getTimezoneOffset(),start=new Date(date.getFullYear(),0,1),summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset(),start=start.getTimezoneOffset(),dstOffset=Math.min(start,summerOffset),dst<0?HEAP32[tmPtr+32>>2]=Number(summerOffset!=start&&dstOffset==guessedOffset):0<dst!=(dstOffset==guessedOffset)&&(start=Math.max(start,summerOffset),summerOffset=0<dst?dstOffset:start,date.setTime(date.getTime()+6e4*(summerOffset-guessedOffset))),HEAP32[tmPtr+24>>2]=date.getDay(),dst=0|ydayFromDate(date),HEAP32[tmPtr+28>>2]=dst,HEAP32[tmPtr>>2]=date.getSeconds(),HEAP32[tmPtr+4>>2]=date.getMinutes(),HEAP32[tmPtr+8>>2]=date.getHours(),HEAP32[tmPtr+12>>2]=date.getDate(),HEAP32[tmPtr+16>>2]=date.getMonth(),HEAP32[tmPtr+20>>2]=date.getYear(),date.getTime()/1e3);return BigInt(dstOffset)},X:(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear(),winter=new Date(currentYear,0,1),currentYear=new Date(currentYear,6,1),winter=winter.getTimezoneOffset(),currentYear=currentYear.getTimezoneOffset(),stdTimezoneOffset=Math.max(winter,currentYear),timezone=(HEAPU32[timezone>>2]=60*stdTimezoneOffset,HEAP32[daylight>>2]=Number(winter!=currentYear),timezoneOffset=>{var sign=0<=timezoneOffset?"-":"+",timezoneOffset=Math.abs(timezoneOffset);return"UTC"+sign+String(Math.floor(timezoneOffset/60)).padStart(2,"0")+String(timezoneOffset%60).padStart(2,"0")}),stdTimezoneOffset=timezone(winter),daylight=timezone(currentYear);currentYear<winter?(stringToUTF8(stdTimezoneOffset,std_name,17),stringToUTF8(daylight,dst_name,17)):(stringToUTF8(stdTimezoneOffset,dst_name,17),stringToUTF8(daylight,std_name,17))},H:()=>Date.now(),F:()=>performance.now(),Q:requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;if(!(2147483648<requestedSize))for(var alignment,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown),overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);if((size=>{size=(size-wasmMemory.buffer.byteLength+65535)/65536|0;try{return wasmMemory.grow(size),updateMemoryViews(),1}catch(e){}})(Math.min(2147483648,(overGrownHeapSize=Math.max(requestedSize,overGrownHeapSize),alignment=65536,Math.ceil(overGrownHeapSize/alignment)*alignment))))return!0}return!1},ca:(__environ,environ_buf)=>{var string,bufSize=0,envp=0;for(string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr,bufSize+=stringToUTF8(string,ptr,1/0)+1,envp+=4}return 0},da:(penviron_count,penviron_buf_size)=>{var string,strings=getEnvStrings(),bufSize=(HEAPU32[penviron_count>>2]=strings.length,0);for(string of strings)bufSize+=lengthBytesUTF8(string)+1;return HEAPU32[penviron_buf_size>>2]=bufSize,0},v:function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return FS.close(stream),0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},I:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2],ptr=(iov+=8,FS.read(stream,HEAP8,ptr,len,offset));if(ptr<0)return-1;if(ret+=ptr,ptr<len)break;void 0!==offset&&(offset+=ptr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},Y:function(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{var stream;return isNaN(offset)?22:(stream=SYSCALLS.getStreamFromFD(fd),FS.llseek(stream,offset,whence),HEAP64[newOffset>>3]=BigInt(stream.position),stream.getdents&&0===offset&&0===whence&&(stream.getdents=null),0)}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}},y:function(fd,iov,iovcnt,pnum){try{var num=((stream,iov,iovcnt,offset)=>{for(var ret=0,i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2],len=HEAPU32[iov+4>>2],ptr=(iov+=8,FS.write(stream,HEAP8,ptr,len,offset));if(ptr<0)return-1;if(ret+=ptr,ptr<len)break;void 0!==offset&&(offset+=ptr)}return ret})(SYSCALLS.getStreamFromFD(fd),iov,iovcnt);return HEAPU32[pnum>>2]=num,0}catch(e){if(void 0===FS||"ErrnoError"!==e.name)throw e;return e.errno}}}},wasmExports=await(Module.instantiateWasm?new Promise((resolve,reject)=>{Module.instantiateWasm(info,(inst,mod)=>{resolve(receiveInstance(inst))})}):(wasmBinaryFile??=findWasmBinary(),(result=>receiveInstance(result.instance))(await instantiateAsync(wasmBinary,wasmBinaryFile,info)))),function run(){if(0<runDependencies)dependenciesFulfilled=run;else{if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns),0<runDependencies?dependenciesFulfilled=run:Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),doRun()},1)):doRun()}function doRun(){if(Module.calledRun=!0,!ABORT){if(runtimeInitialized=!0,SOCKFS.root=FS.mount(SOCKFS,{},null),Module.noFSInit||FS.initialized||FS.init(),TTY.init(),wasmExports.pa(),FS.ignorePermissions=!1,readyPromiseResolve?.(Module),Module.onRuntimeInitialized?.(),Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}}}(),runtimeInitialized?Module:new Promise((resolve,reject)=>{readyPromiseResolve=resolve,readyPromiseReject=reject})}})();"object"==typeof exports&&"object"==typeof module?(module.exports=rhino3dm,module.exports.default=rhino3dm):"function"==typeof define&&define.amd&&define([],()=>rhino3dm); |